; ; Copyright (c) 2009 by Michal Hucik ; ; This program is free software; you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. ; ; MZ-800 Unicard is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with MZ-800 Unicard; if not, write to the Free Software ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ; ; Ver.: 1.0 ; ; Unicard Example3: ; Cteni revize firmware unikarty na dalsi zpusob. ; ; ; porty CMDPORT equ 0x50 DATAPORT equ 0x51 ; prikazy cmdRESET equ 0x00 cmdSHASCII equ 0x02 cmdREV equ 0x05 ; kde bude nas program prg_begin: equ 0x2000 org prg_begin - 0x80 ; MZF header db 0x01 db "UNICARD EXAMPLE3",0x0d dw prg_end - prg_begin dw prg_start dw prg_begin db " " db " " db " " db " " db " " db " " db " " prg_start: call 0xEA59 ; smazat obrazovku ; ; Zavolanim resetu provedeme stejnou proceduru, ; ktera se vola pri startu STM32 v unikarte. ; ; Pozaviraji se vsechny soubory. Ukonci vsechny vstupy a vystupy. ; CDW se nastavi na korenovy adresar "/". ; Vypne se konverze SharpASCII. ; ld a, cmdRESET out (CMDPORT), a ; Chceme pouzivat vypisovaci rutiny v ROM, takze si prepneme ; komunikaci do SharpASCII ld a, cmdSHASCII out (CMDPORT), a ; Zjistime verzi firmware. ld a, cmdREV out (CMDPORT), a ld hl, data ; Sem si ulozime info o revizi ld c, DATAPORT in a, (CMDPORT) ; 1. bajt statusu nas tentokrat moc ; nezajima, ale samozrejme lze vzdy ; zkontrolovat, zda neni ERROR (7.bit), nebo ; zda je unikarta READY a zda pro nas ma ; data. in a, (CMDPORT) ; 2. bajt statusu obsahuje kod posledniho ; prikazu - v tomto pripade 0x05 in a, (CMDPORT) ; 3. bajt rika pocet bajtu ve vstupne ; vystupnim bufferu, ktery je vyhrazen pro prikazy. ; Pokud je zde 0x00, tak nema smysl se ; pokouset cist z dataportu (tedy co se tyka ; prikazu, pri otevrenem souboru, by to ; znamenalo, ze posilame/cteme ze souboru). ld b, a ; precti avizovany pocet bajtu inir ld de, data ; revizi firmware vypsat na obrazovku call 0x0015 ; zastavit, stat, raz, dva... di halt data: prg_end: