Entry l1e67h
is used to load the last sector of a file to the
buffer.
Study the two routines called by entry.init_dos
.
Fix word not disassembled at 0x1081.
Variable variable.move_command_first_track
is used also to store the
input flag of load_or_verify
(command $0E):
A=#00 - take address and length from disk catalogue; A=#03 - take address in HL length in DE; A=#FF - take address in HL but length taken from disk catalogue;
Study the routine at 0x1FB9.
Label 0x4080, screen address used to store a routine copied from the ROM (0x2A41).
Study table at 0x31C8.
Study code at 0x22C4.
Study meaning of literals (file types?) in:
-
ld (hl),044h ;22d8 36 44 6 D
-
ld (hl),043h ;2b0e 36 43 6 C
Three bytes at 0x2FF0 are disassembled as data, but they are code
(ldir / ret
). This seems a bug of z80dasm.
z80dasm’s bug? This block causes addresses 0x31FA..0x31FC
be interpreted as bytedata, in one single line:
not_used_31FD: start 0x31FD unlabeled last 0x3CF9 type bytedata
.
This does not solve the problem:
code_31FA_XXX_FIXME: start 0x31FA unlabeled last 0x31FC type code
.
It seems there’s a typo in the ROM:
defb 053h ;3179 53 S defb 043h ;317a 43 C defb 052h ;317b 52 R defb 045h ;317c 45 E defb 045h ;317d 45 E defb 04eh ;317e 4e N defb 004h ;317f 04 . should be 24 (character '$') defb 084h ;3180 84 . should be 80 defb 053h ;3181 53 S defb 043h ;3182 43 C defb 052h ;3183 52 R defb 045h ;3184 45 E defb 045h ;3185 45 E defb 04eh ;3186 4e N defb 084h ;3187 84 . should be a4 (=24+80)