[SharpMZ] Business World - nahrvn z Unikarty
Vaclav Peroutka
vaclavpe na seznam.cz
ter Leden 23 19:09:37 CET 2018
Ahoj Mikeši,
rozdíl je ten, že nevím, jaké máte poslední API na unikartě. Michal Hučík mi
upravoval kód na staré unikartě, aby se nenuloval aktuální adresář po
dočtení souboru, a možná nějaké další drobnosti.
Vašek
"Ahoj,
tak jsem zkoumal ten kod. Nejak nechapu v cem by mela byt ten rozdil mezi
starsi/upravenym a novym modelem? Vzdyt to klasicky otevre soubor nacte
hlavicku, pak telo a otestuje errory.
Takto vlastne musis upravit prvni dil programu/hry tak, aby si pres API
unikarty otevrel a nacetl druhy dil. A pak dal a dal. A co teda vlastne dela
ta uprava fw jinak?
Obavam se, ze na MZT souboru, ktery ma vice casti to nepujde pouzit. Musel
by jsi udelat seek na pokracovani v souboru. Treba takova hra jako Yokai_A.
mzt a Yokai_B.mzt, to by byl asi orisek, predelat, protoze kazda cast ma
jeste nekolik dilu:
File: ..\MZT2\Yokai_A.mzt
Directory of MZT: size load exec
OBJ "SIDE A" :` 48640 Bytes BE00 1200 1200
OBJ "DEMO" :` 6784 Bytes 1A80 1200 2C66
Length of data: 55424 Bytes.
File: ..\MZT2\Yokai_B.mzt
Directory of MZT: size load exec
OBJ "YOUKAI V1.1" :` 36718 Bytes 8F6E 1200 A155
OBJ "MAP 8" :` 6656 Bytes 1A00 9600 E804
Length of data: 43374 Bytes.
Jinak posledni update fw pro unikartu to resi prohazovanim image QD postupne
na dalsi a dalsi, ale je potreba, aby programy bud nahravaly dalsi casti z
QDisku nebo cekaly na prohozeni disketek. Vzhledem k tomu, ze vetsina
programu pouziva rutiny z monitoru, tak je to resitelne. Akorat je tu
problem s adresama QD radice, ale to je jina story.
Vyhoda je, ze se nemusi 'patchovat' kazda hra nebo BASICove programy.
Mikes
---------- Původní e-mail ----------
Od: Vaclav Peroutka <vaclavpe na seznam.cz>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmz na mail.ordoz.com>
Datum: 22. 1. 2018 22:10:32
Předmět: [SharpMZ] Business World - nahrávání z Unikarty
"Ahoj,
jak jsem psal minulý týden, tak se mi nepovedlo upravit BW1.MZF tak, abych
mohl hru Business World nahrát z unikarty. Tak to už neplatí, kód, který je
přiložen níže, se dá použít pro nahrávání vícesouborových her - ale pouze
těch, co si otevírají v emulátoru CMT PATCH. Tj.pokud v loaderu není
nahrávání obrázků nebo podobná zvěrstva.
U hry BW je ještě taková specialitka, že se nesmí sáhnout na zásobník -
proto jsou zakomentované všechny CALLy.
Nevím popravdě, jak to funguje na Vašich novějších unikartách, já používám
ten starší model můj a kód Michalův.
Vašek
mainprg:
;;;;;;;;;;;;;;;;;;;;;;; precteme par byte z filata
;ld de, txt1
;call 0x0015 ; zobrazit text z DE
; otevreme soubor
ld a, cmdOPEN
out (CMDPORT), a
; Exstujici soubor pro cteni
ld a, FA_OPEN_EXISTING + FA_READ
out (DATAPORT), a
; Druhym parametrem je jmeno souboru
ld e, 0x00 ; konec jmena soubor
ld hl, filename
ld c, DATAPORT
next_char:
outi
ld a, (hl)
cp e
jr nz, next_char
; Podarilo se nam soubor otevrit?
;
; (Pokud je vse OK, tak ted mame ve statusu nastaveny
; bity READ_FILE, WRITE_FILE a EOF.)
;
in a,(CMDPORT)
bit 0, a ; je READY ?
jr nz, ERROR_PARAM ; NENI: tohle muze nastat jen pokud
; jsme zapomneli ukoncit vkladani
; textoveho parametru znakem mensim jak 0x20
and 0x80
jr nz,ERROR_OPEN ; ne, doslo k chybe pri OPEN
; pripravili jsme si v unikarte MZF, tak nacteme jeho hlavicku
ld bc, 0x8051 ; cteme 128 bajt z DATA_PORTu
ld hl, 0x10f0 ; a ukladame to na 0x10f0
inir
; podle udaju z hlavicky si nacteme z DATA_PORTu telo na adresu 0x1200
ld hl, 0x1200
ld de, (0x10f0 + 0x12 )
rdbyte: ini
dec de
ld a,d
or e
jr nz, rdbyte
; zavrit soubor
ld a,cmdCLOSE
out (CMDPORT),a
out (0xe0),A ; zrusi spodni ROM a primapuje RAM
jp 0x0000 ; skoci do RAMky, kde uz je pripravena BW1
ERROR_PARAM:
ld de, msg_err_param
call 0x0015 ; zobrazit text z HL
di
halt
ERROR_OPEN:
ld de, msg_err_open
jr print_errcode
;ERROR_SEEK:
; ld de, msg_err_seek
print_errcode:
call 0x0015 ; zobrazit text z HL
in a,(CMDPORT) ; kod posledniho prikazu
in a,(CMDPORT) ; unicard err code
in a,(CMDPORT) ; FatFS err code
call 0x03c3 ; zobrazit obsah A
di
halt
msg_err_param:
db "ERROR: BP!",0x0d
msg_err_open:
db "OPEN ERROR: ",0x0d
;msg_err_seek:
; db "SEEK - ERROR CODE: ",0x0d
txt1: db "OPENING " ; doplni se filename automagicky
filename: db "BW.DAT",0x0d, 0x00
txt2: db " OK",0x0d
_______________________________________________
SharpMZ mailing list
SharpMZ na mail.ordoz.com
http://mail.ordoz.com/mailman/listinfo/sharpmz
"_______________________________________________
SharpMZ mailing list
SharpMZ na mail.ordoz.com
http://mail.ordoz.com/mailman/listinfo/sharpmz
"
------------- dal st ---------------
HTML příloha byla odstraněna...
URL: http://mail.ordoz.com/pipermail/sharpmz/attachments/20180123/aeba0508/attachment-0001.html
Dal informace o konferenci SharpMZ