mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3556 lines
58 KiB
3556 lines
58 KiB
; rz (receive Zmodem) is a disassembly of CP/M 3 binaries by Wilfried Schmitten released in 1992.
|
|
; this file is an attempt to reconstruct the Z80 assembler source code which has been lost
|
|
; credit to Wilfried Schmitten for writing this program initially
|
|
|
|
;
|
|
; +-----------------------------------------------------------------+
|
|
; | This file is generated by The Interactive Disassembler (IDA) FW |
|
|
; | Copyright (c) 1997 by DataRescue sprl, <ida@datarescue.com> |
|
|
; | Professional version of IDA is at http://www.idapro.com |
|
|
; +-----------------------------------------------------------------+
|
|
;
|
|
|
|
|
|
; File Name C:\RZ.COM
|
|
; Format COM File
|
|
; Base Address: 0000h Range: 0100h - 1800h Loaded length: 1700h
|
|
|
|
; Processor: z80
|
|
; Target assembler: Table Driven Assembler (TASM) by Speech Technology Inc.
|
|
|
|
cpm .equ 0000h
|
|
iobyte .equ 0004h
|
|
bdos .equ 0005h
|
|
|
|
C_READ .equ 1
|
|
A_READ .equ 3
|
|
A_WRITE .equ 4
|
|
A_STATIN .equ 7
|
|
A_STAT_OUT .equ 8
|
|
C_WRITESTR .equ 9
|
|
C_STAT .equ 11
|
|
S_BDOSVER .equ 12
|
|
DRV_SET .equ 14
|
|
F_OPEN .equ 15
|
|
F_CLOSE .equ 16
|
|
F_SFIRST .equ 17
|
|
F_DELETE .equ 19
|
|
F_WRITE .equ 21
|
|
F_MAKE .equ 22
|
|
DRV_GET .equ 25
|
|
F_DMAOFF .equ 26
|
|
F_USERNUM .equ 32
|
|
DRV_DPB .equ 33
|
|
F_SIZE .equ 35
|
|
F_MULTISEC .EQU 44
|
|
S_SYSVAR .equ 49
|
|
|
|
buf_len: .equ 80h
|
|
rbuf_size .equ 1000h
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
.org 100h
|
|
|
|
start: ld sp, nstack ; Setup local stack
|
|
ld c,S_BDOSVER ; Get CP/M version #
|
|
call bdos
|
|
cp 30h ; Exit if less than
|
|
jp c,err_vern ; CP/M 3
|
|
ld de,str_welc
|
|
ld c,C_WRITESTR ; display version
|
|
call bdos ; welcome message
|
|
call sub_195
|
|
ld hl,(word_179E) ; zero first 20
|
|
xor a ; bytes of
|
|
ld b,20 ; free memory
|
|
call fill_bhla
|
|
ld a,(buf_len) ; if there is nothing in
|
|
or a ; the command line buffer
|
|
jr z,skip_cl ; go wait for transfer
|
|
|
|
ld (hl),2
|
|
ld de,82h
|
|
ex de,hl
|
|
ld a,0FFh
|
|
call sub_172E
|
|
jp nz, err_exit
|
|
ld hl,(word_179E)
|
|
inc hl
|
|
ld a,(hl)
|
|
or a
|
|
jp z,skip_cl
|
|
inc hl
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
inc hl
|
|
ld a,(de)
|
|
cp '-'
|
|
jr nz,loc_152
|
|
call sub_39A
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
ld a,d
|
|
or e
|
|
jr z,skip_cl
|
|
loc_152: ld hl,file_fcb
|
|
ex de,hl
|
|
call sub_1492
|
|
ld hl,file_fcb
|
|
xor a
|
|
or (hl)
|
|
jr nz,loc_164
|
|
ld a,(byte_17A1)
|
|
ld (hl),a
|
|
loc_164: ld bc,0Dh
|
|
add hl,bc
|
|
dec de
|
|
ldi
|
|
ld de,file_fcb
|
|
call sub_1B0
|
|
call clo_c
|
|
skip_cl: ld de,str_sxfr ; display start
|
|
ld c,C_WRITESTR ; tranfer message
|
|
call bdos
|
|
call sub_3EF
|
|
call sub_8D1
|
|
call sub_451
|
|
smod_b_186: .equ $+1
|
|
loc_185: ld bc,0
|
|
ld (word_17A2),bc
|
|
ld de,file_fcb
|
|
call sub_1B0
|
|
jp cpm
|
|
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_195: ld a,(iobyte)
|
|
ld b,a
|
|
rlca
|
|
rlca
|
|
rlca
|
|
rlca
|
|
and 0Fh
|
|
ld (byte_17A0),a
|
|
ld a,b
|
|
and 0Fh
|
|
inc a
|
|
ld (byte_17A1),a
|
|
ld hl,(byte_17A0)
|
|
ld (smod_b_186),hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1B0: ld a,(de)
|
|
push af
|
|
dec de
|
|
ld a,(de)
|
|
ld e, a
|
|
ld c,F_USERNUM
|
|
call bdos ; get/set user number
|
|
pop af
|
|
dec a
|
|
ld e, a
|
|
ld c,DRV_SET
|
|
jp bdos ; Select disc
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
err_vern: ld de,str_cpm3 ; Display version
|
|
ld c,C_WRITESTR ; error and exit
|
|
call bdos
|
|
|
|
err_exit: ld de,str_info ; Display usage
|
|
ld c,C_WRITESTR ; and exit to
|
|
call bdos ; CP/M
|
|
jp cpm
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
str_welc: .text "RZ for CP/M 3 V 1.04\r\n"
|
|
.text "(C) 92 wshbg\r\n\n$"
|
|
str_sxfr: .text "start your local X/Y/ZModem sending program\r\n\n$"
|
|
str_cpm3: .text "sorry, CP/M 3 Tool\r\n$"
|
|
str_info: .text "usage: rz [-?pbcrxyz] [du:fn]\r\n\n"
|
|
.text " options for ZModem:\r\n"
|
|
.text " ? this help\r\n"
|
|
.text " p protect File\r\n"
|
|
.text " b receive binary\r\n"
|
|
.text " c convert to local linefeed\r\n"
|
|
.text " r resume transmission\r\n"
|
|
.text " x,y,z Protokoll\r\n"
|
|
.text " du:fn defaults to XModem\r\n\n"
|
|
.text "these values override options from sender\r\n$"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Search list of command line options
|
|
|
|
sub_39A: push hl
|
|
push de
|
|
loc_39C: inc de ; get next character
|
|
ld a,(de) ; to check
|
|
or a
|
|
jr z,loc_3AE ; exit if not found
|
|
ld hl,stab_clo ; table to seach
|
|
ld bc,stab_clo_s ; no. of table entries
|
|
cpir ; check match
|
|
call z,stab_jmp ; if yes get table entry and jump
|
|
jr loc_39C ; else continue search
|
|
|
|
loc_3AE: pop de
|
|
pop hl
|
|
ret
|
|
|
|
stab_clo: .text "?PBCXYZR"
|
|
stab_clo_s: .equ $-stab_clo
|
|
|
|
.dw clo_help ; ?
|
|
.dw clo_p ; P
|
|
.dw clo_b ; B
|
|
.dw clo_c ; C
|
|
.dw clo_x ; X
|
|
.dw clo_y ; Y
|
|
.dw clo_z ; Z
|
|
.dw err_exit ; R
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Set flags and options from command line
|
|
|
|
clo_c: ld a,1
|
|
jr set_opt
|
|
clo_b: ld a,3
|
|
jr set_opt
|
|
clo_p: ld a,4
|
|
set_opt: ld (byte_8AF),a
|
|
ret
|
|
|
|
clo_z: ld a,$ff
|
|
ld (flg_zmdm),a
|
|
ret
|
|
clo_y: ld a,$ff
|
|
ld (flg_ymdm),a
|
|
ret
|
|
clo_x: ld a,$ff
|
|
ld (flg_xmdm),a
|
|
ret
|
|
clo_help: ld a,$ff
|
|
ld (flg_help),a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_3EF: xor a
|
|
ld (byte_460),a
|
|
ld (byte_464),a
|
|
ld c,S_SYSVAR
|
|
ld de,byte_45F
|
|
call bdos ; Access the system variables
|
|
ld a,h
|
|
cpl
|
|
ld h,a
|
|
ld a,l
|
|
cpl
|
|
ld l, a
|
|
ld (word_46F),hl
|
|
ld c,S_SYSVAR
|
|
ld de,byte_463
|
|
call bdos ; Access the system variables
|
|
ld (word_46B),hl
|
|
ld de,(word_46F)
|
|
ld a,h
|
|
and d
|
|
ld h,a
|
|
ld a,l
|
|
and e
|
|
ld l, a
|
|
ld (word_465),hl
|
|
ld c,S_SYSVAR
|
|
ld de,byte_467
|
|
call bdos ; Access the system variables
|
|
ld (word_46D),hl
|
|
ld de,(word_46F)
|
|
ld a,h
|
|
and d
|
|
ld h,a
|
|
ld a,l
|
|
and e
|
|
ld l, a
|
|
ld (word_469),hl
|
|
loc_437: ld a,0FEh
|
|
ld (byte_464),a
|
|
ld de,byte_463
|
|
ld c,S_SYSVAR
|
|
call bdos ; Access the system variables
|
|
ld a,0FEh
|
|
ld (byte_468),a
|
|
ld de,byte_467
|
|
ld c,S_SYSVAR
|
|
jp bdos ; Access the System Control Block
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_451: ld hl,(word_46B)
|
|
ld (word_465),hl
|
|
ld hl,(word_46D)
|
|
ld (word_469),hl
|
|
jr loc_437
|
|
|
|
;----------------------------------------------------------------------------'
|
|
|
|
byte_45F: .db 28h
|
|
byte_460: .db 0
|
|
.db 0
|
|
.db 0
|
|
byte_463: .db 24h
|
|
byte_464: .db 0
|
|
word_465: .dw 0
|
|
byte_467: .db 22h
|
|
byte_468: .db 0
|
|
word_469: .dw 0
|
|
word_46B: .dw 0
|
|
word_46D: .dw 0
|
|
word_46F: .dw 0
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Call BDOS and set status flag
|
|
|
|
bdos_s: call bdos
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Search for 0 terminated string starting at HL
|
|
|
|
Search0: push af
|
|
loc_477: push bc
|
|
xor a
|
|
ld b,a
|
|
ld c,a
|
|
cpir
|
|
pop bc
|
|
djnz loc_477
|
|
pop af
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_482: ld a,(byte_2D04)
|
|
ld de,text495h ; Update error string with errors
|
|
call sub_16E7
|
|
ld de,text493h
|
|
ld c,C_WRITESTR
|
|
jp bdos ; Output string
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
text493h: .text "\r\n"
|
|
text495h: .db 0,0,0
|
|
.text " error(s)\r\n$"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_4A4: ld de,file_fcb
|
|
ld hl,byte_4F8
|
|
ld (hl),':'
|
|
inc hl
|
|
xor a
|
|
ld b,0Dh
|
|
call fill_bhla
|
|
inc de
|
|
call sub_16C4
|
|
dec de
|
|
ld a,(de)
|
|
add a,'A'-1
|
|
ld (byte_4F4),a
|
|
dec de
|
|
ld a,(de)
|
|
ld de,byte_4F5
|
|
call sub_16E7
|
|
ld a,'$'
|
|
ld (term_fn),a
|
|
ld de,text4F2h
|
|
ld c,C_WRITESTR
|
|
call bdos ; Output string
|
|
ld hl,(byte_2CD4)
|
|
ld a,h
|
|
or l
|
|
ret z
|
|
ld b,1
|
|
call Search0
|
|
dec hl
|
|
ld (hl),'$'
|
|
ld de,(byte_2CD4)
|
|
ld c,C_WRITESTR
|
|
call bdos ; Output string
|
|
ld de,newline
|
|
ld c,C_WRITESTR
|
|
jp bdos ; Output string
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
text4F2h: .text "\r\n"
|
|
byte_4F4: .db 0
|
|
byte_4F5: .db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
byte_4F8: .db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 20h ;
|
|
term_fn: .db 0
|
|
newline: .text "\r\n$"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_50B: ld hl,loc_2CAB
|
|
ld de,loc_51F
|
|
call loc_774
|
|
ld (hl),'$'
|
|
ld de,text51Eh
|
|
ld c,C_WRITESTR
|
|
jp bdos ; Output string
|
|
|
|
;----------------------------------------------------------------------------
|
|
text51Eh:
|
|
.db 0Dh ;
|
|
loc_51F: .db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
.db 0 ;
|
|
|
|
disp_bsy: ld hl,str_busy
|
|
smod_52D: .equ $+1 ; self modifying
|
|
ld a,0
|
|
inc a
|
|
and 3
|
|
ld (smod_52D),a
|
|
ld e,a
|
|
ld d,0
|
|
add hl,de
|
|
ld a,(hl)
|
|
ld (str_sav),a
|
|
ld de,str_rev
|
|
ld c,C_WRITESTR
|
|
jp bdos
|
|
|
|
str_busy: .db 7ch ; |
|
|
.db 02fh ; /
|
|
.db 2dh ; -
|
|
.db 5ch ; \
|
|
str_rev: .db 20h ;
|
|
str_sav: .db 7ch ; |
|
|
.db 08h ; /b
|
|
.db 08h ; /b
|
|
.db 24h ; $
|
|
|
|
ld de,text569h
|
|
jr sub_555
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_552: ld de,text55Ah
|
|
sub_555: ld c,C_WRITESTR
|
|
jp bdos ; Output string
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
text55Ah: .text "File skipped\r\n$"
|
|
text569h: .text "can't open any file\r\n$"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_57F: ld hl,byte_586
|
|
ld (hl),a
|
|
inc hl
|
|
ld (hl),c
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
byte_586: .db 0
|
|
byte_587: .db 0
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_588: or a ; is the receive
|
|
ld hl,(rbuf_bfree) ; buffer full?
|
|
ld de,rbuf_size
|
|
sbc hl,de
|
|
jr z,loc_5A9
|
|
ld c,A_STATIN ; if it isn't see
|
|
call bdos ; if there is a character
|
|
or a ; available
|
|
jr z,loc_5A9
|
|
ld c,A_READ ; get the character
|
|
call bdos
|
|
ld c,a
|
|
ld hl,rbuf_bfree
|
|
call sub_61C
|
|
jr sub_588
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_5A9: ld hl,byte_587
|
|
or (hl)
|
|
ret nz
|
|
ld hl,(rbuf_bfree)
|
|
ld a,h
|
|
or l
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_5B4: ld a,(byte_587)
|
|
or a
|
|
ld hl,rbuf_bfree
|
|
jp z,loc_5F7
|
|
push af
|
|
ld hl,byte_587
|
|
dec (hl)
|
|
dec hl
|
|
pop af
|
|
ld a,(hl)
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_5C7: LD C,A_WRITE ; punch out
|
|
LD E,A
|
|
JP bdos
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Set I/O byte
|
|
; E=I/O byte
|
|
; S u b r o u t i n e
|
|
|
|
sub_5CD: ld c,A_STAT_OUT
|
|
call bdos ; BDOS function 8 (A_STATOUT) - Auxiliary Output status
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e ; Receive a byte into the receive buffer?
|
|
|
|
sub_5D4: push bc
|
|
ld b,5Fh ; retries?
|
|
loc_5D7: push bc
|
|
call sub_588
|
|
pop bc
|
|
jr nz,loc_5E6
|
|
call delay
|
|
djnz loc_5D7
|
|
call sub_588
|
|
loc_5E6: call nz,sub_5B4
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
delay: push bc
|
|
ld a,4
|
|
ld b,0
|
|
loc_5F0: djnz loc_5F0
|
|
dec a
|
|
jr nz,loc_5F0
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_5F7: ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
ld a,d
|
|
or e
|
|
ret z
|
|
dec de
|
|
ld (hl),d
|
|
dec hl
|
|
ld (hl),e
|
|
ld de,4
|
|
add hl,de
|
|
push hl
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
inc hl
|
|
add hl,de
|
|
ex (sp),hl
|
|
inc de
|
|
ld a,e
|
|
and 0FFh
|
|
ld (hl),a
|
|
inc hl
|
|
ld a,d
|
|
and 0Fh
|
|
ld (hl),a
|
|
pop hl
|
|
ld a,1
|
|
or a
|
|
ld a,(hl)
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_61C: or a
|
|
push hl
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
ld hl,rbuf_size
|
|
sbc hl,de
|
|
pop hl
|
|
ret z
|
|
inc de
|
|
ld (hl),e
|
|
inc hl
|
|
ld (hl),d
|
|
inc hl
|
|
push hl
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
add hl,de
|
|
ex (sp),hl
|
|
inc de
|
|
ld a,e
|
|
and 0FFh
|
|
ld (hl),a
|
|
inc hl
|
|
ld a,d
|
|
and 0Fh
|
|
ld (hl),a
|
|
pop hl
|
|
ld (hl),c
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_643: ld hl,word_17A2
|
|
ld b,25h
|
|
jr loc_650
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_64A: ld b,3
|
|
jr loc_650
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_64E: ld b,6
|
|
loc_650: xor a
|
|
jp fill_bhla
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_654: xor a
|
|
or (hl)
|
|
ret z
|
|
dec (hl)
|
|
inc hl
|
|
inc hl
|
|
ld e,(hl)
|
|
ld d,0
|
|
ld a,e
|
|
inc a
|
|
and 7Fh
|
|
ld (hl),a
|
|
inc hl
|
|
adc hl,de
|
|
ld a,(hl)
|
|
ret nc
|
|
ccf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
sub_669: LD A,80H
|
|
SUB (HL)
|
|
RET Z
|
|
INC (HL)
|
|
INC HL
|
|
LD E,(HL)
|
|
LD D,0
|
|
LD A,E
|
|
INC A
|
|
AND 7FH
|
|
LD (HL),A
|
|
INC HL
|
|
INC HL
|
|
ADC HL,DE
|
|
LD (HL),C
|
|
RET NC
|
|
CCF
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Jump to table address entry
|
|
|
|
stab_jmp: add hl,bc
|
|
sla c
|
|
add hl,bc
|
|
ld c,(hl)
|
|
inc hl
|
|
ld h,(hl)
|
|
ld l, c
|
|
jp (hl)
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_688: xor a
|
|
push bc
|
|
push de
|
|
push hl
|
|
ld (hl),a
|
|
ld d,h
|
|
ld e,l
|
|
inc de
|
|
jr loc_697
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_692: push bc
|
|
push de
|
|
push hl
|
|
ldi
|
|
loc_697: ldi
|
|
ldi
|
|
ldi
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_6A1: PUSH HL
|
|
POP IX
|
|
PUSH DE
|
|
POP IY
|
|
LD A,(IX+3)
|
|
XOR (IY+3)
|
|
JP P,loc_6B6
|
|
XOR (IX+3)
|
|
loc_6B3: RET M
|
|
CCF
|
|
RET
|
|
|
|
loc_6B6: XOR (IX+3)
|
|
JP P,loc_6C2
|
|
CALL loc_6C2
|
|
SCF
|
|
JR loc_6B3
|
|
|
|
loc_6C2: PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
EX DE,HL
|
|
OR A
|
|
LD B,4
|
|
loc_6C9: LD A,(DE)
|
|
SBC A,(HL)
|
|
INC DE
|
|
INC HL
|
|
DJNZ loc_6C9
|
|
POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
sub_6D3: PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD B,4
|
|
loc_6D8: LD A,(DE)
|
|
XOR (HL)
|
|
JR NZ,loc_6E0
|
|
INC DE
|
|
INC HL
|
|
DJNZ loc_6D8
|
|
loc_6E0: POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_6E4: push bc
|
|
push de
|
|
push hl
|
|
or a
|
|
ex af, af'
|
|
ld a,4
|
|
loc_6EB: ex af, af'
|
|
ld a,(de)
|
|
adc a,(hl)
|
|
ld (bc),a
|
|
inc bc
|
|
inc de
|
|
inc hl
|
|
ex af, af'
|
|
dec a
|
|
jr nz,loc_6EB
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_6FA: push bc
|
|
push de
|
|
push hl
|
|
ex de,hl
|
|
or a
|
|
ex af, af'
|
|
ld a,4
|
|
loc_702: ex af, af'
|
|
ld a,(de)
|
|
sbc a,(hl)
|
|
ld (bc),a
|
|
inc bc
|
|
inc hl
|
|
inc de
|
|
ex af, af'
|
|
dec a
|
|
jr nz,loc_702
|
|
ex af, af'
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_712: PUSH BC
|
|
PUSH HL
|
|
LD A,1
|
|
ADD A,(HL)
|
|
LD (HL),A
|
|
JR NC,loc_723
|
|
LD B,3
|
|
loc_71C: INC HL
|
|
LD A,0
|
|
ADC A,(HL)
|
|
LD (HL),A
|
|
DJNZ loc_71C
|
|
loc_723: POP HL
|
|
POP BC
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_726: call sub_688
|
|
sub_729: push bc
|
|
push hl
|
|
ld a,(hl)
|
|
sub 1
|
|
ld (hl),a
|
|
ld b,3
|
|
loc_731: inc hl
|
|
ld a,(hl)
|
|
sbc a,0
|
|
ld (hl),a
|
|
djnz loc_731
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_73B: PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
EX DE,HL
|
|
LD A,004H
|
|
loc_741: PUSH AF
|
|
LD A,(DE)
|
|
AND (HL)
|
|
LD (BC),A
|
|
INC BC
|
|
INC DE
|
|
INC HL
|
|
POP AF
|
|
DEC A
|
|
JR NZ,loc_741
|
|
POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_750: .db 0, 0CAh, 9Ah, 3Bh
|
|
.db 0, 0E1h, 0F5h, 5
|
|
.db 80h, 96h, 98h, 0
|
|
.db 40h, 42h, 0Fh, 0
|
|
.db 0A0h, 86h, 1, 0
|
|
.db 10h, 27h, 0, 0
|
|
.db 0E8h, 3, 0, 0
|
|
.db 64h, 0, 0, 0
|
|
.db 0Ah, 0, 0, 0
|
|
|
|
loc_774: ld (smod_w_7BF),de
|
|
ld de,byte_2891
|
|
call sub_692
|
|
ld c,+(loc_774-loc_750)/4
|
|
ld de,loc_750-4
|
|
xor a
|
|
ld (smod_b_7BA),a
|
|
loc_787: ld a,30h
|
|
ld (smod_b_7B4),a
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld b,0Ah
|
|
loc_792: push bc
|
|
ld hl,byte_2891
|
|
ld bc,loc_2895
|
|
call sub_6FA
|
|
pop bc
|
|
jr c,loc_7B3
|
|
push de
|
|
ld a,(smod_b_7B4)
|
|
inc a
|
|
ld (smod_b_7B4),a
|
|
ld de,byte_2891
|
|
ld hl,loc_2895
|
|
call sub_692
|
|
pop de
|
|
djnz loc_792
|
|
smod_b_7B4: .EQU $+1
|
|
loc_7B3: LD A,30H ; self modifying
|
|
CP 30H
|
|
JR NZ,loc_7BE
|
|
smod_b_7BA: .EQU $+1
|
|
LD A,0
|
|
OR A
|
|
JR Z,loc_7CB
|
|
smod_w_7BF: .EQU $+1
|
|
loc_7BE: LD HL,0
|
|
LD (HL),A
|
|
INC HL
|
|
LD (smod_w_7BF),HL
|
|
LD A,30H
|
|
LD (smod_b_7BA),A
|
|
loc_7CB: DEC C
|
|
JR NZ,loc_787
|
|
LD A,(byte_2891)
|
|
AND 0FH
|
|
ADD A,30H
|
|
LD HL,(smod_w_7BF)
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),0
|
|
RET
|
|
|
|
sub_7DD: PUSH AF
|
|
smod_b_7DF: .EQU $+1
|
|
ADD A,0
|
|
LD (smod_b_7DF),A
|
|
POP AF
|
|
RET
|
|
|
|
loc_7E5: .db 20h
|
|
.db 83h
|
|
.db 0B8h
|
|
.db 0EDh
|
|
|
|
loc_7E9: .db 0E3h
|
|
.db 20h
|
|
.db 0BBh
|
|
.db 0DEh
|
|
|
|
sub_7ED: PUSH AF
|
|
smod_w_7F0: .EQU $+2
|
|
LD IY,loc_289D
|
|
LD IX,loc_2899
|
|
XOR (ix+0)
|
|
LD H,0
|
|
LD L,A
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
LD B,H
|
|
LD C,L
|
|
ADD IY,BC
|
|
LD A,(IY)
|
|
XOR (IX+1)
|
|
LD (ix+0),A
|
|
LD A,(IY+1)
|
|
XOR (IX+2)
|
|
LD (IX+1),A
|
|
LD A,(IY+2)
|
|
XOR (IX+3)
|
|
LD (IX+2),A
|
|
LD A,(IY+3)
|
|
LD (IX+3),A
|
|
POP AF
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_825: push de
|
|
push hl
|
|
ld hl,(smod_w_7F0)
|
|
ld bc,3FFh
|
|
add hl,bc
|
|
push hl
|
|
pop iy
|
|
ld ix, loc_7E5
|
|
xor a
|
|
loc_836: push af
|
|
ld hl,0FFFFh
|
|
ld de,0FFFFh
|
|
xor e
|
|
ld e, a
|
|
ld b,8
|
|
loc_841: scf
|
|
rr h
|
|
rr l
|
|
rr d
|
|
rr e
|
|
jr nc,loc_860
|
|
ld a,e
|
|
xor (ix+0)
|
|
ld e, a
|
|
ld a,d
|
|
xor (ix+1)
|
|
ld d,a
|
|
ld a,l
|
|
xor (ix+2)
|
|
ld l, a
|
|
ld a,h
|
|
xor (ix+3)
|
|
ld h,a
|
|
loc_860: djnz loc_841
|
|
ld a,h
|
|
cpl
|
|
ld (iy+0), a
|
|
dec iy
|
|
ld a,l
|
|
cpl
|
|
ld (iy+0), a
|
|
dec iy
|
|
ld a,d
|
|
cpl
|
|
ld (iy+0), a
|
|
dec iy
|
|
ld a,e
|
|
cpl
|
|
ld (iy+0), a
|
|
dec iy
|
|
pop af
|
|
inc a
|
|
jr nz,loc_836
|
|
pop hl
|
|
pop de
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
crc16: PUSH AF
|
|
crc_seed: .equ $+1
|
|
LD HL,0
|
|
LD DE,1021H ; crc16-ccitt polynomial
|
|
XOR H
|
|
LD H,A
|
|
LD B,8
|
|
loc_890: ADD HL,HL
|
|
JR NC,loc_899
|
|
LD A,H
|
|
XOR D
|
|
LD H,A
|
|
LD A,L
|
|
XOR E
|
|
LD L,A
|
|
loc_899: DJNZ loc_890
|
|
LD (crc_seed),HL
|
|
POP AF
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_8A0: xor a
|
|
ld h,a
|
|
ld l, a
|
|
ld (smod_b_7DF),a
|
|
ld (crc_seed),hl
|
|
ld hl,loc_2899
|
|
jp loc_726
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
byte_8AF: .db 4
|
|
flg_zmdm: .db 0
|
|
flg_xmdm: .db 0
|
|
flg_ymdm: .db 0
|
|
flg_help: .db 0
|
|
word_8B4: .dw 0
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_8B6: xor a
|
|
ld c,a
|
|
ld b,8
|
|
ld a,h
|
|
loc_8BB: rlca
|
|
set 7,c
|
|
jr c,loc_8C4
|
|
rr c
|
|
djnz loc_8BB
|
|
loc_8C4: ld a,h
|
|
and c
|
|
ld h,a
|
|
ld l,0
|
|
ld (word_2CEB),hl
|
|
dec hl
|
|
ld (word_8B4),hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_8D1: xor a
|
|
ld hl,byte_2C9D
|
|
ld b,61h
|
|
call fill_bhla
|
|
ld hl,rbuf_bfree
|
|
call sub_64E
|
|
call sub_825
|
|
ld hl,(word_179E)
|
|
ld (word_2CE9),hl
|
|
ld de,(6)
|
|
ex de,hl
|
|
or a
|
|
sbc hl,de
|
|
call sub_8B6
|
|
ld a,(flg_zmdm)
|
|
cp 0
|
|
jr z,loc_8FD
|
|
ld a,7
|
|
loc_8FD: ld (byte_2CA4),a
|
|
ld a,10h
|
|
ld (byte_2C9E),a
|
|
ld a,(byte_8AF)
|
|
cp 3
|
|
jr c,loc_947
|
|
ld a,1
|
|
ld (smod_b_B0A),a
|
|
call loc_ACF
|
|
jp c,loc_954
|
|
or a
|
|
jr z,loc_92B
|
|
cp 4
|
|
jr z,loc_924
|
|
cp 0Fh
|
|
jr nz,loc_924
|
|
jr locret_953
|
|
|
|
loc_924: call sub_BB4
|
|
jr c,loc_954
|
|
jr locret_953
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_92B: ld a,3
|
|
ld (byte_8AF),a
|
|
xor a
|
|
ld (byte_2D04),a
|
|
call sub_11C1
|
|
jr c,loc_954
|
|
call sub_961
|
|
jr c,loc_954
|
|
jr z,locret_953 ; ret z ?
|
|
call sub_11FA
|
|
jr c,loc_954
|
|
jr loc_92B
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_947: call sub_961
|
|
jr c,loc_954
|
|
jr z,locret_953 ; ret z ?
|
|
call sub_11FA
|
|
jr c,loc_954
|
|
locret_953: ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_954: call sub_DD9
|
|
ld a,(byte_2CA5)
|
|
cp 0FFh
|
|
call z,sub_D0E
|
|
jr locret_953 ; ret ?
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_961: ld a,(flg_xmdm)
|
|
cpl
|
|
ld hl,flg_ymdm
|
|
or (hl)
|
|
ld (byte_2CA3),a
|
|
ld a,(byte_2CA4)
|
|
or a
|
|
jr z,loc_975
|
|
ld (byte_2CA1),a
|
|
loc_975: ld a,(flg_ymdm)
|
|
cp 0FFh
|
|
jr z,loc_988
|
|
ld a,(byte_2CA2)
|
|
cp 2
|
|
jr nz,loc_988
|
|
ld a,0
|
|
ld (byte_2CA3),a
|
|
loc_988: ld a,(byte_2CA2)
|
|
cp 1
|
|
jr nz,loc_994
|
|
ld a,0FFh
|
|
ld (byte_2CA3),a
|
|
loc_994: ld a,(byte_2CA1)
|
|
cp 7
|
|
jr z,loc_9AE
|
|
ld a,(byte_2CA1)
|
|
cp 3
|
|
jr nz,loc_9AE
|
|
ld a,(byte_2CA3)
|
|
cp 0FFh
|
|
jr nz,loc_9AE
|
|
ld a,7
|
|
ld (byte_2CA1),a
|
|
loc_9AE: ld a,(byte_8AF)
|
|
cp 3
|
|
jr c,loc_9E3
|
|
call sub_643
|
|
ld hl,(word_2CE9)
|
|
xor a
|
|
or (hl)
|
|
scf
|
|
ret z
|
|
push hl
|
|
ld b,1
|
|
call Search0
|
|
dec hl
|
|
ld (hl),20h
|
|
pop hl
|
|
ld de,loc_2CD0
|
|
ld a,7
|
|
ld (de),a
|
|
ld a,0FFh
|
|
call sub_172E
|
|
ld hl,(word_2CD2)
|
|
ld de,file_fcb
|
|
call sub_1492
|
|
ld hl,(byte_17A0)
|
|
ld (word_17A2),hl
|
|
loc_9E3: call sub_4A4
|
|
ld de,file_fcb
|
|
call sub_169E
|
|
jr nz,loc_A11
|
|
ld de,file_fcb
|
|
ld c,F_MAKE
|
|
call bdos_s
|
|
ret c
|
|
ld a,0FFh
|
|
ld (byte_2CA5),a
|
|
ld hl,byte_280E
|
|
call sub_64A
|
|
ld a,(byte_2CD1)
|
|
cp 2
|
|
jr c,loc_A0D
|
|
sub_A09: ld de,(byte_2CD4)
|
|
loc_A0D: ld a,1
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_A11: call sub_A09
|
|
ld a,(byte_8AF)
|
|
cp 4
|
|
jr nz,loc_A24
|
|
ld a,(byte_2CA1)
|
|
cp 7
|
|
jr nz,loc_A35
|
|
jr loc_A2E
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_A24: ld de,file_fcb
|
|
ld c,F_DELETE
|
|
call bdos_s
|
|
jr nc,loc_9E3
|
|
loc_A2E: call sub_552
|
|
ld a,5
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_A35: ld a,(byte_2CA1)
|
|
cp 3
|
|
jr z,loc_A43
|
|
ld a,(flg_help)
|
|
cp 0FFh
|
|
jr nz,loc_A24
|
|
loc_A43: ld de,loc_2811
|
|
ld c,F_DMAOFF
|
|
call bdos ; BDOS function 26 (F_DMAOFF) - Set DMA address
|
|
ld e, 1
|
|
ld c,F_MULTISEC
|
|
call bdos ; BDOS function 44 (F_MULTISEC) - Set number of records to read/write at once
|
|
ld de,file_fcb
|
|
ld c,F_OPEN
|
|
call bdos_s
|
|
ret c
|
|
ld a,0FFh
|
|
ld (byte_2CA5),a
|
|
ld hl,byte_280E
|
|
call sub_64A
|
|
ld de,file_fcb
|
|
ld c,F_SIZE
|
|
call bdos_s
|
|
ret c
|
|
ld hl,byte_17C7
|
|
ld (hl),0
|
|
ld hl,loc_17C4
|
|
call sub_729
|
|
ld de,loc_2CAB
|
|
call sub_692
|
|
ex de,hl
|
|
ld b,7
|
|
loc_A83: push hl
|
|
sla (hl)
|
|
inc hl
|
|
rl (hl)
|
|
inc hl
|
|
rl (hl)
|
|
inc hl
|
|
rl (hl)
|
|
pop hl
|
|
djnz loc_A83
|
|
ld de,file_fcb
|
|
ld c,DRV_DPB
|
|
call bdos_s
|
|
ret c
|
|
ld a,(byte_2CA1)
|
|
cp 3
|
|
jr z,loc_AA6
|
|
ld a,9
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_AA6: ld a,80h
|
|
ld (byte_280E),a
|
|
loc_AAB: ld hl,byte_280E
|
|
call sub_654
|
|
jr z,loc_AC6
|
|
cp 1Ah
|
|
jr nz,loc_AAB
|
|
ld a,(byte_2810)
|
|
dec a
|
|
ld (byte_280F),a
|
|
ld hl,byte_280E
|
|
ld a,7Fh
|
|
sub (hl)
|
|
jr loc_AC8
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_AC6: ld a,80h
|
|
loc_AC8: ld (byte_280E),a
|
|
ld a,1
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_ACF: xor a
|
|
ld (byte_2D04),a
|
|
ld a,4
|
|
ld hl,byte_8AF
|
|
cp (hl)
|
|
ld a,0
|
|
ret nz
|
|
ld hl,word_2CED
|
|
ld b,11h
|
|
xor a
|
|
call fill_bhla
|
|
call sub_FAA
|
|
ld a,(byte_2CA6)
|
|
cp 0FFh
|
|
ld b,5
|
|
jr z,loc_AF3
|
|
ld b,0Ah
|
|
|
|
loc_AF3: push bc
|
|
ld ix,loc_2CE0
|
|
ld (ix+3),20h
|
|
ld (ix+2),0
|
|
ld hl,(word_2CEB)
|
|
ld (ix+0),l
|
|
ld (ix+1),h
|
|
smod_b_B0A: .equ $+1
|
|
ld a,1 ; self modifying value
|
|
CALL sub_13BA
|
|
LD A,(smod_b_B0A)
|
|
CP 5
|
|
JR NZ,0B1AH
|
|
LD A,1
|
|
LD (smod_b_B0A),A
|
|
loc_B1A: CALL sub_FD1
|
|
LD HL,loc_B96
|
|
LD BC,0AH
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
loc_B28: LD HL,byte_2D04
|
|
INC (HL)
|
|
CALL sub_482
|
|
loc_B2F: POP BC
|
|
DJNZ loc_AF3
|
|
XOR A
|
|
RET
|
|
|
|
loc_B34: POP BC
|
|
LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
loc_B39: POP BC
|
|
CALL sub_D9B
|
|
LD A,0FH
|
|
RET
|
|
|
|
loc_B40: LD HL,loc_2CE0
|
|
CALL sub_688
|
|
JR loc_B68
|
|
|
|
|
|
loc_B48: LD IX,loc_2CA7
|
|
LD A,(IX+3)
|
|
AND 40H
|
|
LD (byte_2C9D),A
|
|
CALL loc_EC7
|
|
CP 0EBH
|
|
LD A,6
|
|
JR NZ,loc_B6A
|
|
LD HL,(word_2CE9)
|
|
LD DE,loc_2CAF
|
|
LD BC,20H
|
|
LDIR
|
|
loc_B68: LD A,3
|
|
loc_B6A: PUSH AF
|
|
LD HL,loc_2CE0
|
|
CALL sub_688
|
|
POP AF
|
|
CALL sub_13BA
|
|
CALL sub_FC9
|
|
JP loc_B28
|
|
|
|
loc_B7B: LD HL,loc_2CA7
|
|
LD DE,loc_2C9F
|
|
CALL sub_692
|
|
LD A,1
|
|
LD (smod_b_B0A),A
|
|
CALL loc_EC7
|
|
CP 0EBH
|
|
LD A,6
|
|
JR NZ,loc_B6A
|
|
POP BC
|
|
LD A,4
|
|
RET
|
|
|
|
loc_B96: .db 0
|
|
.db 0Bh
|
|
.db 0FEh
|
|
.db 4
|
|
.db 2
|
|
.db 11h
|
|
.db 12h
|
|
.db 0Fh
|
|
.db 8
|
|
.db 10h
|
|
|
|
loc_BA0: .dw loc_B34
|
|
.dw loc_B39
|
|
.dw loc_B1A
|
|
.dw loc_B34
|
|
.dw loc_B40
|
|
.dw loc_B48
|
|
.dw loc_B7B
|
|
.dw loc_B28
|
|
.dw loc_B2F
|
|
.dw loc_B2F
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_BB4: call sub_BD3
|
|
ret c
|
|
cp 0Bh
|
|
jr z,loc_BC2
|
|
cp 5
|
|
jr z,loc_BC2
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_BC2: call loc_ACF
|
|
ret c
|
|
cp 4
|
|
jr z,sub_BB4
|
|
cp 0Fh
|
|
ld a,0
|
|
ret z
|
|
ld a,0FFh
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_BD3: call sub_961
|
|
jr nc,loc_BDF
|
|
ld a,5
|
|
ld (smod_b_B0A),a
|
|
or a
|
|
ret
|
|
|
|
loc_BDF: cp 9
|
|
jr z,loc_BE9
|
|
ld hl,loc_2CAB
|
|
call sub_688
|
|
loc_BE9: xor a
|
|
ld (byte_2D04),a
|
|
call sub_FAA
|
|
loc_BF0: call sub_FC9
|
|
call sub_D30
|
|
ld hl,loc_2CAB
|
|
ld de,loc_2CE0
|
|
call sub_692
|
|
ld hl,rbuf_bfree
|
|
call sub_64E
|
|
ld a,9
|
|
call sub_13BA
|
|
loc_C0A: call sub_FD1
|
|
ld hl,stab_CE4
|
|
ld bc,7
|
|
cpir
|
|
jp z,stab_jmp
|
|
ld a,0FFh
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_C1C: LD HL,byte_2D04
|
|
INC (HL)
|
|
CALL sub_482
|
|
LD HL,byte_2D04
|
|
LD A,0AH
|
|
CP (HL)
|
|
JP NZ,loc_BF0
|
|
LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
loc_C30: CALL loc_EC7
|
|
JP loc_BF0
|
|
|
|
loc_C36: LD DE,loc_2CA7
|
|
LD HL,loc_2CAB
|
|
CALL sub_6D3
|
|
JP NZ,loc_BF0
|
|
CALL sub_D0E
|
|
JR Z,loc_C50
|
|
loc_C47: LD A,0CH
|
|
LD (smod_b_B0A),A
|
|
LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
loc_C50: CALL sub_643
|
|
LD A,0BH
|
|
OR A
|
|
RET
|
|
|
|
loc_C57: LD HL,byte_2D04
|
|
INC (HL)
|
|
CALL sub_482
|
|
LD HL,byte_2D04
|
|
LD A,0AH
|
|
CP (HL)
|
|
JR NZ,loc_C6A
|
|
LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
loc_C6A: LD HL,loc_2CAF
|
|
CALL sub_DDC
|
|
JP loc_BF0
|
|
|
|
loc_C73: LD DE,loc_2CA7
|
|
LD HL,loc_2CAB
|
|
CALL sub_6D3
|
|
JP NZ,0C57H
|
|
loc_C7F: CALL disp_bsy
|
|
CALL loc_EC7
|
|
LD HL,stab_CF9
|
|
LD BC,7
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
JP loc_C1C
|
|
|
|
loc_C93: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
sub_C97: XOR A
|
|
LD (byte_2D04),A
|
|
LD DE,loc_2CF9
|
|
LD HL,loc_2CAB
|
|
LD BC,loc_2CAB
|
|
CALL sub_6E4
|
|
JP sub_FBA
|
|
|
|
loc_CAA: CALL sub_C97
|
|
JP loc_C0A
|
|
|
|
loc_CB0: CALL sub_C97
|
|
JP loc_C7F
|
|
|
|
loc_CB6: CALL sub_C97
|
|
LD HL,loc_2CAB
|
|
LD DE,loc_2CE0
|
|
CALL sub_692
|
|
LD A,3
|
|
CALL sub_13BA
|
|
JP loc_C7F
|
|
|
|
loc_CCA: CALL sub_C97
|
|
CALL sub_D30
|
|
JP C,loc_C47
|
|
LD HL,loc_2CAB
|
|
LD DE,loc_2CE0
|
|
CALL sub_692
|
|
LD A,3
|
|
CALL sub_13BA
|
|
JP loc_C0A
|
|
|
|
stab_CE4: .db 6
|
|
.db 0FEh
|
|
.db 4
|
|
.db 0Bh
|
|
.db 0FFh
|
|
.db 0Ah
|
|
.db 0FCh
|
|
|
|
.dw loc_C1C
|
|
.dw loc_C73
|
|
.dw loc_C57
|
|
.dw loc_C36
|
|
.dw loc_C30
|
|
.dw loc_C1C
|
|
.dw loc_C1C
|
|
|
|
stab_CF9: .db 0EBh
|
|
.db 0EAh
|
|
.db 0E9h
|
|
.db 0E8h
|
|
.db 0FFh
|
|
.db 0FEh
|
|
.db 010h
|
|
|
|
.dw loc_C93
|
|
.dw loc_C1C
|
|
.dw loc_C57
|
|
.dw loc_CAA
|
|
.dw loc_CB0
|
|
.dw loc_CB6
|
|
.dw loc_CCA
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_D0E: call sub_50B
|
|
call sub_D30
|
|
ret c
|
|
loc_D15: ld a,1Ah
|
|
call loc_D68
|
|
ret c
|
|
ld hl,byte_280E
|
|
ld a,1
|
|
cp (hl)
|
|
jr nz,loc_D15
|
|
ld a,0
|
|
ld (byte_2CA5),a
|
|
ld c,F_CLOSE
|
|
ld de,file_fcb
|
|
jp bdos_s
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_D30: ld bc,(word_2CF5)
|
|
ld a,b
|
|
or c
|
|
ret z
|
|
ld hl,(word_2CE9)
|
|
loc_D3A: ld a,(byte_2CA3)
|
|
cp 0FFh
|
|
jr z,loc_D52
|
|
smod_b_D41: .equ $+1
|
|
loc_D41: ld a,0
|
|
cp 0Dh
|
|
jr z,loc_D52
|
|
ld a,(hl)
|
|
cp 0Ah
|
|
jr nz,loc_D52
|
|
ld a,0Dh
|
|
call loc_D68
|
|
ret c
|
|
loc_D52: ld a,(hl)
|
|
ld (smod_b_D41),a
|
|
inc hl
|
|
dec bc
|
|
call loc_D68
|
|
ret c
|
|
ld a,b
|
|
or c
|
|
jr nz,loc_D3A
|
|
call sub_50B
|
|
call sub_FAA
|
|
xor a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_D68: ld (byte_D6F),a
|
|
push bc
|
|
push de
|
|
push hl
|
|
byte_D6F: .equ $+1
|
|
loc_D6E: LD C,0
|
|
LD HL,byte_280E
|
|
CALL sub_669
|
|
JR NZ,loc_0D97
|
|
LD HL,byte_280E
|
|
CALL sub_64A
|
|
LD C,F_DMAOFF ; set dma
|
|
LD DE,loc_2811
|
|
CALL bdos
|
|
LD C,F_MULTISEC
|
|
LD E,1
|
|
CALL bdos
|
|
LD C,F_WRITE ; wr. seq.
|
|
LD DE,file_fcb
|
|
CALL bdos_s
|
|
JR NC,loc_D6E
|
|
loc_0D97: POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
sub_D9B: LD HL,loc_2CE0
|
|
CALL sub_688
|
|
LD B,4
|
|
loc_0DA3: PUSH BC
|
|
LD A,8
|
|
CALL sub_13BA
|
|
LD B,64H
|
|
CALL sub_DE7
|
|
JR C,loc_DB8
|
|
CP 4FH
|
|
JR Z,loc_DBC
|
|
CP 0FDH
|
|
JR Z,loc_DBC
|
|
loc_DB8: POP BC
|
|
DJNZ loc_0DA3
|
|
PUSH BC
|
|
loc_DBC: POP BC
|
|
LD B,1
|
|
CALL sub_DE7
|
|
XOR A
|
|
RET
|
|
|
|
stab_DC4: .db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 18h ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 8 ;
|
|
.db 0 ;
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_DD9: ld hl,stab_DC4
|
|
sub_DDC: ld a,(hl)
|
|
inc hl
|
|
or a
|
|
ret z
|
|
push hl
|
|
call loc_145C
|
|
pop hl
|
|
jr sub_DDC
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_DE7: push bc
|
|
call sub_16AA
|
|
call nz,sub_16A5
|
|
cp 1Bh
|
|
ld a,18h
|
|
ld c,0Ah
|
|
call z,sub_57F
|
|
pop bc
|
|
loc_DF8: call sub_5D4
|
|
jr nz,loc_E03
|
|
djnz loc_DF8
|
|
ld a,0FEh
|
|
scf
|
|
ret
|
|
|
|
loc_E03: or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
loc_E05: LD B,64H
|
|
CALL sub_DE7
|
|
RET C
|
|
AND 7FH
|
|
LD HL,loc_E2A
|
|
LD BC,2
|
|
CPIR
|
|
JR Z,loc_E05
|
|
LD BC,3
|
|
CPIR
|
|
RET Z
|
|
LD B,A
|
|
AND 60H
|
|
JR NZ,loc_E28
|
|
LD A,(byte_2C9D)
|
|
OR A
|
|
JR NZ,loc_E05
|
|
loc_E28: LD A,B
|
|
RET
|
|
|
|
loc_E2A: .db 11h ; dc1
|
|
.db 13h ; dc3
|
|
.db 0dh ; cr
|
|
.db 0ah ; lf
|
|
.db 18h ; can
|
|
|
|
sub_E2F: ld b,64H
|
|
CALL sub_DE7
|
|
RET C
|
|
LD E,A
|
|
loc_E36: AND 60H
|
|
LD A,E
|
|
RET NZ
|
|
CP 18H
|
|
JR Z,loc_E50
|
|
LD HL,loc_EA2
|
|
LD BC,4
|
|
CPIR
|
|
JR Z,sub_E2F
|
|
LD A,(byte_2C9D)
|
|
OR A
|
|
JR NZ,sub_E2F
|
|
LD A,E
|
|
RET
|
|
|
|
loc_E50: LD B,64H
|
|
CALL sub_DE7
|
|
RET C
|
|
CP 18H
|
|
JR NZ,loc_0E74
|
|
LD B,64h
|
|
CALL sub_DE7
|
|
RET C
|
|
CP 18H
|
|
JR NZ,loc_0E74
|
|
LD B,64H
|
|
CALL sub_DE7
|
|
RET C
|
|
CP 18H
|
|
JR NZ,loc_0E74
|
|
LD B,64H
|
|
CALL sub_DE7
|
|
RET C
|
|
loc_0E74: LD HL,loc_EA6
|
|
LD BC,0BH
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
LD L,A
|
|
LD A,(byte_2C9D)
|
|
OR A
|
|
JR Z,loc_E8B
|
|
LD A,L
|
|
AND 60H
|
|
JR Z,loc_E50
|
|
loc_E8B: LD A,L
|
|
AND 60H
|
|
CP 40H
|
|
JR NZ,loc_E9C
|
|
LD A,L
|
|
XOR 40H
|
|
RET
|
|
|
|
loc_E96: LD A,7FH
|
|
RET
|
|
|
|
loc_E99: LD A,0FFH
|
|
RET
|
|
|
|
loc_E9C: LD A,0FFH
|
|
loc_E9E: OR 80H
|
|
SCF
|
|
RET
|
|
|
|
loc_EA2: .db 11h ;
|
|
.db 91h ; ?
|
|
.db 13h ;
|
|
.db 93h ; ?
|
|
loc_EA6: .db 11h ;
|
|
.db 91h ; ?
|
|
.db 13h ;
|
|
.db 93h ; ?
|
|
.db 18h ;
|
|
.db 68h ; h
|
|
.db 69h ; i
|
|
.db 6Ah ; j
|
|
.db 6Bh ; k
|
|
.db 6Ch ; l
|
|
.db 6Dh ; m
|
|
|
|
.dw loc_E99
|
|
.dw loc_E96
|
|
.dw loc_E9E
|
|
.dw loc_E9E
|
|
.dw loc_E9E
|
|
.dw loc_E9E
|
|
.dw loc_E9E
|
|
.dw loc_E50
|
|
.dw loc_E50
|
|
.dw loc_E50
|
|
.dw loc_E50
|
|
|
|
loc_EC7: OR A
|
|
LD HL,(word_2CEB)
|
|
LD DE,(word_2CEF)
|
|
SBC HL,DE
|
|
JP C,sub_F4E
|
|
CALL sub_8A0
|
|
LD HL,0
|
|
LD (loc_2CF9),HL
|
|
loc_EDD: CALL sub_E2F
|
|
JP C,loc_F38
|
|
CALL sub_FA2
|
|
CALL Z,sub_7ED
|
|
CALL NZ,crc16
|
|
LD HL,(word_2CEB)
|
|
LD BC,(word_2CEF)
|
|
SBC HL,BC
|
|
JP Z,sub_F4E
|
|
INC BC
|
|
LD (word_2CEF),BC
|
|
LD HL,(loc_2CF9)
|
|
INC HL
|
|
LD (loc_2CF9),HL
|
|
LD HL,(word_2CED)
|
|
LD (HL),A
|
|
INC HL
|
|
LD (word_2CED),HL
|
|
JR loc_EDD
|
|
|
|
sub_F0E: .db 0E8h ; è
|
|
.db 0E9h ; é
|
|
.db 0EAh ; ê
|
|
.db 0EBh ; ë
|
|
.db 98h ; ?
|
|
.db 0FFh ; ÿ
|
|
.db 0FEh ; þ
|
|
|
|
.dw sub_F52
|
|
.dw sub_F4E
|
|
.dw sub_F54
|
|
.dw sub_F58
|
|
.dw sub_F58
|
|
.dw sub_F58
|
|
.dw sub_F58
|
|
|
|
stab_F23: .db 0E8h ; è
|
|
.db 0E9h ; é
|
|
.db 0EAh ; ê
|
|
.db 0EBh ; ë
|
|
.db 98h ; ?
|
|
.db 0FFh ; ÿ
|
|
.db 0FEh ; þ
|
|
|
|
.dw sub_F52
|
|
.dw sub_F4E
|
|
.dw sub_F54
|
|
.dw sub_F7C
|
|
.dw sub_F7C
|
|
.dw sub_F7C
|
|
.dw sub_F7C
|
|
|
|
loc_F38: LD HL,stab_F23
|
|
LD BC,7
|
|
CALL sub_FA2
|
|
JR Z,loc_F49
|
|
LD HL,sub_F0E
|
|
LD BC,7
|
|
loc_F49: CPIR
|
|
JP Z,stab_jmp
|
|
sub_F4E: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
sub_F52: SCF
|
|
RET
|
|
|
|
sub_F54: LD A,10H
|
|
SCF
|
|
RET
|
|
|
|
sub_F58: LD (byte_2CFD),A
|
|
AND 7FH
|
|
CALL crc16
|
|
LD B,2
|
|
loc_F62: PUSH BC
|
|
CALL sub_E2F
|
|
CALL crc16
|
|
POP BC
|
|
JP C,loc_F38
|
|
DJNZ loc_F62
|
|
LD A,H
|
|
OR L
|
|
JR Z,loc_F77
|
|
loc_F73: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
loc_F77: LD A,(byte_2CFD)
|
|
OR A
|
|
RET
|
|
|
|
sub_F7C: LD (byte_2CFD),A
|
|
AND 7FH
|
|
CALL sub_7ED
|
|
LD B,4
|
|
loc_F86: PUSH BC
|
|
CALL sub_E2F
|
|
CALL sub_7ED
|
|
POP BC
|
|
JP C,loc_F38
|
|
DJNZ loc_F86
|
|
LD HL,loc_2899
|
|
LD DE,loc_7E9
|
|
CALL sub_6D3
|
|
JP Z,loc_F77
|
|
JP loc_F73
|
|
|
|
sub_FA2: LD E,A
|
|
LD A,(byte_2C9E)
|
|
CP 20H
|
|
LD A,E
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_FAA: ld hl,word_2CE9
|
|
ld de,word_2CED
|
|
ldi
|
|
ldi
|
|
ld hl,0
|
|
ld (word_2CEF),hl
|
|
sub_FBA: ld hl,word_2CED
|
|
ld de,loc_2CF3
|
|
loc_FC0: ldi
|
|
ldi
|
|
ldi
|
|
ldi
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_FC9: ld hl,loc_2CF3
|
|
ld de,word_2CED
|
|
jr loc_FC0
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_FD1: xor a
|
|
ld (byte_2D01),a
|
|
ld hl,400h
|
|
ld (word_2CFE),hl
|
|
loc_FDB: ld a,5
|
|
ld (byte_2D00),a
|
|
loc_FE0: ld b,64h
|
|
call sub_DE7
|
|
jp c,loc_108A
|
|
ld hl,stab_109E
|
|
ld bc,3
|
|
cpir
|
|
jp z,stab_jmp
|
|
jr loc_1024
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
LD HL,byte_2D00
|
|
DEC (HL)
|
|
LD A,10H
|
|
JP Z,loc_108A
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
JR C,loc_FE0
|
|
LD HL,stab_10A7
|
|
LD BC,2
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
JR loc_1024
|
|
|
|
LD HL,byte_2D00
|
|
DEC (HL)
|
|
LD A,10H
|
|
JP Z,loc_108A
|
|
JR loc_FE0
|
|
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
JR C,loc_1035
|
|
loc_1024: ld hl,(word_2CFE)
|
|
dec hl
|
|
ld (word_2CFE),hl
|
|
ld a,h
|
|
or l
|
|
ld a,0FCh
|
|
jp z,loc_108A
|
|
jp loc_FDB
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1035: LD A,0FFH
|
|
JP loc_108A
|
|
|
|
LD A,5
|
|
LD (byte_2D00),A
|
|
CALL loc_E05
|
|
JR C,loc_108A
|
|
LD HL,stab_10AD
|
|
LD BC,2
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
JR loc_1024
|
|
|
|
CALL loc_E05
|
|
JR C,loc_108A
|
|
LD HL,stab_10B3
|
|
LD BC,4
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
JR loc_1024
|
|
|
|
LD A,10H
|
|
LD (byte_2C9E),A
|
|
CALL sub_113F
|
|
JR loc_107F
|
|
|
|
LD A,10H
|
|
LD (byte_2C9E),A
|
|
CALL sub_1100
|
|
JR loc_107F
|
|
|
|
LD A,20H
|
|
LD (byte_2C9E),A
|
|
CALL sub_10C5
|
|
loc_107F: PUSH AF
|
|
LD HL,loc_2CA7
|
|
LD DE,loc_2CE4
|
|
CALL sub_692
|
|
POP AF
|
|
loc_108A: ld hl,stab_10BF
|
|
ld bc,6
|
|
cpir
|
|
jr nz,loc_109C
|
|
cp 98h
|
|
jr nz,loc_109A
|
|
ld a,10h
|
|
loc_109A: scf
|
|
ret
|
|
|
|
loc_109C: or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
stab_109E: .db 18h ;
|
|
.db 0AAh ; ª
|
|
.db 2Ah ; *
|
|
.db 3Ah ; :
|
|
.db 10h ;
|
|
.db 3Ah ; :
|
|
.db 10h ;
|
|
.db 0F5h ; õ
|
|
.db 0Fh ;
|
|
|
|
stab_10A7: .db 6Bh ; k
|
|
.db 18h ;
|
|
.db 12h ;
|
|
.db 10h ;
|
|
.db 1Dh ;
|
|
.db 10h ;
|
|
|
|
stab_10AD: .db 2Ah ; *
|
|
.db 18h ;
|
|
.db 51h ; Q
|
|
.db 10h ;
|
|
.db 3Fh ; ?
|
|
.db 10h ;
|
|
|
|
stab_10B3: .db 43h ; C
|
|
.db 41h ; A
|
|
.db 42h ; B
|
|
.db 18h ;
|
|
.db 0F5h ; õ
|
|
.db 0Fh ;
|
|
|
|
.db 63h ; c
|
|
.db 10h ;
|
|
.db 6Dh ; m
|
|
.db 10h ;
|
|
.db 77h ; w
|
|
.db 10h ;
|
|
|
|
stab_10BF: .db 98h ; ?
|
|
.db 6 ;
|
|
.db 10h ;
|
|
.db 0FFh ; ÿ
|
|
.db 0FEh ; þ
|
|
.db 0FCh ; ü
|
|
|
|
sub_10C5: CALL sub_8A0
|
|
CALL sub_E2F
|
|
RET C
|
|
LD (byte_2D01),A
|
|
CALL sub_7ED
|
|
LD HL,loc_2CA7
|
|
LD B,4
|
|
loc_10D7: PUSH BC
|
|
PUSH HL
|
|
CALL sub_E2F
|
|
CALL sub_7ED
|
|
POP HL
|
|
POP BC
|
|
LD (HL),A
|
|
INC HL
|
|
RET C
|
|
DJNZ loc_10D7
|
|
LD B,4
|
|
loc_10E8: PUSH BC
|
|
CALL sub_E2F
|
|
CALL sub_7ED
|
|
POP BC
|
|
RET C
|
|
DJNZ loc_10E8
|
|
LD HL,loc_2899
|
|
LD DE,loc_7E9
|
|
CALL sub_6D3
|
|
JR Z,loc_1132
|
|
JR loc_113B
|
|
|
|
sub_1100: CALL sub_8A0
|
|
CALL sub_E2F
|
|
RET C
|
|
LD (byte_2D01),A
|
|
CALL crc16
|
|
LD HL,loc_2CA7
|
|
LD B,4
|
|
loc_1112: PUSH BC
|
|
PUSH HL
|
|
CALL sub_E2F
|
|
CALL crc16
|
|
POP HL
|
|
POP BC
|
|
LD (HL),A
|
|
INC HL
|
|
RET C
|
|
DJNZ loc_1112
|
|
LD B,2
|
|
loc_1123: PUSH BC
|
|
CALL sub_E2F
|
|
CALL crc16
|
|
POP BC
|
|
RET C
|
|
DJNZ loc_1123
|
|
LD A,H
|
|
OR L
|
|
JR NZ,loc_113B
|
|
loc_1132: LD A,0FFH
|
|
LD (byte_2CA6),A
|
|
LD A,(byte_2D01)
|
|
RET
|
|
|
|
loc_113B: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
sub_113F: CALL sub_8A0
|
|
CALL sub_1194
|
|
RET C
|
|
LD (byte_2D01),A
|
|
CALL crc16
|
|
LD HL,loc_2CA7
|
|
LD B,4
|
|
loc_1151: PUSH BC
|
|
PUSH HL
|
|
CALL sub_1194
|
|
JR NC,loc_115B
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
loc_115B: CALL crc16
|
|
POP HL
|
|
POP BC
|
|
LD (HL),A
|
|
INC HL
|
|
DJNZ loc_1151
|
|
LD B,2
|
|
loc_1166: PUSH BC
|
|
CALL sub_1194
|
|
JR NC,loc_116E
|
|
POP BC
|
|
RET
|
|
|
|
loc_116E: CALL crc16
|
|
POP BC
|
|
DJNZ loc_1166
|
|
LD A,H
|
|
OR L
|
|
JR NZ,loc_1190
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
CP 0DH
|
|
JR NZ,loc_1186
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
loc_1186: OR A
|
|
LD A,0FFH
|
|
LD (byte_2CA6),A
|
|
LD A,(byte_2D01)
|
|
RET
|
|
|
|
loc_1190: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
sub_1194: CALL loc_E05
|
|
RET C
|
|
CALL sub_11B3
|
|
JR NZ,loc_11AF
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
LD B,A
|
|
PUSH BC
|
|
CALL loc_E05
|
|
POP BC
|
|
RET C
|
|
CALL sub_11B3
|
|
JR NZ,loc_11AF
|
|
OR B
|
|
RET
|
|
|
|
loc_11AF: LD A,0FFH
|
|
SCF
|
|
RET
|
|
|
|
sub_11B3: LD L,A
|
|
SUB 30H
|
|
CP 0AH
|
|
JR C,loc_11BC
|
|
SUB 27H
|
|
loc_11BC: LD L,A
|
|
AND 0F0H
|
|
LD A,L
|
|
RET
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_11C1: ld a,0FFh
|
|
ld (byte_2D02),a
|
|
call sub_FAA
|
|
ld a,(byte_2C9E)
|
|
cp 10h
|
|
ld a,43h
|
|
jr z,loc_11D4
|
|
ld a,15h
|
|
|
|
loc_11D4: call loc_145C
|
|
ld b,64h
|
|
call sub_1289
|
|
or a
|
|
jr z,loc_11F3
|
|
cp 0F6h
|
|
jr z,loc_11E7
|
|
ld a,0FFh
|
|
scf
|
|
ret
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_11E7: ld a,6
|
|
call loc_145C
|
|
ld b,0Ah
|
|
call sub_DE7
|
|
jr sub_11C1
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_11F3: ld a,6
|
|
call loc_145C
|
|
xor a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_11FA: ld a,0FFh
|
|
ld (byte_2D02),a
|
|
ld (byte_2CA3),a
|
|
xor a
|
|
ld (byte_2D07),a
|
|
call sub_FAA
|
|
ld hl,loc_2CAB
|
|
call sub_688
|
|
ld a,(byte_2C9E)
|
|
cp 10h
|
|
ld a,43h
|
|
jr z,loc_121A
|
|
ld a,15h
|
|
loc_121A: call loc_145C
|
|
loc_121D: ld a,(byte_2D07)
|
|
or a
|
|
ld b,82h
|
|
jr z,loc_1227
|
|
ld b,32h
|
|
loc_1227: call sub_1289
|
|
jr c,loc_125A
|
|
push af
|
|
call sub_50B
|
|
pop af
|
|
ld hl,byte_2D07
|
|
cp (hl)
|
|
jr z,loc_1250
|
|
dec a
|
|
cp (hl)
|
|
jr nz,loc_126D
|
|
inc (hl)
|
|
ld de,word_2CEF
|
|
ld hl,loc_2CAB
|
|
ld bc,loc_2CAB
|
|
call sub_6E4
|
|
call sub_FBA
|
|
call sub_D30
|
|
jr c,loc_1285
|
|
|
|
loc_1250: call sub_FC9
|
|
ld a,6
|
|
call loc_145C
|
|
jr loc_121D
|
|
|
|
loc_125A: cp 0F6h
|
|
jr nz,loc_126D
|
|
call sub_D0E
|
|
jr c,loc_1285
|
|
call sub_643
|
|
ld a,6
|
|
call loc_145C
|
|
xor a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_126D: cp 0FFh
|
|
jr nz,loc_1285
|
|
ld a,(byte_2D02)
|
|
cp 0FFh
|
|
jr nz,loc_1285
|
|
ld a,(byte_2C9E)
|
|
or a
|
|
jr z,loc_1285
|
|
xor a
|
|
ld (byte_2C9E),a
|
|
jp sub_11FA
|
|
|
|
loc_1285: ld a,0FFh
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1289: ld a,b
|
|
ld (byte_2D03),a
|
|
xor a
|
|
ld (byte_2D04),a
|
|
ld a,0
|
|
ld (byte_2D09),a
|
|
loc_1296: ld a,(byte_2D03)
|
|
ld b,a
|
|
call sub_DE7
|
|
ld (byte_2D08),a
|
|
ld hl,loc_12AE
|
|
ld bc,4
|
|
cpir
|
|
jp z,stab_jmp
|
|
jp loc_137A
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_12AE: .db 2 ;
|
|
.db 1 ;
|
|
.db 4 ;
|
|
.db 18h ;
|
|
|
|
.dw loc_136A
|
|
.dw loc_135F
|
|
.dw loc_12BF
|
|
.dw loc_12BA
|
|
|
|
loc_12BA: LD HL,400H
|
|
JR loc_12C2
|
|
|
|
loc_12BF: LD HL,80H
|
|
loc_12C2: LD (word_2D05),HL
|
|
ld b,0ah
|
|
call sub_DE7
|
|
ld (smod_b_12D9),A
|
|
jp c,loc_137A
|
|
ld b,0ah
|
|
call sub_DE7
|
|
jp c,loc_137A
|
|
smod_b_12D9: .equ $+1
|
|
add a,0
|
|
cp 0ffh
|
|
jp nz,loc_137A
|
|
call sub_8A0
|
|
ld ix,(word_2CED)
|
|
loc_12E6: LD B,0AH
|
|
PUSH IX
|
|
CALL sub_DE7
|
|
POP IX
|
|
LD (byte_2D08),A
|
|
JP C,loc_137A
|
|
LD (IX),A
|
|
INC IX
|
|
CALL sub_7DD
|
|
CALL crc16
|
|
LD BC,(word_2CEF)
|
|
INC BC
|
|
LD (word_2CEF),BC
|
|
LD DE,(word_2D05)
|
|
DEC DE
|
|
LD (word_2D05),DE
|
|
LD A,D
|
|
OR E
|
|
JR NZ,loc_12E6
|
|
LD (word_2CED),IX
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
LD (byte_2D08),A
|
|
JP C,loc_137A
|
|
LD A,(byte_2C9E)
|
|
CP 10H
|
|
JR NZ,loc_1352
|
|
LD A,(byte_2D08)
|
|
CALL crc16
|
|
LD B,0AH
|
|
CALL sub_DE7
|
|
LD (byte_2D08),A
|
|
JP C,loc_137A
|
|
CALL crc16
|
|
LD A,H
|
|
OR L
|
|
JP NZ,loc_137A
|
|
loc_1345: XOR A
|
|
LD (byte_2D04),A
|
|
LD A,0
|
|
LD (byte_2D02),A
|
|
LD A,(smod_b_12D9)
|
|
RET
|
|
|
|
loc_1352: ld a,(byte_2D08)
|
|
ld l,a
|
|
ld a,(smod_b_7DF)
|
|
sub l
|
|
jr z,loc_1345
|
|
jp loc_137A
|
|
|
|
loc_135F: ld b,0ah
|
|
call sub_DE7
|
|
ld a,0f6h
|
|
ret c
|
|
jp loc_137A
|
|
|
|
loc_136A: ld a,0ffh
|
|
ld hl,byte_2D09
|
|
cp (hl)
|
|
jr nz,loc_1376
|
|
ld a,0ffh
|
|
scf
|
|
ret
|
|
|
|
loc_1376: ld (hl),a
|
|
jp loc_13A4
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_137A: ld a,0
|
|
ld (byte_2D09),a
|
|
loc_137F: ld b,0Ah
|
|
call sub_DE7
|
|
jr nc,loc_137F
|
|
ld a,(byte_2D02)
|
|
cp 0FFh
|
|
jr nz,loc_139A
|
|
ld a,(byte_2C9E)
|
|
cp 10h
|
|
ld a,43h
|
|
jr z,loc_13A1
|
|
ld a,15h
|
|
jr loc_13A1
|
|
|
|
loc_139A: ld a,28h
|
|
ld (byte_2D03),a
|
|
ld a,15h
|
|
loc_13A1: call loc_145C
|
|
loc_13A4: call sub_FC9
|
|
ld hl,byte_2D04
|
|
inc (hl)
|
|
call sub_482
|
|
ld a,(byte_2D04)
|
|
cp 5
|
|
jp nz,loc_1296
|
|
ld a,0FFh
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_13BA: ld (byte_2CE8),a
|
|
ld hl,loc_1403
|
|
call sub_DDC
|
|
call sub_8A0
|
|
ld a,(byte_2CE8)
|
|
call crc16
|
|
call sub_1418
|
|
ld hl,loc_2CE0
|
|
ld b,4
|
|
loc_13D4: push bc
|
|
ld a,(hl)
|
|
inc hl
|
|
push hl
|
|
call crc16
|
|
call sub_1418
|
|
pop hl
|
|
pop bc
|
|
djnz loc_13D4
|
|
ld a,(crc_seed+1)
|
|
call sub_1418
|
|
ld a,(crc_seed)
|
|
call sub_1418
|
|
ld a,0Dh
|
|
call loc_145C
|
|
ld a,0Ah
|
|
call loc_145C
|
|
ld a,(byte_2CE8)
|
|
cp 8
|
|
ret z
|
|
ld a,11h
|
|
jp loc_145C
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1403: .db 2Ah ; *
|
|
.db 2Ah ; *
|
|
.db 18h ;
|
|
.db 42h ; B
|
|
.db 0 ;
|
|
|
|
loc_1408: .text "0123456789abcdef"
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1418: push af
|
|
ld hl,loc_1408
|
|
ld b,0
|
|
rra
|
|
rra
|
|
rra
|
|
rra
|
|
and 0Fh
|
|
ld c,a
|
|
add hl,bc
|
|
ld a,(hl)
|
|
call loc_145C
|
|
pop af
|
|
ld hl,loc_1408
|
|
ld b,0
|
|
and 0Fh
|
|
ld c,a
|
|
add hl,bc
|
|
ld a,(hl)
|
|
jp loc_145C
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1438: LD (smod_b_145B),A
|
|
LD BC,+(loc_1480-stab_7B3)
|
|
LD HL,stab_7B3
|
|
CPIR
|
|
JP Z,stab_jmp
|
|
AND 60H
|
|
JR NZ,loc_145A
|
|
LD A,(byte_2C9D)
|
|
OR A
|
|
JR Z,loc_145A
|
|
loc_1450: LD HL,smod_b_145B
|
|
SET 6,(HL)
|
|
LD A,18H
|
|
CALL loc_145C
|
|
smod_b_145B: .equ $+1
|
|
loc_145A: LD A,0
|
|
loc_145C: LD (smod_b_1468),A
|
|
loc_145F: CALL sub_588
|
|
CALL sub_5CD
|
|
JR Z,loc_145F
|
|
smod_b_1468: .equ $+1
|
|
LD A,0
|
|
JP loc_5C7
|
|
|
|
loc_146C: LD A,(smod_b_1468)
|
|
AND 7FH
|
|
CP 40H
|
|
JR NZ,loc_145A
|
|
JR loc_1450
|
|
|
|
stab_7B3: .db 18h
|
|
.db 0Dh
|
|
.db 8Dh
|
|
.db 10h
|
|
.db 90h
|
|
.db 11h
|
|
.db 91h
|
|
.db 13h
|
|
.db 93h
|
|
|
|
loc_1480: .dw loc_1450
|
|
.dw loc_1450
|
|
.dw loc_1450
|
|
.dw loc_1450
|
|
.dw loc_1450
|
|
.dw loc_1450
|
|
.dw loc_146C
|
|
.dw loc_146C
|
|
.dw loc_1450
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1492: push bc
|
|
ld (byte_2D0A),a
|
|
call sub_171E
|
|
push de
|
|
call sub_162C
|
|
ld (de),a
|
|
pop de
|
|
push de
|
|
call sub_14A7
|
|
pop de
|
|
pop bc
|
|
jr loc_151D
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_14A7: xor a
|
|
ld (de),a
|
|
ld (byte_2D0D),a
|
|
ld (byte_2D0C),a
|
|
call sub_1687
|
|
ld a,c
|
|
ld (byte_2D0E),a
|
|
push de
|
|
ld a,(hl)
|
|
cp 3Ah
|
|
jr nz,loc_14BD
|
|
inc hl
|
|
loc_14BD: ld b,8
|
|
call sub_1522
|
|
pop de
|
|
ld a,(hl)
|
|
ld (byte_2D0B),a
|
|
cp 3Ah
|
|
jr nz,loc_14FE
|
|
inc hl
|
|
ld a,(byte_2D0A)
|
|
or a
|
|
jr z,loc_14D7
|
|
call sub_154A
|
|
jr z,loc_14E5
|
|
loc_14D7: call sub_159D
|
|
jr z,loc_14E5
|
|
ld a,(byte_2D0A)
|
|
or a
|
|
jr nz,loc_14E5
|
|
call sub_154A
|
|
loc_14E5: ld a,(byte_2D0D)
|
|
ld (de),a
|
|
push de
|
|
inc de
|
|
call sub_1632
|
|
pop de
|
|
xor a
|
|
ld (byte_2D0C),a
|
|
push de
|
|
ld b,8
|
|
call sub_1522
|
|
pop de
|
|
ld a,(hl)
|
|
ld (byte_2D0B),a
|
|
loc_14FE: ld a,(byte_2D0B)
|
|
ex de,hl
|
|
ld bc,8
|
|
add hl,bc
|
|
ex de,hl
|
|
ld b,3
|
|
cp 2Eh
|
|
jr nz,loc_1513
|
|
inc hl
|
|
push de
|
|
call sub_1522
|
|
pop de
|
|
loc_1513: ex de,hl
|
|
ld bc,5
|
|
add hl,bc
|
|
ex de,hl
|
|
ld a,(byte_2D0E)
|
|
ld (de),a
|
|
loc_151D: ld a,(byte_2D0C)
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1522: call valid_fnc
|
|
ret z
|
|
inc de
|
|
cp 2Ah
|
|
jr nz,loc_1533
|
|
ld a,3Fh
|
|
ld (de),a
|
|
call sub_1543
|
|
jr loc_153A
|
|
loc_1533: ld (de),a
|
|
inc hl
|
|
cp 3Fh
|
|
call z,sub_1543
|
|
loc_153A: djnz sub_1522
|
|
loc_153C: call valid_fnc
|
|
ret z
|
|
inc hl
|
|
jr loc_153C
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1543: push hl
|
|
ld hl,byte_2D0C
|
|
inc (hl)
|
|
pop hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_154A: push hl
|
|
push de
|
|
call sub_1552
|
|
pop de
|
|
pop hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1552: call sub_164A
|
|
jr z,loc_15CA
|
|
ex de,hl
|
|
inc hl
|
|
call sub_1652
|
|
ld b,a
|
|
inc b
|
|
ld a,(hl)
|
|
cp 41h
|
|
jr c,loc_1574
|
|
sub 40h
|
|
cp b
|
|
jr nc,loc_15CA
|
|
ld (byte_2D0D),a
|
|
inc hl
|
|
ld a,(hl)
|
|
cp 20h
|
|
ret z
|
|
call sub_1625
|
|
ret c
|
|
loc_1574: push hl
|
|
ld b,2
|
|
loc_1577: ld a,(hl)
|
|
cp 20h
|
|
jr z,loc_1589
|
|
call sub_1625
|
|
jr c,loc_159A
|
|
inc hl
|
|
djnz loc_1577
|
|
ld a,(hl)
|
|
cp 20h
|
|
jr nz,loc_159A
|
|
loc_1589: pop hl
|
|
call sub_165A
|
|
ld c,a
|
|
inc c
|
|
call sub_15FA
|
|
cp c
|
|
jr nc,loc_15CA
|
|
ld (byte_2D0E),a
|
|
xor a
|
|
ret
|
|
|
|
loc_159A: pop hl
|
|
jr loc_15CA
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_159D: push hl
|
|
push de
|
|
call sub_15A5
|
|
pop de
|
|
pop hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_15A5: call sub_1662
|
|
jr z,loc_15CA
|
|
ex de,hl
|
|
inc hl
|
|
loc_15AC: ld a,(de)
|
|
or a
|
|
jr z,loc_15CA
|
|
inc de
|
|
inc de
|
|
push hl
|
|
push de
|
|
ld b,8
|
|
loc_15B6: ld a,(de)
|
|
cp (hl)
|
|
jr nz,loc_15BE
|
|
inc hl
|
|
inc de
|
|
djnz loc_15B6
|
|
loc_15BE: pop de
|
|
pop hl
|
|
jr z,loc_15CD
|
|
ex de,hl
|
|
ld bc,10h
|
|
add hl,bc
|
|
ex de,hl
|
|
jr loc_15AC
|
|
|
|
loc_15CA: or 0FFh
|
|
ret
|
|
|
|
loc_15CD: dec de
|
|
ld a,(de)
|
|
ld (byte_2D0E),a
|
|
dec de
|
|
ld a,(de)
|
|
ld (byte_2D0D),a
|
|
xor a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Validate character at hl is a valid filename character
|
|
|
|
valid_fnc: ld a,(hl)
|
|
cp '!' ; below !
|
|
jr c,loc_15F8
|
|
cp '='
|
|
ret z
|
|
cp '_'
|
|
ret z
|
|
cp '.'
|
|
ret z
|
|
cp ':'
|
|
ret z
|
|
cp ','
|
|
ret z
|
|
cp '<'
|
|
ret z
|
|
cp '>'
|
|
ret z
|
|
or a ; null
|
|
ret z
|
|
cp 3bh ; ';'
|
|
ret
|
|
|
|
loc_15F8: xor a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_15FA: push bc
|
|
ld bc,1100h ; ?
|
|
loc_15FE: ld a,(hl) ; duplicious ?
|
|
call valid_fnc
|
|
jr z,loc_161E
|
|
inc hl
|
|
call sub_1625
|
|
jr c,loc_1622
|
|
ld d,a
|
|
ld a,c
|
|
rlca
|
|
jr c,loc_1622
|
|
rlca
|
|
jr c,loc_1622
|
|
add a,c
|
|
jr c,loc_1622
|
|
rlca
|
|
jr c,loc_1622
|
|
add a,d
|
|
jr c,loc_1622
|
|
ld c,a
|
|
djnz loc_15FE
|
|
loc_161E: ld a,c
|
|
pop bc
|
|
or a
|
|
ret
|
|
;
|
|
loc_1622: pop bc
|
|
scf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1625: sub 30h
|
|
ret c
|
|
cp 0Ah
|
|
ccf
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_162C: xor a
|
|
ld (de),a
|
|
inc de
|
|
call sub_1632
|
|
sub_1632: ld b,0Bh
|
|
ld a,20h
|
|
call sub_1645
|
|
xor a
|
|
ld (de),a
|
|
inc de
|
|
call sub_1687
|
|
ld a,c
|
|
ld (de),a
|
|
inc de
|
|
ld b,3
|
|
xor a
|
|
sub_1645: ld (de),a
|
|
inc de
|
|
djnz sub_1645
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_164A: push hl
|
|
push de
|
|
ld de,2Eh
|
|
jp loc_1669
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1652: push hl
|
|
push de
|
|
ld de,2Ch
|
|
jp loc_1669
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_165A: push hl
|
|
push de
|
|
ld de,2Dh
|
|
jp loc_1669
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1662: push de
|
|
ld de,15h
|
|
jp loc_1676
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1669: ld hl,(word_2D0F)
|
|
ld a,h
|
|
or l
|
|
jr z,loc_1671
|
|
add hl,de
|
|
loc_1671: ld a,(hl)
|
|
pop de
|
|
pop hl
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1676: ld hl,(word_2D0F)
|
|
add hl,de
|
|
ld e,(hl)
|
|
inc hl
|
|
ld d,(hl)
|
|
inc hl
|
|
ld a,(hl)
|
|
ex de,hl
|
|
pop de
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
loc_1683: ld (word_2D0F),hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1687: push af
|
|
push de
|
|
push hl
|
|
ld c,DRV_GET
|
|
call bdos_s2
|
|
push af
|
|
ld e, 0FFh
|
|
ld c,F_USERNUM
|
|
call bdos_s2
|
|
ld c,a
|
|
pop af
|
|
ld b,a
|
|
pop hl
|
|
pop de
|
|
pop af
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_169E: ld a,F_SFIRST
|
|
call bdos_cs3
|
|
inc a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_16A5: ld a,C_READ
|
|
jp bdos_cs3
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_16AA: ld a,C_STAT
|
|
jp bdos_cs3
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
bdos_s2: push de
|
|
push bc
|
|
call bdos
|
|
pop bc
|
|
pop de
|
|
or a
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
bdos_cs3: push hl
|
|
push de
|
|
push bc
|
|
ld c,a
|
|
call bdos
|
|
or a
|
|
pop bc
|
|
pop de
|
|
pop hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_16C4: push bc
|
|
push hl
|
|
push de
|
|
push af
|
|
ld b,8
|
|
call sub_16DA
|
|
ld (hl),2Eh
|
|
inc hl
|
|
ld b,3
|
|
call sub_16DA
|
|
pop af
|
|
pop de
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_16DA: ld a,(de)
|
|
and 7Fh
|
|
cp 20h
|
|
jr z,loc_16E3
|
|
ld (hl),a
|
|
inc hl
|
|
loc_16E3: inc de
|
|
djnz sub_16DA
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_16E7: push bc
|
|
ld b,0
|
|
jp loc_16F0
|
|
sub_16ED: PUSH BC
|
|
LD B,0FFH
|
|
loc_16F0: push hl
|
|
push af
|
|
ld h,64h
|
|
call sub_1703
|
|
ld h,0Ah
|
|
call sub_1703
|
|
call sub_1717
|
|
pop af
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1703: ld l, 0FFh
|
|
loc_1705: sub h
|
|
inc l
|
|
jr nc,loc_1705
|
|
add a,h
|
|
ld h,a
|
|
ld a,l
|
|
or a
|
|
jr nz,sub_1717
|
|
or b
|
|
ld a,h
|
|
ret m
|
|
ld a,20h
|
|
jr z,loc_171A
|
|
xor a
|
|
sub_1717: add a,30h
|
|
ld b,a
|
|
loc_171A: ld (de),a
|
|
inc de
|
|
ld a,h
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_171E: push af
|
|
push hl
|
|
loc_1720: ld a,(hl)
|
|
or a
|
|
jr z,loc_172B
|
|
call sub_1793
|
|
ld (hl),a
|
|
inc hl
|
|
jr loc_1720
|
|
loc_172B: pop hl
|
|
pop af
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_172E: push bc
|
|
push de
|
|
push hl
|
|
ld c,a
|
|
ex de,hl
|
|
ld b,(hl)
|
|
push hl
|
|
inc hl
|
|
inc hl
|
|
loc_1737: call sub_176B
|
|
or a
|
|
jr z,loc_1760
|
|
ld (hl),e
|
|
inc hl
|
|
ld (hl),d
|
|
inc hl
|
|
dec b
|
|
jr z,loc_1755
|
|
call sub_1779
|
|
or a
|
|
jr z,loc_1760
|
|
ld a,c
|
|
or a
|
|
jr z,loc_1751
|
|
xor a
|
|
ld (de),a
|
|
inc de
|
|
loc_1751: ld a,b
|
|
or a
|
|
jr nz,loc_1737
|
|
loc_1755: call sub_1779
|
|
call sub_176B
|
|
or a
|
|
jr z,loc_1760
|
|
or 0FFh
|
|
loc_1760: pop hl
|
|
push af
|
|
ld a,(hl)
|
|
sub b
|
|
inc hl
|
|
ld (hl),a
|
|
pop af
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_176B: ld a,(de)
|
|
and 7Fh
|
|
inc de
|
|
cp 20h
|
|
jr z,sub_176B
|
|
cp 9
|
|
jr z,sub_176B
|
|
dec de
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1779: ld a,(de)
|
|
and 7Fh
|
|
ret z
|
|
cp 20h
|
|
ret z
|
|
cp 9
|
|
ret z
|
|
inc de
|
|
jr sub_1779
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Fill b locations starting at hl with value a
|
|
|
|
fill_bhla: push hl
|
|
call fill_1
|
|
pop hl
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Fill b locations starting at hl with value a
|
|
|
|
fill_1: push bc
|
|
loc_178D: ld (hl),a
|
|
inc hl
|
|
djnz loc_178D
|
|
pop bc
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
; S u b r o u t i n e
|
|
|
|
sub_1793: and 7Fh
|
|
cp 61h
|
|
ret c
|
|
cp 7Bh
|
|
ret nc
|
|
and 5Fh
|
|
ret
|
|
|
|
;----------------------------------------------------------------------------
|
|
word_179E: .dw loc_end
|
|
byte_17A0: .db 0
|
|
byte_17A1: .db 0
|
|
word_17A2: .db 0
|
|
file_fcb: .db 0
|
|
.fill $20,0
|
|
loc_17C4: .db 0
|
|
.db 0
|
|
.db 0
|
|
byte_17C7: .db 0
|
|
.fill $1800-$,0
|
|
.ds 8
|
|
nstack:
|
|
rbuf_bfree: .ds 2
|
|
.ds rbuf_size+4
|
|
byte_280E: .ds 1
|
|
byte_280F: .ds 1
|
|
byte_2810: .ds 1
|
|
loc_2811: .ds 80h
|
|
byte_2891: .ds 1
|
|
.ds 3
|
|
loc_2895: .ds 4
|
|
loc_2899: .ds 4
|
|
loc_289D: .ds 400h
|
|
byte_2C9D: .ds 1
|
|
byte_2C9E: .ds 1
|
|
loc_2C9F: .ds 1
|
|
.ds 1
|
|
byte_2CA1: .ds 1
|
|
byte_2CA2: .ds 1
|
|
byte_2CA3: .ds 1
|
|
byte_2CA4: .ds 1
|
|
byte_2CA5: .ds 1
|
|
byte_2CA6: .ds 1
|
|
loc_2CA7: .ds 4
|
|
loc_2CAB: .ds 4
|
|
loc_2CAF: .ds 21h
|
|
loc_2CD0: .ds 1
|
|
byte_2CD1: .ds 1
|
|
word_2CD2: .ds 2
|
|
byte_2CD4: .ds 1
|
|
.ds 0Bh
|
|
loc_2CE0: .ds 4
|
|
loc_2CE4: .ds 4
|
|
byte_2CE8: .ds 1
|
|
word_2CE9: .ds 2
|
|
word_2CEB: .ds 2
|
|
word_2CED: .ds 2
|
|
word_2CEF: .ds 2
|
|
.ds 2
|
|
loc_2CF3: .ds 2
|
|
word_2CF5: .ds 2
|
|
.ds 2
|
|
loc_2CF9: .ds 4
|
|
byte_2CFD: .ds 1
|
|
word_2CFE: .ds 2
|
|
byte_2D00: .ds 1
|
|
byte_2D01: .ds 1
|
|
byte_2D02: .ds 1
|
|
byte_2D03: .ds 1
|
|
byte_2D04: .ds 1
|
|
word_2D05: .ds 2
|
|
byte_2D07: .ds 1
|
|
byte_2D08: .ds 1
|
|
byte_2D09: .ds 1
|
|
byte_2D0A: .ds 1
|
|
byte_2D0B: .ds 1
|
|
byte_2D0C: .ds 1
|
|
byte_2D0D: .ds 1
|
|
byte_2D0E: .ds 1
|
|
word_2D0F: .ds 2
|
|
loc_end .equ $
|
|
.end ; start
|
|
|