French FrankenZX81, unique?

Discussions about Sinclair ZX80 and ZX81 Hardware
User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Thu Jun 20, 2019 12:55 am

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.

frenchFranken81-18-1.jpg
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
XavSnap
Posts: 687
Joined: Sat May 10, 2008 4:23 pm

Re: French FrankenZX81, unique?

Post by XavSnap » Thu Jun 20, 2019 6:40 am

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.
Capture.JPG
Capture2.JPG
Capture2.JPG (8.96 KiB) Viewed 668 times

_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
Keyboad tools (printer? RS232 ROM?):

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.

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Thu Jun 20, 2019 11:22 am

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...
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Wed Jun 26, 2019 9:15 pm

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.
IMG_1935.jpg
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Thu Jun 27, 2019 1:55 am

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 :lol:

IMG_1945.JPG
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
1024MAK
Posts: 2434
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: French FrankenZX81, unique?

Post by 1024MAK » Thu Jun 27, 2019 1:42 pm

“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:
Image
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

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Thu Jun 27, 2019 8:05 pm

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.
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Fri Jun 28, 2019 12:37 am

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 :mrgreen:

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...

IMG_1953.jpg
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
witchy
Posts: 26
Joined: Sat Feb 20, 2016 12:28 pm
Location: Flatlands, UK
Contact:

Re: French FrankenZX81, unique?

Post by witchy » Sat Jun 29, 2019 1:41 am

OK, I've discovered why the keyboard doesn't work :roll:

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 :D

IMG_1955.jpg
IMG_1956.jpg
--
Binary Dinosaurs - Home Computer History in multiples of 8 bits

User avatar
mrtinb
Posts: 1002
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: French FrankenZX81, unique?

Post by mrtinb » Thu Jul 04, 2019 12:41 am

I think I’ve seen 8-bitGuy fix a broken keyboard like this on YouTube.
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

Post Reply