Code: Select all
;------- TASM ASM mnemonics. -------
; Compile this file using:
; Set TASMOPTS = -b
; tasm -80 ThisCode.tas MyBinary.BIN
;-----------------------------------
; Zx81 Program name: VB81 XuR [] : Empty Basic Segment.
; REM line name: D=10240/10623 : H=2800/297F
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
;------- Rom and Ram Symbols -------
COPY_N_L equ $08C7
COPY_NEXT equ $089C
COPY_END equ $08DE
DISPLAY_6 equ $04C1
ORG $2800 ; [@10240/@h2800]
.db " "; ASCII TEXT
.db $00,$00,$00,$00,$00,$00,$00,$00; DATA
.db $00,$00; DATA
.db ""","#","$",":","?","(",")",">"; ASCII TEXT
.db "<","=","+","-","*","/",";",","; ASCII TEXT
.db ".","0","1","2","3","4","5","6"; ASCII TEXT
.db "7","8","9","A","B","C","D","E"; ASCII TEXT
.db "F","G","H","I","J","K","L","M"; ASCII TEXT
.db "N","O","P","Q","R","S","T","U"; ASCII TEXT
.db "V","W","X","Y","Z"," "; ASCII TEXT
.db $00,$00,$00,$00,$00,$00,$00,$00; DATA
.db $00,$00; DATA
.db "|","%","&","'","!","{","}","~"; ASCII TEXT
.db "_","[","@","]","","\","^","`"; ASCII TEXT
.db $1B; DATA
.db "0","1","2","3","4","5","6","7"; ASCII TEXT
.db "8","9","a","b","c","d","e","f"; ASCII TEXT
.db "g","h","i","j","k","l","m","n"; ASCII TEXT
.db "o","p","q","r","s","t","u","v"; ASCII TEXT
.db "w","x","y","z"; ASCII TEXT
LD A,$00
CALL Lb2935 ; [10549]
JP COPY_N_L+21 ; []*BIOS ROM*
CP $06 ; [6]
JP NZ, COPY_NEXT+16 ; []*BIOS ROM*
PUSH HL
LD HL, Lb4082
Lb2891:
LD A,(HL)
CP $00 ; [0]
JR Z, Lb289C ; [$289C:10396]
CALL Lb2935 ; [10549]
INC HL
JR Lb2891 ; [$2891:10385]
Lb289C:
POP HL
JP COPY_N_L+18 ; []*BIOS ROM*
PUSH HL
PUSH DE
CALL $24F8 ; [9464]
PUSH HL
LD BC,$8076
CALL $255C ; [9564]
LD D,C
PUSH DE
LD BC,$8078
CALL $255C ; [9564]
POP DE
LD E,C
PUSH DE
LD BC,$806A
CALL $255C ; [9564]
INC C
POP DE
POP HL
CALL Lb2904 ; [10500]
POP DE
POP HL
RET ; ==========================
Lb28C6: ; <<< Uncharted Entry ]
PUSH HL
PUSH DE
CALL Lb28D0 ; [10448]
POP DE
POP HL
JP COPY_END+1 ; []*BIOS ROM*
Lb28D0:
CALL $2475 ; [9333]
LD D,$80
LD E,$07
LD C,$20
INC HL
INC HL
LD B,$1B
Lb28DD:
PUSH BC
PUSH HL
LD A,$0A
CALL Lb2935 ; [10549]
CALL Lb2904 ; [10500]
POP HL
LD BC,$00E7
ADD HL,BC
POP BC
DJNZ Lb28DD ; [$28DD:10461]
LD E,$03
LD A,$0A
CALL Lb2935 ; [10549]
CALL Lb2904 ; [10500]
LD A,$0A
CALL Lb2935 ; [10549]
LD A,$14
CALL Lb2935 ; [10549]
RET ; ==========================
Lb2904:
DEC C
RET Z
LD B,$08
Lb2908:
PUSH HL
PUSH DE
LD D,$09
XOR A
Lb290D:
PUSH DE
LD D,(HL)
RLC D
LD (HL),D
POP DE
RRA
DEC D
DEC E
JR Z, Lb2926 ; [$2926:10534]
PUSH AF
LD A,$21
ADD A,L
LD L,A
LD A,$00
ADC A,H
LD H,A
POP AF
JR Lb290D ; [$290D:10509]
Lb2924:
SRL A
Lb2926:
DEC D
JR NZ, Lb2924 ; [$2924:10532]
POP DE
ADD A,D
CALL Lb2935 ; [10549]
POP HL
DEC B
JR NZ, Lb2908 ; [$2908:10504]
INC HL
JR Lb2904 ; [$2904:10500]
Lb2935:
PUSH AF
Lb2936:
IN A,($3F) ; User port. (\ACK) Send bits.
RRCA
JR C, Lb2936 ; [$2936:10550]
POP AF
IN A,($2F) ; User port. (Get \ error ?)
RET ; ==========================
Lb293F: ; <<< Uncharted Entry ]
CALL DISPLAY_6+12 ; []*BIOS ROM*
ADD HL,HL
POP DE
POP HL
RET ; ==========================
Lb2946: ; <<< Uncharted Entry ]
PUSH HL
PUSH DE
CALL Lb28D0 ; [10448]
POP DE
POP HL
JP COPY_END+1 ; []*BIOS ROM*
CALL $2475 ; [9333]
LD D,$80
LD E,$07
LD C,$20
INC HL
INC HL
LD B,$1B
Lb295D:
PUSH BC
PUSH HL
LD A,$0A
CALL Lb2935 ; [10549]
CALL Lb2904 ; [10500]
POP HL
LD BC,$00E7
ADD HL,BC
POP BC
DJNZ Lb295D ; [$295D:10589]
LD E,$03
LD A,$0A
CALL Lb2935 ; [10549]
CALL Lb2904 ; [10500]
LD A,$0A
CALL Lb2935 ; [10549]
LD A,$14
; return to the ZX rom...
.end
To be called with a "Lprint" command.
ROM offset ?
Lenght ?