French FrankenZX81, unique?
Re: French FrankenZX81, unique?
I'm easy either way with the age of the boards since it's currently a total unknown, but yes, it makes sense that the non-through hole board is older. But! It's the only one of the two that has a patch wire or trace going to A15 so it's definitely the 16K-32K board, the first solder mask one being 0K-16K since there's no on-board RAM. There shouldn't be any reason why I can't test this board on a known working ZX81 with the correct PSU.
Looking at the traces around the 4049 your thoughts also make sense since everything is concentrated on hitting the BC307 transistor then going off to pin 1, the BD237 you can see lying almost flat goes off to pin 8 of all the chips for +12.
Looking at the traces around the 4049 your thoughts also make sense since everything is concentrated on hitting the BC307 transistor then going off to pin 1, the BD237 you can see lying almost flat goes off to pin 8 of all the chips for +12.
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
Many thanks witchy !
_COD.ADR-F024.bin:
Empty (no asm codes)
_COD.KEY TRO F543.bin
Empty (no asm codes)
_FLM CE85.bin
The ROM's Fast Load Monitor v.16/2.
_ZX E000.bin
Keyboard tools ?
_ZX2 0CDA.bin
8k ZX81 Basic bios (monitor).
--------------------------------------------------------------------------------------
Raw disassembled codes
(DATAs,TEXTs and Grapfix not set in the inboard Xur disassembleur!)
--------------------------------------------------------------------------------------
FLM v.16.2 (@2000) :
Keyboad tools (printer? RS232 ROM?):
_COD.ADR-F024.bin:
Empty (no asm codes)
_COD.KEY TRO F543.bin
Empty (no asm codes)
_FLM CE85.bin
The ROM's Fast Load Monitor v.16/2.
_ZX E000.bin
Keyboard tools ?
_ZX2 0CDA.bin
8k ZX81 Basic bios (monitor).
--------------------------------------------------------------------------------------
Raw disassembled codes
(DATAs,TEXTs and Grapfix not set in the inboard Xur disassembleur!)
--------------------------------------------------------------------------------------
FLM v.16.2 (@2000) :
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=8192/12287 : H=2000/2FFF
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
;-----------------------------------
;- ZX81 CARACTERS CODES ------------
;-----------------------------------
_ .equ $00
_0 .equ $1C
_1 .equ $1D
_2 .equ $1E
_3 .equ $1F
_4 .equ $20
_5 .equ $21
_6 .equ $22
_9 .equ $25
A .equ $26
C .equ $28
D .equ $29
E .equ $2A
F .equ $2B
H .equ $2D
I .equ $2E
K .equ $30
L .equ $31
M .equ $32
N .equ $33
O .equ $34
P .equ $35
R .equ $37
S .equ $38
T .equ $39
U .equ $3A
V .equ $3B
X .equ $3D
Y .equ $3E
Z .equ $3F
;-----------------------------------
;------- Rom and Ram Symbols -------
CLS equ $0A2A
RAM_CH_ADD equ $4016
RAM_E_LINE equ $4014
RAM_LAST_K equ $4025
RAM_PRBUFF00 equ $403C
RAM_DF_CC equ $400E
DECODE equ $07BD
FAST equ $0F23
SLOW equ $0F2B
RAM_RAMTOP equ $4004
NEW equ $03C3
RAM_S_TOP equ $4023
RAM_STKEND equ $401C
RAM_SPARE2 equ $407B
RAM_VARS equ $4010
ORG $2000 ; [@8192/@h2000]
PUSH HL
PUSH BC
PUSH DE
LD HL,$3FFF
LD BC,$0960
LD DE, Lb2FFF
LDDR
POP HL
POP BC
POP DE
JP Lb26F9 ; [9977]
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; DATA
.db $FF,$FF,$FF; DATA
Lb269F:
SUB $1C
JP Lb2759 ; [10073]
Lb26A4:
CALL CLS ; [CLS]
CALL Lb2A77 ; [10871]
Lb26AA:
POP AF
LD DE,(RAM_CH_ADD) ; GET CH-ADD
LD HL,(RAM_E_LINE) ; GET E-LINE
SBC HL,DE
RET NC
JR Lb26F9 ; [$26F9:9977]
Lb26B7:
LD HL,$4025
Lb26BA:
LD A,(HL)
INC A
JR NZ, Lb26BA ; [$26BA:9914]
Lb26BE:
LD A,(HL)
INC A
JR Z, Lb26BE ; [$26BE:9918]
RET ; ==========================
Lb26C3:
POP HL
CALL CLS ; [CLS]
JP Lb2C1F ; [11295]
Lb26CA:
CALL Lb2BFD ; [11261]
LD A,(Lb27B2)
CP $05 ; [5]
JP Z, Lb29E3 ; [10723]
CP $04 ; [4]
CALL Z, Lb27A1 ; [10145]
JP Lb26AA ; [9898]
Lb26DD:
CALL Lb2BFD ; [11261]
LD A,(Lb27B2)
CP $05 ; [5]
JP Z, Lb2C1F ; [11295]
LD A,$C3
LD (Lb2ADF+1),A
LD A,$77
LD (Lb2BC8),A
XOR A
LD (Lb27B1),A
JP Lb2709 ; [9993]
Lb26F9:
CALL Lb2BFD ; [11261]
Lb26FC:
LD DE,(RAM_CH_ADD) ; GET CH-ADD
LD HL,(RAM_E_LINE) ; GET E-LINE
SBC HL,DE
JP NC, Lb288B ; [10379]
NOP
Lb2709:
XOR A
LD (Lb27B1),A
LD (Lb2F34),A
LD (Lb2F29),A
LD HL,(RAM_LAST_K) ; GET LAST-K
PUSH HL
CALL Lb27B5 ; [10165]
CALL Lb28D8 ; [10456]
LD (Lb27B2),A
LD HL, Lb27B1
SET 7,(HL)
DEC A
JR Z, Lb2736 ; [$2736:10038]
DEC A
JR Z, Lb2765 ; [$2765:10085]
DEC A
JR Z, Lb2792 ; [$2792:10130]
DEC A
JR Z, Lb27A1 ; [$27A1:10145]
DEC A
JR Z, Lb26C3 ; [$26C3:9923]
JR Lb26FC ; [$26FC:9980]
Lb2736:
CALL Lb27B5 ; [10165]
CALL Lb29DD ; [10717]
LD HL, Lb27B1
SET 5,(HL)
CALL Lb27B5 ; [10165]
CALL Lb28D8 ; [10456]
NOP
LD (Lb2F34),A
LD HL, Lb27B1
SET 4,(HL)
CALL Lb27B5 ; [10165]
CALL Lb26B7 ; [9911]
JP Lb26A4 ; [9892]
Lb2759:
INC A
INC A
LD B,A
RLCA
RLCA
RLCA
RLCA
ADD A,B
LD (Lb2F28),A
RET ; ==========================
Lb2765:
CALL Lb27B5 ; [10165]
CALL Lb29DD ; [10717]
LD HL, Lb27B1
SET 6,(HL)
CALL Lb27B5 ; [10165]
CALL Lb28D8 ; [10456]
CALL Lb2759 ; [10073]
LD HL, Lb27B1
SET 5,(HL)
CALL Lb27B5 ; [10165]
CALL Lb28D8 ; [10456]
LD (Lb2F29),A
LD HL, Lb27B1
SET 4,(HL)
CALL Lb27B5 ; [10165]
JP Lb29C1 ; [10689]
Lb2792:
LD A,$40
LD (RAM_PRBUFF00),A ; SET PRBUFF
XOR A
LD (Lb2F34),A
CALL CLS ; [CLS]
CALL Lb2A77 ; [10871]
Lb27A1:
LD A,$11
LD (Lb2ADF+1),A
XOR A
LD (Lb2BC8),A
CALL Lb2A77 ; [10871]
POP HL
JP Lb2C1F ; [11295]
Lb27B1:
ADD A,B
Lb27B2:
DEC B
Lb27B3:
DEC E
DAA
Lb27B5:
CALL CLS ; [CLS]
LD DE, Lb2909
LD HL,(RAM_DF_CC) ; GET DF-CC
LD BC,$0004
XOR A
ADD HL,BC
CALL Lb28CB ; [10443]
LD BC,$004A
ADD HL,BC
CALL Lb28CB ; [10443]
LD BC,$0060
ADD HL,BC
CALL Lb28CB ; [10443]
LD BC,$0042
ADD HL,BC
CALL Lb28CB ; [10443]
ADD HL,BC
CALL Lb28CB ; [10443]
ADD HL,BC
CALL Lb28CB ; [10443]
ADD HL,BC
CALL Lb28CB ; [10443]
LD BC,$005A
ADD HL,BC
PUSH HL
LD HL, Lb27B1
BIT 7,(HL)
POP HL
JR Z, Lb2803 ; [$2803:10243]
CALL Lb28CB ; [10443]
PUSH DE
LD DE,$403C
LD BC,$0021
ADD HL,BC
CALL Lb28CB ; [10443]
POP DE
Lb2803:
LD BC,$0042
PUSH HL
LD HL, Lb27B1
BIT 6,(HL)
POP HL
JR Z, Lb2821 ; [$2821:10273]
ADD HL,BC
PUSH HL
CALL Lb28CB ; [10443]
LD BC,$0011
ADD HL,BC
LD A,(Lb2F28)
AND $0F
ADD A,$1A
LD (HL),A
POP HL
Lb2821:
CALL Lb29D6 ; [10710]
ADD HL,BC
PUSH HL
LD HL, Lb27B1
BIT 5,(HL)
POP HL
JR Z, Lb284A ; [$284A:10314]
PUSH HL
CALL Lb28CB ; [10443]
LD BC,$000B
ADD HL,BC
LD A,(Lb27B2)
DEC A
JR Z, Lb2841 ; [$2841:10305]
LD A,(Lb2F29)
JR Lb2844 ; [$2844:10308]
Lb2841:
LD A,(Lb2F34)
Lb2844:
AND $0F
ADD A,$1C
LD (HL),A
POP HL
Lb284A:
LD BC,$0042
ADD HL,BC
PUSH HL
LD HL, Lb27B1
BIT 4,(HL)
POP HL
JR Z, Lb2865 ; [$2865:10341]
CALL Lb28CB ; [10443]
LD BC,$000C
ADD HL,BC
LD A,(Lb27B2)
DEC A
CALL NZ, Lb28CB ; [10443]
Lb2865:
LD HL, Lb27B1
BIT 7,(HL)
RET Z
LD HL,(RAM_DF_CC) ; GET DF-CC
LD A,(Lb27B2)
INC A
RLCA
INC A
LD B,A
LD DE,$0021
Lb2878:
ADD HL,DE
DJNZ Lb2878 ; [$2878:10360]
LD DE,$0009
ADD HL,DE
LD B,$09
Lb2881:
SET 7,(HL)
INC HL
DJNZ Lb2881 ; [$2881:10369]
RET ; ==========================
Lb2887: ; <<< Uncharted Entry ]
NOP
NOP
Lb2889:
RST 08H
.db $1B ; RST8 Arg: Error Code:'S'
Lb288B:
PUSH AF
LD HL,$0005
ADD HL,DE
LD A,(HL)
CP $EA ; [234]
JR NZ, Lb2889 ; [$2889:10377]
INC HL
LD A,(HL)
CP $31 ; [49-"L"]
JR NZ, Lb28A2 ; [$28A2:10402]
LD A,$01
LD (Lb27B2),A
JR Lb28B0 ; [$28B0:10416]
Lb28A2:
CP $38 ; [56-"S"]
JR NZ, Lb2889 ; [$2889:10377]
LD A,$02
LD (Lb27B2),A
INC HL
LD A,(HL)
CALL Lb269F ; [9887]
Lb28B0:
INC HL
LD A,(HL)
INC HL
PUSH AF
LD DE,$403C
LD B,$20
Lb28B9:
LD A,(HL)
INC HL
CP $76 ; [118]
LD (DE),A
JR Z, Lb28C3 ; [$28C3:10435]
INC DE
DJNZ Lb28B9 ; [$28B9:10425]
Lb28C3:
LD A,(Lb27B2)
DEC A
JP Lb29E9 ; [10729]
NOP
Lb28CB:
PUSH HL
Lb28CC:
LD A,(DE)
INC DE
CP $76 ; [118]
JR Z, Lb28D6 ; [$28D6:10454]
LD (HL),A
INC HL
JR Lb28CC ; [$28CC:10444]
Lb28D6:
POP HL
RET ; ==========================
Lb28D8:
POP HL
LD (Lb27B3),HL
LD BC,(RAM_LAST_K) ; GET LAST-K
POP HL
PUSH BC
Lb28E2:
LD BC,(RAM_LAST_K) ; GET LAST-K
POP HL
PUSH BC
OR A
SBC HL,BC
JR Z, Lb28E2 ; [$28E2:10466]
LD D,C
INC D
JR Z, Lb28E2 ; [$28E2:10466]
CALL DECODE ; [DECODE]
LD A,(HL)
OR A
JR Z, Lb2907 ; [$2907:10503]
CP $1C ; [28-"0"]
JR C, Lb28E2 ; [$28E2:10466]
CP $26 ; [38-"A"]
JR NC, Lb28E2 ; [$28E2:10466]
SUB $1C
LD HL,(Lb27B3)
PUSH HL
RET ; ==========================
Lb2907:
POP HL
RET ; ==========================
Lb2909:
.db F,A,S,T,_,L,O,A; ZX-TEXT
.db D,_,M,O,N,I,T,E; ZX-TEXT
.db U,R,_,V,_,1,6,/; ZX-TEXT
.db 2; ZX-TEXT
.db $76; DATA
.db M,E,N,U; ZX-TEXT
.db $76; DATA
.db 1,_,>,_,L,O,A,D; ZX-TEXT
.db $76; DATA
.db 2,_,>,_,S,A,V,E; ZX-TEXT
.db $76; DATA
.db 3,_,>,_,T,I,T,R; ZX-TEXT
.db E; ZX-TEXT
.db $76; DATA
.db 4,_,>,_,C,H,E,C; ZX-TEXT
.db K; ZX-TEXT
.db $76; DATA
.db 5,_,>,_,D,U,M,P; ZX-TEXT
.db $76; DATA
.db T,I,T,R,E,_,(,3; ZX-TEXT
.db 2,_,C,A,R,A,C,T; ZX-TEXT
.db E,R,E,S,_,M,A,X; ZX-TEXT
.db I,),:; ZX-TEXT
.db $76; DATA
.db V,I,T,E,S,S,E,_; ZX-TEXT
.db (,0,.,.,.,9,),:; ZX-TEXT
.db $76; DATA
Lb2984:
.db A,_,E,X,E,C,U,T; ZX-TEXT
.db E,R,_,_,_,F,O,I; ZX-TEXT
.db S,_,(,1,.,.,.,9; ZX-TEXT
.db ); ZX-TEXT
.db $76; DATA
.db A,P,P,U,Y,E,Z,_; ZX-TEXT
.db S,U,R,_,_,P,L,A; ZX-TEXT
.db Y,_,_,P,U,I,S,_; ZX-TEXT
.db N,/,L; ZX-TEXT
.db $76; DATA
.db R,E,C,O,R,D; ZX-TEXT
.db $76; DATA
Lb29C1:
CALL Lb26B7 ; [9911]
Lb29C4:
CALL Lb2DF6 ; [11766]
LD HL,(RAM_LAST_K) ; GET LAST-K
INC L
JR NZ, Lb29E1 ; [$29E1:10721]
LD A,(Lb2F29)
OR A
JR NZ, Lb29C4 ; [$29C4:10692]
JP Lb26AA ; [9898]
Lb29D6:
LD BC,$0042
LD DE, Lb2984
RET ; ==========================
Lb29DD:
CALL Lb2E8F ; [11919]
RET ; ==========================
Lb29E1:
RST 08H
.db $0C ; RST8 Arg: Error Code:'D'
Lb29E3:
CALL Lb2BFD ; [11261]
JP Lb2C1F ; [11295]
Lb29E9:
JR NZ, Lb29F4 ; [$29F4:10740]
POP AF
SUB $1C
LD (Lb2F34),A
CALL Lb2A77 ; [10871]
Lb29F4:
POP AF
SUB $1C
LD (Lb2F29),A
JP Lb29C4 ; [10692]
Lb29FD:
POP AF
POP AF
Lb29FF:
LD HL, Lb2F28
Lb2A02:
LD DE,$0001
LD B,$00
Lb2A07:
LD A,$7F
IN A,($FE) ; Keyboard Port.
RLA
JR C, Lb2A01 ; [$2A01:10753]
DJNZ Lb2A07 ; [$2A07:10759]
LD BC,$F1F1
LD (Lb29FD),BC
Lb2A17:
LD A,$7F
IN A,($FE) ; Keyboard Port.
RRA
JP NC, Lb2AF7 ; [10999]
RLA
RLA
JR NC, Lb2A17 ; [$2A17:10775]
LD B,$03
Lb2A25:
DJNZ Lb2A25 ; [$2A25:10789]
CALL Lb2A44 ; [10820]
Lb2A2A:
CP $FE ; [254]
JP NZ, Lb29FF ; [10751]
LD BC,$4218
LD (Lb29FD),BC
Lb2A36:
CALL Lb2A44 ; [10820]
LD (HL),A
INC HL
DEC DE
LD A,D
OR E
JR NZ, Lb2A36 ; [$2A36:10806]
RET ; ==========================
Lb2A41: ; <<< Uncharted Entry ]
JP Lb2BD8 ; [11224]
Lb2A44:
LD A,$7F
POP BC
IN A,($FE) ; Keyboard Port.
RRA
JP NC, Lb2AF7 ; [10999]
PUSH BC
LD B,$08
Lb2A50:
LD C,$75
PUSH AF
Lb2A53:
DEC C
JR Z, Lb29FD ; [$29FD:10749]
IN A,($FE) ; Keyboard Port.
OUT ($FF),A ; Zx81 Display/Tape port
RLA
JR C, Lb2A53 ; [$2A53:10835]
Lb2A5D:
DEC C
JR Z, Lb29FD ; [$29FD:10749]
IN A,($FE) ; Keyboard Port.
OUT ($FF),A ; Zx81 Display/Tape port
RLA
JR NC, Lb2A5D ; [$2A5D:10845]
LD A,C
CP $64 ; [100]
JR C, Lb2A71 ; [$2A71:10865]
POP AF
SCF
CCF
JR Lb2A73 ; [$2A73:10867]
Lb2A71:
POP AF
SCF
Lb2A73:
RLA
DJNZ Lb2A50 ; [$2A50:10832]
RET ; ==========================
Lb2A77:
CALL FAST ; [FAST]
Lb2A7A:
LD HL, Lb2F34
DEC (HL)
LD HL, Lb2A50+1
LD (HL),$75
LD HL, Lb2F28
LD (Lb29FF+1),HL
LD HL,$0001
LD (Lb2A02+1),HL
LD HL, Lb2A2A+1
LD (HL),$FE
CALL Lb29FF ; [10751]
LD HL, Lb2F28
LD A,(HL)
LD D,A
AND $F0
RRCA
RRCA
RRCA
RRCA
LD E,A
LD A,D
AND $0F
ADD A,E
RRA
ADD A,$6B
LD HL, Lb2A50+1
LD (HL),A
LD HL, Lb2F89
LD (Lb29FF+1),HL
LD HL,$0074
LD (Lb2A02+1),HL
LD HL, Lb2A2A+1
LD (HL),$01
CALL Lb29FF ; [10751]
LD HL, Lb2FBA+2
LD BC,$403C
LD DE,(Lb2F32)
Lb2ACC:
LD A,(BC)
CP $76 ; [118]
JR NZ, Lb2AD8 ; [$2AD8:10968]
PUSH HL
LD HL, Lb2AD9
LD (HL),$18
POP HL
Lb2AD8:
CP (HL)
Lb2AD9:
JR Z, Lb2AE2 ; [$2AE2:10978]
PUSH HL
LD HL, Lb2BC3
Lb2ADF:
LD (HL),$C3
POP HL
Lb2AE2:
JP Lb2F37 ; [12087]
Lb2AE5:
JR Z, Lb2AEF ; [$2AEF:10991]
RES 6,A
LD (DE),A
INC BC
INC DE
INC HL
JR Lb2ACC ; [$2ACC:10956]
Lb2AEF:
LD HL, Lb2AD9
LD (HL),$28
JP Lb2BAA ; [11178]
Lb2AF7:
POP AF
LD A,$8C
JP Lb2BDD ; [11229]
LD HL,(Lb2F2A)
LD DE,(Lb2F12)
OR A
SBC HL,DE
JR NZ, Lb2B29 ; [$2B29:11049]
CALL Lb2D02 ; [11522]
LD (Lb2F14),HL
LD A,(HL)
INC DE
LD (Lb2F12),DE
LD (Lb2F0E),DE
LD (Lb2F16),A
LD L,A
CALL Lb2CEA ; [11498]
RET ; ==========================
Lb2B21:
JP NZ, Lb2C85 ; [11397]
LD A,$88
JP Lb2BDD ; [11229]
Lb2B29:
CALL Lb2D10 ; [11536]
LD A,L
LD HL,(Lb2F14)
LD (HL),A
INC HL
LD (Lb2F14),HL
LD DE,(Lb2F2A)
CALL Lb2CE2 ; [11490]
INC DE
LD A,(HL)
LD (Lb2F16),A
LD L,A
CALL Lb2CEA ; [11498]
LD HL,(Lb2F12)
LD (Lb2F0E),HL
RET ; ==========================
Lb2B4C:
LD HL, Lb2F28
LD D,(HL)
LD (HL),$BB
LD (Lb2E5A+1),HL
CALL Lb2B8D ; [11149]
LD HL, Lb2F28
LD (HL),D
LD HL,$0600
LD (Lb2E5D+1),HL
LD HL,$0002
LD (Lb2E67+1),HL
CALL Lb2E58 ; [11864]
RET ; ==========================
Lb2B6C:
LD HL,$407D
LD (Lb29FF+1),HL
LD HL,(Lb2FFB)
LD (Lb2A02+1),HL
CALL Lb29FF ; [10751]
LD HL, Lb2F89
LD DE,$4009
LD BC,$0074
LDIR
POP AF
POP AF
JP Lb26CA ; [9930]
NOP
NOP
Lb2B8D:
LD HL, Lb2F28
LD A,(HL)
PUSH AF
AND $F0
RRCA
RRCA
RRCA
RRCA
ADD A,$08
LD HL, Lb2E71+1
LD (HL),A
POP AF
AND $0F
SLA A
ADD A,$18
LD HL, Lb2E75+1
LD (HL),A
RET ; ==========================
Lb2BAA:
LD A,(DE)
CP $76 ; [118]
JR Z, Lb2BB5 ; [$2BB5:11189]
LD A,$00
LD (DE),A
INC DE
JR Lb2BAA ; [$2BAA:11178]
Lb2BB5:
INC DE
LD (Lb2F32),DE
LD HL, Lb2F34
LD A,(HL)
OR A
JP Z, Lb2F49 ; [12105]
NOP
Lb2BC3:
LD DE, Lb2BD0
LD A,$00
Lb2BC8:
LD (HL),A
JR Lb2B6C ; [$2B6C:11116]
Lb2BCB:
ADD HL,BC
LD (Lb2F35),HL
RET ; ==========================
Lb2BD0:
LD HL, Lb2BC3
LD (HL),$11
JP Lb2A7A ; [10874]
Lb2BD8:
POP AF
POP AF
POP AF
LD A,$B7
Lb2BDD:
LD HL,(Lb2F35)
LD (HL),A
POP AF
POP AF
CALL SLOW ; [SLOW]
LD HL,$4025
Lb2BE9:
LD A,(HL)
INC A
JR NZ, Lb2BE9 ; [$2BE9:11241]
Lb2BED:
LD A,(HL)
INC A
JR Z, Lb2BED ; [$2BED:11245]
JP Lb26DD ; [9949]
LD HL,$C000
LD (RAM_RAMTOP),HL ; SET RAM-TOP
JP NEW ; [NEW]
Lb2BFD:
CALL CLS ; [CLS]
CALL SLOW ; [SLOW]
LD HL,(RAM_DF_CC) ; GET DF-CC
LD (Lb2F32),HL
LD (Lb2F10),HL
LD BC,$02F7
ADD HL,BC
LD (Lb2F0E),HL
LD (Lb2F12),HL
LD BC,$001F
LD (Lb2F2A),HL
JP Lb2BCB ; [11211]
Lb2C1F:
CALL Lb2CC3 ; [11459]
LD HL,(RAM_S_TOP+1) ; GET S-TOP
PUSH HL
CALL Lb2CDA ; [11482]
Lb2C29:
LD BC,(RAM_LAST_K) ; GET LAST-K
POP HL
PUSH BC
OR A
SBC HL,BC
JR Z, Lb2C5D ; [$2C5D:11357]
LD D,C
INC D
JR Z, Lb2C5D ; [$2C5D:11357]
CALL Lb2CDA ; [11482]
CALL DECODE ; [DECODE]
LD A,(HL)
CP $1C ; [28-"0"]
JR C, Lb2C91 ; [$2C91:11409]
CP $2C ; [44-"G"]
JR NC, Lb2C91 ; [$2C91:11409]
LD HL,(Lb2F0E)
LD (HL),A
INC HL
LD A,(HL)
CP $00 ; [0]
JR NZ, Lb2C54 ; [$2C54:11348]
LD HL,(Lb2F12)
Lb2C54:
LD (Lb2F0E),HL
JR Lb2C8C ; [$2C8C:11404]
POP AF
POP AF
RET ; ==========================
Lb2C5C: ; <<< Uncharted Entry ]
NOP
Lb2C5D:
CALL Lb2DC5 ; [11717]
LD A,(Lb2F1C+1)
OR A
CALL NZ, Lb2D73 ; [11635]
LD A,(Lb2F24)
OR A
CALL NZ, Lb2DA3 ; [11683]
LD A,(Lb2F29)
OR A
CALL NZ, Lb2DF6 ; [11766]
LD A,(Lb2F34)
OR A
CALL NZ, Lb2A77 ; [10871]
LD A,(Lb2F27)
OR A
CALL NZ, Lb2DB6 ; [11702]
JR Lb2C29 ; [$2C29:11305]
Lb2C85:
LD A,(HL)
CP $76 ; [118]
JP Lb2AE5 ; [10981]
NOP
Lb2C8C:
CALL Lb2CDA ; [11482]
JR Lb2C5D ; [$2C5D:11357]
Lb2C91:
CP $74 ; [116]
JR NC, Lb2C9D ; [$2C9D:11421]
CP $70 ; [112]
JR C, Lb2C9D ; [$2C9D:11421]
POP BC
LD C,$FF
PUSH BC
Lb2C9D:
LD HL, Lb2F53
LD BC,$000F
CPIR
JP NZ, Lb2C8C ; [11404]
NOP
NOP
LD BC,$2F53
OR A
SBC HL,BC
ADC HL,HL
NOP
LD BC,$2F62
ADD HL,BC
DEC HL
DEC HL
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
NOP
LD DE, Lb2C8C
PUSH DE
JP (HL)
Lb2CC3:
LD HL,(Lb2F14)
LD A,(HL)
LD (Lb2F16),A
LD DE,(Lb2F2A)
CALL Lb2CE2 ; [11490]
INC DE
LD A,(Lb2F16)
LD L,A
CALL Lb2CEA ; [11498]
RET ; ==========================
Lb2CDA:
LD HL,(Lb2F0E)
LD A,(HL)
ADD A,$80
LD (HL),A
RET ; ==========================
Lb2CE2:
LD A,H
CALL Lb2CF3 ; [11507]
LD A,H
CALL Lb2CEF ; [11503]
Lb2CEA:
LD A,L
CALL Lb2CF3 ; [11507]
LD A,L
Lb2CEF:
AND $0F
JR Lb2CFD ; [$2CFD:11517]
Lb2CF3:
AND $F0
SRL A
SRL A
SRL A
SRL A
Lb2CFD:
ADD A,$1C
LD (DE),A
INC DE
RET ; ==========================
Lb2D02:
CALL Lb2D1F ; [11551]
CALL Lb2D22 ; [11554]
LD H,A
CALL Lb2D1F ; [11551]
SUB $1C
ADD A,H
LD H,A
Lb2D10:
CALL Lb2D1F ; [11551]
CALL Lb2D22 ; [11554]
LD L,A
CALL Lb2D1F ; [11551]
SUB $1C
ADD A,L
LD L,A
RET ; ==========================
Lb2D1F:
LD A,(DE)
INC DE
RET ; ==========================
Lb2D22:
SUB $1C
SLA A
SLA A
SLA A
SLA A
RET ; ==========================
Lb2D2D:
LD HL, Lb2F16+2
Lb2D30:
LD (Lb2F14),HL
Lb2D33:
CALL Lb2CC3 ; [11459]
LD HL,(Lb2F2A)
LD BC,$0005
ADD HL,BC
LD (Lb2F0E),HL
LD (Lb2F12),HL
RET ; ==========================
Lb2D44: ; <<< Uncharted Entry ]
LD HL, Lb2F19
JR Lb2D30 ; [$2D30:11568]
LD HL, Lb2F1E
JR Lb2D30 ; [$2D30:11568]
LD HL, Lb2F25
JR Lb2D30 ; [$2D30:11568]
CALL Lb2E8F ; [11919]
LD HL, Lb2F28
JR Lb2D30 ; [$2D30:11568]
LD HL,(Lb2F16+1)
LD B,$08
Lb2D60:
DEC HL
DJNZ Lb2D60 ; [$2D60:11616]
LD (Lb2F16+1),HL
RET ; ==========================
Lb2D67: ; <<< Uncharted Entry ]
LD HL,(Lb2F16+1)
LD B,$08
Lb2D6C:
INC HL
DJNZ Lb2D6C ; [$2D6C:11628]
LD (Lb2F16+1),HL
RET ; ==========================
Lb2D73:
LD HL, Lb2F1C+1
DEC (HL)
LD HL,(Lb2F19)
LD BC,(Lb2F19)
LD DE,(Lb2F1B)
Lb2D82:
LD A,D
CP (HL)
JR Z, Lb2D91 ; [$2D91:11665]
INC HL
Lb2D87:
PUSH HL
OR A
SBC HL,BC
POP HL
JR NZ, Lb2D82 ; [$2D82:11650]
JP Lb2EFA ; [12026]
Lb2D91:
LD A,E
INC HL
CP (HL)
JR NZ, Lb2D87 ; [$2D87:11655]
PUSH HL
LD HL, Lb2F1C+1
LD A,(HL)
OR A
JP Z, Lb2F03 ; [12035]
DEC (HL)
POP HL
JR Lb2D87 ; [$2D87:11655]
Lb2DA3:
LD HL, Lb2F24
DEC (HL)
NOP
LD HL,(Lb2F1E)
LD DE,(Lb2F20)
LD BC,(Lb2F22)
LDIR
RET ; ==========================
Lb2DB6:
JR Lb2DC1 ; [$2DC1:11713]
Lb2DB8:
LD HL, Lb2F27
DEC (HL)
NOP
LD HL,(Lb2F25)
JP (HL)
Lb2DC1:
CALL Lb2DB8 ; [11704]
RET ; ==========================
Lb2DC5:
LD HL,(Lb2F16+1)
LD DE,(Lb2F10)
LD C,$17
Lb2DCE:
CALL Lb2CE2 ; [11490]
LD B,$05
Lb2DD3:
INC DE
DJNZ Lb2DD3 ; [$2DD3:11731]
LD B,$08
Lb2DD8:
LD A,(HL)
INC HL
PUSH HL
LD L,A
CALL Lb2CEA ; [11498]
INC DE
POP HL
DJNZ Lb2DD8 ; [$2DD8:11736]
DEC C
RET Z
JR Lb2DCE ; [$2DCE:11726]
LD HL,(Lb2F2A)
LD (Lb2F0E),HL
LD (Lb2F12),HL
CALL Lb2CC3 ; [11459]
RET ; ==========================
Lb2DF4: ; <<< Uncharted Entry ]
RST 08H
.db $15 ; RST8 Arg: Error Code:'M'
Lb2DF6:
CALL FAST ; [FAST]
LD HL, Lb2F29
DEC (HL)
LD HL, Lb2E6B+1
LD (HL),$FE
LD HL,(RAM_STKEND) ; GET STKEND
LD BC,$407D
OR A
SBC HL,BC
LD (RAM_SPARE2),HL ; SET UNUSED-16
CALL Lb2B4C ; [11084]
CALL Lb2B8D ; [11149]
LD HL, Lb2E6B+1
LD (HL),$01
LD HL,$4009
LD (Lb2E5A+1),HL
LD HL,$0008
LD (Lb2E5D+1),HL
LD HL,$0074
LD (Lb2E67+1),HL
CALL Lb2E58 ; [11864]
LD HL,$407D
LD (Lb2E5A+1),HL
LD HL,$0030
LD (Lb2E5D+1),HL
LD HL,(RAM_SPARE2) ; GET UNUSED-16
LD (Lb2E67+1),HL
CALL Lb2E58 ; [11864]
CALL SLOW ; [SLOW]
RET ; ==========================
Lb2E47: ; <<< Uncharted Entry ]
NOP
XOR A
LD (Lb2F24),A
LD (Lb2F27),A
LD (Lb2F34),A
LD (Lb2F29),A
JP Lb2D33 ; [11571]
Lb2E58:
IN A,($FE) ; Keyboard Port.
Lb2E5A:
LD HL,$407D
Lb2E5D:
LD DE,$0030
Lb2E60:
DJNZ Lb2E60 ; [$2E60:11872]
DEC DE
LD A,D
OR E
JR NZ, Lb2E60 ; [$2E60:11872]
Lb2E67:
LD DE,$0335
INC DE
Lb2E6B:
LD A,$01
Lb2E6D:
LD C,$08
Lb2E6F:
RLA
PUSH AF
Lb2E71:
LD B,$13
JR NC, Lb2E77 ; [$2E77:11895]
Lb2E75:
LD B,$2E
Lb2E77:
PUSH BC
Lb2E78:
DJNZ Lb2E78 ; [$2E78:11896]
OUT ($FF),A ; Zx81 Display/Tape port
POP BC
Lb2E7D:
DJNZ Lb2E7D ; [$2E7D:11901]
IN A,($FE) ; Keyboard Port.
POP AF
DEC C
JP NZ, Lb2E6F ; [11887]
DEC DE
LD A,D
OR E
LD A,(HL)
INC HL
JP NZ, Lb2E6D ; [11885]
RET ; ==========================
Lb2E8F:
POP HL
LD (Lb2F30),HL
POP HL
LD (Lb2F2E),HL
LD HL,(Lb2F2A)
LD (Lb2F2C),HL
LD E,$20
Lb2E9F:
LD BC,(RAM_LAST_K) ; GET LAST-K
POP HL
PUSH BC
OR A
SBC HL,BC
JR Z, Lb2E9F ; [$2E9F:11935]
LD D,C
INC D
JR Z, Lb2E9F ; [$2E9F:11935]
PUSH DE
CALL DECODE ; [DECODE]
POP DE
LD A,(HL)
CP $76 ; [118]
JR Z, Lb2ECB ; [$2ECB:11979]
CP $00 ; [0]
JR C, Lb2E9F ; [$2E9F:11935]
CP $40 ; [64]
JR NC, Lb2E9F ; [$2E9F:11935]
LD HL,(Lb2F2C)
LD (HL),A
INC HL
LD (Lb2F2C),HL
DEC E
JR NZ, Lb2E9F ; [$2E9F:11935]
Lb2ECB:
LD A,$20
SUB E
JR Z, Lb2EDE ; [$2EDE:11998]
LD HL,(Lb2F2A)
LD C,A
LD B,$00
LD DE,$403C
LDIR
EX DE,HL
LD (HL),$76
Lb2EDE:
LD HL,(Lb2F2E)
PUSH HL
LD HL,(Lb2F30)
PUSH HL
CALL CLS ; [CLS]
RET ; ==========================
Lb2EEA: ; <<< Uncharted Entry ]
LD HL,(Lb2F16+1)
DEC HL
LD (Lb2F16+1),HL
RET ; ==========================
Lb2EF2: ; <<< Uncharted Entry ]
LD HL,(Lb2F16+1)
INC HL
LD (Lb2F16+1),HL
RET ; ==========================
Lb2EFA:
XOR A
LD (Lb2F1C+1),A
LD A,$92
JP Lb2BDD ; [11229]
Lb2F03:
POP HL
DEC HL
LD (Lb2F16+1),HL
CALL Lb2D30 ; [11568]
JP Lb2CDA ; [11482]
Lb2F0E:
LD (HL),L
LD B,E
Lb2F10:
LD A,(HL)
LD B,B
Lb2F12:
LD (HL),L
LD B,E
Lb2F14:
RST 30H
DEC HL
Lb2F16:
LD (Lb2B6C+1),HL
Lb2F19:
NOP
HALT
Lb2F1B:
LD (HL),A
Lb2F1C:
DJNZ Lb2F1E ; [$2F1E:12062]
Lb2F1E:
NOP
LD (HL),B
Lb2F20:
RST 38H
HALT
Lb2F22:
INC C
NOP
Lb2F24:
NOP
Lb2F25:
NOP
LD (HL),B
Lb2F27:
NOP
Lb2F28:
CP E
Lb2F29:
NOP
Lb2F2A:
LD (HL),L
LD B,E
Lb2F2C:
ADD A,(HL)
LD B,E
Lb2F2E:
LD L,E
DAA
Lb2F30:
RET PO
ADD HL,HL
Lb2F32:
LD A,(HL)
LD B,B
Lb2F34:
NOP
Lb2F35:
SUB H
LD B,E
Lb2F37:
LD A,(DE)
CP $76 ; [118]
JR NZ, Lb2F3D ; [$2F3D:12093]
INC DE
Lb2F3D:
PUSH HL
LD HL,(RAM_VARS) ; GET VARS
OR A
SBC HL,DE
POP HL
JP Lb2B21 ; [11041]
NOP
Lb2F49:
LD HL, Lb2BC3
LD (HL),$11
LD A,$8F
JP Lb2BDD ; [11229]
Lb2F53:
HALT
DEC SP
SCF
ADD HL,SP
INC L
JR C, Lb2F5A ; [$2F5A:12122]
Lb2F5A:
LD ($7271),A
LD (HL),B
LD (HL),E
CPL
INC C
LD A,$FD
LD HL,(Lb2D2D)
LD B,H
DEC L
LD C,C
DEC L
LD C,(HL)
DEC L
LD D,E
DEC L
CALL P,$E72D ; [59181]
DEC L
LD E,E
DEC L
JP P,$672E ; [26414]
DEC L
JP PE,$802E ; [32814]
CPL
LD C,B
LD L,$59
INC L
CALL Lb2E8F ; [11919]
LD HL, Lb2F34
JP Lb2D30 ; [11568]
Lb2F89:
NOP
RLCA
NOP
CP D
LD B,A
NOP
ADD A,C
INC BC
NOP
NOP
NOP
LD (BC),A
NOP
NOP
NOP
ADD A,H
NOP
EX AF,AF'
LD BC,$0880
NOP
NOP
LD BC,$8020
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LD B,$40
NOP
LD (BC),A
NOP
RLCA
EX AF,AF'
NOP
NOP
LD C,B
NOP
NOP
JR NZ, Lb2FBB ; [$2FBB:12219]
NOP
Lb2FBA:
LD BC,$0008
LD B,B
DJNZ Lb2F40 ; [$2F40:12096]
NOP
JR NZ, Lb2FC3 ; [$2FC3:12227]
Lb2FC3:
NOP
NOP
NOP
INC B
NOP
LD BC,$4000
LD B,$00
NOP
LD (BC),A
ADD A,B
INC BC
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ADD A,B
EX AF,AF'
NOP
NOP
LD BC,$0000
NOP
NOP
NOP
LD HL,$0005
JR NZ, Lb2FEC ; [$2FEC:12268]
RET NZ
Lb2FEC:
ADD A,B
NOP
NOP
NOP
INC BC
EX AF,AF'
LD BC,$0001
NOP
NOP
NOP
JR NZ, Lb2FFA ; [$2FFA:12282]
Lb2FFA:
LD C,B
Lb2FFB:
LD (BC),A
LD BC,$4040
Lb2FFF:
RST 38H
;------------ Labels errors ------------
; LABEL ERROR @LB2A01:JR C,-13 [$2A01:10753]
; LABEL ERROR @LB2FBB:JR NZ,+3 [$2FBB:12219]
; LABEL ERROR @LB2F40:DJNZ -128 [$2F40:12096]
; LABEL @LB2AE0 Fixed: LD ($2AE0),A / LD (Lb2ADF+1),A
; LABEL @LB2AE0 Fixed: LD ($2AE0),A / LD (Lb2ADF+1),A
; LABEL @LB2A00 Fixed: LD ($2A00),HL / LD (Lb29FF+1),HL
; LABEL @LB2A03 Fixed: LD ($2A03),HL / LD (Lb2A02+1),HL
; LABEL @LB2A00 Fixed: LD ($2A00),HL / LD (Lb29FF+1),HL
; LABEL @LB2A03 Fixed: LD ($2A03),HL / LD (Lb2A02+1),HL
; LABEL @LB2E5B Fixed: LD ($2E5B),HL / LD (Lb2E5A+1),HL
; LABEL @LB2E5E Fixed: LD ($2E5E),HL / LD (Lb2E5D+1),HL
; LABEL @LB2E68 Fixed: LD ($2E68),HL / LD (Lb2E67+1),HL
; LABEL @LB2A00 Fixed: LD ($2A00),HL / LD (Lb29FF+1),HL
; LABEL @LB2A03 Fixed: LD ($2A03),HL / LD (Lb2A02+1),HL
; LABEL @LB2F1D Fixed: LD A,($2F1D) / LD A,(Lb2F1C+1)
; LABEL @LB2F17 Fixed: LD HL,($2F17) / LD HL,(Lb2F16+1)
; LABEL @LB2F17 Fixed: LD ($2F17),HL / LD (Lb2F16+1),HL
; LABEL @LB2F17 Fixed: LD HL,($2F17) / LD HL,(Lb2F16+1)
; LABEL @LB2F17 Fixed: LD ($2F17),HL / LD (Lb2F16+1),HL
; LABEL @LB2F17 Fixed: LD HL,($2F17) / LD HL,(Lb2F16+1)
; LABEL @LB2E5B Fixed: LD ($2E5B),HL / LD (Lb2E5A+1),HL
; LABEL @LB2E5E Fixed: LD ($2E5E),HL / LD (Lb2E5D+1),HL
; LABEL @LB2E68 Fixed: LD ($2E68),HL / LD (Lb2E67+1),HL
; LABEL @LB2E5B Fixed: LD ($2E5B),HL / LD (Lb2E5A+1),HL
; LABEL @LB2E5E Fixed: LD ($2E5E),HL / LD (Lb2E5D+1),HL
; LABEL @LB2E68 Fixed: LD ($2E68),HL / LD (Lb2E67+1),HL
; LABEL @LB2F17 Fixed: LD HL,($2F17) / LD HL,(Lb2F16+1)
; LABEL @LB2F17 Fixed: LD ($2F17),HL / LD (Lb2F16+1),HL
; LABEL @LB2F17 Fixed: LD HL,($2F17) / LD HL,(Lb2F16+1)
; LABEL @LB2F17 Fixed: LD ($2F17),HL / LD (Lb2F16+1),HL
; LABEL @LB2F1D Fixed: LD ($2F1D),A / LD (Lb2F1C+1),A
; LABEL @LB2F17 Fixed: LD ($2F17),HL / LD (Lb2F16+1),HL
; LABEL @LB2B6D Fixed: LD ($2B6D),HL / LD (Lb2B6C+1),HL
.end
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=8192/16600 : H=2000/40D8
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
;-----------------------------------
;------- Rom and Ram Symbols -------
BREAK_1 equ $0F46
RAM_SPARE1 equ $4021
RAM_PR_CC equ $4038
RAM_SPARE2 equ $407B
RAM_D_FILE equ $400C
SET_FAST equ $02E7
RAM_CDFLAG equ $403B
COPY_END equ $08DE
RAM_NXTLIN equ $4029
RAM_LAST_K equ $4025
DECODE equ $07BD
PRINT_AT equ $08F5
SCROLL equ $0C0E
RAM_PRBUFF02 equ $403E
RAM_PRBUFF00 equ $403C
RAM_PRBUFF0A equ $4046
RAM_PRBUFF06 equ $4042
RAM_PRBUFF08 equ $4044
ONE_SPACE equ $099B
RAM_STKEND equ $401C
RAM_COORDS equ $4036
PLOT_UNP equ $0BAF
ORG $2000 ; [@8192/@h2000]
Lb2000:
JR NZ, Lb2000 ; [$2000:8192]
CP $FE ; [254]
CP $FE ; [254]
CP $FE ; [254]
Lb2008:
CP $FE ; [254]
CP $22 ; [34-"6"]
LD A,H
INC H
LD A,(Lb283F)
ADD HL,HL
LD A,$3C
DEC A
DEC HL
DEC L
LD HL,(Lb3B2F)
INC L
LD L,$30
LD SP,$3332
INC (HL)
DEC (HL)
LD (HL),$37
JR C, Lb205F ; [$205F:8287]
LD B,C
LD B,D
LD B,E
LD B,H
LD B,L
LD B,(HL)
LD B,A
LD C,B
LD C,C
LD C,D
LD C,E
LD C,H
LD C,L
LD C,(HL)
LD C,A
LD D,B
LD D,C
LD D,D
LD D,E
LD D,H
LD D,L
LD D,(HL)
LD D,A
LD E,B
LD E,C
LD E,D
Lb2040:
CALL BREAK_1 ; [BREAK-1]
JR C, Lb2047 ; [$2047:8263]
RST 08H
.db $0C ; RST8 Arg: Error Code:'D'
Lb2047:
IN A,($FB) ; ZxPrinter Port.
RLA
JR NC, Lb2040 ; [$2040:8256]
RET ; ==========================
Lb204D: ; <<< Uncharted Entry ]
RST 38H
RST 38H
RST 38H
PUSH HL
LD L,A
LD H,$30
LD A,(HL)
POP HL
RET ; ==========================
Lb2057: ; <<< Uncharted Entry ]
CALL Lb3040 ; [12352]
LD A,(RAM_SPARE1) ; GET UNUSED-8
OUT ($FB),A ; ZxPrinter port
Lb205F:
RET ; ==========================
Lb2060: ; <<< Uncharted Entry ]
LD A,(RAM_PR_CC) ; GET PR-CC
Lb2063:
AND $7F
LD C,A
LD B,$40
LD A,$76
LD (BC),A
RET ; ==========================
Lb206C: ; <<< Uncharted Entry ]
LD A,(RAM_SPARE1) ; GET UNUSED-8
LD C,A
LD A,(RAM_SPARE2) ; GET UNUSED-16
OR C
LD B,$00
LD C,A
RET ; ==========================
Lb2078: ; <<< Uncharted Entry ]
LD (BC),A
JP Lb30D0 ; [12496]
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
DAA
LD H,$BB
LD A,(Lb2821)
ADD HL,HL
JR NZ, Lb2063 ; [$2063:8291]
DEC A
DEC HL
DEC L
INC HL
CPL
DEC SP
INC L
LD L,$25
AND D
AND E
AND (HL)
AND A
XOR B
OR E
OR (HL)
OR A
CP D
LD H,C
LD H,D
LD H,E
LD H,H
LD H,L
LD H,(HL)
LD H,A
LD L,B
LD L,C
LD L,D
LD L,E
LD L,H
LD L,L
LD L,(HL)
LD L,A
LD (HL),B
LD (HL),C
LD (HL),D
LD (HL),E
LD (HL),H
LD (HL),L
HALT
LD (HL),A
LD A,B
LD A,C
LD A,D
LD D,$16
LD HL,(RAM_D_FILE) ; GET D-FILE
INC HL
JR Lb20CD ; [$20CD:8397]
LD D,$01
LD HL, Lb403C
Lb20CD:
CALL SET_FAST ; [SET-FAST]
LD A,D
POP DE
PUSH DE
LD D,A
PUSH BC
IN A,($FB) ; ZxPrinter Port.
RRCA
JR C, Lb212B ; [$212B:8491]
CALL Lb3060 ; [12384]
Lb20DD:
CALL Lb3040 ; [12352]
LD A,$0F
OUT ($FB),A ; ZxPrinter port
Lb20E4:
CALL Lb3040 ; [12352]
LD A,(HL)
INC HL
CP $76 ; [118]
JR Z, Lb210B ; [$210B:8459]
LD B,A
CALL Lb3050 ; [12368]
CP $FE ; [254]
JR Z, Lb2130 ; [$2130:8496]
CP $FF ; [255]
JR Z, Lb2136 ; [$2136:8502]
OUT ($FB),A ; ZxPrinter port
CP $20 ; [32-"4"]
LD A,(RAM_CDFLAG) ; GET CDFLAG
SET 4,A
JR Z, Lb2106 ; [$2106:8454]
SET 3,A
Lb2106:
LD (RAM_CDFLAG),A ; SET CDFLAG
JR Lb20E4 ; [$20E4:8420]
Lb210B:
LD A,E
CP $63 ; [99]
JR Z, Lb2128 ; [$2128:8488]
PUSH HL
LD HL, Lb403B
BIT 3,(HL)
JR NZ, Lb211F ; [$211F:8479]
LD A,$08
OUT ($FB),A ; ZxPrinter port
CALL Lb3040 ; [12352]
Lb211F:
LD A,$0A
OUT ($FB),A ; ZxPrinter port
RES 3,(HL)
RES 4,(HL)
POP HL
Lb2128:
DEC D
JR NZ, Lb20DD ; [$20DD:8413]
Lb212B:
JP COPY_END ; [COPY-END]
RST 38H
RST 38H
Lb2130:
LD A,B
LD BC,$317A
JR Lb213A ; [$213A:8506]
Lb2136:
LD A,B
LD BC,$31BC
Lb213A:
PUSH HL
PUSH BC
LD B,A
CALL Lb3040 ; [12352]
LD A,$08
OUT ($FB),A ; ZxPrinter port
LD A,(RAM_CDFLAG) ; GET CDFLAG
BIT 4,A
JR Z, Lb215A ; [$215A:8538]
CALL Lb3040 ; [12352]
LD A,$80
OUT ($FB),A ; ZxPrinter port
LD A,(RAM_CDFLAG) ; GET CDFLAG
RES 4,A
LD (RAM_CDFLAG),A ; SET CDFLAG
Lb215A:
LD A,B
ADD A,B
ADD A,B
ADD A,A
LD L,A
XOR A
LD H,A
POP BC
ADD HL,BC
LD B,$01
Lb2165:
CALL Lb3040 ; [12352]
LD A,(HL)
INC HL
OUT ($FB),A ; ZxPrinter port
DJNZ Lb2165 ; [$2165:8549]
CALL Lb3040 ; [12352]
LD A,$0F
OUT ($FB),A ; ZxPrinter port
POP HL
JP Lb30E4 ; [12516]
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
ADD A,C
ADC A,A
ADC A,A
ADD A,B
ADD A,B
ADD A,B
ADD A,D
ADD A,B
ADD A,B
ADC A,A
ADC A,A
ADC A,A
ADD A,E
ADC A,A
ADC A,A
ADC A,A
ADC A,A
ADC A,A
SUB B
RET M
RET M
ADD A,B
ADD A,B
ADD A,B
SUB L
RST 38H
RST 38H
ADD A,B
ADD A,B
ADD A,B
AND (HL)
RET M
RET M
ADC A,A
ADC A,A
ADC A,A
SBC A,A
RST 38H
RST 38H
ADC A,A
ADC A,A
ADC A,A
EXX
XOR D
PUSH DE
XOR D
PUSH DE
XOR D
CALL PO,$A8D0 ; [43216]
RET NC
XOR B
RET NC
RET ; ==========================
Lb21B7: ; <<< Uncharted Entry ]
ADC A,D
ADD A,L
ADC A,D
ADD A,L
ADC A,D
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
RST 38H
CP $F8 ; [248]
RET M
RST 38H
RST 38H
RST 38H
.db $FD,$FF ; DATAS
RST 38H
RET M
RET M
RET M
CALL M,$F8F8 ; [63736]
RET M
RET M
RET M
RST 28H
.db $8F ; RST28 Arg: Unknown CMD.
.db $8F ; RST28 Arg: Unknown CMD.
RST 38H
RST 38H
RST 38H
JP PE,$8080 ; [32896]
RST 38H
RST 38H
RST 38H
EXX
ADC A,A
ADC A,A
RET M
RET M
RET M
AND B
ADD A,B
ADD A,B
RET M
RET M
RET M
AND $D5
XOR D
PUSH DE
XOR D
PUSH DE
IN A,($AF) ; User port.
RST 10H ; Display= A reg.
XOR A
RST 10H ; Display= A reg.
XOR A
OR $F5
JP M,$FAF5 ; [64245]
PUSH AF
RST 38H
RST 38H
Lb2200:
LD A,(RAM_SPARE2) ; GET UNUSED-16
OUT ($00),A ; PORT 0/AGB(Registers)
LD A,(Lb407C) ; GET UNUSED-16
OUT ($02),A ; User port.
JR Lb2214 ; [$2214:8724]
LD HL,(RAM_NXTLIN) ; GET NXT-LINE
INC HL
INC HL
INC HL
INC HL
INC HL
Lb2214:
LD A,(HL)
CP $1B ; [27-"."]
JR Z, Lb2278 ; [$2278:8824]
CP $37 ; [55-"R"]
JR Z, Lb226C ; [$226C:8812]
CP $39 ; [57-"T"]
JR Z, Lb2279 ; [$2279:8825]
CP $3B ; [59-"V"]
JR Z, Lb2272 ; [$2272:8818]
SUB $1C
Lb2227:
PUSH AF
INC HL
LD A,(HL)
CP $1B ; [27-"."]
JR Z, Lb2249 ; [$2249:8777]
CP $37 ; [55-"R"]
JR Z, Lb2249 ; [$2249:8777]
CP $39 ; [57-"T"]
JR Z, Lb2249 ; [$2249:8777]
CP $3B ; [59-"V"]
JR Z, Lb2249 ; [$2249:8777]
SUB $1C
LD B,A
POP AF
PUSH BC
LD B,$09
LD C,A
Lb2242:
ADD A,C
DJNZ Lb2242 ; [$2242:8770]
POP BC
ADD A,B
JR Lb2227 ; [$2227:8743]
Lb2249:
LD A,E
CP $7C ; [124]
JR Z, Lb2256 ; [$2256:8790]
CP $00 ; [0]
JR Z, Lb225A ; [$225A:8794]
POP AF
LD (DE),A
JR Lb2214 ; [$2214:8724]
Lb2256:
POP AF
LD (DE),A
JR Lb2200 ; [$2200:8704]
Lb225A:
POP AF
Lb225B:
LD B,$32
Lb225D:
PUSH AF
LD A,(Lb2200+1)
Lb2261:
DEC A
JR NZ, Lb2261 ; [$2261:8801]
POP AF
DJNZ Lb225D ; [$225D:8797]
DEC A
JR NZ, Lb225B ; [$225B:8795]
JR Lb2214 ; [$2214:8724]
Lb226C:
LD DE, Lb407B
INC HL
JR Lb2214 ; [$2214:8724]
Lb2272:
LD DE, Lb407C
INC HL
JR Lb2214 ; [$2214:8724]
Lb2278:
RET ; ==========================
Lb2279:
LD DE,$0000
INC HL
JR Lb2214 ; [$2214:8724]
NOP
LD HL, Lb2008
LD (Lb2200+2),HL
LD HL,$1E00
LD DE, Lb2000
LD BC,$0200
LDIR
LD A,$20
LD I,A
RET ; ==========================
Lb2296: ; <<< Uncharted Entry ]
NOP
NOP
LD DE,(Lb2200+2)
LD HL,(RAM_NXTLIN) ; GET NXT-LINE
LD B,$08
Lb22A1:
INC HL
INC HL
INC HL
INC HL
INC HL
LD A,$00
PUSH AF
LD C,$80
Lb22AB:
LD A,(HL)
CP $80 ; [128]
JR Z, Lb22C0 ; [$22C0:8896]
Lb22B0:
INC HL
RRC C
JR NC, Lb22AB ; [$22AB:8875]
POP AF
LD (DE),A
INC HL
INC DE
DJNZ Lb22A1 ; [$22A1:8865]
LD (Lb2200+2),DE
RET ; ==========================
Lb22C0:
POP AF
ADD A,C
PUSH AF
JR Lb22B0 ; [$22B0:8880]
NOP
NOP
PUSH DE
PUSH BC
PUSH HL
Lb22CA:
LD BC,(RAM_LAST_K) ; GET LAST-K
INC C
JR NZ, Lb22CA ; [$22CA:8906]
Lb22D1:
LD BC,(RAM_LAST_K) ; GET LAST-K
LD D,C
INC D
JR Z, Lb22D1 ; [$22D1:8913]
CALL DECODE ; [DECODE]
LD A,(HL)
POP HL
POP BC
POP DE
RET ; ==========================
Lb22E1: ; <<< Uncharted Entry ]
NOP
NOP
PUSH DE
PUSH HL
LD A,$2D
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
LD HL,$0000
CALL Lb32C7 ; [12999]
RST 10H ; Display= A reg.
SUB $1C
LD L,A
Lb22F5:
CALL Lb32C7 ; [12999]
CP $76 ; [118]
JR Z, Lb230B ; [$230B:8971]
RST 10H ; Display= A reg.
SUB $1C
LD B,$04
Lb2301:
SLA L
RL H
DJNZ Lb2301 ; [$2301:8961]
OR L
LD L,A
JR Lb22F5 ; [$22F5:8949]
Lb230B:
LD A,$00
RST 10H ; Display= A reg.
LD A,$14
RST 10H ; Display= A reg.
LD A,$29
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
PUSH HL
POP BC
POP HL
POP DE
RET ; ==========================
Lb231C: ; <<< Uncharted Entry ]
PUSH HL
LD HL,$0000
Lb2320:
SRL A
JR NC, Lb2326 ; [$2326:8998]
ADD HL,DE
OR A
Lb2326:
JR Z, Lb232E ; [$232E:9006]
SLA E
RL D
JR Lb2320 ; [$2320:8992]
Lb232E:
LD D,H
LD E,L
POP HL
RET ; ==========================
Lb2332: ; <<< Uncharted Entry ]
NOP
NOP
LD A,$29
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
CALL Lb3364 ; [13156]
PUSH BC
POP DE
LD B,$04
Lb2341:
LD A,D
AND $F0
SRL A
SRL A
SRL A
SRL A
ADD A,$1C
RST 10H ; Display= A reg.
SLA E
RL D
SLA E
RL D
SLA E
RL D
SLA E
RL D
DJNZ Lb2341 ; [$2341:9025]
LD B,$00
RET ; ==========================
Lb2364: ; <<< Uncharted Entry ]
LD DE,$0000
Lb2367:
LD HL,$0000
CALL Lb32C7 ; [12999]
CP $76 ; [118]
JR Z, Lb237F ; [$237F:9087]
RST 10H ; Display= A reg.
AND A
SBC A,$1C
LD L,A
LD A,$0A
CALL Lb338B ; [13195]
ADD HL,DE
EX DE,HL
JR Lb2367 ; [$2367:9063]
Lb237F:
PUSH DE
POP BC
LD A,$14
RST 10H ; Display= A reg.
LD A,$2D
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
RET ; ==========================
Lb238B: ; <<< Uncharted Entry ]
PUSH HL
LD HL,$0000
Lb238F:
SRL A
JR NC, Lb2395 ; [$2395:9109]
ADD HL,DE
OR A
Lb2395:
JR Z, Lb239D ; [$239D:9117]
SLA E
RL D
JR Lb238F ; [$238F:9103]
Lb239D:
LD D,H
LD E,L
POP HL
RET ; ==========================
Lb23A1: ; <<< Uncharted Entry ]
NOP
NOP
PUSH DE
PUSH AF
LD D,$01
CALL Lb341F ; [13343]
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23AE: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$02
CALL Lb341F ; [13343]
CP $2B ; [43-"F"]
JP M, Lb33BC ; [13244]
LD A,$2B
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23C0: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$04
CALL Lb341F ; [13343]
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23CB: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$08
CALL Lb341F ; [13343]
CP $2B ; [43-"F"]
JP M, Lb33D9 ; [13273]
LD A,$2B
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23DD: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$01
CALL Lb341F ; [13343]
SRL A
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23EA: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$02
CALL Lb341F ; [13343]
SRL A
CP $15 ; [21-"+"]
JP M, Lb33FA ; [13306]
LD A,$15
LD C,A
POP AF
POP DE
RET ; ==========================
Lb23FE: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$04
CALL Lb341F ; [13343]
SRL A
LD C,A
POP AF
POP DE
RET ; ==========================
Lb240B: ; <<< Uncharted Entry ]
PUSH DE
PUSH AF
LD D,$08
CALL Lb341F ; [13343]
SRL A
CP $15 ; [21-"+"]
JP M, Lb341B ; [13339]
LD A,$15
LD C,A
POP AF
POP DE
RET ; ==========================
Lb241F: ; <<< Uncharted Entry ]
LD C,$04
OUT (c),D
CALL Lb342E ; [13358]
SRL A
SRL A
LD B,$00
RET ; ==========================
Lb242D: ; <<< Uncharted Entry ]
NOP
PUSH DE
PUSH BC
LD A,$00
LD B,$80
LD C,$03
Lb2436:
OR B
OUT (c),A
IN E,(c)
BIT 7,E
JR NZ, Lb2440 ; [$2440:9280]
SUB B
Lb2440:
SRL B
JR NC, Lb2436 ; [$2436:9270]
POP BC
POP DE
RET ; ==========================
Lb2447: ; <<< Uncharted Entry ]
NOP
NOP
Lb2449:
PUSH HL
LD BC,$1400
CALL PRINT_AT ; [PRINT-AT]
POP HL
CALL Lb32C7 ; [12999]
CP $26 ; [38-"A"]
JR Z, Lb2479 ; [$2479:9337]
CP $37 ; [55-"R"]
JR Z, Lb24C2 ; [$24C2:9410]
CP $76 ; [118]
JR Z, Lb248A ; [$248A:9354]
CP $29 ; [41-"D"]
JR Z, Lb24A7 ; [$24A7:9383]
CP $28 ; [40-"C"]
JR Z, Lb24AA ; [$24AA:9386]
CP $2E ; [46-"I"]
JR Z, Lb24C3 ; [$24C3:9411]
CP $38 ; [56-"S"]
JR Z, Lb24D8 ; [$24D8:9432]
JR Lb2449 ; [$2449:9289]
Lb2472:
PUSH HL
CALL SCROLL ; [SCROLL]
POP HL
JR Lb2449 ; [$2449:9289]
Lb2479:
LD A,$26
RST 10H ; Display= A reg.
CALL Lb32E3 ; [13027]
LD H,B
LD L,C
Lb2481:
LD A,(HL)
LD B,$00
LD C,A
CALL Lb333D ; [13117]
JR Lb2472 ; [$2472:9330]
Lb248A:
INC HL
Lb248B:
LD A,$26
RST 10H ; Display= A reg.
LD A,$2D
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
LD B,H
LD C,L
CALL Lb333D ; [13117]
LD A,$00
RST 10H ; Display= A reg.
LD A,$14
RST 10H ; Display= A reg.
LD A,$29
RST 10H ; Display= A reg.
LD A,$00
RST 10H ; Display= A reg.
JR Lb2481 ; [$2481:9345]
Lb24A7:
DEC HL
JR Lb248B ; [$248B:9355]
Lb24AA:
LD A,$29
RST 10H ; Display= A reg.
CALL Lb32E3 ; [13027]
LD A,C
LD (HL),A
PUSH HL
LD BC,$1405
CALL PRINT_AT ; [PRINT-AT]
POP HL
LD A,$00
RST 10H ; Display= A reg.
RST 10H ; Display= A reg.
RST 10H ; Display= A reg.
RST 10H ; Display= A reg.
JR Lb2472 ; [$2472:9330]
Lb24C2:
RET ; ==========================
Lb24C3:
PUSH HL
EX DE,HL
LD HL, Lb2FFF
AND A
SBC HL,DE
PUSH HL
POP BC
LD HL, Lb2FFE
LD DE, Lb2FFF
LDDR
POP HL
JR Lb24AA ; [$24AA:9386]
Lb24D8:
PUSH HL
EX DE,HL
LD HL, Lb2FFF
AND A
SBC HL,DE
PUSH HL
POP BC
POP HL
PUSH HL
POP DE
PUSH DE
INC HL
LDIR
POP HL
JR Lb248B ; [$248B:9355]
SBC A,A
SBC A,A
RST 28H
.db $34 ; RST28 Arg: End CMD.
.db $C1 ; RST28 Arg: Store M#1 CMD.
POP AF
LD A,C
RET ; ==========================
Lb24F4: ; <<< Uncharted Entry ]
RST 38H
XOR A
Lb24F6:
INC A
AND A
SBC HL,BC
JR NC, Lb24F6 ; [$24F6:9462]
DEC A
ADD HL,BC
ADD A,$1C
RST 10H ; Display= A reg.
RET ; ==========================
Lb2502: ; <<< Uncharted Entry ]
PUSH BC
POP HL
LD BC,$2710
CALL Lb34F5 ; [13557]
LD BC,$03E8
CALL Lb34F5 ; [13557]
LD BC,$0064
CALL Lb34F5 ; [13557]
LD BC,$000A
CALL Lb34F5 ; [13557]
XOR A
LD A,L
ADD A,$1C
RST 10H ; Display= A reg.
RET ; ==========================
Lb2522: ; <<< Uncharted Entry ]
PUSH BC
LD HL,$0000
Lb2526:
CALL Lb32C7 ; [12999]
CP $76 ; [118]
JR Z, Lb2546 ; [$2546:9542]
RST 10H ; Display= A reg.
SUB $1C
LD B,H
LD C,L
SLA L
RL H
SLA L
RL H
ADD HL,BC
SLA L
RL H
ADD A,L
LD L,A
JR NC, Lb2526 ; [$2526:9510]
INC H
JR Lb2526 ; [$2526:9510]
Lb2546:
POP BC
RET ; ==========================
Lb2548: ; <<< Uncharted Entry ]
CALL Lb3550 ; [13648]
LD H,L
CALL Lb3550 ; [13648]
RET ; ==========================
Lb2550: ; <<< Uncharted Entry ]
LD B,$08
XOR A
RST 10H ; Display= A reg.
Lb2554:
XOR A
SLA H
ADC A,$1C
RST 10H ; Display= A reg.
DJNZ Lb2554 ; [$2554:9556]
RET ; ==========================
Lb255D: ; <<< Uncharted Entry ]
PUSH HL
CALL SCROLL ; [SCROLL]
POP HL
CALL Lb32C7 ; [12999]
CP $37 ; [55-"R"]
RET ; ==========================
Lb2568:
NOP
PUSH HL
LD BC,$1400
CALL PRINT_AT ; [PRINT-AT]
POP HL
LD A,$17
RST 10H ; Display= A reg.
CALL Lb32C7 ; [12999]
CP $2D ; [45-"H"]
CALL Z, Lb35B5 ; [13749]
CP $28 ; [40-"C"]
CALL Z, Lb35CB ; [13771]
CP $27 ; [39-"B"]
CALL Z, Lb35D2 ; [13778]
CP $39 ; [57-"T"]
CALL Z, Lb35E5 ; [13797]
CP $17 ; [23-"*"]
CALL Z, Lb359F ; [13727]
CP $29 ; [41-"D"]
CALL Z, Lb35C1 ; [13761]
CP $0C ; [12-"£"]
RET Z
PUSH HL
CALL SCROLL ; [SCROLL]
POP HL
JR Lb2568 ; [$2568:9576]
Lb259F:
NOP
NOP
NOP
CALL Lb32E3 ; [13027]
PUSH BC
POP HL
LD A,$0E
RST 10H ; Display= A reg.
CALL Lb3548 ; [13640]
CALL Lb355D ; [13661]
RET Z
JR Lb259F ; [$259F:9631]
JR Lb2568 ; [$2568:9576]
Lb25B5:
CALL Lb32E3 ; [13027]
CALL Lb3502 ; [13570]
CALL Lb355D ; [13661]
RET Z
JR Lb25B5 ; [$25B5:9653]
Lb25C1:
CALL Lb3333 ; [13107]
CALL Lb355D ; [13661]
RET Z
JR Lb25C1 ; [$25C1:9665]
NOP
LD A,$06
RST 10H ; Display= A reg.
CALL Lb3449 ; [13385]
RET ; ==========================
Lb25D2:
LD A,$A9
RST 10H ; Display= A reg.
CALL Lb3522 ; [13602]
LD A,$0E
RST 10H ; Display= A reg.
CALL Lb3548 ; [13640]
CALL Lb355D ; [13661]
RET Z
JR Lb25D2 ; [$25D2:9682]
NOP
PUSH HL
PUSH BC
PUSH DE
LD A,$10
RST 10H ; Display= A reg.
CALL Lb32E3 ; [13027]
PUSH BC
LD BC,$1408
CALL PRINT_AT ; [PRINT-AT]
LD A,$11
RST 10H ; Display= A reg.
CALL Lb32E3 ; [13027]
PUSH BC
LD BC,$1410
CALL PRINT_AT ; [PRINT-AT]
LD A,$12
RST 10H ; Display= A reg.
CALL Lb32E3 ; [13027]
PUSH BC
POP DE
POP HL
POP BC
PUSH BC
XOR A
SBC HL,BC
LD B,H
LD C,L
POP HL
LDIR
POP DE
POP BC
POP HL
RET ; ==========================
Lb2619: ; <<< Uncharted Entry ]
NOP
XOR A
LD (Lb407C),A ; SET UNUSED-16
LD A,$0A
LD (RAM_SPARE2),A ; SET UNUSED-16
LD (RAM_SPARE1),A ; SET UNUSED-8
NOP
CALL Lb3650 ; [13904]
LD HL, Lb407D
Lb262D:
LD A,(HL)
CP $76 ; [118]
RET Z
LD A,(Lb407C) ; GET UNUSED-16
LD (HL),A
INC HL
LD A,(RAM_SPARE2) ; GET UNUSED-16
LD (HL),A
CALL Lb3765 ; [14181]
RET Z
ADD HL,DE
PUSH HL
LD A,(RAM_SPARE1) ; GET UNUSED-8
LD E,A
LD D,$00
LD HL,(RAM_SPARE2) ; GET UNUSED-16
ADD HL,DE
LD (RAM_SPARE2),HL ; SET UNUSED-16
POP HL
JR Lb262D ; [$262D:9773]
LD HL, Lb407D
Lb2653:
LD A,(HL)
CP $76 ; [118]
RET Z
INC HL
CALL Lb3765 ; [14181]
RET Z
Lb265C:
CP $EC ; [236]
JR Z, Lb2678 ; [$2678:9848]
CP $ED ; [237]
JR Z, Lb2678 ; [$2678:9848]
CP $FA ; [250]
JR Z, Lb266B ; [$266B:9835]
Lb2668:
ADD HL,DE
JR Lb2653 ; [$2653:9811]
Lb266B:
CP $DE ; [222]
DEC DE
INC HL
LD A,(HL)
JR Z, Lb265C ; [$265C:9820]
CP $76 ; [118]
JR Z, Lb2668 ; [$2668:9832]
JR Lb266B ; [$266B:9835]
Lb2678:
PUSH DE
PUSH HL
LD A,$7E
Lb267C:
INC HL
CP (HL)
JR NZ, Lb267C ; [$267C:9852]
INC HL
LD DE,$0000
LD A,(HL)
ADD A,$80
LD B,A
INC HL
LD A,(HL)
SET 7,A
Lb268C:
LD C,$08
Lb268E:
SLA A
RL E
RL D
DEC B
JR Z, Lb269E ; [$269E:9886]
DEC C
JR NZ, Lb268E ; [$268E:9870]
INC HL
LD A,(HL)
JR Lb268C ; [$268C:9868]
Lb269E:
LD HL, Lb407B
LD C,(HL)
INC HL
LD B,(HL)
INC HL
Lb26A5:
LD A,(HL)
INC HL
PUSH HL
LD L,(HL)
LD H,A
OR A
SBC HL,DE
POP HL
INC HL
JR NC, Lb26D2 ; [$26D2:9938]
PUSH DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
ADD HL,DE
PUSH HL
LD HL, Lb4021
LD E,(HL)
LD D,$00
EX DE,HL
ADD HL,BC
LD B,H
LD C,L
POP HL
PUSH HL
LD DE,(RAM_D_FILE) ; GET D-FILE
SBC HL,DE
POP HL
POP DE
JR C, Lb26A5 ; [$26A5:9893]
POP HL
POP DE
POP BC
RET ; ==========================
Lb26D2:
LD D,B
LD E,C
LD (RAM_PRBUFF02),DE ; SET PRBUFF
LD HL,$0000
LD B,$10
Lb26DD:
SLA E
RL D
LD A,L
ADC A,L
DAA
LD L,A
LD A,H
ADC A,H
DAA
LD H,A
DJNZ Lb26DD ; [$26DD:9949]
EX DE,HL
POP HL
PUSH HL
INC HL
LD BC,$0002
Lb26F2:
LD A,D
SRL A
SRL A
SRL A
SRL A
CALL Lb3738 ; [14136]
LD A,D
AND $0F
CALL Lb3738 ; [14136]
LD D,E
DEC C
JR NZ, Lb26F2 ; [$26F2:9970]
INC HL
PUSH HL
LD HL,(RAM_PRBUFF00) ; GET PRBUFF
LD A,(HL)
OR A
ADD A,B
LD (HL),A
INC HL
LD A,(HL)
ADC A,$00
LD (HL),A
POP HL
LD DE,(RAM_PRBUFF02) ; GET PRBUFF
OR A
LD B,$10
Lb271E:
SLA E
RL D
JR C, Lb2726 ; [$2726:10022]
DJNZ Lb271E ; [$271E:10014]
Lb2726:
LD A,B
SUB $80
LD (HL),A
XOR A
SRL D
RR E
INC HL
LD (HL),D
INC HL
LD (HL),E
POP HL
POP DE
JP Lb3668 ; [13928]
ADD A,$1C
LD (RAM_PRBUFF0A),A ; SET PRBUFF
LD A,(HL)
CP $7E ; [126]
LD A,(RAM_PRBUFF0A) ; GET PRBUFF
JR NZ, Lb2762 ; [$2762:10082]
LD (RAM_PRBUFF06),BC ; SET PRBUFF
LD (RAM_PRBUFF08),DE ; SET PRBUFF
CALL ONE_SPACE ; [ONE-SPACE]
INC HL
POP AF
POP DE
INC DE
PUSH DE
PUSH AF
LD BC,(RAM_PRBUFF06) ; GET PRBUFF
LD DE,(RAM_PRBUFF08) ; GET PRBUFF
LD A,(RAM_PRBUFF0A) ; GET PRBUFF
INC B
Lb2762:
LD (HL),A
INC HL
RET ; ==========================
Lb2765: ; <<< Uncharted Entry ]
INC HL
LD E,(HL)
LD (RAM_PRBUFF00),HL ; SET PRBUFF
INC HL
LD D,(HL)
INC HL
LD A,(HL)
CP $E3 ; [227]
RET ; ==========================
Lb2771: ; <<< Uncharted Entry ]
LD HL,$0000
ADD HL,SP
LD BC,(RAM_STKEND) ; GET STKEND
SBC HL,BC
LD B,H
LD C,L
RET ; ==========================
Lb277E:
CALL SET_FAST ; [SET-FAST]
IN A,($FE) ; Keyboard Port.
CP $FF ; [255]
JR Z, Lb278B ; [$278B:10123]
IN A,($FF) ; User port.
JR Lb277E ; [$277E:10110]
Lb278B:
OUT ($FF),A ; Zx81 Display/Tape port
JR Lb277E ; [$277E:10110]
LD BC,(RAM_COORDS) ; GET COORDS
LD A,C
LD C,$08
SUB C
LD C,A
INC B
LD (RAM_SPARE2),BC ; SET UNUSED-16
LD HL,(RAM_NXTLIN) ; GET NXT-LINE
INC HL
INC HL
INC HL
INC HL
Lb27A4:
INC HL
LD A,(HL)
CP $1B ; [27-"."]
RET Z
PUSH HL
LD BC,(RAM_SPARE2) ; GET UNUSED-16
PUSH BC
LD H,$00
LD L,A
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,$1E00
ADD HL,DE
LD D,$08
LD E,D
Lb27BC:
LD A,(HL)
Lb27BD:
SLA A
POP BC
JR NC, Lb27CD ; [$27CD:10189]
PUSH AF
PUSH BC
PUSH DE
PUSH HL
CALL PLOT_UNP+3 ; []*BIOS ROM*
POP HL
POP DE
POP BC
POP AF
Lb27CD:
INC C
PUSH BC
DEC E
JR NZ, Lb27BD ; [$27BD:10173]
INC HL
POP BC
DEC B
PUSH BC
DEC D
JR NZ, Lb27BC ; [$27BC:10172]
POP BC
LD A,C
CP $38 ; [56-"S"]
JR C, Lb27EA ; [$27EA:10218]
LD C,$F8
DEC B
RET M
LD (RAM_SPARE2),BC ; SET UNUSED-16
POP HL
JR Lb27A4 ; [$27A4:10148]
Lb27EA:
LD A,B
ADD A,$08
LD B,A
LD (RAM_SPARE2),BC ; SET UNUSED-16
POP HL
JR Lb27A4 ; [$27A4:10148]
;------------ Labels errors ------------
; LABEL @LB2201 Fixed: LD A,($2201) / LD A,(Lb2200+1)
; LABEL @LB2202 Fixed: LD ($2202),HL / LD (Lb2200+2),HL
; LABEL @LB2202 Fixed: LD DE,($2202) / LD DE,(Lb2200+2)
; LABEL @LB2202 Fixed: LD ($2202),DE / LD (Lb2200+2),DE
.end
Last edited by XavSnap on Thu Jul 18, 2019 4:16 am, edited 1 time in total.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Re: French FrankenZX81, unique?
Nice! It's interesting that you could get recognisable text from the FLM ROM, what encoding is it in?
One of the two patches to the main ROM is to revector the COPY-D* routine which dumps to the ZX Printer, I reasoned that the address was going to be in the E000 ROM, there's a 25 pin socket coming off that board which has pins 1-13 wired up, so it must've been connected to some sort of output device, maybe it drove a digital sign or signs.
Hopefully over the next few days I'll attempt a power up...
One of the two patches to the main ROM is to revector the COPY-D* routine which dumps to the ZX Printer, I reasoned that the address was going to be in the E000 ROM, there's a 25 pin socket coming off that board which has pins 1-13 wired up, so it must've been connected to some sort of output device, maybe it drove a digital sign or signs.
Hopefully over the next few days I'll attempt a power up...
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
OK, after testing with an original ZX81 PSU I quickly discovered that its 13.8V output wasn't enough for the RAM boards to get 12V at the 4116s so I wired up a bench PSU and got out a spare '81 which I know worked. The regulator input gets fed straight around the board to the '9V' output on the edge connector so I set the PSU to 16V 1A and got 11.95V at the 12V pins which brought the 0-16K RAM board back to life.
Back at the Franken81 I was still getting the same weird screen display but the Z80 control pins were working correctly and the address/data buses were pulsing as expected. I wired up a composite lead for the signal that was coming from the modulator and wasn't surprised to see I got the same picture off a composite monitor.
Someone (Mark?) suggested the video might be NTSC but since the machine came from France I wondered if it was SECAM instead. I turned my attention to the little board that I thought might be stabilising the cassette input/output but it's connected to the video circuit and uses a feed normally reserved for US machines. It contains an LS14 and LS03, could it be retiming the signal to NTSC or SECAM specifications then inverting the display? I guess I could find out instantly by removing its input to the modulator...
Here's a pic of it.
Back at the Franken81 I was still getting the same weird screen display but the Z80 control pins were working correctly and the address/data buses were pulsing as expected. I wired up a composite lead for the signal that was coming from the modulator and wasn't surprised to see I got the same picture off a composite monitor.
Someone (Mark?) suggested the video might be NTSC but since the machine came from France I wondered if it was SECAM instead. I turned my attention to the little board that I thought might be stabilising the cassette input/output but it's connected to the video circuit and uses a feed normally reserved for US machines. It contains an LS14 and LS03, could it be retiming the signal to NTSC or SECAM specifications then inverting the display? I guess I could find out instantly by removing its input to the modulator...
Here's a pic of it.
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
After trying many CRT TVs and getting the same picture I went for broke and plugged it into my big LCD TV that's allegedly multi-format.
Same picture.
Time for a stripdown to take it back to a stock board with Sinclair ROM to make sure I'm not going nuts
Same picture.
Time for a stripdown to take it back to a stock board with Sinclair ROM to make sure I'm not going nuts
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
- 1024MAK
- Posts: 5332
- Joined: Mon Sep 26, 2011 10:56 am
- Location: Looking forward to summer in Somerset, UK...
Re: French FrankenZX81, unique?
“Monochrome NTSC” (as NTSC is strictly a colour encoding system and not a monochrome video standard as such) uses the same signal levels and signal polarity as the 625 line system ‘I’ video (U.K. analogue TV standard). Only the signal timing is different (e.g. 60Hz field rate vs. 50Hz field rate). So no extra add in board needed, as the ZX81 ROM code deals with this (by reading a ULA pin that either has a resistor {R30} connected to it, or left out of circuit).
SECAM uses the opposite video signal polarity, so if the extra add-in board is inverting the video signal, that would be the reason. Also a PAL/NTSC telly is not likely to be able to make any sense of the signal. I have one ZX81 board (that I think originally came from France) that has a transistor inverting the video signal from the ULA before it goes in the modulator. See also the French version of the ZX81 schematic:
Link.
As only a transistor and resistors are needed for the video, the only thing that I can think of that the 74LS03 (open collector NAD) and 74LS14 (schmitt-trigger inverter) chips are being used for, if part of the added in video circuitry, is to provide a “back porch” signal. If not part of the video signal, then maybe a waveform shaper for the Ear cassette input.
Mark
SECAM uses the opposite video signal polarity, so if the extra add-in board is inverting the video signal, that would be the reason. Also a PAL/NTSC telly is not likely to be able to make any sense of the signal. I have one ZX81 board (that I think originally came from France) that has a transistor inverting the video signal from the ULA before it goes in the modulator. See also the French version of the ZX81 schematic:
Link.
As only a transistor and resistors are needed for the video, the only thing that I can think of that the 74LS03 (open collector NAD) and 74LS14 (schmitt-trigger inverter) chips are being used for, if part of the added in video circuitry, is to provide a “back porch” signal. If not part of the video signal, then maybe a waveform shaper for the Ear cassette input.
Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Amp
Standby alert
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb
Autumn is here. Bye bye summer 2024...
ZX81 Chip Pin-outs
ZX81 Video Transistor Amp
Standby alert
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb
Autumn is here. Bye bye summer 2024...
Re: French FrankenZX81, unique?
Thanks for that Mark,
The little board is fed directly from pin 16 of the ULA then the output goes straight to the modulator input so that sounds more like a back porch generator. I've already stripped the extras off the board so tonight I'll hook up straight to the modulator and see what I get. The little board's variable resistors do change the brightness of the display.
More as I discover it!
*edit* I forgot to say I don't have any of the extraneous French circuitry on the board so if hooking up directly to the modulator still produces the same picture I'll be a little baffled. Next step after that is to replace the slightly modded EPROM with a stock one.
The little board is fed directly from pin 16 of the ULA then the output goes straight to the modulator input so that sounds more like a back porch generator. I've already stripped the extras off the board so tonight I'll hook up straight to the modulator and see what I get. The little board's variable resistors do change the brightness of the display.
More as I discover it!
*edit* I forgot to say I don't have any of the extraneous French circuitry on the board so if hooking up directly to the modulator still produces the same picture I'll be a little baffled. Next step after that is to replace the slightly modded EPROM with a stock one.
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
YAY! OK, so the little board is doing Something Bad to the picture. Without it I get not only a prompt but random keypresses coming from the Keytronics keyboard
Would it help anyone if I drew out a schematic?
This means the RAM boards are OK which was a worry. At power up I can see the usual pause while it checks all RAM then gives me that lovely 'K'.
Now I need to get my head around troubleshooting ASCII keyboards...
Would it help anyone if I drew out a schematic?
This means the RAM boards are OK which was a worry. At power up I can see the usual pause while it checks all RAM then gives me that lovely 'K'.
Now I need to get my head around troubleshooting ASCII keyboards...
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
OK, I've discovered why the keyboard doesn't work
Keytronic conductive pads, and they've totally disintegrated to the point of losing the foil coating on the bottom.
So! Do I invest in a sheet of foil, spend ages finding just the right foam and mylar, gluing it all together then punching pads out or do I buy 105 from the US for £30.
They'll be here next month
Keytronic conductive pads, and they've totally disintegrated to the point of losing the foil coating on the bottom.
So! Do I invest in a sheet of foil, spend ages finding just the right foam and mylar, gluing it all together then punching pads out or do I buy 105 from the US for £30.
They'll be here next month
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Binary Dinosaurs - Home Computer History in multiples of 8 bits
Re: French FrankenZX81, unique?
I think I’ve seen 8-bitGuy fix a broken keyboard like this on YouTube.