mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Update rz.asm
This commit is contained in:
@@ -18,36 +18,41 @@
|
||||
; Processor: z80
|
||||
; Target assembler: Table Driven Assembler (TASM) by Speech Technology Inc.
|
||||
|
||||
iobyte .equ 0004h
|
||||
bdos .equ 0005h
|
||||
|
||||
A_READ .equ 3
|
||||
A_STATIN .equ 7
|
||||
A_STAT_OUT .equ 8
|
||||
C_WRITESTR .equ 9
|
||||
S_BDOSVER .equ 12
|
||||
DRV_SET .equ 14
|
||||
F_USERNUM .equ 32
|
||||
S_SYSVAR .equ 49
|
||||
|
||||
buf_len: .equ 80h
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
.org 100h
|
||||
|
||||
start: ld sp, nstack ; Setup local stack
|
||||
ld c,S_BDOSVER
|
||||
call bdos ; Return CP/M version #
|
||||
cp '0' ; Get CP/M vers. #
|
||||
jp c,err_vern ; CP/M 2 or less?
|
||||
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 ; yes
|
||||
call bdos ; "RZ for ..."; Output string
|
||||
call sub_195 ; print string
|
||||
ld hl,(word_179E)
|
||||
xor a
|
||||
ld b,14h
|
||||
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 sub_1786
|
||||
ld a,(80h)
|
||||
or a
|
||||
jr z,loc_174
|
||||
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
|
||||
@@ -58,14 +63,14 @@ start: ld sp, nstack ; Setup local stack
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
jp z,loc_174
|
||||
jp z,skip_cl
|
||||
inc hl
|
||||
ld e,(hl)
|
||||
inc hl
|
||||
ld d,(hl)
|
||||
inc hl
|
||||
ld a,(de)
|
||||
cp 2Dh
|
||||
cp '-'
|
||||
jr nz,loc_152
|
||||
call sub_39A
|
||||
ld e,(hl)
|
||||
@@ -73,7 +78,7 @@ start: ld sp, nstack ; Setup local stack
|
||||
ld d,(hl)
|
||||
ld a,d
|
||||
or e
|
||||
jr z,loc_174
|
||||
jr z,skip_cl
|
||||
loc_152: ld hl,byte_17A3
|
||||
ex de,hl
|
||||
call sub_1492
|
||||
@@ -89,9 +94,9 @@ loc_164: ld bc,0Dh
|
||||
ldi
|
||||
ld de,byte_17A3
|
||||
call sub_1B0
|
||||
call sub_3C9
|
||||
loc_174: ld de,str_sxfr
|
||||
ld c,C_WRITESTR
|
||||
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
|
||||
@@ -107,7 +112,7 @@ loc_185: ld bc,0
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
|
||||
sub_195: ld a,(4)
|
||||
sub_195: ld a,(iobyte)
|
||||
ld b,a
|
||||
rlca
|
||||
rlca
|
||||
@@ -168,61 +173,58 @@ str_info: .text "usage: rz [-?pbcrxyz] [du:fn]\r\n\n"
|
||||
.text "these values override options from sender\r\n$"
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
; Search list of command line options
|
||||
|
||||
sub_39A: push hl
|
||||
push de
|
||||
loc_39C: inc de
|
||||
ld a,(de)
|
||||
or a
|
||||
jr z,loc_3AE
|
||||
ld hl,stab_3B1
|
||||
ld bc,8
|
||||
cpir
|
||||
call z,sub_67F
|
||||
jr loc_39C
|
||||
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
|
||||
|
||||
stab_3B1: .text "?PBCXYZR"
|
||||
|
||||
.dw sub_3E9
|
||||
.dw sub_3D1
|
||||
.dw sub_3CD
|
||||
.dw sub_3C9
|
||||
.dw sub_3E3
|
||||
.dw sub_3DD
|
||||
.dw sub_3D7
|
||||
.dw err_exit
|
||||
.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
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
; Set flags and options from command line
|
||||
|
||||
sub_3C9: ld a,1
|
||||
jr loc_3D3
|
||||
sub_3CD: ld a,3
|
||||
jr loc_3D3
|
||||
sub_3D1: ld a,4
|
||||
loc_3D3: ld (byte_8AF),a
|
||||
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
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
sub_3D7: ld a,$ff
|
||||
ld (byte_8B0),a
|
||||
clo_z: ld a,$ff
|
||||
ld (flg_zmdm),a
|
||||
ret
|
||||
sub_3DD: ld a,$ff
|
||||
ld (byte_8B2),a
|
||||
clo_y: ld a,$ff
|
||||
ld (flg_ymdm),a
|
||||
ret
|
||||
sub_3E3: ld a,$ff
|
||||
ld (byte_8B1),a
|
||||
clo_x: ld a,$ff
|
||||
ld (flg_xmdm),a
|
||||
ret
|
||||
sub_3E9: ld a,$ff
|
||||
ld (byte_8B3),a
|
||||
clo_help: ld a,$ff
|
||||
ld (flg_help),a
|
||||
ret
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
@@ -302,9 +304,9 @@ word_46D: .dw 0
|
||||
word_46F: .dw 0
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
; Call BDOS and set status flag
|
||||
|
||||
sub_471: call bdos
|
||||
bdos_s: call bdos
|
||||
or a
|
||||
ret
|
||||
|
||||
@@ -381,26 +383,26 @@ sub_4A4: ld de,byte_17A3
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
text4F2h: .text "\r\n"
|
||||
byte_4F4: .db 0 ; DATA XREF: sub_4A4+17w
|
||||
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 ;
|
||||
byte_507: .db 0 ; DATA XREF: sub_4A4+24w
|
||||
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 ;
|
||||
byte_507: .db 0
|
||||
text508h: .text "\r\n$"
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
@@ -428,7 +430,7 @@ loc_51F: .db 0 ;
|
||||
.db 0 ;
|
||||
.db 0 ;
|
||||
|
||||
loc_529: ld hl,str_busy
|
||||
disp_bsy: ld hl,str_busy
|
||||
smod_52D: .equ $+1 ; self modifying
|
||||
ld a,0
|
||||
inc a
|
||||
@@ -533,9 +535,11 @@ loc_5C7: LD C,4 ; punch out
|
||||
JP bdos
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
; Set I/O byte
|
||||
; E=I/O byte
|
||||
; S u b r o u t i n e
|
||||
|
||||
sub_5CD: ld c,8
|
||||
sub_5CD: ld c,A_STAT_OUT
|
||||
call bdos ; BDOS function 8 (A_STATOUT) - Auxiliary Output status
|
||||
or a
|
||||
ret
|
||||
@@ -708,9 +712,9 @@ sub_669: LD A,80H
|
||||
RET
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
; Jump to table address entry
|
||||
|
||||
sub_67F: add hl,bc
|
||||
stab_jmp: add hl,bc
|
||||
sla c
|
||||
add hl,bc
|
||||
ld c,(hl)
|
||||
@@ -1112,10 +1116,10 @@ sub_8A0: xor a
|
||||
;----------------------------------------------------------------------------
|
||||
|
||||
byte_8AF: .db 4
|
||||
byte_8B0: .db 0
|
||||
byte_8B1: .db 0
|
||||
byte_8B2: .db 0
|
||||
byte_8B3: .db 0
|
||||
flg_zmdm: .db 0
|
||||
flg_xmdm: .db 0
|
||||
flg_ymdm: .db 0
|
||||
flg_help: .db 0
|
||||
word_8B4: .dw 0
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
@@ -1156,7 +1160,7 @@ sub_8D1: xor a
|
||||
or a
|
||||
sbc hl,de
|
||||
call sub_8B6
|
||||
ld a,(byte_8B0)
|
||||
ld a,(flg_zmdm)
|
||||
cp 0
|
||||
jr z,loc_8FD
|
||||
ld a,7
|
||||
@@ -1217,16 +1221,16 @@ loc_954: call sub_DD9
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
|
||||
sub_961: ld a,(byte_8B1)
|
||||
sub_961: ld a,(flg_xmdm)
|
||||
cpl
|
||||
ld hl,byte_8B2
|
||||
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,(byte_8B2)
|
||||
loc_975: ld a,(flg_ymdm)
|
||||
cp 0FFh
|
||||
jr z,loc_988
|
||||
ld a,(byte_2CA2)
|
||||
@@ -1281,7 +1285,7 @@ loc_9E3: call sub_4A4
|
||||
jr nz,loc_A11
|
||||
ld de,byte_17A3
|
||||
ld c,16h
|
||||
call sub_471
|
||||
call bdos_s
|
||||
ret c
|
||||
ld a,0FFh
|
||||
ld (byte_2CA5),a
|
||||
@@ -1310,7 +1314,7 @@ loc_A11: call sub_A09
|
||||
|
||||
loc_A24: ld de,byte_17A3
|
||||
ld c,13h
|
||||
call sub_471
|
||||
call bdos_s
|
||||
jr nc,loc_9E3
|
||||
loc_A2E: call sub_552
|
||||
ld a,5
|
||||
@@ -1322,7 +1326,7 @@ loc_A2E: call sub_552
|
||||
loc_A35: ld a,(byte_2CA1)
|
||||
cp 3
|
||||
jr z,loc_A43
|
||||
ld a,(byte_8B3)
|
||||
ld a,(flg_help)
|
||||
cp 0FFh
|
||||
jr nz,loc_A24
|
||||
loc_A43: ld de,loc_2811
|
||||
@@ -1333,7 +1337,7 @@ loc_A43: ld de,loc_2811
|
||||
call bdos ; BDOS function 44 (F_MULTISEC) - Set number of records to read/write at once
|
||||
ld de,byte_17A3
|
||||
ld c,0Fh
|
||||
call sub_471
|
||||
call bdos_s
|
||||
ret c
|
||||
ld a,0FFh
|
||||
ld (byte_2CA5),a
|
||||
@@ -1341,7 +1345,7 @@ loc_A43: ld de,loc_2811
|
||||
call sub_64A
|
||||
ld de,byte_17A3
|
||||
ld c,23h
|
||||
call sub_471
|
||||
call bdos_s
|
||||
ret c
|
||||
ld hl,byte_17C7
|
||||
ld (hl),0
|
||||
@@ -1363,7 +1367,7 @@ loc_A83: push hl
|
||||
djnz loc_A83
|
||||
ld de,byte_17A3
|
||||
ld c,21h
|
||||
call sub_471
|
||||
call bdos_s
|
||||
ret c
|
||||
ld a,(byte_2CA1)
|
||||
cp 3
|
||||
@@ -1436,7 +1440,7 @@ loc_B1A: CALL sub_FD1
|
||||
LD HL,loc_B96
|
||||
LD BC,0AH
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
loc_B28: LD HL,byte_2D04
|
||||
INC (HL)
|
||||
CALL sub_482
|
||||
@@ -1571,7 +1575,7 @@ loc_C0A: call sub_FD1
|
||||
ld hl,stab_CE4
|
||||
ld bc,7
|
||||
cpir
|
||||
jp z,sub_67F
|
||||
jp z,stab_jmp
|
||||
ld a,0FFh
|
||||
scf
|
||||
ret
|
||||
@@ -1628,12 +1632,12 @@ loc_C73: LD DE,loc_2CA7
|
||||
LD HL,loc_2CAB
|
||||
CALL sub_6D3
|
||||
JP NZ,0C57H
|
||||
loc_C7F: CALL loc_529
|
||||
loc_C7F: CALL disp_bsy
|
||||
CALL loc_EC7
|
||||
LD HL,stab_CF9
|
||||
LD BC,7
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
JP loc_C1C
|
||||
|
||||
loc_C93: LD A,0FFH
|
||||
@@ -1721,7 +1725,7 @@ loc_D15: ld a,1Ah
|
||||
ld (byte_2CA5),a
|
||||
ld c,10h
|
||||
ld de,byte_17A3
|
||||
jp sub_471
|
||||
jp bdos_s
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; S u b r o u t i n e
|
||||
@@ -1779,7 +1783,7 @@ loc_D6E: LD C,0
|
||||
CALL bdos
|
||||
LD C,15H ; wr. seq.
|
||||
LD DE,byte_17A3
|
||||
CALL sub_471
|
||||
CALL bdos_s
|
||||
JR NC,loc_D6E
|
||||
loc_0D97: POP HL
|
||||
POP DE
|
||||
@@ -1931,7 +1935,7 @@ loc_E50: LD B,64H
|
||||
loc_0E74: LD HL,loc_EA6
|
||||
LD BC,0BH
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
LD L,A
|
||||
LD A,(byte_2C9D)
|
||||
OR A
|
||||
@@ -2053,7 +2057,7 @@ loc_F38: LD HL,stab_F23
|
||||
LD HL,sub_F0E
|
||||
LD BC,7
|
||||
loc_F49: CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
sub_F4E: LD A,0FFH
|
||||
SCF
|
||||
RET
|
||||
@@ -2147,7 +2151,7 @@ loc_FE0: ld b,64h
|
||||
ld hl,stab_109E
|
||||
ld bc,3
|
||||
cpir
|
||||
jp z,sub_67F
|
||||
jp z,stab_jmp
|
||||
jr loc_1024
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
@@ -2162,7 +2166,7 @@ loc_FE0: ld b,64h
|
||||
LD HL,stab_10A7
|
||||
LD BC,2
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
JR loc_1024
|
||||
|
||||
LD HL,byte_2D00
|
||||
@@ -2195,7 +2199,7 @@ loc_1035: LD A,0FFH
|
||||
LD HL,stab_10AD
|
||||
LD BC,2
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
JR loc_1024
|
||||
|
||||
CALL loc_E05
|
||||
@@ -2203,7 +2207,7 @@ loc_1035: LD A,0FFH
|
||||
LD HL,stab_10B3
|
||||
LD BC,4
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
JR loc_1024
|
||||
|
||||
LD A,10H
|
||||
@@ -2560,7 +2564,7 @@ loc_1296: ld a,(byte_2D03)
|
||||
ld hl,loc_12AE
|
||||
ld bc,4
|
||||
cpir
|
||||
jp z,sub_67F
|
||||
jp z,stab_jmp
|
||||
jp loc_137A
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
@@ -2768,7 +2772,7 @@ loc_1438: LD (smod_b_145B),A
|
||||
LD BC,+(loc_1480-stab_7B3)
|
||||
LD HL,stab_7B3
|
||||
CPIR
|
||||
JP Z,sub_67F
|
||||
JP Z,stab_jmp
|
||||
AND 60H
|
||||
JR NZ,loc_145A
|
||||
LD A,(byte_2C9D)
|
||||
|
||||
Reference in New Issue
Block a user