[SharpMZ] Business World - nahrávání z Unikarty
Michal Medek
Michal.Bruntal na seznam.cz
Úterý Leden 23 18:57:26 CET 2018
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
"
------------- další část ---------------
HTML pĹĂloha byla odstranÄna...
URL: http://mail.ordoz.com/pipermail/sharpmz/attachments/20180123/226ad48f/attachment.html
Další informace o konferenci SharpMZ