Initial commit

This commit is contained in:
Philip Smart
2019-10-25 17:16:34 +01:00
commit 4a64af4a00
252 changed files with 134777 additions and 0 deletions

Binary file not shown.

3281
software/asm/1Z-013A.asm Normal file

File diff suppressed because it is too large Load Diff

3274
software/asm/1Z-013A_80c.asm Normal file

File diff suppressed because it is too large Load Diff

897
software/asm/IPL.asm Normal file
View File

@@ -0,0 +1,897 @@
ORG 0000H
;****************************************************************
;
; Personal Computer
; MZ-80B
;
; Initial Program Loader
;****************************************************************
;
JR START
;
; NST RESET
;
NST: LD A,03H
OUT (PPICTL),A ;Set PC1 NST=1
;
START: LD A,82H ;8255 A=OUT B=IN C=OUT
OUT (PPICTL),A
LD A,0FH ;PIO A=OUT
OUT (PIOCTLA),A
LD A,0CFH ;PIO B=IN
OUT (PIOCTLB),A
LD A,0FFH
OUT (PIOCTLB),A
LD A,58H ;BST=1 NST=0 OPEN=1 WRITE=1
OUT (PPIC),A
LD A,12H
OUT (PPIA),A
XOR A
OUT (GRPHCTL),A ;Set Graphics VRAM to default, input to GRPH I, no output.
LD SP,0FFE0H
LD HL,0D000H
LD A,0B3H
OUT (PIOA),A
CLEAR: LD (HL),00H ;DISPLAY CLEAR
INC HL
LD A,H
OR L
JR NZ,CLEAR
LD A,13H
OUT (PIOA),A
XOR A
LD (DRINO),A
LD (MTFG),A
KEYIN: CALL KEYS1
BIT 3,A ;C - Cassette.
JR Z,CMT
BIT 0,A ;/ - Boot external rom.
JP Z,EXROMT
JR NKIN ;No selection, so standard startup, try FDC then CMT.
;
KEYS1: LD B,14H ;Preserve A4-A7, set A4 to prevent all strobes low, the select line 5 (0-4).
KEYS: IN A,(PIOA)
AND 0F0H
OR B
OUT (PIOA),A
IN A,(PIOB) ;Read the strobed key.
RET
;
;
NKIN: CALL FDCC
JP Z,FD
JR CMT
;
FDCC: LD A,0A5H
LD B,A
OUT (0D9H),A
CALL DLY80U
IN A,(0D9H)
CP B
RET
;
; ;
; CMT CONTROL ;
; ;
;
CMT: CALL MSTOP
CALL DEL6
CALL KYEMES
CALL ?RDI
JR C,ST1
CALL LDMSG
LD HL,NAME
LD E,010H
LD C,010H
CALL DISP2
LD A,(ATRB)
CP 01H
JR NZ,MISMCH
CALL ?RDD
ST1: PUSH AF
CALL DEL6
CALL REW
POP AF
JP C,TRYAG
JP NST
;
MISMCH: LD HL,MES16
LD E,0AH
LD C,0FH
CALL DISP
CALL MSTOP
SCF
JR ST1
;
;READ INFORMATION
; CF=1:ERROR
RDINF:
?RDI: DI
LD D,04H
LD BC,0080H
LD HL,IBUFE
RD1: CALL MOTOR
JR C,STPEIR
CALL TMARK
JR C,STPEIR
CALL RTAPE
JR C,STPEIR
RET2S: BIT 3,D
JR Z,EIRTN
STPEIR: CALL MSTOP
EIRTN: EI
RET
;
;
;READ DATA
RDDAT:
?RDD: DI
LD D,08H
LD BC,(SIZE)
LD HL,8000H
JR RD1
;
;
;READ TAPE
; BC=SIZE
; DE=LOAD ADDRSS
RTAPE: PUSH DE
PUSH BC
PUSH HL
LD H,02H
RTP2: CALL SPDIN
JR C,TRTN1 ;BREAK
JR Z,RTP2
LD D,H
LD HL,0000H
LD (SUMDT),HL
POP HL
POP BC
PUSH BC
PUSH HL
RTP3: CALL RBYTE
JR C,TRTN1
LD (HL),A
INC HL
DEC BC
LD A,B
OR C
JR NZ,RTP3
LD HL,(SUMDT)
CALL RBYTE
JR C,TRTN1
LD E,A
CALL RBYTE
JR C,TRTN1
CP L
JR NZ,RTP5
LD A,E
CP H
JR Z,TRTN1
RTP5: DEC D
JR Z,RTP6
LD H,D
JR RTP2
RTP6: CALL BOOTER
SCF
TRTN1: POP HL
POP BC
POP DE
RET
;EDGE
EDGE: IN A,(PPIB)
CPL
RLCA
RET C ;BREAK
RLCA
JR NC,EDGE ;WAIT ON LOW
EDGE1: IN A,(PPIB)
CPL
RLCA
RET C ;BREAK
RLCA
JR C,EDGE1 ;WAIT ON HIGH
RET
; 1 BYTE READ
; DATA=A
; SUMDT STORE
RBYTE: PUSH HL
LD HL,0800H ; 8 BITS
RBY1: CALL SPDIN
JR C,RBY3 ;BREAK
JR Z,RBY2 ;BIT=0
PUSH HL
LD HL,(SUMDT) ;CHECKSUM
INC HL
LD (SUMDT),HL
POP HL
SCF
RBY2: RL L
DEC H
JR NZ,RBY1
CALL EDGE
LD A,L
RBY3: POP HL
RET
;TAPE MARK DETECT
; E=L:INFORMATION
; E=S:DATA
TMARK: PUSH HL
LD HL,1414H
BIT 3,D
JR NZ,TM0
ADD HL,HL
TM0: LD (TMCNT),HL
TM1: LD HL,(TMCNT)
TM2: CALL SPDIN
JR C,RBY3
JR Z,TM1
DEC H
JR NZ,TM2
TM3: CALL SPDIN
JR C,RBY3
JR NZ,TM1
DEC L
JR NZ,TM3
CALL EDGE
JR RBY3
;READ 1 BIT
SPDIN: CALL EDGE ;WAIT ON HIGH
RET C ;BREAK
CALL DLY2
IN A,(PPIB) ;READ BIT
AND 40H
RET
;
;
;MOTOR ON
MOTOR: PUSH DE
PUSH BC
PUSH HL
IN A,(PPIB)
AND 20H
JR Z,MOTRD
LD HL,MES6
LD E,0AH
LD C,0EH
CALL DISP
CALL OPEN
MOT1: IN A,(PIOB)
CPL
RLCA
JR C,MOTR
IN A,(PPIB)
AND 20H
JR NZ,MOT1
CALL KYEMES
CALL DEL1M
MOTRD: CALL PLAY
MOTR: POP HL
POP BC
POP DE
RET
;
;
;MOTOR STOP
MSTOP: LD A,0DH
OUT (PPICTL),A ;Set PC6 - READ MODE
LD A,1AH
OUT (PPIA),A
CALL DEL6
JR BLK3
;EJECT
OPEN: LD A,08H ;Reset PC4 - EJECT activate
OUT (PPICTL),A
CALL DEL6
LD A,09H
OUT (PPICTL),A ;Set PC4 - Deactivate EJECT
RET
;
;
KYEMES: LD HL,MES3
LD E,04H
LD C,1CH
CALL DISP
RET
;
;PLAY
PLAY: CALL FR
CALL DEL6
LD A,16H
OUT (PPIA),A
JR BLK3
BLK1: CALL DEL6
CALL BLK3
LD A,13H
BLK2: OUT (PPIA),A
BLK3: LD A,12H
OUT (PPIA),A
RET
;
;
FR: LD A,12H
FR1: OUT (PPIA),A
CALL DEL6
LD A,0BH
OUT (PPICTL),A ;Set PC5
CALL DEL6
LD A,0AH
OUT (PPICTL),A ;Reset PC5
RET
RRW: LD A,010H
JR FR1
;REWIND
REW: CALL RRW
JR BLK1
;
;TIMING DEL
DM1: PUSH AF
L0211: XOR A
L0212: DEC A
JR NZ,L0212
DEC BC
LD A,B
OR C
JR NZ,L0211
POP AF
POP BC
RET
DEL6: PUSH BC
LD BC,00E9H ;233D
JR DM1
DEL1M: PUSH BC
LD BC,060FH ;1551D
JR DM1
;
;TAPE DELAY TIMING
;
;
DLY2: LD A,31H
L022B: DEC A
JP NZ,L022B
RET
;
;
;
;
;
LDMSG: LD HL,MES1
LD E,00H
LD C,0EH
JR DISP
;
DISP2: LD A,93H
OUT (PIOA),A
JR DISP1
;
BOOTER: LD HL,MES8
LD E,0AH
LD C,0DH
;
DISP: LD A,93H
OUT (PIOA),A
EXX
LD HL,0D000H
DISP3: LD (HL),00H
INC HL
LD A,H
OR L
JR NZ,DISP3
EXX
DISP1: XOR A
LD B,A
LD D,0D0H
LDIR
LD A,13H
OUT (PIOA),A
RET
;
;
MES1: DB "IPL is loading"
MES3: DB "IPL is looking for a program"
MES6: DB "Make ready CMT"
MES8: DB "Loading error"
MES9: DB "Make ready FD"
MES10: DB "Press F or C"
MES11: DB "F:Floppy diskette"
MES12: DB "C:Cassette tape"
MES13: DB "Drive No? (1-4)"
MES14: DB "This diskette is not master"
MES15: DB "Pressing S key starts the CMT"
MES16: DB "File mode error"
;
IPLMC: DB 01H
DB "IPLPRO"
;
;
;FD
FD: LD IX,IBADR1
XOR A
LD (0CF1EH),A
LD (0CF1FH),A
LD IY,0FFE0H
LD HL,0100H
LD (IY+2),L
LD (IY+3),H
CALL BREAD ;INFORMATION INPUT
LD HL,0CF00H ;MASTER CHECK
LD DE,IPLMC
LD B,06H
MCHECK: LD C,(HL)
LD A,(DE)
CP C
JP NZ,NMASTE
INC HL
INC DE
DJNZ MCHECK
CALL LDMSG
LD HL,0CF07H
LD E,010H
LD C,0AH
CALL DISP2
LD IX,IBADR2
LD HL,(0CF14H)
LD (IY+2),L
LD (IY+3),H
CALL BREAD
CALL MOFF
JP NST
;
;
NODISK: LD HL,MES9
LD E,0AH
LD C,0DH
CALL DISP
JP ERR1
;
; READY CHECK
;
READY: LD A,(MTFG)
RRCA
CALL NC,MTON
LD A,(DRINO) ;DRIVE NO GET
OR 84H
OUT (DM),A ;DRIVE SELECT MOTON
XOR A
CALL DLY60M
LD HL,0000H
REDY0: DEC HL
LD A,H
OR L
JR Z,NODISK
IN A,(CR) ;STATUS GET
CPL
RLCA
JR C,REDY0
LD A,(DRINO)
LD C,A
LD HL,CLBF0
LD B,00H
ADD HL,BC
BIT 0,(HL)
RET NZ
CALL RCLB
SET 0,(HL)
RET
;
; MOTOR ON
;
MTON: LD A,80H
OUT (DM),A
LD B,0AH ;1SEC DELAY
MTD1: LD HL,3C19H
MTD2: DEC HL
LD A,L
OR H
JR NZ,MTD2
DJNZ MTD1
LD A,01H
LD (MTFG),A
RET
;
;SEEK TREATMENT
;
SEEK: LD A,1BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 99H
RET
;
;MOTOR OFF
;
MOFF: CALL DLY1M
XOR A
OUT (DM),A
LD (CLBF0),A
LD (CLBF1),A
LD (CLBF2),A
LD (CLBF3),A
LD (MTFG),A
RET
;
;RECALIBRATION
;
RCLB: PUSH HL
LD A,0BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 85H
XOR 04H
POP HL
RET Z
JP ERR
;
;BUSY AND WAIT
;
BUSY: PUSH DE
PUSH HL
CALL DLY80U
LD E,07H
BUSY2: LD HL,0000H
BUSY0: DEC HL
LD A,H
OR L
JR Z,BUSY1
IN A,(CR)
CPL
RRCA
JR C,BUSY0
POP HL
POP DE
RET
;
BUSY1: DEC E
JR NZ,BUSY2
JP ERR
;
;DATA CHECK
;
CONVRT: LD B,00H
LD DE,0010H
LD HL,(0CF1EH)
XOR A
TRANS: SBC HL,DE
JR C,TRANS1
INC B
JR TRANS
TRANS1: ADD HL,DE
LD H,B
INC L
LD (IY+4),H
LD (IY+5),L
DCHK: LD A,(DRINO)
CP 04H
JR NC,DTCK1
LD A,(IY+4)
CP 46H ;70D
JR NC,DTCK1
LD A,(IY+5)
OR A
JR Z,DTCK1
CP 11H ;17D
JR NC,DTCK1
LD A,(IY+2)
OR (IY+3)
RET NZ
DTCK1: JP ERR
;
;SEQUENTIAL READ
;
BREAD: DI
CALL CONVRT
LD A,0AH
LD (RETRY),A
READ1: CALL READY
LD D,(IY+3)
LD A,(IY+2)
OR A
JR Z,RE0
INC D
RE0: LD A,(IY+5)
LD (IY+1),A
LD A,(IY+4)
LD (IY+0),A
PUSH IX
POP HL
RE8: SRL A
CPL
OUT (DR),A
JR NC,RE1
LD A,01H
JR RE2
RE1: LD A,00H
RE2: CPL
OUT (HS),A
CALL SEEK
JR NZ,REE
LD C,0DBH
LD A,(IY+0)
SRL A
CPL
OUT (TR),A
LD A,(IY+1)
CPL
OUT (SCR),A
EXX
LD HL,RE3
PUSH HL
EXX
LD A,94H
CPL
OUT (CR),A
CALL WAIT
RE6: LD B,00H
RE4: IN A,(CR)
RRCA
RET C
RRCA
JR C,RE4
INI
JR NZ,RE4
INC (IY+1)
LD A,(IY+1)
CP 11H ;17D
JR Z,RETS
DEC D
JR NZ,RE6
JR RE5
RETS: DEC D
RE5: LD A,0D8H ;FORCE INTERRUPT
CPL
OUT (CR),A
CALL BUSY
RE3: IN A,(CR)
CPL
AND 0FFH
JR NZ,REE
EXX
POP HL
EXX
LD A,(IY+1)
CP 11H ;17D
JR NZ,REX
LD A,01H
LD (IY+1),A
INC (IY+0)
REX: LD A,D
OR A
JR NZ,RE7
LD A,80H
OUT (DM),A
RET
RE7: LD A,(IY+0)
JR RE8
REE: LD A,(RETRY)
DEC A
LD (RETRY),A
JR Z,ERR
CALL RCLB
JP READ1
;
; WAIT AND BUSY OFF
;
WAIT: PUSH DE
PUSH HL
CALL DLY80U
LD E,08H
WAIT2: LD HL,0000H
WAIT0: DEC HL
LD A,H
OR L
JR Z,WAIT1
IN A,(CR)
CPL
RRCA
JR NC,WAIT0
POP HL
POP DE
RET
WAIT1: DEC E
JR NZ,WAIT2
JR ERR
;
NMASTE: LD HL,MES14
LD E,07H
LD C,1BH ;27D
CALL DISP
JR ERR1
;
; ;
; ERRROR OR BREAK ;
; ;
;
ERR: CALL BOOTER
ERR1: CALL MOFF
TRYAG2: LD SP,0FFE0H
;
;TRYAG
;
TRYAG: CALL FDCC
JR NZ,TRYAG3
LD HL,MES10
LD E,5AH
LD C,0CH ;12D
CALL DISP2
LD E,0ABH
LD C,11H ;17D
CALL DISP2
LD E,0D3H
LD C,0FH ;15D
CALL DISP2
TRYAG1: CALL KEYS1
BIT 3,A
JP Z,CMT
BIT 6,A
JR Z,DNO
JR TRYAG1
DNO: LD HL,MES13 ;DRIVE NO SELECT
LD E,0AH
LD C,0FH
CALL DISP
DNO10: LD D,12H
CALL DNO0
JR NC,DNO3
LD D,18H
CALL DNO0
JR NC,DNO3
JR DNO10
DNO3: LD A,B
LD (DRINO),A
JP FD
;
TRYAG3: LD HL,MES15
LD E,54H
LD C,1DH ;29D
CALL DISP2
TRYAG4: LD B,06H
TRYAG5: CALL KEYS
BIT 3,A
JP Z,CMT
JR TRYAG5
;
DNO0: IN A,(PIOA)
AND 0F0H
OR D
OUT (PIOA),A
IN A,(PIOB)
LD B,00H
LD C,04H
RRCA
DNO1: RRCA
RET NC
INC B
DEC C
JR NZ,DNO1
RET
;
; TIME DELAY (1M &60M &80U )
;
DLY80U: PUSH DE
LD DE,000DH ;13D
JP DLYT
DLY1M: PUSH DE
LD DE,0082H ;130D
JP DLYT
DLY60M: PUSH DE
LD DE,1A2CH ;6700D
DLYT: DEC DE
LD A,E
OR D
JR NZ,DLYT
POP DE
RET
;
;
; ;
; INTRAM EXROM ;
; ;
;
EXROMT: LD HL,8000H
LD IX,EROM1
JR SEROMA
EROM1: IN A,(0F9H)
CP 00H
JP NZ,NKIN
LD IX,EROM2
ERMT1: JR SEROMA
EROM2: IN A,(0F9H)
LD (HL),A
INC HL
LD A,L
OR H
JR NZ,ERMT1
OUT (0F8H),A
JP NST
;
SEROMA: LD A,H
OUT (0F8H),A
LD A,L
OUT (0F9H),A
LD D,04H
SEROMD: DEC D
JR NZ,SEROMD
JP (IX)
;----------------------------------------------------------
; Variables/Work area
;----------------------------------------------------------
IBUFE: EQU 0CF00H
ATRB: EQU 0CF00H
NAME: EQU 0CF01H
SIZE: EQU 0CF12H
DTADR: EQU 0CF14H
SUMDT: EQU 0FFE0H
TMCNT: EQU 0FFE2H
;
;
;INPUT BUFFER ADDRESS
;
IBADR1: EQU 0CF00H
IBADR2: EQU 8000H
;
; SUBROUTINE WORK
;
NTRACK: EQU 0FFE0H
NSECT: EQU 0FFE1H
BSIZE: EQU 0FFE2H
STTR: EQU 0FFE4H
STSE: EQU 0FFE5H
MTFG: EQU 0FFE6H
CLBF0: EQU 0FFE7H
CLBF1: EQU 0FFE8H
CLBF2: EQU 0FFE9H
CLBF3: EQU 0FFEAH
RETRY: EQU 0FFEBH
DRINO: EQU 0FFECH
;
;
;
;
;
; MFM MINIFLOPPY CONTROL
;
;
;
; CASE OF DISK INITIALIZE
; DRIVE NO=DRINO (0-3)
;
; CASE OF SEQUENTIAL READ
; DRIVE NO=DRINO (0-3)
; BYTE SIZE =IY+2,3
; ADDRESS =IX+0,1
; NEXT TRACK =IY+0
; NEXT SECTOR =IY+1
; START TRACK =IY+4
; START SECTOR =IY+5
;
;
; I/O PORT ADDRESS
;
CR: EQU 0D8H ;STATUS/COMMAND PORT
TR: EQU 0D9H ;TRACK REG PORT
SCR: EQU 0DAH ;SECTOR REG PORT
DR: EQU 0DBH ;DATA REG PORT
DM: EQU 0DCH ;MOTOR/DRIVE PORT
HS: EQU 0DDH ;HEAD SIDE SELECT PORT
PPIA: EQU 0E0H
PPIB: EQU 0E1H
PPIC: EQU 0E2H
PPICTL: EQU 0E3H
PIOA: EQU 0E8H
PIOCTLA:EQU 0E9H
PIOB: EQU 0EAH
PIOCTLB:EQU 0EBH
GRPHCTL:EQU 0F4H

BIN
software/asm/IPL.obj Normal file

Binary file not shown.

140
software/asm/IPL.sym Normal file
View File

@@ -0,0 +1,140 @@
?RDD: equ 0CFH
?RDI: equ 0AEH
BLK1: equ 1E5H
BLK2: equ 1EDH
BLK3: equ 1EFH
BOOTER: equ 23FH
BREAD: equ 47AH
BUSY: equ 421H
BUSY0: equ 42BH
BUSY1: equ 439H
BUSY2: equ 428H
CLEAR: equ 2BH
CMT: equ 6BH
CONVRT: equ 43FH
DCHK: equ 458H
DEL1M: equ 223H
DEL6: equ 21DH
DISP: equ 246H
DISP1: equ 256H
DISP2: equ 239H
DISP3: equ 24EH
DLY1M: equ 5DDH
DLY2: equ 229H
DLY60M: equ 5E4H
DLY80U: equ 5D6H
DLYT: equ 5E8H
DM1: equ 210H
DNO: equ 58AH
DNO0: equ 5C1H
DNO1: equ 5CFH
DNO10: equ 594H
DNO3: equ 5A4H
DTCK1: equ 477H
EDGE: equ 121H
EDGE1: equ 129H
EIRTN: equ 0CDH
ERMT1: equ 603H
EROM1: equ 5F8H
EROM2: equ 605H
ERR: equ 556H
ERR1: equ 559H
EXROMT: equ 5EFH
FD: equ 33CH
FDCC: equ 5FH
FR: equ 1F4H
FR1: equ 1F6H
IPLMC: equ 335H
KEYIN: equ 3DH
KEYS: equ 4DH
KEYS1: equ 4BH
KYEMES: equ 1CEH
L0211: equ 211H
L0212: equ 212H
L022B: equ 22BH
LDMSG: equ 230H
MCHECK: equ 35FH
MES1: equ 261H
MES10: equ 2B3H
MES11: equ 2BFH
MES12: equ 2D0H
MES13: equ 2DFH
MES14: equ 2EEH
MES15: equ 309H
MES16: equ 326H
MES3: equ 26FH
MES6: equ 28BH
MES8: equ 299H
MES9: equ 2A6H
MISMCH: equ 9EH
MOFF: equ 3F3H
MOT1: equ 19CH
MOTOR: equ 186H
MOTR: equ 1B1H
MOTRD: equ 1AEH
MSTOP: equ 1B5H
MTD1: equ 3D2H
MTD2: equ 3D5H
MTON: equ 3CCH
NKIN: equ 57H
NMASTE: equ 54AH
NODISK: equ 38CH
NST: equ 2H
OPEN: equ 1C2H
PLAY: equ 1D9H
RBY1: equ 136H
RBY2: equ 147H
RBY3: equ 150H
RBYTE: equ 132H
RCLB: equ 409H
RD1: equ 0B7H
RDDAT: equ 0CFH
RDINF: equ 0AEH
RE0: equ 490H
RE1: equ 4AAH
RE2: equ 4ACH
RE3: equ 4F7H
RE4: equ 4D4H
RE5: equ 4EFH
RE6: equ 4D2H
RE7: equ 519H
RE8: equ 49FH
READ1: equ 483H
READY: equ 399H
REDY0: equ 3AEH
REE: equ 51EH
RET2S: equ 0C6H
RETS: equ 4EEH
REW: equ 20BH
REX: equ 510H
RRW: equ 207H
RTAPE: equ 0DBH
RTP2: equ 0E0H
RTP3: equ 0F2H
RTP5: equ 113H
RTP6: equ 119H
SEEK: equ 3E2H
SEROMA: equ 612H
SEROMD: equ 61AH
SPDIN: equ 17AH
ST1: equ 90H
START: equ 6H
STPEIR: equ 0CAH
TM0: equ 15BH
TM1: equ 15EH
TM2: equ 161H
TM3: equ 16BH
TMARK: equ 152H
TRANS: equ 448H
TRANS1: equ 44FH
TRTN1: equ 11DH
TRYAG: equ 55FH
TRYAG1: equ 57CH
TRYAG2: equ 55CH
TRYAG3: equ 5ABH
TRYAG4: equ 5B5H
TRYAG5: equ 5B7H
WAIT: equ 52DH
WAIT0: equ 537H
WAIT1: equ 545H
WAIT2: equ 534H

5170
software/asm/MZ700.LST Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,241 @@
KEYPC: EQU 0E002h
KEYPF: EQU 0E003h
CSTR: EQU 0E002h
CSTPT: EQU 0E003h
CONT0: EQU 0E004h
CONT1: EQU 0E005h
CONT2: EQU 0E006h
CONTF: EQU 0E007h
SUNDG: EQU 0E008h
TEMP: EQU 0E008h
LETNL: EQU 0006h
NL: EQU 0009h
PRNTS: EQU 000Ch
PRNT: EQU 0012h
MSG: EQU 0015h
MSGX: EQU 0018h
MONIT: EQU 0086h
ST1: EQU 0095h
PRTHL: EQU 03BAh
PRTHX: EQU 03C3h
DPCT: EQU 0DDCh
?BRK: EQU 0D11h
?RSTR1: EQU 0EE6h
GRAMSTART: EQU 0C000h
GRAMEND: EQU 0FFFFh
TPSTART: EQU 10F0h
MEMSTART: EQU 1200h
MSTART: EQU 0BE00h
ORG TPSTART
SPV:
IBUFE: ; TAPE BUFFER (128 BYTES)
;ATRB: DS virtual 1 ; ATTRIBUTE
ATRB: DB 01h ; Code Type, 01 = Machine Code.
;NAME: DS virtual 17 ; FILE NAME
NAME: DB "TAPE CHECK V1.0", 0Dh, 00h ; Title/Name (17 bytes).
;SIZE: DS virtual 2 ; BYTESIZE
SIZE: DW MEND - MSTART ; Size of program.
;DTADR: DS virtual 2 ; DATA ADDRESS
DTADR: DW MSTART ; Load address of program.
;EXADR: DS virtual 2 ; EXECUTION ADDRESS
EXADR: DW MSTART ; Exec address of program.
COMNT: DS 104 ; COMMENT
KANAF: DS virtual 1 ; KANA FLAG (01=GRAPHIC MODE)
DSPXY: DS virtual 2 ; DISPLAY COORDINATES
MANG: DS virtual 27 ; COLUMN MANAGEMENT
FLASH: DS virtual 1 ; FLASHING DATA
FLPST: DS virtual 2 ; FLASHING POSITION
FLSST: DS virtual 1 ; FLASHING STATUS
FLSDT: DS virtual 1 ; CURSOR DATA
STRGF: DS virtual 1 ; STRING FLAG
DPRNT: DS virtual 1 ; TAB COUNTER
TMCNT: DS virtual 2 ; TAPE MARK COUNTER
SUMDT: DS virtual 2 ; CHECK SUM DATA
CSMDT: DS virtual 2 ; FOR COMPARE SUM DATA
AMPM: DS virtual 1 ; AMPM DATA
TIMFG: DS virtual 1 ; TIME FLAG
SWRK: DS virtual 1 ; KEY SOUND FLAG
TEMPW: DS virtual 1 ; TEMPO WORK
ONTYO: DS virtual 1 ; ONTYO WORK
OCTV: DS virtual 1 ; OCTAVE WORK
RATIO: DS virtual 2 ; ONPU RATIO
BUFER: DS virtual 81 ; GET LINE BUFFER
ORG MSTART
START: LD A,0FFh ; Set Red filter.
OUT (0EBh),A
LD A,000h ; Set Green filter.
OUT (0ECh),A
LD A,000h ; Set Blue filter.
OUT (0EDh),A
LD A,000h
CALL GRAMINIT
LD A,005h
CALL GRAMINIT
LD A,00Ah
CALL GRAMINIT
LD A, 0CCh ; Set graphics mode to Indirect Page write.
OUT (0EAh),A
LD HL,0DE00h
LD (GRPHPOS),HL
JR SIGNON
GRAMINIT: LD HL,GRAMSTART
LD BC,GRAMEND - GRAMSTART
GRAM0: OUT (0EAh),A
OUT (0E8h),A
GRAM1: LD A,000h
LD (HL),A
INC HL
DEC BC
LD A,B
OR C
JR NZ,GRAM1
OUT (0E9h),A
RET
SIGNON: CALL LETNL
LD DE,TITLE
CALL MSG
CALL LETNL
LD B,240 ; Number of loops
LOOP: LD HL,MEMSTART ; Start of checked memory,
LD D,0BEh ; End memory check BE00
LOOP1: LD A,000h
CP L
JR NZ,LOOP1b
CALL PRTHL ; Print HL as 4digit hex.
LD A,0C4h ; Move cursor left.
LD E,004h ; 4 times.
LOOP1a: CALL DPCT
DEC E
JR NZ,LOOP1a
LOOP1b: INC HL
LD A,H
CP D ; Have we reached end of memory.
JR Z,LOOP3 ; Yes, exit.
LD A,(HL) ; Read memory location under test, ie. 0.
CPL ; Subtract, ie. FF - A, ie FF - 0 = FF.
LD (HL),A ; Write it back, ie. FF.
SUB (HL) ; Subtract written memory value from A, ie. should be 0.
JR NZ,LOOP2 ; Not zero, we have an error.
LD A,(HL) ; Reread memory location, ie. FF
CPL ; Subtract FF - FF
LD (HL),A ; Write 0
SUB (HL) ; Subtract 0
JR Z,LOOP1 ; Loop if the same, ie. 0
LOOP2: LD A,16h
CALL PRNT ; Print A
CALL PRTHX ; Print HL as 4 digit hex.
CALL PRNTS ; Print space.
XOR A
LD (HL),A
LD A,(HL) ; Get into A the failing bits.
CALL PRTHX ; Print A as 2 digit hex.
CALL PRNTS ; Print space.
LD A,0FFh ; Repeat but first load FF into memory
LD (HL),A
LD A,(HL)
CALL PRTHX ; Print A as 2 digit hex.
NOP
JR LOOP4
LOOP3: CALL PRTHL
LD DE,OKCHECK
CALL MSG ; Print check message in DE
LD A,B ; Print loop count.
CALL PRTHX
LD DE,OKMSG
CALL MSG ; Print ok message in DE
CALL NL
LD HL,(GRPHPOS) ; Get position of graphics progress line.
OUT (0E8h),A ; Enable graphics memory.
LD A,0FFh
LD (HL),A
OUT (0E9h),A ; Disable graphics memory.
INC HL
LD (GRPHPOS),HL
DEC B
JR NZ,LOOP
LD DE,DONEMSG
CALL MSG ; Print check message in DE
JP MONIT
LOOP4: LD B,09h
CALL PRNTS ; Print space.
XOR A ; Zero A
SCF ; Set Carry
LOOP5: PUSH AF ; Store A and Flags
LD (HL),A ; Store 0 to bad location.
LD A,(HL) ; Read back
CALL PRTHX ; Print A as 2 digit hex.
CALL PRNTS ; Print space
POP AF ; Get back A (ie. 0 + C)
RLA ; Rotate left A. Bit LSB becomes Carry (ie. 1 first instance), Carry becomes MSB
DJNZ LOOP5 ; Loop if not zero, ie. print out all bit locations written and read to memory to locate bad bit.
XOR A ; Zero A, clears flags.
LD A,80h
LD B,08h
LOOP6: PUSH AF ; Repeat above but AND memory location with original A (ie. 80)
LD C,A ; Basically walk through all the bits to find which one is stuck.
LD (HL),A
LD A,(HL)
AND C
NOP
JR Z,LOOP8 ; If zero then print out the bit number
NOP
NOP
LD A,C
CPL
LD (HL),A
LD A,(HL)
AND C
JR NZ,LOOP8 ; As above, if the compliment doesnt yield zero, print out the bit number.
LOOP7: POP AF
RRCA
NOP
DJNZ LOOP6
JP MONIT
LOOP8: CALL LETNL ; New line.
LD DE,BITMSG ; BIT message
CALL MSG ; Print message in DE
LD A,B
DEC A
CALL PRTHX ; Print A as 2 digit hex, ie. BIT number.
CALL LETNL ; New line
LD DE,BANKMSG ; BANK message
CALL MSG ; Print message in DE
LD A,H
CP 50h ; 'P'
JR NC,LOOP9 ; Work out bank number, 1, 2 or 3.
LD A,01h
JR LOOP11
LOOP9: CP 90h
JR NC,LOOP10
LD A,02h
JR LOOP11
LOOP10: LD A,03h
LOOP11: CALL PRTHX ; Print A as 2 digit hex, ie. BANK number.
JR LOOP7
OKCHECK: DB ", CHECK: ", 0Dh
OKMSG: DB " OK.", 0Dh
DONEMSG: DB 11h
DB "RAM TEST COMPLETE.", 0Dh
BITMSG: DB " BIT: ", 0Dh
BANKMSG: DB " BANK: ", 0Dh
TITLE: DB "SHARPMZ RAM TEST (C) P. SMART 2018", 0Dh, 00h
GRPHPOS: DB 00h, 00h
MEND:

Binary file not shown.

View File

@@ -0,0 +1,55 @@
AMPM: equ 119BH
ATRB: equ 10F0H
BANKMSG: equ 0BF4DH
BITMSG: equ 0BF45H
BUFER: equ 11A3H
COMNT: equ 1108H
CSMDT: equ 1199H
DONEMSG: equ 0BF31H
DPRNT: equ 1194H
DSPXY: equ 1171H
DTADR: equ 1104H
EXADR: equ 1106H
FLASH: equ 118EH
FLPST: equ 118FH
FLSDT: equ 1192H
FLSST: equ 1191H
GRAM0: equ 0BE2DH
GRAM1: equ 0BE31H
GRAMINIT: equ 0BE27H
GRPHPOS: equ 0BF79H
IBUFE: equ 10F0H
KANAF: equ 1170H
LOOP: equ 0BE4BH
LOOP1: equ 0BE50H
LOOP10: equ 0BF1BH
LOOP11: equ 0BF1DH
LOOP1a: equ 0BE5CH
LOOP1b: equ 0BE62H
LOOP2: equ 0BE73H
LOOP3: equ 0BE91H
LOOP4: equ 0BEC1H
LOOP5: equ 0BEC8H
LOOP6: equ 0BEDAH
LOOP7: equ 0BEEBH
LOOP8: equ 0BEF3H
LOOP9: equ 0BF13H
MANG: equ 1173H
MEND: equ 0BF7BH
NAME: equ 10F1H
OCTV: equ 11A0H
OKCHECK: equ 0BF22H
OKMSG: equ 0BF2CH
ONTYO: equ 119FH
RATIO: equ 11A1H
SIGNON: equ 0BE3DH
SIZE: equ 1102H
SPV: equ 10F0H
START: equ 0BE00H
STRGF: equ 1193H
SUMDT: equ 1197H
SWRK: equ 119DH
TEMPW: equ 119EH
TIMFG: equ 119CH
TITLE: equ 0BF55H
TMCNT: equ 1195H

View File

@@ -0,0 +1,7 @@
; Configurable parameters.
COLW: EQU 40 ; Width of the display screen (ie. columns).
ROW: EQU 25 ; Number of rows on display screen.
SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area.
MODE80C:EQU 0
INCLUDE "1Z-013A.asm"

Binary file not shown.

View File

@@ -0,0 +1,382 @@
ALPH1: equ 0EE2H
ALPHA: equ 0EE1H
AMPM: equ 119BH
ASC: equ 3DAH
ATBL: equ 0A92H
ATRB: equ 10F0H
AUTO3: equ 7EDH
BELL: equ 3EH
BGETL: equ 12FH
BRKEY: equ 1EH
BUFER: equ 11A3H
CKS1: equ 720H
CKS2: equ 72FH
CKS3: equ 733H
CKSUM: equ 71AH
CLEAR: equ 9D8H
CLEAR1: equ 9DAH
CLRS: equ 0E3AH
CMY0: equ 5BH
COMNT: equ 1108H
CR: equ 0E5AH
CR1: equ 0E6AH
CSMDT: equ 1199H
CTBL: equ 0EAAH
CURS1: equ 0DFFH
CURS2: equ 0E16H
CURS3: equ 0DFFH
CURS4: equ 0E23H
CURS5: equ 0E02H
CURSD: equ 0DF8H
CURSL: equ 0E25H
CURSR: equ 0E0DH
CURSU: equ 0E05H
CURSU1: equ 0E0BH
DACN1: equ 0BE3H
DACN2: equ 0BDFH
DACN3: equ 0BE0H
DEL: equ 0EF8H
DEL1: equ 0F0EH
DEL2: equ 0F1CH
DLY1: equ 759H
DLY12: equ 996H
DLY2: equ 760H
DLY3: equ 0A4AH
DLY4: equ 9A9H
DMCP: equ 6BH
DPRNT: equ 1194H
DSP01: equ 0DB9H
DSP04: equ 0DD0H
DSPXY: equ 1171H
DSWEP: equ 830H
DTADR: equ 1104H
DUM1: equ 0D88H
DUM2: equ 0D3EH
DUM3: equ 0D37H
DUMP: equ 0D29H
EDG1: equ 607H
EDG2: equ 613H
EDGE: equ 601H
EXADR: equ 1106H
FD: equ 0FFH
FD1: equ 106H
FD2: equ 102H
FLAS1: equ 97BH
FLAS2: equ 9EFH
FLASH: equ 118EH
FLKEY: equ 57EH
FLPST: equ 118FH
FLSDT: equ 1192H
FLSST: equ 1191H
GAP: equ 77AH
GAP1: equ 78EH
GAP2: equ 796H
GAP3: equ 79CH
GAPCK: equ 0FE2H
GAPCK1: equ 0FEBH
GAPCK2: equ 0FEDH
GAPCK3: equ 0FFDH
GETKY: equ 1BH
GETL: equ 3H
GETL1: equ 7EAH
GETL2: equ 818H
GETL3: equ 85BH
GETL5: equ 81DH
GETL6: equ 865H
GETLA: equ 82BH
GETLB: equ 863H
GETLC: equ 822H
GETLR: equ 87EH
GETLU: equ 876H
GETLZ: equ 86CH
GOTO: equ 0F3H
GRSTAS: equ 0DD4H
HEX: equ 3F9H
HEXIY: equ 13DH
HEXJ: equ 3E5H
HLHEX: equ 410H
HOME: equ 0E4DH
IBUFE: equ 10F0H
INST: equ 0F38H
INST2: equ 0ECAH
KANA: equ 0EEEH
KANAF: equ 1170H
KSL1: equ 9B7H
KSL2: equ 9BCH
KTBL: equ 0BEAH
KTBLC: equ 0CAAH
KTBLG: equ 0CE9H
KTBLGS: equ 0C6AH
KTBLS: equ 0C2AH
L010F: equ 10FH
L01F5: equ 1F5H
L0207: equ 207H
L0220: equ 220H
L0239: equ 239H
L023F: equ 23FH
L0255: equ 255H
L025A: equ 25AH
L02D5: equ 2D5H
L02DB: equ 2DBH
L0363: equ 363H
L0378: equ 378H
L041D: equ 41DH
L0434: equ 434H
L047D: equ 47DH
L04C2: equ 4C2H
L04C4: equ 4C4H
L0563: equ 563H
L060E: equ 60EH
L061A: equ 61AH
L066C: equ 66CH
L06AD: equ 6ADH
L06B4: equ 6B4H
L071C: equ 71CH
L0725: equ 725H
L0737: equ 737H
L0739: equ 739H
L075B: equ 75BH
L0762: equ 762H
L08F7: equ 8F7H
L092C: equ 92CH
L0968: equ 968H
L0999: equ 999H
L09AB: equ 9ABH
L0A89: equ 0A89H
L0BA0: equ 0BA0H
L0BB1: equ 0BB1H
L0D36: equ 0D36H
L0D51: equ 0D51H
L0D78: equ 0D78H
L0D7A: equ 0D7AH
L0D85: equ 0D85H
L0DA7: equ 0DA7H
L0DAD: equ 0DADH
L0DE0: equ 0DE0H
L0E2D: equ 0E2DH
L0F17: equ 0F17H
L0F33: equ 0F33H
L0F42: equ 0F42H
L0F4D: equ 0F4DH
L2HEX: equ 41FH
LETNL: equ 6H
LLPT: equ 470H
LOA0: equ 116H
LOAD: equ 111H
LONG: equ 0A1AH
LPRNT: equ 18FH
MANG: equ 1173H
MCOR: equ 7A8H
MCR1: equ 7ABH
MCR2: equ 7D4H
MCR3: equ 7D7H
MELDY: equ 30H
MLD1: equ 1D1H
MLD2: equ 205H
MLD3: equ 20DH
MLD4: equ 211H
MLD5: equ 214H
MLDS1: equ 2C4H
MLDSP: equ 2BEH
MLDST: equ 2ABH
MNTBL: equ 284H
MONIT: equ 0H
MOT1: equ 6A4H
MOT2: equ 6ABH
MOT4: equ 6B9H
MOT5: equ 6D8H
MOT7: equ 6B7H
MOT8: equ 6D0H
MOT9: equ 6D7H
MOTOR: equ 69FH
MSG: equ 15H
MSG1: equ 896H
MSGE1: equ 147H
MSGN1: equ 3FBH
MSGN2: equ 3FDH
MSGN3: equ 402H
MSGN7: equ 467H
MSGOK: equ 942H
MSGQ2: equ 9A0H
MSGQ3: equ 6E7H
MSGSV: equ 98BH
MSGX: equ 18H
MSGX1: equ 8A4H
MSGX2: equ 8A7H
MST1: equ 705H
MST3: equ 717H
MSTA: equ 44H
MSTOP: equ 700H
MSTP: equ 47H
MTBL: equ 26CH
NAME: equ 10F1H
NBRK: equ 8B8H
NCLR08: equ 9D4H
NCLR8: equ 9D5H
NL: equ 9H
NLPHL: equ 5FAH
NOADD: equ 3E2H
OCTV: equ 11A0H
ONP1: equ 21FH
ONP2: equ 22CH
ONP3: equ 265H
ONPU: equ 21CH
ONTYO: equ 119FH
OPTBL: equ 29CH
P4DE: equ 2A6H
PEN: equ 18BH
PLOT: equ 184H
PLPT: equ 176H
PMANG: equ 2F3H
PMSG: equ 1A5H
PMSG1: equ 1A8H
PPLPT: equ 17BH
PRNT: equ 12H
PRNT2: equ 967H
PRNT3: equ 96CH
PRNT4: equ 96FH
PRNT5: equ 959H
PRNTS: equ 0CH
PRNTT: equ 0FH
PRTHL: equ 3BAH
PRTHX: equ 3C3H
PTEST: equ 155H
PTRN: equ 180H
PTST0: equ 15AH
PTST1: equ 170H
QADCN: equ 0BB9H
QBEL: equ 577H
QBELD: equ 352H
QBLNK: equ 0DA6H
QBRK: equ 0A32H
QBRK1: equ 0A48H
QBRK2: equ 980H
QBRK3: equ 986H
QCLER: equ 0FD8H
QCLRFF: equ 0FDBH
QDACN: equ 0BCEH
QDINT: equ 0FDDH
QDPCT: equ 0DDCH
QDSP: equ 0DB5H
QER: equ 107H
QFLAS: equ 9FFH
QFLS: equ 9E3H
QGET: equ 8BDH
QGETL: equ 7E6H
QKEY: equ 8CAH
QKY1: equ 8D6H
QKY2: equ 8DAH
QKY5: equ 8FAH
QKY55: equ 8FBH
QKYGRP: equ 8FEH
QKYGRS: equ 909H
QKYSM: equ 8B3H
QLOAD: equ 5F0H
QLTNL: equ 90EH
QMLDY: equ 1C7H
QMODE: equ 73EH
QMSG: equ 893H
QMSGX: equ 8A1H
QNL: equ 918H
QPNT1: equ 0FB4H
QPNT2: equ 0FBFH
QPONT: equ 0FB1H
QPRNT: equ 935H
QPRT: equ 946H
QPRTS: equ 920H
QPRTT: equ 924H
QQKEY: equ 9B3H
QRDD: equ 4F8H
QRDI: equ 4D8H
QRSTR: equ 0EE5H
QRSTR1: equ 0EE6H
QSAVE: equ 0B92H
QSWEP: equ 0A50H
QTEMP: equ 2E5H
QTMR1: equ 375H
QTMR2: equ 37FH
QTMRD: equ 358H
QTMS1: equ 331H
QTMS2: equ 344H
QTMST: equ 308H
QVRFY: equ 588H
QWRD: equ 475H
QWRI: equ 436H
RATIO: equ 11A1H
RBY1: equ 630H
RBY2: equ 649H
RBY3: equ 654H
RBYTE: equ 624H
RD1: equ 4E6H
RDA: equ 1B6H
RDDAT: equ 2AH
RDINF: equ 27H
RET1: equ 4D2H
RET2: equ 554H
RET3: equ 69BH
RTAPE: equ 50EH
RTP1: equ 513H
RTP2: equ 519H
RTP3: equ 532H
RTP4: equ 554H
RTP5: equ 565H
RTP6: equ 572H
RTP7: equ 56EH
RTP8: equ 553H
RTP9: equ 574H
RYTHM: equ 2C8H
SAV1: equ 0F8EH
SAVE: equ 0F5EH
SCROL: equ 0E6DH
SG: equ 0F7H
SHORT: equ 0A01H
SIZE: equ 1102H
SLPT: equ 3D5H
SPHEX: equ 3B1H
SPV: equ 10F0H
SS: equ 0A2H
ST0: equ 70H
ST1: equ 0ADH
ST2: equ 0BBH
START: equ 4AH
STRGF: equ 1193H
SUMDT: equ 1197H
SV0: equ 0BA2H
SV1: equ 0BB5H
SWEP0: equ 0A66H
SWEP01: equ 0A64H
SWEP2: equ 0A7FH
SWEP3: equ 0A77H
SWEP6: equ 0A5FH
SWEP9: equ 0A73H
SWRK: equ 119DH
TEMPW: equ 119EH
TIMFG: equ 119CH
TIMIN: equ 38DH
TIMRD: equ 3BH
TIMST: equ 33H
TM1: equ 675H
TM2: equ 678H
TM3: equ 688H
TM4: equ 69BH
TMARK: equ 65BH
TMCNT: equ 1195H
TVF1: equ 5B2H
TVF2: equ 5B8H
TVF3: equ 5CCH
TVRFY: equ 5ADH
VERFY: equ 2DH
VRFY: equ 0FCBH
VRNS: equ 0BC5H
WBY1: equ 76DH
WBYTE: equ 767H
WRDAT: equ 24H
WRI1: equ 444H
WRI2: equ 45EH
WRI3: equ 464H
WRINF: equ 21H
WTAP1: equ 494H
WTAP2: equ 4A5H
WTAP3: equ 4D2H
WTAPE: equ 48AH
XTEMP: equ 41H

View File

@@ -0,0 +1,7 @@
; Configurable parameters.
COLW: EQU 80 ; Width of the display screen (ie. columns).
ROW: EQU 25 ; Number of rows on display screen.
SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area.
MODE80C:EQU 1
INCLUDE "1Z-013A.asm"

Binary file not shown.

View File

@@ -0,0 +1,382 @@
ALPH1: equ 0EE2H
ALPHA: equ 0EE1H
AMPM: equ 119BH
ASC: equ 3DAH
ATBL: equ 0A92H
ATRB: equ 10F0H
AUTO3: equ 7EDH
BELL: equ 3EH
BGETL: equ 12FH
BRKEY: equ 1EH
BUFER: equ 11A3H
CKS1: equ 720H
CKS2: equ 72FH
CKS3: equ 733H
CKSUM: equ 71AH
CLEAR: equ 9D8H
CLEAR1: equ 9DAH
CLRS: equ 0E3AH
CMY0: equ 5BH
COMNT: equ 1108H
CR: equ 0E5AH
CR1: equ 0E6AH
CSMDT: equ 1199H
CTBL: equ 0EAAH
CURS1: equ 0DFFH
CURS2: equ 0E16H
CURS3: equ 0DFFH
CURS4: equ 0E23H
CURS5: equ 0E02H
CURSD: equ 0DF8H
CURSL: equ 0E25H
CURSR: equ 0E0DH
CURSU: equ 0E05H
CURSU1: equ 0E0BH
DACN1: equ 0BE3H
DACN2: equ 0BDFH
DACN3: equ 0BE0H
DEL: equ 0EF8H
DEL1: equ 0F0EH
DEL2: equ 0F1CH
DLY1: equ 759H
DLY12: equ 996H
DLY2: equ 760H
DLY3: equ 0A4AH
DLY4: equ 9A9H
DMCP: equ 6BH
DPRNT: equ 1194H
DSP01: equ 0DB9H
DSP04: equ 0DD0H
DSPXY: equ 1171H
DSWEP: equ 830H
DTADR: equ 1104H
DUM1: equ 0D88H
DUM2: equ 0D3EH
DUM3: equ 0D37H
DUMP: equ 0D29H
EDG1: equ 607H
EDG2: equ 613H
EDGE: equ 601H
EXADR: equ 1106H
FD: equ 0FFH
FD1: equ 106H
FD2: equ 102H
FLAS1: equ 97BH
FLAS2: equ 9EFH
FLASH: equ 118EH
FLKEY: equ 57EH
FLPST: equ 118FH
FLSDT: equ 1192H
FLSST: equ 1191H
GAP: equ 77AH
GAP1: equ 78EH
GAP2: equ 796H
GAP3: equ 79CH
GAPCK: equ 0FE2H
GAPCK1: equ 0FEBH
GAPCK2: equ 0FEDH
GAPCK3: equ 0FFDH
GETKY: equ 1BH
GETL: equ 3H
GETL1: equ 7EAH
GETL2: equ 818H
GETL3: equ 85BH
GETL5: equ 81DH
GETL6: equ 865H
GETLA: equ 82BH
GETLB: equ 863H
GETLC: equ 822H
GETLR: equ 87EH
GETLU: equ 876H
GETLZ: equ 86CH
GOTO: equ 0F3H
GRSTAS: equ 0DD4H
HEX: equ 3F9H
HEXIY: equ 13DH
HEXJ: equ 3E5H
HLHEX: equ 410H
HOME: equ 0E4DH
IBUFE: equ 10F0H
INST: equ 0F38H
INST2: equ 0ECAH
KANA: equ 0EEEH
KANAF: equ 1170H
KSL1: equ 9B7H
KSL2: equ 9BCH
KTBL: equ 0BEAH
KTBLC: equ 0CAAH
KTBLG: equ 0CE9H
KTBLGS: equ 0C6AH
KTBLS: equ 0C2AH
L010F: equ 10FH
L01F5: equ 1F5H
L0207: equ 207H
L0220: equ 220H
L0239: equ 239H
L023F: equ 23FH
L0255: equ 255H
L025A: equ 25AH
L02D5: equ 2D5H
L02DB: equ 2DBH
L0363: equ 363H
L0378: equ 378H
L041D: equ 41DH
L0434: equ 434H
L047D: equ 47DH
L04C2: equ 4C2H
L04C4: equ 4C4H
L0563: equ 563H
L060E: equ 60EH
L061A: equ 61AH
L066C: equ 66CH
L06AD: equ 6ADH
L06B4: equ 6B4H
L071C: equ 71CH
L0725: equ 725H
L0737: equ 737H
L0739: equ 739H
L075B: equ 75BH
L0762: equ 762H
L08F7: equ 8F7H
L092C: equ 92CH
L0968: equ 968H
L0999: equ 999H
L09AB: equ 9ABH
L0A89: equ 0A89H
L0BA0: equ 0BA0H
L0BB1: equ 0BB1H
L0D36: equ 0D36H
L0D51: equ 0D51H
L0D78: equ 0D78H
L0D7A: equ 0D7AH
L0D85: equ 0D85H
L0DA7: equ 0DA7H
L0DAD: equ 0DADH
L0DE0: equ 0DE0H
L0E2D: equ 0E2DH
L0F17: equ 0F17H
L0F33: equ 0F33H
L0F42: equ 0F42H
L0F4D: equ 0F4DH
L2HEX: equ 41FH
LETNL: equ 6H
LLPT: equ 470H
LOA0: equ 116H
LOAD: equ 111H
LONG: equ 0A1AH
LPRNT: equ 18FH
MANG: equ 1173H
MCOR: equ 7A8H
MCR1: equ 7ABH
MCR2: equ 7D4H
MCR3: equ 7D7H
MELDY: equ 30H
MLD1: equ 1D1H
MLD2: equ 205H
MLD3: equ 20DH
MLD4: equ 211H
MLD5: equ 214H
MLDS1: equ 2C4H
MLDSP: equ 2BEH
MLDST: equ 2ABH
MNTBL: equ 284H
MONIT: equ 0H
MOT1: equ 6A4H
MOT2: equ 6ABH
MOT4: equ 6B9H
MOT5: equ 6D8H
MOT7: equ 6B7H
MOT8: equ 6D0H
MOT9: equ 6D7H
MOTOR: equ 69FH
MSG: equ 15H
MSG1: equ 896H
MSGE1: equ 147H
MSGN1: equ 3FBH
MSGN2: equ 3FDH
MSGN3: equ 402H
MSGN7: equ 467H
MSGOK: equ 942H
MSGQ2: equ 9A0H
MSGQ3: equ 6E7H
MSGSV: equ 98BH
MSGX: equ 18H
MSGX1: equ 8A4H
MSGX2: equ 8A7H
MST1: equ 705H
MST3: equ 717H
MSTA: equ 44H
MSTOP: equ 700H
MSTP: equ 47H
MTBL: equ 26CH
NAME: equ 10F1H
NBRK: equ 8B8H
NCLR08: equ 9D4H
NCLR8: equ 9D5H
NL: equ 9H
NLPHL: equ 5FAH
NOADD: equ 3E2H
OCTV: equ 11A0H
ONP1: equ 21FH
ONP2: equ 22CH
ONP3: equ 265H
ONPU: equ 21CH
ONTYO: equ 119FH
OPTBL: equ 29CH
P4DE: equ 2A6H
PEN: equ 18BH
PLOT: equ 184H
PLPT: equ 176H
PMANG: equ 2F3H
PMSG: equ 1A5H
PMSG1: equ 1A8H
PPLPT: equ 17BH
PRNT: equ 12H
PRNT2: equ 967H
PRNT3: equ 96CH
PRNT4: equ 96FH
PRNT5: equ 959H
PRNTS: equ 0CH
PRNTT: equ 0FH
PRTHL: equ 3BAH
PRTHX: equ 3C3H
PTEST: equ 155H
PTRN: equ 180H
PTST0: equ 15AH
PTST1: equ 170H
QADCN: equ 0BB9H
QBEL: equ 577H
QBELD: equ 352H
QBLNK: equ 0DA6H
QBRK: equ 0A32H
QBRK1: equ 0A48H
QBRK2: equ 980H
QBRK3: equ 986H
QCLER: equ 0FD8H
QCLRFF: equ 0FDBH
QDACN: equ 0BCEH
QDINT: equ 0FDDH
QDPCT: equ 0DDCH
QDSP: equ 0DB5H
QER: equ 107H
QFLAS: equ 9FFH
QFLS: equ 9E3H
QGET: equ 8BDH
QGETL: equ 7E6H
QKEY: equ 8CAH
QKY1: equ 8D6H
QKY2: equ 8DAH
QKY5: equ 8FAH
QKY55: equ 8FBH
QKYGRP: equ 8FEH
QKYGRS: equ 909H
QKYSM: equ 8B3H
QLOAD: equ 5F0H
QLTNL: equ 90EH
QMLDY: equ 1C7H
QMODE: equ 73EH
QMSG: equ 893H
QMSGX: equ 8A1H
QNL: equ 918H
QPNT1: equ 0FB4H
QPNT2: equ 0FBFH
QPONT: equ 0FB1H
QPRNT: equ 935H
QPRT: equ 946H
QPRTS: equ 920H
QPRTT: equ 924H
QQKEY: equ 9B3H
QRDD: equ 4F8H
QRDI: equ 4D8H
QRSTR: equ 0EE5H
QRSTR1: equ 0EE6H
QSAVE: equ 0B92H
QSWEP: equ 0A50H
QTEMP: equ 2E5H
QTMR1: equ 375H
QTMR2: equ 37FH
QTMRD: equ 358H
QTMS1: equ 331H
QTMS2: equ 344H
QTMST: equ 308H
QVRFY: equ 588H
QWRD: equ 475H
QWRI: equ 436H
RATIO: equ 11A1H
RBY1: equ 630H
RBY2: equ 649H
RBY3: equ 654H
RBYTE: equ 624H
RD1: equ 4E6H
RDA: equ 1B6H
RDDAT: equ 2AH
RDINF: equ 27H
RET1: equ 4D2H
RET2: equ 554H
RET3: equ 69BH
RTAPE: equ 50EH
RTP1: equ 513H
RTP2: equ 519H
RTP3: equ 532H
RTP4: equ 554H
RTP5: equ 565H
RTP6: equ 572H
RTP7: equ 56EH
RTP8: equ 553H
RTP9: equ 574H
RYTHM: equ 2C8H
SAV1: equ 0F8EH
SAVE: equ 0F5EH
SCROL: equ 0E6DH
SG: equ 0F7H
SHORT: equ 0A01H
SIZE: equ 1102H
SLPT: equ 3D5H
SPHEX: equ 3B1H
SPV: equ 10F0H
SS: equ 0A2H
ST0: equ 70H
ST1: equ 0ADH
ST2: equ 0BBH
START: equ 4AH
STRGF: equ 1193H
SUMDT: equ 1197H
SV0: equ 0BA2H
SV1: equ 0BB5H
SWEP0: equ 0A66H
SWEP01: equ 0A64H
SWEP2: equ 0A7FH
SWEP3: equ 0A77H
SWEP6: equ 0A5FH
SWEP9: equ 0A73H
SWRK: equ 119DH
TEMPW: equ 119EH
TIMFG: equ 119CH
TIMIN: equ 38DH
TIMRD: equ 3BH
TIMST: equ 33H
TM1: equ 675H
TM2: equ 678H
TM3: equ 688H
TM4: equ 69BH
TMARK: equ 65BH
TMCNT: equ 1195H
TVF1: equ 5B2H
TVF2: equ 5B8H
TVF3: equ 5CCH
TVRFY: equ 5ADH
VERFY: equ 2DH
VRFY: equ 0FCBH
VRNS: equ 0BC5H
WBY1: equ 76DH
WBYTE: equ 767H
WRDAT: equ 24H
WRI1: equ 444H
WRI2: equ 45EH
WRI3: equ 464H
WRINF: equ 21H
WTAP1: equ 494H
WTAP2: equ 4A5H
WTAP3: equ 4D2H
WTAPE: equ 48AH
XTEMP: equ 41H

View File

@@ -0,0 +1,7 @@
; Configurable parameters.
COLW: EQU 80 ; Width of the display screen (ie. columns).
ROW: EQU 25 ; Number of rows on display screen.
SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area.
MODE80C:EQU 1
INCLUDE "sa1510.asm"

Binary file not shown.

View File

@@ -0,0 +1,394 @@
.CP1: equ 13AH
.CR: equ 128H
.CTBL: equ 168H
.DSP03: equ 39DH
.MANG: equ 0A2BH
.MANG1: equ 0A4CH
.MANG2: equ 3A6H
.MANG3: equ 0A38H
.MANG4: equ 0A45H
.SCROL: equ 13DH
?ADCN: equ 0BB9H
?BEL: equ 2E5H
?BELD: equ 0DB1H
?BLNK: equ 0DA6H
?BRK: equ 0D11H
?CLER: equ 0FD8H
?CLRFF: equ 0FDBH
?DACN: equ 0BCEH
?DINT: equ 0FDDH
?DPCT: equ 0DDCH
?DSP: equ 0DB5H
?DSPA: equ 0D7CH
?ER: equ 0CFH
?FLAS: equ 9FFH
?GET: equ 8B3H
?GETL: equ 7A8H
?KEY: equ 8CAH
?KY1: equ 8D6H
?KY10: equ 8EFH
?KY11: equ 8EAH
?KY2: equ 8F2H
?KY3: equ 922H
?KY4: equ 92FH
?KY5: equ 91EH
?KY6: equ 92AH
?KY7: equ 93AH
?KY9: equ 93FH
?LOAD: equ 5F5H
?LTNL: equ 980H
?MLDY: equ 188H
?MODE: equ 74DH
?MSG: equ 893H
?MSGX: equ 8A1H
?NL: equ 97BH
?PNT1: equ 0FB4H
?PNT2: equ 0FCAH
?PONT: equ 0FB1H
?PRNT: equ 995H
?PRT: equ 946H
?PRTS: equ 993H
?PRTT: equ 984H
?RDD: equ 4EFH
?RDI: equ 4CFH
?RSTR: equ 0EE5H
?RSTR1: equ 0EE6H
?SAVE: equ 263H
?SWEP: equ 0A50H
?TEMP: equ 2ECH
?TMR1: equ 361H
?TMR1A: equ 364H
?TMR2: equ 36BH
?TMRD: equ 344H
?TMST: equ 2FAH
?VRFY: equ 575H
?WRD: equ 470H
?WRI: equ 436H
ALPHA: equ 0EE1H
ALPHI: equ 0EE2H
AMPM: equ 119BH
ASC: equ 3DAH
ATBL: equ 0AB5H
ATRB: equ 10F0H
AUTCK: equ 9F1H
AUTO2: equ 807H
AUTO3: equ 7C4H
AUTO5: equ 824H
AUTOL: equ 810H
AUTOL1: equ 812H
BELL: equ 3EH
BRKEY: equ 1EH
BUFER: equ 11A3H
CHGP1: equ 84BH
CHGPA: equ 83EH
CHGPK: equ 841H
CHGPK1: equ 843H
CLR8: equ 9E3H
CLRS: equ 0EB3H
CLRS1: equ 0ED1H
COMNT: equ 1108H
CR: equ 0F73H
CR2: equ 0F8BH
CR3: equ 0F99H
CSMDT: equ 1199H
CTBL: equ 0DFFH
CURS1: equ 0E66H
CURS2: equ 0E86H
CURS3: equ 0E69H
CURS4: equ 0E93H
CURS5: equ 0EAAH
CURS5A: equ 0E9FH
CURS6: equ 0ED7H
CURSD: equ 0E5DH
CURSL: equ 0E95H
CURSR: equ 0E7BH
CURSU: equ 0E6EH
CURSU1: equ 0E76H
DACN1: equ 0BE3H
DACN2: equ 0BDFH
DACN3: equ 0BE0H
DEL: equ 0EF2H
DEL1: equ 0F0AH
DEL2: equ 0F1DH
DLY12: equ 0DA7H
DLY12A: equ 0DAAH
DLY3: equ 9A2H
DMT: equ 857H
DPCT1: equ 0DF9H
DPRNT: equ 1194H
DSP01: equ 0DC2H
DSP02: equ 0D97H
DSP04: equ 0D8DH
DSPXY: equ 1171H
DTADR: equ 1104H
EDG1: equ 607H
EDG1A: equ 60FH
EDG2: equ 615H
EDG3: equ 61DH
EDGE: equ 601H
EXADR: equ 1106H
FD: equ 0C7H
FD2: equ 0CAH
FLAS1: equ 0A12H
FLAS2: equ 0A0BH
FLAS3: equ 0A0FH
FLASH: equ 118EH
FLSDT: equ 1192H
GAPCK: equ 0FE2H
GAPCK1: equ 0FEBH
GAPCK2: equ 0FEDH
GAPCK3: equ 0FFDH
GETKY: equ 1BH
GETL: equ 3H
GETL0: equ 7ACH
GETL0A: equ 7AFH
GETL0B: equ 7B6H
GETL0C: equ 7BEH
GETL0D: equ 7C5H
GETL1: equ 81AH
GETL2: equ 803H
GETL3: equ 85BH
GETL5: equ 839H
GETL6: equ 865H
GETL6A: equ 86CH
GETL6B: equ 878H
GETLA: equ 886H
GETLB: equ 863H
GETLC: equ 84EH
GETLD: equ 5E1H
GETLR: equ 880H
GOTO: equ 0BBH
HEX: equ 3F9H
HEX1: equ 3F2H
HEX2: equ 3F5H
HEXJ: equ 3E5H
HLHEX: equ 410H
HOM0: equ 409H
HOM00: equ 0ED4H
HOM1: equ 406H
HOME: equ 3FBH
HOOK: equ 120H
IBUFE: equ 10F0H
INST: equ 0F2DH
INST1: equ 0F4FH
INST1A: equ 0F37H
INST2: equ 0F42H
KANA: equ 0EEEH
KANAF: equ 1170H
KDATW: equ 116EH
KTBL: equ 0BEAH
KTBLC: equ 0CDAH
KTBLG: equ 0C6AH
KTBLGS: equ 0CA2H
KTBLS: equ 0C32H
L0270: equ 270H
L028F: equ 28FH
L029A: equ 29AH
L02C4: equ 2C4H
L02D5: equ 2D5H
L02DB: equ 2DBH
L0323: equ 323H
L0336: equ 336H
L03D5: equ 3D5H
L041D: equ 41DH
L041F: equ 41FH
L0434: equ 434H
L0444: equ 444H
L045E: equ 45EH
L0464: equ 464H
L0485: equ 485H
L048F: equ 48FH
L049E: equ 49EH
L04BB: equ 4BBH
L04BD: equ 4BDH
L04CB: equ 4CBH
L04DD: equ 4DDH
L0505: equ 505H
L050A: equ 50AH
L0510: equ 510H
L052A: equ 52AH
L0551: equ 551H
L0552: equ 552H
L0561: equ 561H
L0563: equ 563H
L056C: equ 56CH
L0570: equ 570H
L0572: equ 572H
L06B1: equ 6B1H
L06E7: equ 6E7H
L06F0: equ 6F0H
L0705: equ 705H
L0717: equ 717H
L071A: equ 71AH
L0720: equ 720H
L072F: equ 72FH
L0733: equ 733H
L0737: equ 737H
L073E: equ 73EH
L0743: equ 743H
L0759: equ 759H
L075B: equ 75BH
L0760: equ 760H
L0762: equ 762H
L0767: equ 767H
L076D: equ 76DH
L077A: equ 77AH
L078E: equ 78EH
L0796: equ 796H
L079C: equ 79CH
L0917: equ 917H
L091B: equ 91BH
L098C: equ 98CH
L09AB: equ 9ABH
L09B9: equ 9B9H
L09C7: equ 9C7H
L09E2: equ 9E2H
L09E8: equ 9E8H
L0D27: equ 0D27H
L0D2B: equ 0D2BH
L0D37: equ 0D37H
L0D3E: equ 0D3EH
L0D57: equ 0D57H
L0D80: equ 0D80H
L0D89: equ 0D89H
L0D90: equ 0D90H
L0F13: equ 0F13H
LETNL: equ 6H
LOAD: equ 0D9H
LOCK: equ 88BH
M?TBL: equ 241H
MANG: equ 1173H
MANGE: equ 1179H
MELDY: equ 30H
MGP.D: equ 29DH
MGP.I: equ 283H
MGPNT: equ 117CH
MLD1: equ 192H
MLD1A: equ 1B6H
MLD2: equ 1C6H
MLD2A: equ 1C8H
MLD3: equ 1CEH
MLD4: equ 1D2H
MLD5: equ 1D5H
MLDSP: equ 2BEH
MLDST: equ 2ABH
MONIT: equ 0H
MOT1: equ 6A8H
MOT2: equ 6AFH
MOT4: equ 6B9H
MOT5: equ 6D8H
MOT7: equ 6B7H
MOT8: equ 6D0H
MOT9: equ 6D7H
MOTOR: equ 6A3H
MSG: equ 15H
MSG1: equ 896H
MSG?2: equ 0F7H
MSG?3: equ 100H
MSG?7: equ 467H
MSGE1: equ 118H
MSGX: equ 18H
MSGX1: equ 8A4H
MSGX2: equ 8A7H
MSG_1: equ 0D9EH
MSG_2: equ 0DA0H
MSG_3: equ 6F4H
MSTA: equ 44H
MSTOP: equ 700H
MSTP: equ 47H
MTBL: equ 229H
NAME: equ 10F1H
NL: equ 9H
NOADD: equ 3E2H
OCTV: equ 11A0H
ONP1A: equ 1E1H
ONP2: equ 1EDH
ONP2A: equ 1FAH
ONP2B: equ 200H
ONP2C: equ 216H
ONP2D: equ 21BH
ONPU: equ 1DDH
ONTYO: equ 119FH
OPTBL: equ 259H
PAGETP: equ 117DH
PBIAS: equ 117AH
PRNT: equ 12H
PRNT2: equ 967H
PRNT2A: equ 968H
PRNT3: equ 96CH
PRNT4: equ 96FH
PRNT4A: equ 979H
PRNT5: equ 955H
PRNTS: equ 0CH
PRNTT: equ 0FH
PRTHL: equ 3B8H
PRTHX: equ 3C3H
RATIO: equ 11A1H
RBY1: equ 630H
RBY2: equ 649H
RBY3: equ 654H
RBYTE: equ 624H
RDDAT: equ 2AH
RDINF: equ 27H
RET3: equ 69FH
REV: equ 0A17H
REV1: equ 0A25H
REV2: equ 0A28H
REVFLG: equ 1190H
ROL2: equ 0F68H
ROLD: equ 0F59H
ROLEND: equ 117FH
ROLTOP: equ 117BH
ROLU: equ 0F9FH
ROLU1: equ 0FA9H
ROLUP: equ 5E8H
RYTHM: equ 2C8H
SCROL: equ 0E1FH
SCROL1: equ 0E32H
SCROL2: equ 0E42H
SCROL3: equ 0E55H
SFTLK: equ 118FH
SG: equ 0C1H
SIZE: equ 1102H
SPAGE: equ 1191H
SPV: equ 10F0H
SS: equ 89H
SS1: equ 8BH
ST1: equ 95H
ST2: equ 0A3H
START: equ 4AH
STRGF: equ 1193H
STRT1: equ 69H
SUMDT: equ 1197H
SWEP0: equ 0A76H
SWEP01: equ 0A74H
SWEP11: equ 0A8EH
SWEP2: equ 0AACH
SWEP3: equ 0A92H
SWEP6: equ 0A62H
SWEP7: equ 0AA5H
SWEP8: equ 0AA0H
SWEP9: equ 0A8AH
SWPW: equ 1164H
SWRK: equ 119DH
TEMPW: equ 119EH
TIMFG: equ 119CH
TIMIN: equ 379H
TIMRD: equ 3BH
TIMST: equ 33H
TM0: equ 66AH
TM1: equ 673H
TM2: equ 676H
TM3: equ 689H
TM4: equ 69FH
TMARK: equ 658H
TMCNT: equ 1195H
TVF1: equ 5A0H
TVF2: equ 5A6H
TVF3: equ 5BAH
TVRFY: equ 59BH
VERFY: equ 2DH
WRDAT: equ 24H
WRINF: equ 21H
XTEMP: equ 41H
_BRK: equ 0BC5H

View File

@@ -0,0 +1,7 @@
; Configurable parameters.
COLW: EQU 40 ; Width of the display screen (ie. columns).
ROW: EQU 25 ; Number of rows on display screen.
SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area.
MODE80C:EQU 0
INCLUDE "sa1510.asm"

Binary file not shown.

View File

@@ -0,0 +1,394 @@
.CP1: equ 13AH
.CR: equ 128H
.CTBL: equ 168H
.DSP03: equ 39DH
.MANG: equ 0A2BH
.MANG1: equ 0A4CH
.MANG2: equ 3A6H
.MANG3: equ 0A38H
.MANG4: equ 0A45H
.SCROL: equ 13DH
?ADCN: equ 0BB9H
?BEL: equ 2E5H
?BELD: equ 0DB1H
?BLNK: equ 0DA6H
?BRK: equ 0D11H
?CLER: equ 0FD8H
?CLRFF: equ 0FDBH
?DACN: equ 0BCEH
?DINT: equ 0FDDH
?DPCT: equ 0DDCH
?DSP: equ 0DB5H
?DSPA: equ 0D7CH
?ER: equ 0CFH
?FLAS: equ 9FFH
?GET: equ 8B3H
?GETL: equ 7A8H
?KEY: equ 8CAH
?KY1: equ 8D6H
?KY10: equ 8EFH
?KY11: equ 8EAH
?KY2: equ 8F2H
?KY3: equ 922H
?KY4: equ 92FH
?KY5: equ 91EH
?KY6: equ 92AH
?KY7: equ 93AH
?KY9: equ 93FH
?LOAD: equ 5F5H
?LTNL: equ 980H
?MLDY: equ 188H
?MODE: equ 74DH
?MSG: equ 893H
?MSGX: equ 8A1H
?NL: equ 97BH
?PNT1: equ 0FB4H
?PNT2: equ 0FCAH
?PONT: equ 0FB1H
?PRNT: equ 995H
?PRT: equ 946H
?PRTS: equ 993H
?PRTT: equ 984H
?RDD: equ 4EFH
?RDI: equ 4CFH
?RSTR: equ 0EE5H
?RSTR1: equ 0EE6H
?SAVE: equ 263H
?SWEP: equ 0A50H
?TEMP: equ 2ECH
?TMR1: equ 361H
?TMR1A: equ 364H
?TMR2: equ 36BH
?TMRD: equ 344H
?TMST: equ 2FAH
?VRFY: equ 575H
?WRD: equ 470H
?WRI: equ 436H
ALPHA: equ 0EE1H
ALPHI: equ 0EE2H
AMPM: equ 119BH
ASC: equ 3DAH
ATBL: equ 0AB5H
ATRB: equ 10F0H
AUTCK: equ 9F1H
AUTO2: equ 807H
AUTO3: equ 7C4H
AUTO5: equ 824H
AUTOL: equ 810H
AUTOL1: equ 812H
BELL: equ 3EH
BRKEY: equ 1EH
BUFER: equ 11A3H
CHGP1: equ 84BH
CHGPA: equ 83EH
CHGPK: equ 841H
CHGPK1: equ 843H
CLR8: equ 9E3H
CLRS: equ 0EB3H
CLRS1: equ 0ED1H
COMNT: equ 1108H
CR: equ 0F73H
CR2: equ 0F8BH
CR3: equ 0F99H
CSMDT: equ 1199H
CTBL: equ 0DFFH
CURS1: equ 0E66H
CURS2: equ 0E86H
CURS3: equ 0E69H
CURS4: equ 0E93H
CURS5: equ 0EAAH
CURS5A: equ 0E9FH
CURS6: equ 0ED7H
CURSD: equ 0E5DH
CURSL: equ 0E95H
CURSR: equ 0E7BH
CURSU: equ 0E6EH
CURSU1: equ 0E76H
DACN1: equ 0BE3H
DACN2: equ 0BDFH
DACN3: equ 0BE0H
DEL: equ 0EF2H
DEL1: equ 0F0AH
DEL2: equ 0F1DH
DLY12: equ 0DA7H
DLY12A: equ 0DAAH
DLY3: equ 9A2H
DMT: equ 857H
DPCT1: equ 0DF9H
DPRNT: equ 1194H
DSP01: equ 0DC2H
DSP02: equ 0D97H
DSP04: equ 0D8DH
DSPXY: equ 1171H
DTADR: equ 1104H
EDG1: equ 607H
EDG1A: equ 60FH
EDG2: equ 615H
EDG3: equ 61DH
EDGE: equ 601H
EXADR: equ 1106H
FD: equ 0C7H
FD2: equ 0CAH
FLAS1: equ 0A12H
FLAS2: equ 0A0BH
FLAS3: equ 0A0FH
FLASH: equ 118EH
FLSDT: equ 1192H
GAPCK: equ 0FE2H
GAPCK1: equ 0FEBH
GAPCK2: equ 0FEDH
GAPCK3: equ 0FFDH
GETKY: equ 1BH
GETL: equ 3H
GETL0: equ 7ACH
GETL0A: equ 7AFH
GETL0B: equ 7B6H
GETL0C: equ 7BEH
GETL0D: equ 7C5H
GETL1: equ 81AH
GETL2: equ 803H
GETL3: equ 85BH
GETL5: equ 839H
GETL6: equ 865H
GETL6A: equ 86CH
GETL6B: equ 878H
GETLA: equ 886H
GETLB: equ 863H
GETLC: equ 84EH
GETLD: equ 5E1H
GETLR: equ 880H
GOTO: equ 0BBH
HEX: equ 3F9H
HEX1: equ 3F2H
HEX2: equ 3F5H
HEXJ: equ 3E5H
HLHEX: equ 410H
HOM0: equ 409H
HOM00: equ 0ED4H
HOM1: equ 406H
HOME: equ 3FBH
HOOK: equ 128H
IBUFE: equ 10F0H
INST: equ 0F2DH
INST1: equ 0F4FH
INST1A: equ 0F37H
INST2: equ 0F42H
KANA: equ 0EEEH
KANAF: equ 1170H
KDATW: equ 116EH
KTBL: equ 0BEAH
KTBLC: equ 0CDAH
KTBLG: equ 0C6AH
KTBLGS: equ 0CA2H
KTBLS: equ 0C32H
L0270: equ 270H
L028F: equ 28FH
L029A: equ 29AH
L02C4: equ 2C4H
L02D5: equ 2D5H
L02DB: equ 2DBH
L0323: equ 323H
L0336: equ 336H
L03D5: equ 3D5H
L041D: equ 41DH
L041F: equ 41FH
L0434: equ 434H
L0444: equ 444H
L045E: equ 45EH
L0464: equ 464H
L0485: equ 485H
L048F: equ 48FH
L049E: equ 49EH
L04BB: equ 4BBH
L04BD: equ 4BDH
L04CB: equ 4CBH
L04DD: equ 4DDH
L0505: equ 505H
L050A: equ 50AH
L0510: equ 510H
L052A: equ 52AH
L0551: equ 551H
L0552: equ 552H
L0561: equ 561H
L0563: equ 563H
L056C: equ 56CH
L0570: equ 570H
L0572: equ 572H
L06B1: equ 6B1H
L06E7: equ 6E7H
L06F0: equ 6F0H
L0705: equ 705H
L0717: equ 717H
L071A: equ 71AH
L0720: equ 720H
L072F: equ 72FH
L0733: equ 733H
L0737: equ 737H
L073E: equ 73EH
L0743: equ 743H
L0759: equ 759H
L075B: equ 75BH
L0760: equ 760H
L0762: equ 762H
L0767: equ 767H
L076D: equ 76DH
L077A: equ 77AH
L078E: equ 78EH
L0796: equ 796H
L079C: equ 79CH
L0917: equ 917H
L091B: equ 91BH
L098C: equ 98CH
L09AB: equ 9ABH
L09B9: equ 9B9H
L09C7: equ 9C7H
L09E2: equ 9E2H
L09E8: equ 9E8H
L0D27: equ 0D27H
L0D2B: equ 0D2BH
L0D37: equ 0D37H
L0D3E: equ 0D3EH
L0D57: equ 0D57H
L0D80: equ 0D80H
L0D89: equ 0D89H
L0D90: equ 0D90H
L0F13: equ 0F13H
LETNL: equ 6H
LOAD: equ 0D9H
LOCK: equ 88BH
M?TBL: equ 241H
MANG: equ 1173H
MANGE: equ 1179H
MELDY: equ 30H
MGP.D: equ 29DH
MGP.I: equ 283H
MGPNT: equ 117CH
MLD1: equ 192H
MLD1A: equ 1B6H
MLD2: equ 1C6H
MLD2A: equ 1C8H
MLD3: equ 1CEH
MLD4: equ 1D2H
MLD5: equ 1D5H
MLDSP: equ 2BEH
MLDST: equ 2ABH
MONIT: equ 0H
MOT1: equ 6A8H
MOT2: equ 6AFH
MOT4: equ 6B9H
MOT5: equ 6D8H
MOT7: equ 6B7H
MOT8: equ 6D0H
MOT9: equ 6D7H
MOTOR: equ 6A3H
MSG: equ 15H
MSG1: equ 896H
MSG?2: equ 0F7H
MSG?3: equ 100H
MSG?7: equ 467H
MSGE1: equ 118H
MSGX: equ 18H
MSGX1: equ 8A4H
MSGX2: equ 8A7H
MSG_1: equ 0D9EH
MSG_2: equ 0DA0H
MSG_3: equ 6F4H
MSTA: equ 44H
MSTOP: equ 700H
MSTP: equ 47H
MTBL: equ 229H
NAME: equ 10F1H
NL: equ 9H
NOADD: equ 3E2H
OCTV: equ 11A0H
ONP1A: equ 1E1H
ONP2: equ 1EDH
ONP2A: equ 1FAH
ONP2B: equ 200H
ONP2C: equ 216H
ONP2D: equ 21BH
ONPU: equ 1DDH
ONTYO: equ 119FH
OPTBL: equ 259H
PAGETP: equ 117DH
PBIAS: equ 117AH
PRNT: equ 12H
PRNT2: equ 967H
PRNT2A: equ 968H
PRNT3: equ 96CH
PRNT4: equ 96FH
PRNT4A: equ 979H
PRNT5: equ 955H
PRNTS: equ 0CH
PRNTT: equ 0FH
PRTHL: equ 3B8H
PRTHX: equ 3C3H
RATIO: equ 11A1H
RBY1: equ 630H
RBY2: equ 649H
RBY3: equ 654H
RBYTE: equ 624H
RDDAT: equ 2AH
RDINF: equ 27H
RET3: equ 69FH
REV: equ 0A17H
REV1: equ 0A25H
REV2: equ 0A28H
REVFLG: equ 1190H
ROL2: equ 0F68H
ROLD: equ 0F59H
ROLEND: equ 117FH
ROLTOP: equ 117BH
ROLU: equ 0F9FH
ROLU1: equ 0FA9H
ROLUP: equ 5E8H
RYTHM: equ 2C8H
SCROL: equ 0E1FH
SCROL1: equ 0E32H
SCROL2: equ 0E42H
SCROL3: equ 0E55H
SFTLK: equ 118FH
SG: equ 0C1H
SIZE: equ 1102H
SPAGE: equ 1191H
SPV: equ 10F0H
SS: equ 89H
SS1: equ 8BH
ST1: equ 95H
ST2: equ 0A3H
START: equ 4AH
STRGF: equ 1193H
STRT1: equ 69H
SUMDT: equ 1197H
SWEP0: equ 0A76H
SWEP01: equ 0A74H
SWEP11: equ 0A8EH
SWEP2: equ 0AACH
SWEP3: equ 0A92H
SWEP6: equ 0A62H
SWEP7: equ 0AA5H
SWEP8: equ 0AA0H
SWEP9: equ 0A8AH
SWPW: equ 1164H
SWRK: equ 119DH
TEMPW: equ 119EH
TIMFG: equ 119CH
TIMIN: equ 379H
TIMRD: equ 3BH
TIMST: equ 33H
TM0: equ 66AH
TM1: equ 673H
TM2: equ 676H
TM3: equ 689H
TM4: equ 69FH
TMARK: equ 658H
TMCNT: equ 1195H
TVF1: equ 5A0H
TVF2: equ 5A6H
TVF3: equ 5BAH
TVRFY: equ 59BH
VERFY: equ 2DH
WRDAT: equ 24H
WRINF: equ 21H
XTEMP: equ 41H
_BRK: equ 0BC5H

View File

@@ -0,0 +1,401 @@
; V1.00
;
; To compile use:
;
; GLASS Z80 Assembler
;
; java -jar ../tools/glass.jar mz-1r12.asm mz-1r12.obj mz-1r12.sym
LETNL EQU 00006h
PRNT EQU 00012h
MSG EQU 00015h
GETKY EQU 0001Bh
RDINF EQU 00027h
RDDAT EQU 0002Ah
ST1 EQU 000ADh
QNL EQU 00918h
NAME EQU 010F1h
SIZE EQU 01102h
DTADR EQU 01104h
COMNT EQU 01108h
; Macro to align boundaries.
ALIGN: MACRO ?boundary, ?fill
DS ?boundary - 1 - ($ + ?boundary - 1) % ?boundary, ?fill
ENDM
ORG 0E800h
MZ1R12:
NOP
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
ST1X:
CALL LETNL
CALL LETNL
LD DE,LE83B ; 'PRESS R, W OR M'
CALL MSG
CALL LETNL
CALL LETNL
LD DE,LE85B ; 'R: READ S-RAM'
CALL MSG
CALL LETNL
LD DE,LE877 ; 'W: WRITE S-RAM'
CALL MSG
CALL LETNL
LD DE,LE893 ; 'M: MONITOR'
CALL MSG
CALL LETNL
JR LE8AB
LE83B: DB " P",005h,"RESS",005h," R , W ",005h,"OR",005h," M",00Dh
LE85B: DB " R:",005h,"READ",005h," S-RAM",00Dh
LE877: DB " W:",005h,"WRITE",005h," S-RAM",00Dh
LE893: DB " M:",005h,"MONITOR",005h,00Dh
LE8AB:
NOP
CALL GETKY
CP 'M'
JP Z,MON
CP 'W'
JP Z,LE96A
CP 'R'
JP Z,LE8C1
JP NZ,LE8AB
LE8C1:
NOP
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
CALL LETNL
LD DE,LEB1B ; 'LOADING PROGRAM FROM S-RAM'
CALL MSG
CALL LETNL
CALL LETNL
CALL CHECK
IN A,(0F8h) ; Counter reset
IN A,(0F9h)
LD C,A
IN A,(0F9h)
LD B,A
IN A,(0F9h)
LD L,A
IN A,(0F9h)
LD H,A
IN A,(0F9h)
LD E,A
IN A,(0F9h)
LD D,A
PUSH DE
LD D,B
LD E,C
IN A,(0F9h)
LD C,A
IN A,(0F9h)
LD B,A
IN A,(0F9h)
PUSH BC
PUSH DE
PUSH HL
LD C,0F9h
LD A,E
OR A
JR Z,LE90A
LD B,A
LE908:
INIR
LE90A:
LD B,000h
DEC D
JP P,LE908
POP DE ; Data adr
POP BC ; Size
CALL SUM
POP DE
OR A
SBC HL,DE
JR NZ,LE956
POP HL
JP (HL)
;
; sum check
;
; IN BC=Size
; DE=Data adr
; EXIT HL=Check sum
;
SUM:
PUSH BC
PUSH DE
EXX
LD HL,00000h ; HL'= Check sum clr
LD C,008h ; C' = Loop count
EXX
SUMCK1:
LD A,B ; BC = Size
OR C
JR Z,SUMCK2
LD A,(DE) ; DE = Data adrs
EXX
LD B,C ; BC'
SUMCK3:
RLCA
JR NC,LE931
INC HL ; HL' = Check sum data
LE931:
DJNZ SUMCK3
EXX
INC DE ; DE
DEC BC ; BC
JP SUMCK1
SUMCK2:
EXX
POP DE
POP BC
RET
;
; Information's sum check
;
CHECK:
IN A,(0F8h) ; Counter reset
LD BC,00800h ; B=Byte Counter C=Sum Counter
CK1:
IN A,(0F9h) ; Counter=Counter+1
PUSH BC
LD B,008h ; Bit Counter
CK2:
RLCA
JR NC,LE94B
INC C
LE94B:
DJNZ CK2
LD A,C
POP BC
LD C,A
DJNZ CK1
IN A,(0F9h)
CP C
RET
LE956:
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
LD DE,LEA8F ; 'CHECK SUM ERROR'
CALL LEA3D
JP ST1X
LE96A:
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
CALL LETNL
LD DE,LEAAC ; 'S-RAM PROGRAMMING'
CALL LEA36
LD DE,LEACB ; 'SET MASTER TAPE PLAY'
LD A,011h
LD HL,0D8F0h
CALL LEA4A
CALL LETNL
CALL LEA39
CALL RDINF
PUSH AF
PUSH BC
LD BC,(SIZE)
LD A,07Fh
CP B
JR C,LE9A8
JR NZ,LE9A4
LD A,0F6h
CP C
JR C,LE9A8
LE9A4:
POP BC
POP AF
JR LE9AD
LE9A8:
POP BC
POP AF
JP LEA74
LE9AD:
LD A,000h
LD HL,0D0F0h
CALL LEA4A
LD A,071h
LD HL,0D8F0h
CALL LEA4A
LD A,002h
JP C,LEA42
CALL LETNL
LD DE,LEAF1 ; 'FOUND : '
CALL LEA3D
LD DE,NAME
PUSH DE
RST 018h
CALL LETNL
LD DE,LEB06 ; 'LOADING : '
CALL LEA3D
POP DE
RST 018h
;
; Read data block
;
CALL RDDAT
JR C,LEA42
;
; Counter reset
;
IN A,(0F8h)
;
; Sum check for data
;
LD DE,(DTADR)
LD BC,(SIZE)
PUSH DE
PUSH BC
CALL SUM
LD (COMNT),HL
;
; Write information (8Byte)
;
LD HL,SIZE
LD BC,008FAh ; B=Byte Counter
PUSH HL
PUSH BC
OTIR
POP BC
POP HL
;
; Sum check for information block
; AccCheck sum data
;
PUSH DE ; DE Size
LD D,000h ; Sum Counter
WCK1:
PUSH BC
LD B,008h
LD A,(HL)
WCK2:
RLCA
JR NC,WCK3
INC D
WCK3:
DJNZ WCK2
INC HL
POP BC
DJNZ WCK1
LD A,D
POP DE
OUT (0FAh),A
;
; Write data block
;
POP DE ; DE Size
POP HL ; HL Data adrs
LD A,E
OR A
JR Z,LEA1C
LD B,E
LEA1A:
OTIR
LEA1C:
LD B,000h
DEC D
JP P,LEA1A
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
LD DE,LEB8C ; 'WRITING S-RAM O.K.!'
CALL MSG
JP ST1X
LEA36:
CALL QNL
LEA39:
RST 018h
JP QNL
LEA3D:
CALL QNL
RST 018h
RET
LEA42:
CP 002h
JP Z,LEA60
JP LE956
LEA4A:
LD B,006h
LEA4C:
LD (HL),A
INC HL
DEC B
JR NZ,LEA4C
RET
MON:
LD A,016h
CALL PRNT
LD DE,LEB3E ; '** MONITOR 1Z-009A **'
CALL MSG
JP ST1
LEA60:
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
LD DE,LEB77 ; 'BREAK !'
CALL MSG
JP ST1X
LEA74:
LD DE,00000h
LD (SIZE),DE
LD A,016h
CALL PRNT
CALL LETNL
CALL LETNL
LD DE,LEBAD ; 'FILE IS TOO LONG'
CALL MSG
JP ST1X
LEA8F: DB " C",005h,"HECK SUM ERROR",005h,00Dh
LEAAC: DB " S-RAM ",005h,"PROGRAMMING",005h,00Dh
LEACB: DB " S",005h,"ET MASTER TAPE",005h," ",07Fh,"P",005h,"LAY",005h," ",00Dh
LEAF1: DB " F",005h,"OUND",005h," : ",00Dh
LEB06: DB " L",005h,"OADING",005h,": ",00Dh
LEB1B: DB " L",005h,"OADING PROGRAM FROM ",005h,"S-RAM",00Dh
LEB3E: DB "** MONITOR 1Z-009A **",00Dh
LEB56: DB " R",005h,"EADING",005h," S-RAM O.K.!",00Dh
LEB77: DB " B",005h,"REAK",005h," !",00Dh
LEB8C: DB " W",005h,"RITING",005h," S-RAM O.K.!",00Dh
LEBAD: DB " F",005h,"ILE IS TOO LONG",005h,00Dh
; the following is only to get the original length of 4096 bytes
ALIGN 0F7FFh, 0FFh
DB 0FFh

Binary file not shown.

View File

@@ -0,0 +1,49 @@
CHECK: equ 0E93DH
CK1: equ 0E942H
CK2: equ 0E947H
LE83B: equ 0E83BH
LE85B: equ 0E85BH
LE877: equ 0E877H
LE893: equ 0E893H
LE8AB: equ 0E8ABH
LE8C1: equ 0E8C1H
LE908: equ 0E908H
LE90A: equ 0E90AH
LE931: equ 0E931H
LE94B: equ 0E94BH
LE956: equ 0E956H
LE96A: equ 0E96AH
LE9A4: equ 0E9A4H
LE9A8: equ 0E9A8H
LE9AD: equ 0E9ADH
LEA1A: equ 0EA1AH
LEA1C: equ 0EA1CH
LEA36: equ 0EA36H
LEA39: equ 0EA39H
LEA3D: equ 0EA3DH
LEA42: equ 0EA42H
LEA4A: equ 0EA4AH
LEA4C: equ 0EA4CH
LEA60: equ 0EA60H
LEA74: equ 0EA74H
LEA8F: equ 0EA8FH
LEAAC: equ 0EAACH
LEACB: equ 0EACBH
LEAF1: equ 0EAF1H
LEB06: equ 0EB06H
LEB1B: equ 0EB1BH
LEB3E: equ 0EB3EH
LEB56: equ 0EB56H
LEB77: equ 0EB77H
LEB8C: equ 0EB8CH
LEBAD: equ 0EBADH
MON: equ 0EA52H
MZ1R12: equ 0E800H
ST1X: equ 0E80CH
SUM: equ 0E91DH
SUMCK1: equ 0E926H
SUMCK2: equ 0E939H
SUMCK3: equ 0E92DH
WCK1: equ 0EA01H
WCK2: equ 0EA05H
WCK3: equ 0EA09H

1483
software/asm/mz-1e14.asm Normal file

File diff suppressed because it is too large Load Diff

661
software/asm/mz80kfdif.asm Normal file
View File

@@ -0,0 +1,661 @@
;
; MZ-80K FDC ROM
;
ORG F000H
F000 00 NOP
F001 F3 DI
F002 AF XOR A
F003 329C11 LD (#119C),A ;clock off
F006 3EC3 LD A,#C3 ;JP code for error trap
F008 320B10 LD (#100B),A
F00B 215AF0 LD HL,#F05A ;error can't boot
F00E 220C10 LD (#100C),HL ;error trap
F011 11F09F LD DE,#9FF0 ;transfer 9 bytes from
F014 2187F0 LD HL,#F087 ;ROM to RAM for use
;
;IBT1
;
F017 010900 IBT1: LD BC,#0009 ;by (IX+D) in reader
F01A EDB0 LDIR
F01C CD0900 CALL CRLF ;NL
F01F 117AF0 LD DE,MESS1
F022 CD1500 CALL MESSAGE ;msg "BOOT DRIVE ?"
F025 11009F LD DE,BUFF2
F028 CD0300 CALL USER ;get line
F02B 210C00 LD HL,#000C
F02E 19 ADD HL,DE ;skip around msg
F02F 7E LD A,(HL) ;pickup answer to prompt
F030 FE0D CP #0D ;CR ?
F032 2002 JR NZ,#F036 ;Z=CR assume drive 1
F034 3E31 LD A,#31 ;ASCII for 1
;
;IBT2
;
F036 47 IBT2: LD B,A ;save driveno
F037 E6F0 AND #F0 ;take ASCII and convert
F039 FE30 CP #30 ;to numeric having
F03B 20DF JR NZ,IBT1 ;checked >1 & <=4
F03D 78 LD A,B ;get driveno
F03E E60F AND #0F ;mask
F040 3D DEC A ;-1 00-03
F041 FE04 CP #04
F043 30D7 JR NC,IBT1 ;dud key, >=4, try again
F045 32F09F LD (#9FF0),A ;save drive no
F048 321110 LD (#1011),A ;save drive no
F04B DD21F09F LD IX,#9FF0 ;IX pointer to fdc parameters at 9FF0
;ready for disk read
F04F CD3BF1 CALL READER ;get boot records
F052 3A0098 LD A,(#9800) ;1st byte of input buffer of boot records
F055 FEC3 CP #C3 ;jump cmd?
F057 CA0098 JP Z,#9800 ;yes, execute to 9800
;
;IBT3
;
F05A 31F010 IBT3: LD SP,#10F0 ;no, reset stack
F05D CD0900 CALL CRLF ;NL
F060 116CF0 LD DE,MESS2 ;msg can't boot
F063 CD1500 CALL MESSAGE
F066 CDA7F0 CALL MOTOFF ;motor off
F069 C38200 JP MAINLP ;warm start, ret to monitor
;
;MESS2
;
F06C 45523A43 MESS2: DB "ER:CAN'T BOOT"
F070 414E2754
F074 20424F4F
F078 54
F079 0D DB 0DH
;
;MESS1
;
F07A 424F4F54 DB "BOOT DRIVE ?"
F07E 20445249
F082 5645203F
F086 0D DB 0DH
;
;DDATA
;fdc parameters
;
F087 00 DB 00H ;drive no-1
F088 00 DB 00H ;trk*2 remainder = head
F089 01 DB 01H ;sector no (range: 01 - 10)
F08A 00 DB 00H ;$80 = add 1 record to read to (F08B)
F08B 0700 DB 07H ;07H = 07*2 = 14 sectors to read, add 1 if (F08A = $80)
F08D 0098 DB 00H,98H ;9800H = load addr.
F08F 00 DB 00H ;no meaning
;
;MOTON
;
F090 C5 MOTON: PUSH BC ;starts motors
F091 01F808 LD BC,#08F8
F094 ED78 IN A,(C) ;start motor
F096 010000 LD BC,#0000
;
;WAIT1
;
F099 0B WAIT1: DEC BC ;wait for motor to
F09A 00 NOP ;get up to speed
F09B 00 NOP
F09C 78 LD A,B
F09D B1 OR C
F09E 20F9 JR NZ,WAIT1
F0A0 3E01 LD A,#01
F0A2 320210 LD (MOTFLG),A ;01=on 00=off
F0A5 C1 POP BC
F0A6 C9 RET
;
;MOTOFF
;
F0A7 C5 MOTOFF: PUSH BC ;stop motors
F0A8 CDAEF1 CALL LNGDEL ;timed wait
F0AB 01F800 LD BC,#00F8
F0AE ED78 IN A,(C)
F0B0 C1 POP BC
F0B1 C9 RET
;
;SKZERO
;
F0B2 CDBDF0 SKZERO: CALL DREADY ;seek track 0
F0B5 AF XOR A
F0B6 D3F9 OUT (#F9),A ;clear track reg
F0B8 320010 LD (#1000),A
F0BB D3FA OUT (#FA),A ;send seek zero code
;
;DREADY
;
F0BD C5 DREADY: PUSH BC
F0BE 010000 LD BC,#0000
;
;DRY1
;
F0C1 DBF9 DRY1: IN A,(#F9) ;get DRDY, CRDY, RQM
F0C3 E603 AND #03 ;leave DRDY, CRDY
;
;DRY2
;
F0C5 FE02 DRY2: CP #02 ;wait for DRDY & CRDY
F0C7 2002 JR NZ,WAIT2 ;no, =03
F0C9 C1 POP BC ;yes, =02
F0CA C9 RET
;
;WAIT2
;
F0CB 0B WAIT2: DEC BC
F0CC 78 LD A,B
F0CD B1 OR C
F0CE 20F1 JR NZ,DRY1
F0D0 C1 POP BC
F0D1 3E32 LD A,#32
F0D3 320810 LD (#1008),A ;error 40 (not found)
F0D6 C30B10 JP #100B ;error can't boot
;
;STATUS
;
F0D9 DBFA STATUS: IN A,(#FA) ;read status
F0DB E6F0 AND #F0
F0DD 07 RLCA
F0DE 30F9 JR NC,STATUS ;wait for CRDY
F0E0 E6F0 AND #F0 ;mask leave CRDY, S1, S2, S3
F0E2 0F RRCA ;move right until S§
F0E3 0F RRCA ;is in B0
F0E4 0F RRCA
F0E5 0F RRCA
F0E6 B7 OR A ;clear flags
F0E7 C8 RET Z ;Z=ok
F0E8 FE0C CP #0C ;0C=drive not ready etc.
F0EA 2004 JR NZ,STS1
F0EC 3E32 LD A,#32 ;error code 40 (not found)
F0EE 180A JR STS3
;
STS1
;
F0F0 FE04 STS1: CP #04 ;04=ID not found
F0F2 2004 JR NZ,STS2
F0F4 3E36 LD A,#36 ;error code 54 (unformat error)
F0F6 1802 JR STS3
;
;STS2
;
F0F8 3E29 STS2: LD A,#29
F0FA 320810 LD (#1008),A ;error code 41 disk hw error
F0FD 37 SCF
F0FE C9 RET
;
;PRMDRV
;
F0FF C5 PRMDRV: PUSH BC ;prime drive
F100 E5 PUSH HL
F101 CD90F0 CALL MOTON
F104 DD7E00 LD A,(IX+#00) ;get drive no-1
F107 E603 AND #03 ;form drive code
F109 F61C OR #1C ;set TND, MOTOR, SELECT BIT
F10B 320110 LD (#1001),A ;keep drive code
F10E E60F AND #0F ;mask out TND
F110 47 LD B,A
F111 0EF8 LD C,#F8
F113 ED60 IN H,(C) ;select drive
F115 3E32 LD A,#32
;
;PRM1
;
F117 CDAEF1 PRM1: CALL LNGDEL ;wait for head
F11A 3D DEC A :to load
F11B 20FA JR NZ,PRM1
F11D 010000 LD BC,#0000
;
;PRM2
;
F120 DBF9 PRM2: IN A,(#F9) ;get DRDY, CRDY, RQM
F122 E607 AND #07 ;mask out RUBBISH
F124 FE06 CP #06 ;DRDY & CRDY ?
F126 2006 JR NZ,PRM3 ;NZ=no, keep trying
F128 CDB2F0 CALL SKZERO
F12B E1 POP HL
F12C C1 POP BC
F12D C9 RET ;correct exit
;
;PRM3
;
F12E 0B PRM3: DEC BC
F12F 78 LD A,B
F130 B1 OR C
F131 20ED JR NZ,PRM2
F133 3E32 LD A,#32
F135 320810 LD (#1008),A ;error 40 (not found)
F138 C30B10 JP #100B ;abort; error can't boot
;
;READER
;
F13B 3E0A READER: LD A,#0A ;no. of tries
F13D 320710 LD (#1007),A
;
;RDR1
;
F140 CDFFF0 RDR1: CALL PRMDRV
F143 3A0110 LD A,(#1001) ;keep drive in use
F146 47 LD B,A
F147 0EF8 LD C,#F8
F149 D9 EXX ;save all regs
F14A 0EFB LD C,#FB ;port fb??
F14C DD5E03 LD E,(IX+#03) ;no meaning
F14F DD5604 LD D,(IX+#04) ;get half of numbers to read (7)
F152 CB13 RL E ;B7 to carry
F154 CB12 RL D ;double number of sectors (14), add carry
F156 1E03 LD E,#03 ;no meaning
F158 DD6E05 LD L,(IX+#05) ;get loading address lo
F15B DD6606 LD H,(IX+#06) ;hi into HL
F15E CDBDF0 CALL DREADY
F161 AF XOR A ;no meaning
F162 DD7E01 LD A,(IX+#01) ;get track to read
F165 1F RRA ;divide by 2, remainder to carry = head no.
F166 D3F9 OUT (#F9),A ;send track to FDC
F168 DD7E02 LD A,(IX+#02) ;sector number
F16B 3002 JR NC,RDR2
F16D F680 OR #80 ;odds/evens for side code
;
;RDR2
;
F16F D3F8 RDR2: OUT (#F8),A ;send sect+side
F171 CDA6F1 CALL SHTDEL ;short delay
F174 3E70 LD A,#70 ;seek & read code
F176 320010 LD (#1000),A ;keep it
F179 F3 DI
F17A D3FA OUT (#FA),A ;send seek & read code to FDC
;
;RDR3
;
F17C 0680 RDR3: LD B,#80 ;128 bytes/sector
;
;RDR4
;
F17E DBF9 RDR4: IN A,(#F9) ;get DRDY, CRDY, RQM
F180 A3 AND E ;mask with 03
F181 28FB JR Z,RDR4 ;wait for either CRDY/RQM
F183 0F RRCA ;RQM into carry
F184 300C JR NC,RDR5 ;NC=no RQM
F186 EDA2 INI ;get data. port FB to (HL), B=B-1
F188 C27EF1 JP NZ,RDR4 ;do whole sector
F18B 15 DEC D ;dec sector counter
F18C C27CF1 JP NZ,RDR3 ;NZ=more to do
F18F D9 EXX ;restore all regs
F190 ED78 IN A,(C) ;send TND high
;
;RDR5
;
F192 CDD9F0 RDR5: CALL STATUS
F195 D0 RET NC ;NC=good read
F196 3A0710 LD A,(#1007)
F199 3D DEC A ;A try gone
F19A 320710 LD (#1007),A ;counter 10times
F19D CA0B10 JP Z,#100B ;can't read at all abort
F1A0 CDB2F0 CALL SKZERO
F1A3 C340F1 JP RDR1
;
;SHTDEL
;
F1A6 F5 SHTDEL: PUSH AF
F1A7 3E0A LD A,#0A
;
;SDY1
;
F1A9 3D SDY1: DEC A
F1AA 20FD JR NZ,SDY1
F1AC F1 POP AF
F1AD C9 RET
;
;LNGDEL
;
F1AE F5 LNGDEL: PUSH AF ;long delay
F1AF 3E0A LD A,#0A
;
;LDY1
;
F1B1 CDA6F1 LDY1: CALL SHTDEL
F1B4 3D DEC A
F1B5 20FA JR NZ,LDY1
F1B7 F1 POP AF
F1B8 C9 RET
CRLF: EQU 00009H
MESSAGE: EQU 00015H
BUFF2: EQU 9F00H
USER: EQU 00003H
MAINLP: EQU 00082H
MOTFLG: EQU 1002H
END
;
;no meaning !!
;
F1B9 13 INC DE
F1BA 1B DEC DE
F1BB 72 LD (HL),D
F1BC DE42 SBC A,#42
F1BE FB EI
F1BF 2F CPL
F1C0 58 LD E,B
F1C1 43 LD B,E
F1C2 7C LD A,H
F1C3 52 LD D,D
F1C4 3023 JR NC,#F1E9 ; (35)
F1C6 71 LD (HL),C
F1C7 42 LD B,D
F1C8 1020 DJNZ #F1EA ; (32)
F1CA 74 LD (HL),H
F1CB 40 LD B,B
F1CC 43 LD B,E
F1CD 03 INC BC
F1CE 51 LD D,C
F1CF 00 NOP
F1D0 3C INC A
F1D1 42 LD B,D
F1D2 D8 RET C
F1D3 60 LD H,B
F1D4 FB EI
F1D5 09 ADD HL,BC
F1D6 FC402C CALL M,#2C40
F1D9 80 ADD A,B
F1DA 79 LD A,C
F1DB 2A4940 LD HL,(#4049)
F1DE 4D LD C,L
F1DF EE3E XOR #3E
F1E1 B2 OR D
F1E2 1EA2 LD E,#A2
F1E4 58 LD E,B
F1E5 02 LD (BC),A
F1E6 58 LD E,B
F1E7 12 LD (DE),A
F1E8 02 LD (BC),A
F1E9 43 LD B,E
F1EA 02 LD (BC),A
F1EB 220002 LD (#0200),HL
F1EE 2D DEC L
F1EF 4B LD C,E
F1F0 5A LD E,D
F1F1 0A LD A,(BC)
F1F2 40 LD B,B
F1F3 4A LD C,D
F1F4 13 INC DE
F1F5 42 LD B,D
F1F6 45 LD B,L
F1F7 0A LD A,(BC)
F1F8 5B LD E,E
F1F9 6E LD L,(HL)
F1FA 6A LD L,D
F1FB 4E LD C,(HL)
F1FC 4E LD C,(HL)
F1FD 4E LD C,(HL)
F1FE 5D LD E,L
F1FF 7E LD A,(HL)
F200 3011 JR NC,#F213 ; (17)
F202 DD300E JR NC,#F213 ; (14)
F205 067E LD B,#7E
F207 FE3A CP #3A
F209 CAC221 JP Z,#21C2
F20C 12 LD (DE),A
F20D 23 INC HL
F20E 13 INC DE
F20F 0D DEC C
F210 C20622 JP NZ,#2206
F213 C3C221 JP #21C2
F216 3AB830 LD A,(#30B8)
F219 FEB1 CP #B1
F21B CA4522 JP Z,#2245
F21E 2A5030 LD HL,(#3050)
F221 CD1E20 CALL #201E
F224 7E LD A,(HL)
F225 FE27 CP #27
F227 CA5722 JP Z,#2257
F22A 3E84 LD A,#84
F22C 327630 LD (#3076),A
F22F 3E02 LD A,#02
F231 327730 LD (#3077),A
F234 CDCA13 CALL #13CA
F237 D24A22 JP NC,#224A
F23A 2E00 LD L,#00
F23C 3EB2 LD A,#B2
F23E 32C830 LD (#30C8),A
F241 7D LD A,L
F242 326F30 LD (#306F),A
F245 3E01 LD A,#01
F247 C3C321 JP #21C3
F24A 3ABE30 LD A,(#30BE)
F24D FEC5 CP #C5
F24F C23C22 JP NZ,#223C
F252 3EB0 LD A,#B0
F254 C33E22 JP #223E
F257 23 INC HL
F258 7E LD A,(HL)
F259 E67F AND #7F
F25B 6F LD L,A
F25C C33C22 JP #223C
F25F 3AB830 LD A,(#30B8)
F262 FEB1 CP #B1
F264 CA9022 JP Z,#2290
F267 2A5030 LD HL,(#3050)
F26A CD1E20 CALL #201E
F26D 3E80 LD A,#80
F26F 327630 LD (#3076),A
F272 3E01 LD A,#01
F274 327730 LD (#3077),A
F277 CDCA13 CALL #13CA
F27A D29522 JP NC,#2295
F27D 210000 LD HL,#0000
F280 3E82 LD A,#82
F282 32C830 LD (#30C8),A
F285 226330 LD (#3063),HL
F288 116F30 LD DE,#306F
F28B 7C LD A,H
F28C 12 LD (DE),A
F28D 13 INC DE
F28E 7D LD A,L
F28F 12 LD (DE),A
F290 3E02 LD A,#02
F292 C3C321 JP #21C3
F295 3ABE30 LD A,(#30BE)
F298 FEC5 CP #C5
F29A C2A222 JP NZ,#22A2
F29D 3EB1 LD A,#B1
F29F C38222 JP #2282
F2A2 CDEA1A CALL #1AEA
F2A5 C38222 JP #2282
F2A8 2A5030 LD HL,(#3050)
F2AB CD1E20 CALL #201E
F2AE 116F30 LD DE,#306F
F2B1 0600 LD B,#00
F2B3 0E04 LD C,#04
F2B5 7E LD A,(HL)
F2B6 23 INC HL
F2B7 FE27 CP #27
F2B9 C2F822 JP NZ,#22F8
F2BC 7E LD A,(HL)
F2BD FE27 CP #27
F2BF C2DE22 JP NZ,#22DE
F2C2 3AB830 LD A,(#30B8)
F2C5 FEB1 CP #B1
F2C7 CAD522 JP Z,#22D5
F2CA AF XOR A
F2CB 21C830 LD HL,#30C8
F2CE B8 CP B
F2CF CAD922 JP Z,#22D9
F2D2 3EB3 LD A,#B3
F2D4 77 LD (HL),A
F2D5 78 LD A,B
F2D6 C3C321 JP #21C3
F2D9 3EB4 LD A,#B4
F2DB C3D422 JP #22D4
F2DE FE8D CP #8D
F2E0 CAF822 JP Z,#22F8
F2E3 FE0A CP #0A
F2E5 CAF822 JP Z,#22F8
F2E8 E67F AND #7F
F2EA 12 LD (DE),A
F2EB 23 INC HL
F2EC 13 INC DE
F2ED 04 INC B
F2EE 0D DEC C
F2EF C2BC22 JP NZ,#22BC
F2F2 117A30 LD DE,#307A
F2F5 C3BC22 JP #22BC
F2F8 3E53 LD A,#53
F2FA CD111C CALL #1C11
F2FD C3C222 JP #22C2
F300 CDE511 CALL #11E5
F303 CD0C20 CALL #200C
F306 FE3A CP #3A
F308 C26423 JP NZ,#2364
F30B 2A5030 LD HL,(#3050)
F30E CD1E20 CALL #201E
F311 3E80 LD A,#80
F313 327630 LD (#3076),A
F316 3E02 LD A,#02
F318 327730 LD (#3077),A
F31B CDCA13 CALL #13CA
F31E DA2E23 JP C,#232E
F321 3ACC30 LD A,(#30CC)
F324 FE01 CP #01
F326 C23123 JP NZ,#2331
F329 3ECC LD A,#CC
F32B CD111C CALL #1C11
F32E 210000 LD HL,#0000
F331 3AB830 LD A,(#30B8)
F334 FEB1 CP #B1
F336 CA6E23 JP Z,#236E
F339 FEB2 CP #B2
F33B CAC221 JP Z,#21C2
F33E 226330 LD (#3063),HL
F341 3EA2 LD A,#A2
F343 32C830 LD (#30C8),A
F346 CDB51D CALL #1DB5
F349 06DD LD B,#DD
F34B 30CD JR NC,#F31A ; (-51)
F34D E5 PUSH HL
F34E 1111DD LD DE,#DD11
F351 300E JR NC,#F361 ; (14)
F353 067E LD B,#7E
F355 FE3A CP #3A
F357 CAC221 JP Z,#21C2
F35A 12 LD (DE),A
F35B 23 INC HL
F35C 13 INC DE
F35D 0D DEC C
F35E C25423 JP NZ,#2354
F361 C3C221 JP #21C2
F364 3E4E LD A,#4E
F366 CD111C CALL #1C11
F369 3EB4 LD A,#B4
F36B C3BF21 JP #21BF
F36E EB EX DE,HL
F36F 2A4D31 LD HL,(#314D)
F372 2B DEC HL
F373 2B DEC HL
F374 2B DEC HL
F375 72 LD (HL),D
F376 23 INC HL
F377 73 LD (HL),E
F378 23 INC HL
F379 3680 LD (HL),#80
F37B C3C221 JP #21C2
F37E CC44A0 CALL Z,#A044
F381 41 LD B,C
F382 AC XOR H
F383 2842 JR Z,#F3C7 ; (66)
F385 C3A9F1 JP #F1A9
F388 0A LD A,(BC)
F389 CC44A0 CALL Z,#A044
F38C 41 LD B,C
F38D AC XOR H
F38E 2844 JR Z,#F3D4 ; (68)
F390 C5 PUSH BC
F391 A9 XOR C
F392 F1 POP AF
F393 1A LD A,(DE)
F394 CC44A0 CALL Z,#A044
F397 2842 JR Z,#F3DB ; (66)
F399 C3A9AC JP #ACA9
F39C 41 LD B,C
F39D F1 POP AF
F39E 02 LD (BC),A
F39F CC44A0 CALL Z,#A044
F3A2 2844 JR Z,#F3E8 ; (68)
F3A4 C5 PUSH BC
F3A5 A9 XOR C
F3A6 AC XOR H
F3A7 41 LD B,C
F3A8 F1 POP AF
F3A9 12 LD (DE),A
F3AA CC44A0 CALL Z,#A044
F3AD 41 LD B,C
F3AE AC XOR H
F3AF C9 RET
F3B0 F2ED57 JP P,#57ED
F3B3 CC44A0 CALL Z,#A044
F3B6 41 LD B,C
F3B7 AC XOR H
F3B8 D2F2ED JP NC,#EDF2
F3BB 5F LD E,A
F3BC CC44A0 CALL Z,#A044
F3BF C9 RET
F3C0 AC XOR H
F3C1 41 LD B,C
F3C2 F2ED47 JP P,#47ED
F3C5 CC44A0 CALL Z,#A044
F3C8 D2AC41 JP NC,#41AC
F3CB F2ED4F JP P,#4FED
F3CE CC44A0 CALL Z,#A044
F3D1 53 LD D,E
F3D2 50 LD D,B
F3D3 AC XOR H
F3D4 48 LD C,B
F3D5 CCF1F9 CALL Z,#F9F1
F3D8 CC44A0 CALL Z,#A044
F3DB 53 LD D,E
F3DC 50 LD D,B
F3DD AC XOR H
F3DE C9 RET
F3DF D8 RET C
F3E0 F2DDF9 JP P,#F9DD
F3E3 CC44A0 CALL Z,#A044
F3E6 53 LD D,E
F3E7 50 LD D,B
F3E8 AC XOR H
F3E9 C9 RET
F3EA 59 LD E,C
F3EB F2FDF9 JP P,#F9FD
F3EE 50 LD D,B
F3EF 55 LD D,L
F3F0 53 LD D,E
F3F1 48 LD C,B
F3F2 A0 AND B
F3F3 42 LD B,D
F3F4 C3F1C5 JP #C5F1
F3F7 50 LD D,B
F3F8 55 LD D,L
F3F9 53 LD D,E
F3FA 48 LD C,B
F3FB A0 AND B
F3FC 44 LD B,H
F3FD C5 PUSH BC
F3FE F1 POP AF
F3FF D5 PUSH DE

View File

@@ -0,0 +1,620 @@
; V1.10
;
; To compile use:
;
; AS80 [1.31] - Assembler for 8080/8085/Z80 microprocessor.
;
; Available from:
; - http://www.falstaff.demon.co.uk/cross.html
; - ftp://ftp.simtel.net/pub/simtelnet/msdos/crossasm/as80_131.zip
; - and many Simtel mirrors.
;
; as80 -i -l -n -x2 -v -z mz-1e05.asm
;
;----< MFM Minifloppy control >----
;
;
; Call condition
;
; Case of disk initialize
; Drive N = IX+0 (0 - 3)
;
;
; Case of sequential read & write
; Drive N = IX+0 (0 - 3)
;
; Sector addrs = IX+1,2 (0 - $045F) H C S
; (0 - 1119) -> 70 x 16 sectors -> 2 x 35 x 16
; Byte size = IX+3,4
; Address = IX+5,6
; Next track = IX+7
; Next sector = IX+8
; Start track = IX+9
; Start sector = IX+10
;
;
; I/O Port address
;
CR EQU 0D8h ; CommandRegister
TR EQU 0D9h ; TrackRegister
SCR EQU 0DAh ; SeCtorRegister
DR EQU 0DBh ; DataRegister
DM EQU 0DCh ; DriveMotor
HS EQU 0DDh ; HeadSelect
TIMST EQU 00033h
;
; Subroutine work
;
BPRO EQU 0CF00h
BUF EQU 011A3h
BPARA EQU BPRO - 23 ; BootPARAmeter
CMD EQU BPARA + 11 ; CoMmanD
MTFG EQU CMD + 1 ; MoTorFlaG
CLBF0 EQU MTFG + 1
CLBF1 EQU CLBF0 + 1
CLBF2 EQU CLBF1 + 1
CLBF3 EQU CLBF2 + 1
VRFCNT EQU CLBF3 + 1 ; VeRiFyCouNT
STAFG EQU VRFCNT + 1 ; STAtusFlaG
; Macro to align boundaries.
ALIGN: MACRO ?boundary, ?fill
DS ?boundary - 1 - ($ + ?boundary - 1) % ?boundary, ?fill
ENDM
;
;
;--------< Ercode map >--------
;
; 50 : Not ready
; 41 : Data error
; Track 80 err
; Write protect err
; Seek err
; CRC err
; Lost data
; 54 : Unformat
; Recode not found
; 56 : Invalid data
;
;
ORG 0F000h
MZ_1E05:
NOP
LD HL,000ADh
JR L_F007
FDX:
EX (SP),HL
L_F007:
LD (BPARA + 21),HL
XOR A
LD DE,0
CALL TIMST
CALL FDCC ; FD i/o check
JP NZ,NOTIO
LD DE,BPARA ; destination address
LD HL,BOOT ; source address
LD BC,11 ; 11 bytes
LDIR ; copy
SJP:
LD IX,BPARA
CALL BREAD ; read from drive 0, sector 0,
;
LD HL,BPRO ; compare this address
LD DE,IPLMC ; with the IPL MasterCode
LD B,7 ; this are 7 bytes : 3,'IPLPRO'
MCHECK:
LD C,(HL)
LD A,(DE)
CP C
JP NZ,MASTE ; not equal than MasterError
INC HL
INC DE
DJNZ MCHECK
; else Master was found
LD DE,IPLM0 ; 'IPL IS LOADING'
RST 018h
LD DE,BPRO + 7 ; NAME
RST 018h
LD HL,(BPRO + 016h) ; TARGETADDRESS from BootBlock
LD A,H
OR L
JR NZ,L_F051 ; if it is != 0 than normal file
LD HL,(BPRO + 018h) ; TARGETADDRESS from BootBlock
LD A,H
OR L
JR Z,L_F057 ; if it is also 0 than ROM replace file
L_F051:
XOR A ; else normal file,
LD HL,(BPRO + 018h) ; TARGETADDRESS from BootBlock
JR L_F05C
L_F057:
LD A,0FFh ; target is at $0000, bankswitching is needed
LD HL,01200h ; for now use temporary buffer at $1200
L_F05C:
LD (0CEFDh),A
LD (IX + 5),L ; set the TargetAddress
LD (IX + 6),H
LD HL,(BPRO + 014h) ; BYTE SIZE from BootBlock
LD (IX + 3),L
LD (IX + 4),H
LD HL,(BPRO + 01Eh) ; START SECTOR from BootBlock
LD (IX + 1),L
LD (IX + 2),H
;
CALL BREAD
CALL MOFF
LD A,(0CEFDh)
CP 0FFh
JR NZ,L_F093
OUT (0E0h),A
LD HL,01200h ; SourceAddress
LD DE,(BPRO + 016h) ; TargetAddress
LD BC,(BPRO + 014h) ; ByteCounter
LDIR ; copy
L_F093:
LD BC,00200h ; Default code
LD HL,(BPRO + 018h) ; TARGET/EXECUTION ADDRESS from BootBlock
JP (HL)
MASTE:
CALL MOFF
LD DE,ERRM1 ; 'NOT MASTER'
JR ERRTR1
ERRTRT:
CP 50
NOTIO:
LD DE,IPLM3 ; 'MAKE READY FD'
JR Z,ERRTR1
LD DE,ERRM0 ; 'FD:LOADING ERROR'
ERRTR1:
CALL 00009h
RST 018h
LD SP,010EEh
LD HL,(BPARA + 21)
EX (SP),HL
RET
;
;
; PARAMETER SETTING
;
IPLMC:
DB 003h ; IPL MASTER FLAG
DB "IPLPRO"
BOOT:
DB 000h ; DRIVE NO.
DW 00000h ; SECTOR ADDR.
DW 00100h ; IFM BYTE SIZE
DW BPRO ; IFM LOADING ADDR.
DW 00000h ; IX+7,8 (track 0, sector 0)
ERRM1:
DB "FD:NOT MASTER",00Dh
IPLM0:
DB "IPL IS LOADING ",00Dh
IPLM3:
DB "MAKE READY FD",00Dh
ERRM0:
DB "FD:LOADING ERROR",00Dh
FDCC:
LD A,0A5h
LD B,A
OUT (TR),A
CALL DLY80U
IN A,(TR)
CP B
RET
L_F111:
DB 000h, 000h
;
;
; READY CHECK
;
READY:
LD A,(MTFG)
RRCA
CALL NC,MTON
LD A,(IX + 0) ; DRIVE NO SET
OR 084h
OUT (DM),A ; DRIVE SELECT MOTON
XOR A
LD (CMD),A
CALL DLY60M
LD HL,0
REDY0:
DEC HL
LD A,H
OR L
JR Z,REDY1
IN A,(CR) ; STATUS GET
CPL
RLCA
JR C,REDY0
LD C,(IX + 0)
LD HL,CLBF0
LD B,000h
ADD HL,BC
BIT 0,(HL)
JR NZ,REDY2
CALL RCLB
SET 0,(HL)
REDY2:
RET
REDY1:
LD A,032h
JP ERJMP
;
;
; MOTOR ON
;
MTON:
LD A,080h
OUT (DM),A
LD B,16
MTD1:
CALL DLY60M
DJNZ MTD1
LD A,1
LD (MTFG),A
RET
;
;
; SEEK TREATMENT
;
SEEK:
LD A,01Bh ; 1x = SEEK,
CALL CMDOT1 ; load head, no verify, max stepping rate
AND 099h
RET
;
;
; MOTOR OFF
;
MOFF:
PUSH AF
CALL DLY1M ; 1000 US DELAY
XOR A
OUT (DM),A
LD (CLBF0),A
LD (CLBF1),A
LD (CLBF2),A
LD (CLBF3),A
LD (MTFG),A
POP AF
RET
;
;
; RECALIBRATION
;
RCLB:
LD A,00Bh ; 0x = RESTORE (seek track 0)
CALL CMDOT1 ; load head, no verify, max stepping rate
AND 085h
XOR 004h
RET Z
L_F189:
JP STERROR
;
;
; COMMAND OUT ROUTINE
;
CMDOT1:
LD (CMD),A
CPL
OUT (CR),A
CALL BSYON
CALL DLY60M
IN A,(CR)
CPL
LD (STAFG),A
RET
;
;
; BUSY AND WAIT
;
BSYON:
PUSH DE
PUSH HL
CALL BSY0
BSYON2:
LD HL,00000h
BSYON0:
DEC HL
LD A,H
OR L
JR Z,BSYON1
IN A,(CR)
RRCA
JR NC,BSYON0
POP HL
POP DE
RET
;
BSYON1:
DEC E
JR NZ,BSYON2
BSYONE:
LD A,029h
POP HL
POP DE
JP ERJMP
;
BSYOFF:
PUSH DE
PUSH HL
CALL BSY0
BSYOF2:
LD HL,00000h
BSYOF0:
DEC HL
LD A,H
OR L
JR Z,BSYOF1
IN A,(CR) ; Status Register
RRCA
JR C,BSYOF0
POP HL
POP DE
RET
;
BSYOF1:
DEC E
JR NZ,BSYOF2
JR BSYONE
;
BSY0:
CALL DLY80U
LD E,007h
RET
;
;
; SEQUENTIAL READ
;
BREAD:
CALL CNVRT
CALL PARST1 ; HL = IX + 5,6 (TargetAddress)
RE8:
CALL SIDST
CALL SEEK
JP NZ,ERJMP
CALL PARST2 ; C = DataRegister
DI ; disable interrupts
LD A,094h ; 9x = READ SECTOR, multiple records
CALL CMDOT2 ; compare for side 0, 15ms delay,
RE6: ; disable side select compare
LD B,0 ; ByteCounter = 0, to load 256 bytes of the sector
RE4:
IN A,(CR)
RRCA
JR C,RE3
RRCA
JR C,RE4
INI ; (HL) = in(C), B = B - 1 , HL = HL + 1
JR NZ,RE4
INC (IX + 8) ; NextSector = NextSector + 1
LD A,(IX + 8)
CP 011h ; if NextSector = 17
JR Z,L_F213 ; than end
DEC D ; else SectorCounter = SectorCounter - 1
JR NZ,RE6 ; if SectorCounter = 0
JR L_F214 ; than end
L_F213:
DEC D
L_F214:
CALL INTER
RE3:
EI ; enable interrupts
IN A,(CR)
CPL
LD (STAFG),A
AND 0FFh
JR NZ,STERROR
CALL ADJ ; adjust sector and track
JP Z,REND
LD A,(IX + 7) ; track
JR RE8
REND:
LD A,080h
OUT (DM),A ; motor on
RET
;
;
; PARAMETER SET
;
;
PARST1:
CALL READY
LD D,(IX + 4) ; D = bytes to read (highbyte) (256 bytes)
LD A,(IX + 3) ; A = bytes to read (lowbyte)
OR A ; if A = 0
JR Z,L_F23F ; than it's ok
INC D ; else read 256 bytes more (1 sector)
L_F23F:
LD A,(IX + 10) ; NextSector = StartSector
LD (IX + 8),A
LD A,(IX + 9) ; NextTrack = StartTrack
LD (IX + 7),A
LD L,(IX + 5) ; HL = TargetAddress
LD H,(IX + 6)
RET
;
;
; SIZE SEEK SET
;
SIDST:
SRL A
CPL
OUT (DR),A
JR NC,L_F25D ; NC than Head 0
LD A,1 ; else Head 1
JR L_F25E
L_F25D:
XOR A
L_F25E:
CPL
OUT (HS),A ; set HeadSelect
RET
;
;
; TRACK & SECTOR SET
;
PARST2:
LD C,DR
LD A,(IX + 7) ; A = NextTrack
SRL A
CPL
OUT (TR),A
LD A,(IX + 8) ; A = NextSector
CPL
OUT (SCR),A
RET
;
;
; ADJUST SECT & TRACK
;
ADJ:
LD A,(IX + 8) ; A = NextSector
CP 17 ; if NextSector = 17
JR NZ,L_F282 ; than the border is not reached
LD A,001h ; else
LD (IX + 8),A ; NextSector = 1
INC (IX + 7) ; NextTrack = NextTrack + 1
L_F282:
LD A,D
OR A
RET
;
;
; COMMAND OUT & WAIT
;
CMDOT2:
LD (CMD),A
CPL
OUT (CR),A
CALL BSYOFF
RET
;
;
; FORCE INTERRUPT
;
INTER:
LD A,0D8h
CPL
OUT (CR),A
CALL BSYON
RET
;
;
; STATUS CHECK
;
STERROR:
LD A,(CMD)
CP 00Bh ; Restore (seek track 0)
JR Z,ERCK1
CP 01Bh ; Seek
JR Z,ERCK1
CP 0F4h ; Write track
JR Z,ERCK1
LD A,(STAFG)
BIT 7,A
JR NZ,ERRET
BIT 6,A
JR NZ,ERRET1
BIT 4,A
LD A,54
JR NZ,ERJMP
JR ERRET1
ERCK1:
LD A,(STAFG)
BIT 7,A
JR NZ,ERRET
ERRET1:
LD A,41
JR ERJMP
ERRET:
LD A,50
ERJMP:
CALL MOFF
JP ERRTRT
;
;
; SECTOR TO TRACK & SECTOR CONVERT
;
CNVRT:
LD B,0 ; TrackCounter = 0
LD DE,16 ; 16 sectors per track
LD L,(IX + 1) ; HL = SectorAddress
LD H,(IX + 2)
XOR A
TRANS0:
SBC HL,DE ; SectorAddress - SectorPerTrack
JR C,TRANS1 ; if < 0 than ready
INC B ; else TrackCounter = TrackCounter + 1
JR TRANS0 ; next try
TRANS1:
ADD HL,DE ; undo the last substraction
LD H,B
INC L ; adjust sector (sector is 1..16 and not 0..15)
LD (IX + 9),H ; set StartTrack
LD (IX + 10),L ; set StartSector
RET
;
;
; TIME DELAY ( 1m & 60m & 80u )
;
DLY80U:
PUSH DE
LD DE,15
JP DLYT
DLY1M:
PUSH DE
LD DE,160
JP DLYT
DLY60M:
PUSH DE
LD DE,8230
DLYT:
DEC DE
LD A,E
OR D
JR NZ,DLYT
POP DE
RET
ALIGN 0FFF0h, 000h
DB " 84.03.14 V1.0A"

Binary file not shown.

View File

@@ -0,0 +1,72 @@
ADJ: equ 0F273H
BOOT: equ 0F0BFH
BREAD: equ 0F1DEH
BSY0: equ 0F1D8H
BSYOF0: equ 0F1C6H
BSYOF1: equ 0F1D3H
BSYOF2: equ 0F1C3H
BSYOFF: equ 0F1BEH
BSYON: equ 0F19FH
BSYON0: equ 0F1A7H
BSYON1: equ 0F1B4H
BSYON2: equ 0F1A4H
BSYONE: equ 0F1B7H
CMDOT1: equ 0F18CH
CMDOT2: equ 0F285H
CNVRT: equ 0F2CDH
DLY1M: equ 0F2F1H
DLY60M: equ 0F2F8H
DLY80U: equ 0F2EAH
DLYT: equ 0F2FCH
ERCK1: equ 0F2BAH
ERJMP: equ 0F2C7H
ERRET: equ 0F2C5H
ERRET1: equ 0F2C1H
ERRM0: equ 0F0F4H
ERRM1: equ 0F0C8H
ERRTR1: equ 0F0ACH
ERRTRT: equ 0F0A2H
FDCC: equ 0F105H
FDX: equ 0F006H
INTER: equ 0F28FH
IPLM0: equ 0F0D6H
IPLM3: equ 0F0E6H
IPLMC: equ 0F0B8H
L_F007: equ 0F007H
L_F051: equ 0F051H
L_F057: equ 0F057H
L_F05C: equ 0F05CH
L_F093: equ 0F093H
L_F111: equ 0F111H
L_F189: equ 0F189H
L_F213: equ 0F213H
L_F214: equ 0F214H
L_F23F: equ 0F23FH
L_F25D: equ 0F25DH
L_F25E: equ 0F25EH
L_F282: equ 0F282H
MASTE: equ 0F09AH
MCHECK: equ 0F031H
MOFF: equ 0F167H
MTD1: equ 0F154H
MTON: equ 0F14EH
MZ_1E05: equ 0F000H
NOTIO: equ 0F0A4H
PARST1: equ 0F232H
PARST2: equ 0F262H
RCLB: equ 0F17FH
RE3: equ 0F217H
RE4: equ 0F1F8H
RE6: equ 0F1F6H
RE8: equ 0F1E4H
READY: equ 0F113H
REDY0: equ 0F12BH
REDY1: equ 0F149H
REDY2: equ 0F148H
REND: equ 0F22DH
SEEK: equ 0F15FH
SIDST: equ 0F252H
SJP: equ 0F022H
STERROR: equ 0F298H
TRANS0: equ 0F2D9H
TRANS1: equ 0F2E0H

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,161 @@
..LPTX: equ 0E98EH
.LPTX: equ 0E989H
?ERX: equ 0E8EBH
?ERX1: equ 0EA4CH
BDR: equ 0EE3BH
BGETLX: equ 0E8F8H
BRKC: equ 0EFECH
DIREFC: equ 0EC4CH
DIRIOP: equ 0EC2CH
DIRMSG: equ 0ED5DH
DIRMTF: equ 0EC53H
DISCLR: equ 0EB45H
DMR: equ 0EE6FH
DMR1: equ 0EE77H
DSFLNA: equ 0EB7BH
DSPATR: equ 0EC67H
DUMPX: equ 0EA78H
FDCK: equ 0E8DEH
FILESH: equ 0EB6FH
FILSCH: equ 0EBDCH
FNEND: equ 0EECCH
FNINP: equ 0EADCH
GOTOX: equ 0E910H
HDPCL: equ 0ED08H
HEXIYX: equ 0E906H
HPNFE: equ 0EE87H
HPS: equ 0EE51H
HPS1: equ 0EE84H
IOE41: equ 0EFC0H
IOE46: equ 0EFC3H
IOE50: equ 0EFC6H
IOE53: equ 0EFC9H
IOE54: equ 0EFCCH
IOFRS: equ 0EBD1H
LDFNCK: equ 0EC00H
LE800: equ 0E800H
LE80A: equ 0E80AH
LE868: equ 0E868H
LE86B: equ 0E86BH
LE871: equ 0E871H
LE87D: equ 0E87DH
LE941: equ 0E941H
LE954: equ 0E954H
LE999: equ 0E999H
LEA5B: equ 0EA5BH
LEA6A: equ 0EA6AH
LEA76: equ 0EA76H
LEA85: equ 0EA85H
LEA86: equ 0EA86H
LEA8D: equ 0EA8DH
LEAA0: equ 0EAA0H
LEAC7: equ 0EAC7H
LEAC9: equ 0EAC9H
LEAD3: equ 0EAD3H
LEAD6: equ 0EAD6H
LEAF3: equ 0EAF3H
LEB00: equ 0EB00H
LEB08: equ 0EB08H
LEB0C: equ 0EB0CH
LEB14: equ 0EB14H
LEB1E: equ 0EB1EH
LEB20: equ 0EB20H
LEB22: equ 0EB22H
LEB27: equ 0EB27H
LEB37: equ 0EB37H
LEB8B: equ 0EB8BH
LEBAC: equ 0EBACH
LEBBD: equ 0EBBDH
LECA1: equ 0ECA1H
LECA4: equ 0ECA4H
LECA5: equ 0ECA5H
LECB6: equ 0ECB6H
LECBA: equ 0ECBAH
LECFC: equ 0ECFCH
LED4C: equ 0ED4CH
LEDF3: equ 0EDF3H
LOADX: equ 0E914H
LPARA0: equ 0EB97H
LPARA1: equ 0EB9AH
LPRNTX: equ 0E9A2H
LREDY: equ 0EEE5H
LSINT: equ 0EED6H
MCORX: equ 0E9D9H
MCORX1: equ 0E9DCH
MCRX2: equ 0EA05H
MCRX3: equ 0EA08H
MGHDE: equ 0ED27H
MGNFE: equ 0ED15H
MGNRE: equ 0ED33H
MGUFE: equ 0ED40H
MON: equ 0E880H
MSGQ01: equ 0ED6EH
MSGQ02: equ 0ED79H
MSGQ03: equ 0ED84H
MSGQ04: equ 0ED8FH
MSGQ05: equ 0ED9AH
MSGQ07: equ 0EDA5H
MSGQ10: equ 0EDB0H
MSGQ11: equ 0EDBBH
MSGQ??: equ 0EDC6H
MSGQOK: equ 0ED11H
MSGTRM: equ 0ED14H
MTOF: equ 0EF03H
MTON: equ 0EEB7H
MZ1E14: equ 0E800H
NRCK: equ 0EFA8H
PENX: equ 0E99EH
PLOTX: equ 0E997H
PMSGX: equ 0E9B8H
PMSGX1: equ 0E9BBH
PTESTX: equ 0E968H
PTRNX: equ 0E993H
PTST0X: equ 0E96DH
PTST1X: equ 0E983H
QBT: equ 0E835H
QD: equ 0EC18H
QDHPC: equ 0EE0DH
QDIOS: equ 0E807H
QDIOS1: equ 0EDD1H
QDOFF: equ 0EF03H
QDOKM: equ 0ECC8H
QDRC: equ 0EE14H
QDRCK: equ 0EC0CH
QDRD: equ 0EE1AH
QER04: equ 0EC51H
QERMF: equ 0ECF1H
QERTRT: equ 0ECD2H
QL: equ 0EB5DH
QLINF: equ 0EBEEH
QMEIN: equ 0EDF8H
QREDY: equ 0EE8BH
QUICK: equ 0E8CBH
RDATA: equ 0EFB3H
RDATANRCK: equ 0EFA8H
RDAX: equ 0E9C9H
RDCR1: equ 0EF92H
RDCR2: equ 0EF97H
RDCRC: equ 0EF90H
RTY: equ 0EDD6H
RTY4: equ 0EDF6H
SAVEX: equ 0EA0CH
SAVX1: equ 0EA3CH
SGX: equ 0EA6DH
SIOLD: equ 0EFE1H
ST1X: equ 0E884H
ST1X1: equ 0E8DCH
ST1X2: equ 0E986H
ST2X: equ 0E892H
SYNCA: equ 0EF81H
SYNCL1: equ 0EF2EH
SYNCL2: equ 0EF18H
SYNCW0: equ 0EF47H
SYNCW01: equ 0EF70H
SYNCW1: equ 0EF59H
SYNCW2: equ 0EF63H
SYNCW3: equ 0EF73H
TIMW: equ 0EFD4H
TIMW1: equ 0EFD5H
TIMW2: equ 0EFD7H
TMLPL: equ 0EF31H
VRFYX: equ 0EA5EH

155
software/asm/ramcheck.asm Normal file
View File

@@ -0,0 +1,155 @@
LETNL: EQU 0006h
PRNTS: EQU 000Ch
PRNT: EQU 0012h
MSG: EQU 0015h
MONIT: EQU 0086h
PRTHL: EQU 03BAh
PRTHX: EQU 03C3h
DPCT: EQU 0DDCh
MSTART: EQU 1200h
ORG 10F0h
DB 01h ; Code Type, 01 = Machine Code.
DB "RAM TEST V1.0", 0Dh, 00h, 00h ; Title/Name (17 bytes).
DW MSTART - START ; Size of program.
DW START ; Load address of program.
DW START ; Exec address of program.
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h ; Comment (104 bytes).
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
ORG 01200h
START: LD DE,TITLE
CALL MSG
CALL LETNL
LD B, 20 ; Number of loops
LOOP: LD HL,MSTART ; Start of checked memory,
LD D,0CEh ; End memory check CE00
LOOP1: LD A,000h
CP L
JR NZ,LOOP1b
CALL PRTHL ; Print HL as 4digit hex.
LD A,0C4h ; Move cursor left.
LD E,004h ; 4 times.
LOOP1a: CALL DPCT
DEC E
JR NZ,LOOP1a
LOOP1b: INC HL
LD A,H
CP D ; Have we reached end of memory.
JR Z,LOOP3 ; Yes, exit.
LD A,(HL) ; Read memory location under test, ie. 0.
CPL ; Subtract, ie. FF - A, ie FF - 0 = FF.
LD (HL),A ; Write it back, ie. FF.
SUB (HL) ; Subtract written memory value from A, ie. should be 0.
JR NZ,LOOP2 ; Not zero, we have an error.
LD A,(HL) ; Reread memory location, ie. FF
CPL ; Subtract FF - FF
LD (HL),A ; Write 0
SUB (HL) ; Subtract 0
JR Z,LOOP1 ; Loop if the same, ie. 0
LOOP2: LD A,16h
CALL PRNT ; Print A
CALL PRTHX ; Print HL as 4 digit hex.
CALL PRNTS ; Print space.
XOR A
LD (HL),A
LD A,(HL) ; Get into A the failing bits.
CALL PRTHX ; Print A as 2 digit hex.
CALL PRNTS ; Print space.
LD A,0FFh ; Repeat but first load FF into memory
LD (HL),A
LD A,(HL)
CALL PRTHX ; Print A as 2 digit hex.
NOP
JR LOOP4
LOOP3: LD DE,OKCHECK
CALL MSG ; Print check message in DE
LD A,B ; Print loop count.
CALL PRTHX
LD DE,OKMSG
CALL MSG ; Print ok message in DE
DEC B
JR NZ,LOOP
LD DE,DONEMSG
CALL MSG ; Print check message in DE
JP MONIT
OKCHECK: DB 11h
DB "CHECK: ", 0Dh
OKMSG: DB "OK.", 0Dh
DONEMSG: DB 11h
DB "RAM TEST COMPLETE.", 0Dh
LOOP4: LD B,09h
CALL PRNTS ; Print space.
XOR A ; Zero A
SCF ; Set Carry
LOOP5: PUSH AF ; Store A and Flags
LD (HL),A ; Store 0 to bad location.
LD A,(HL) ; Read back
CALL PRTHX ; Print A as 2 digit hex.
CALL PRNTS ; Print space
POP AF ; Get back A (ie. 0 + C)
RLA ; Rotate left A. Bit LSB becomes Carry (ie. 1 first instance), Carry becomes MSB
DJNZ LOOP5 ; Loop if not zero, ie. print out all bit locations written and read to memory to locate bad bit.
XOR A ; Zero A, clears flags.
LD A,80h
LD B,08h
LOOP6: PUSH AF ; Repeat above but AND memory location with original A (ie. 80)
LD C,A ; Basically walk through all the bits to find which one is stuck.
LD (HL),A
LD A,(HL)
AND C
NOP
JR Z,LOOP8 ; If zero then print out the bit number
NOP
NOP
LD A,C
CPL
LD (HL),A
LD A,(HL)
AND C
JR NZ,LOOP8 ; As above, if the compliment doesnt yield zero, print out the bit number.
LOOP7: POP AF
RRCA
NOP
DJNZ LOOP6
JP MONIT
LOOP8: CALL LETNL ; New line.
LD DE,BITMSG ; BIT message
CALL MSG ; Print message in DE
LD A,B
DEC A
CALL PRTHX ; Print A as 2 digit hex, ie. BIT number.
CALL LETNL ; New line
LD DE,BANKMSG ; BANK message
CALL MSG ; Print message in DE
LD A,H
CP 50h ; 'P'
JR NC,LOOP9 ; Work out bank number, 1, 2 or 3.
LD A,01h
JR LOOP11
LOOP9: CP 90h
JR NC,LOOP10
LD A,02h
JR LOOP11
LOOP10: LD A,03h
LOOP11: CALL PRTHX ; Print A as 2 digit hex, ie. BANK number.
JR LOOP7
BITMSG: DB " BIT: ", 0Dh
BANKMSG: DB " BANK: ", 0Dh
TITLE: DB "SHARPMZ RAM TEST (C) P. SMART 2018", 0Dh, 00h

2788
software/asm/sa1510.asm Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,252 @@
?ER: equ 0C1ACH
?RDD: equ 0C1E5H
?RDI: equ 0C1BAH
?TMR1: equ 0C854H
?TMR1A: equ 0C857H
?TMR2: equ 0C85EH
?TMRD: equ 0C837H
?TMST: equ 0C71FH
ABCD: equ 0C72BH
AMPM: equ 119BH
ARARA: equ 0C6EEH
ATRB: equ 10F0H
BANKMSG: equ 0CC53H
BITMSG: equ 0CC4BH
BUFER: equ 11A3H
CDEF: equ 0C7C0H
CKS1: equ 0C406H
CKS2: equ 0C415H
CKS3: equ 0C419H
CKS4: equ 0C41DH
CKSUM: equ 0C400H
CLEAR1: equ 0BFB7H
COMNT: equ 1108H
CSMDT: equ 1199H
DLY1: equ 0C424H
DLY12: equ 0C43BH
DLY12A: equ 0C43EH
DLY1A: equ 0C426H
DLY1S: equ 0C6F2H
DLY2: equ 0C42BH
DLY2A: equ 0C42DH
DLY3: equ 0C432H
DONEMSG: equ 0CC37H
DPRNT: equ 1194H
DSPXY: equ 1171H
DTADR: equ 1104H
EDG0: equ 0C2C9H
EDG1: equ 0C2C1H
EDG2: equ 0C2CFH
EDG3: equ 0C2D7H
EDGE: equ 0C2BBH
EXADR: equ 1106H
FLASH: equ 118EH
FLPST: equ 118FH
FLSDT: equ 1192H
FLSST: equ 1191H
GAP: equ 0C445H
GAP0: equ 0C45AH
GAP1: equ 0C461H
GAP1A: equ 0C498H
GAP1B: equ 0C472H
GAP1C: equ 0C48FH
GAP1D: equ 0C478H
GAP2: equ 0C49FH
GAP2A: equ 0C4DEH
GAP2B: equ 0C4ADH
GAP2C: equ 0C4D6H
GAP2D: equ 0C4B6H
GAP3: equ 0C4E6H
GAP3A: equ 0C525H
GAP3B: equ 0C4F4H
GAP3C: equ 0C51DH
GAP3D: equ 0C4FDH
GAPCK: equ 0C537H
GAPCK1: equ 0C549H
GAPCK2: equ 0C54BH
GAPCK3: equ 0C55BH
GETL1: equ 0BFC1H
GETL2: equ 0BFCFH
GRAM0: equ 0BF07H
GRAM1: equ 0BF0DH
GRAMINIT: equ 0BF03H
GRAMTEST: equ 0BF19H
GRAMTEST0: equ 0BF1FH
GRAMTEST1: equ 0BF25H
GRAPHICS: equ 0BF36H
GRPHIND: equ 0BF5CH
GRPHPOS: equ 0CC5BH
HELP: equ 0C890H
IBUFE: equ 10F0H
INITGRPH: equ 0BF7AH
INITMEM: equ 0BFA8H
KANAF: equ 1170H
L0323: equ 0C750H
L0324: equ 0C6F6H
L0330: equ 0C791H
L0336: equ 0C7C9H
L0340: equ 0C813H
L047D: equ 0C5D8H
L04C2: equ 0C629H
L04C4: equ 0C633H
LOA0: equ 0C0CDH
LOAD: equ 0C0C7H
LONG: equ 0C577H
LOOP: equ 0BFFBH
LOOP1: equ 0C000H
LOOP10: equ 0C0C0H
LOOP11: equ 0C0C2H
LOOP1a: equ 0C00CH
LOOP1b: equ 0C012H
LOOP2: equ 0C023H
LOOP3: equ 0C041H
LOOP4: equ 0C066H
LOOP5: equ 0C06DH
LOOP6: equ 0C07FH
LOOP7: equ 0C090H
LOOP8: equ 0C098H
LOOP9: equ 0C0B8H
MANG: equ 1173H
MEMTEST: equ 0BFF9H
MEND: equ 0CDDEH
MOT1: equ 0C396H
MOT2: equ 0C39DH
MOT3: equ 0C39FH
MOT4: equ 0C3A7H
MOT5: equ 0C3CAH
MOT7: equ 0C3A5H
MOT8: equ 0C3BEH
MOT9: equ 0C3C7H
MOTOR: equ 0C384H
MSG1: equ 0C9B7H
MSG2: equ 0C9B9H
MSG3: equ 0C9BFH
MSGGAP: equ 0CB70H
MSGN7: equ 0C9CAH
MSGOK: equ 0C9D4H
MSGTAPE: equ 0CBDBH
MSG_CHKSUM_MZ1: equ 0CAF6H
MSG_CHKSUM_MZ2: equ 0CB24H
MSG_CHKSUM_TP1: equ 0CB0DH
MSG_CHKSUM_TP2: equ 0CB3BH
MSG_ERRCHKSUM: equ 0C9D8H
MSG_ERRWRITE: equ 0C9E7H
MSG_GAPCK: equ 0CA33H
MSG_HELP1: equ 0C8CFH
MSG_HELP2: equ 0C8EAH
MSG_HELP3: equ 0C903H
MSG_HELP4: equ 0C91AH
MSG_HELP5: equ 0C932H
MSG_HELP6: equ 0C94FH
MSG_INITGR: equ 0C98DH
MSG_INITM: equ 0C99BH
MSG_LOADEXEC: equ 0CA6CH
MSG_LOADFILE: equ 0CA3EH
MSG_LOADFROM: equ 0CA55H
MSG_LOADSIZE: equ 0CA83H
MSG_MOTORSTP: equ 0CA16H
MSG_MOTORTG: equ 0CA08H
MSG_READTAPE: equ 0C9F3H
MSG_SAVEEXEC: equ 0CAC8H
MSG_SAVEFILE: equ 0CA9AH
MSG_SAVEFROM: equ 0CAB1H
MSG_SAVESIZE: equ 0CADFH
MSG_SPC: equ 0CBD2H
MSG_SPCS: equ 0CBBFH
MSG_TAPEMARK: equ 0C9FEH
MSG_TIMERTST: equ 0CBEBH
MSG_TIMERVAL: equ 0CBFCH
MSG_TIMERVAL2: equ 0CC0CH
MSG_TIMERVAL3: equ 0CC1CH
MSG_TPMARK: equ 0CA22H
MSG_WDATA: equ 0CB62H
MSG_WGAPL: equ 0CB9CH
MSG_WGAPL2: equ 0CBADH
MSG_WGAPS: equ 0CB7DH
MSG_WGAPS2: equ 0CB8AH
MSG_WHDR: equ 0CB52H
MST1: equ 0C3EBH
MST2: equ 0C3F2H
MST3: equ 0C3FDH
MSTOP: equ 0C3D9H
NAME: equ 10F1H
NDE: equ 0C719H
OCTV: equ 11A0H
OKCHECK: equ 0CC28H
OKMSG: equ 0CC32H
ONTYO: equ 119FH
QER: equ 0C19EH
QVRFY: equ 0C66BH
QWRD: equ 0C5D0H
QWRI: equ 0C59CH
RATIO: equ 11A1H
RBY1: equ 0C2EAH
RBY2: equ 0C303H
RBY3: equ 0C30EH
RBYTE: equ 0C2DEH
RD1: equ 0C1C8H
RD2: equ 0C1E3H
RDD1: equ 0C1FBH
RDD2: equ 0C207H
RET1: equ 0C665H
RET2: equ 0C276H
RET3: equ 0C366H
RTAPE: equ 0C209H
RTP0: equ 0C256H
RTP1: equ 0C20EH
RTP2: equ 0C214H
RTP3: equ 0C22EH
RTP4: equ 0C276H
RTP5: equ 0C287H
RTP6: equ 0C2B6H
RTP7: equ 0C2B2H
RTP8: equ 0C285H
RTP9: equ 0C2B8H
SAVE: equ 0C11CH
SHORT: equ 0C55EH
SIZE: equ 1102H
SPCS2: equ 0C640H
SPCS3: equ 0C653H
SPV: equ 10F0H
START: equ 0BF6BH
STRGF: equ 1193H
SUMDT: equ 1197H
SWRK: equ 119DH
TATRB: equ 0CC5DH
TCOMNT: equ 0CC75H
TDTADR: equ 0CC71H
TEMPW: equ 119EH
TESTBUF: equ 0CC5DH
TESTEND: equ 0CDDEH
TESTSTART: equ 0CCDDH
TEXADR: equ 0CC73H
TIMERTST: equ 0C6FFH
TIMFG: equ 119CH
TIMIN: equ 0C86CH
TITLE: equ 0C96CH
TITLE_SAVE: equ 0C9A7H
TM0: equ 0C331H
TM1: equ 0C33AH
TM2: equ 0C33DH
TM3: equ 0C350H
TM4: equ 0C366H
TM4A: equ 0C36AH
TM4B: equ 0C372H
TMARK: equ 0C312H
TMCNT: equ 1195H
TNAME: equ 0CC5EH
TSIZE: equ 0CC6FH
TVF1: equ 0C699H
TVF2: equ 0C69FH
TVF3: equ 0C6B3H
TVRFY: equ 0C694H
WBY1: equ 0C6E1H
WBYTE: equ 0C6DBH
WRI1: equ 0C5AAH
WRI2: equ 0C5C7H
WRI3: equ 0C5CDH
WTAP1: equ 0C5F0H
WTAP2: equ 0C601H
WTAP3: equ 0C665H
WTAP3A: equ 0C613H
WTAPE: equ 0C5E6H

BIN
software/asm/tapecheck.obj Normal file

Binary file not shown.

192
software/asm/tapecheck.sym Normal file
View File

@@ -0,0 +1,192 @@
?ER: equ 0C23BH
?RDD: equ 0C274H
?RDI: equ 0C249H
AMPM: equ 119BH
ATRB: equ 10F0H
BANKMSG: equ 0C888H
BITMSG: equ 0C880H
BUFER: equ 11A3H
CKS1: equ 0C495H
CKS2: equ 0C4A4H
CKS3: equ 0C4A8H
CKS4: equ 0C4ACH
CKSUM: equ 0C48FH
CLEAR1: equ 0C043H
COMNT: equ 1108H
CSMDT: equ 1199H
DLY1: equ 0C4B3H
DLY12: equ 0C4CAH
DLY12A: equ 0C4CDH
DLY1A: equ 0C4B5H
DLY2: equ 0C4BAH
DLY2A: equ 0C4BCH
DLY3: equ 0C4C1H
DONEMSG: equ 0C86CH
DPRNT: equ 1194H
DSPXY: equ 1171H
DTADR: equ 1104H
EDG0: equ 0C358H
EDG1: equ 0C350H
EDG2: equ 0C35EH
EDG3: equ 0C366H
EDGE: equ 0C34AH
EXADR: equ 1106H
FLASH: equ 118EH
FLPST: equ 118FH
FLSDT: equ 1192H
FLSST: equ 1191H
GAP: equ 0C4D4H
GAP1: equ 0C4E8H
GAP1A: equ 0C4EBH
GAP2: equ 0C4F0H
GAP3: equ 0C4F6H
GAPCK: equ 0C502H
GAPCK1: equ 0C514H
GAPCK2: equ 0C516H
GAPCK3: equ 0C526H
GETL1: equ 0C04DH
GETL2: equ 0C05BH
GRAM0: equ 0C07CH
GRAM1: equ 0C080H
GRAMINIT: equ 0C076H
GRPHPOS: equ 0C890H
IBUFE: equ 10F0H
INITGRPH: equ 0C018H
INITMEM: equ 0C03DH
KANAF: equ 1170H
L047D: equ 0C5A3H
L04C2: equ 0C5E8H
L04C4: equ 0C5EAH
LOA0: equ 0C16BH
LOAD: equ 0C165H
LONG: equ 0C542H
LOOP: equ 0C08EH
LOOP1: equ 0C093H
LOOP10: equ 0C15EH
LOOP11: equ 0C160H
LOOP1a: equ 0C09FH
LOOP1b: equ 0C0A5H
LOOP2: equ 0C0B6H
LOOP3: equ 0C0D4H
LOOP4: equ 0C104H
LOOP5: equ 0C10BH
LOOP6: equ 0C11DH
LOOP7: equ 0C12EH
LOOP8: equ 0C136H
LOOP9: equ 0C156H
MANG: equ 1173H
MEMTEST: equ 0C08CH
MEND: equ 0CA13H
MOT1: equ 0C425H
MOT2: equ 0C42CH
MOT3: equ 0C42EH
MOT4: equ 0C436H
MOT5: equ 0C459H
MOT7: equ 0C434H
MOT8: equ 0C44DH
MOT9: equ 0C456H
MOTOR: equ 0C413H
MSG1: equ 0C681H
MSG2: equ 0C683H
MSG3: equ 0C689H
MSGN7: equ 0C694H
MSGOK: equ 0C69EH
MSG_CHKSUM_MZ1: equ 0C7C0H
MSG_CHKSUM_MZ2: equ 0C7EEH
MSG_CHKSUM_TP1: equ 0C7D7H
MSG_CHKSUM_TP2: equ 0C805H
MSG_ERRCHKSUM: equ 0C6A2H
MSG_ERRWRITE: equ 0C6B1H
MSG_GAPCK: equ 0C6FDH
MSG_HELP: equ 0C83EH
MSG_LOADEXEC: equ 0C736H
MSG_LOADFILE: equ 0C708H
MSG_LOADFROM: equ 0C71FH
MSG_LOADSIZE: equ 0C74DH
MSG_MOTORSTP: equ 0C6E0H
MSG_MOTORTG: equ 0C6D2H
MSG_READTAPE: equ 0C6BDH
MSG_SAVEEXEC: equ 0C792H
MSG_SAVEFILE: equ 0C764H
MSG_SAVEFROM: equ 0C77BH
MSG_SAVESIZE: equ 0C7A9H
MSG_TAPEMARK: equ 0C6C8H
MSG_TPMARK: equ 0C6ECH
MST1: equ 0C47AH
MST2: equ 0C481H
MST3: equ 0C48CH
MSTOP: equ 0C468H
NAME: equ 10F1H
OCTV: equ 11A0H
OKCHECK: equ 0C85DH
OKMSG: equ 0C867H
ONTYO: equ 119FH
QER: equ 0C22DH
QVRFY: equ 0C5FEH
QWRD: equ 0C59BH
QWRI: equ 0C567H
RATIO: equ 11A1H
RBY1: equ 0C379H
RBY2: equ 0C392H
RBY3: equ 0C39DH
RBYTE: equ 0C36DH
RD1: equ 0C257H
RD2: equ 0C272H
RDD1: equ 0C28AH
RDD2: equ 0C296H
RET1: equ 0C5F8H
RET2: equ 0C305H
RET3: equ 0C3F5H
RTAPE: equ 0C298H
RTP0: equ 0C2E5H
RTP1: equ 0C29DH
RTP2: equ 0C2A3H
RTP3: equ 0C2BDH
RTP4: equ 0C305H
RTP5: equ 0C316H
RTP6: equ 0C345H
RTP7: equ 0C341H
RTP8: equ 0C314H
RTP9: equ 0C347H
SAVE: equ 0C1BAH
SHORT: equ 0C529H
SIZE: equ 1102H
SPV: equ 10F0H
START: equ 0C000H
STRGF: equ 1193H
SUMDT: equ 1197H
SWRK: equ 119DH
TATRB: equ 0C892H
TCOMNT: equ 0C8AAH
TDTADR: equ 0C8A6H
TEMPW: equ 119EH
TESTBUF: equ 0C892H
TESTEND: equ 0CA13H
TESTSTART: equ 0C912H
TEXADR: equ 0C8A8H
TIMFG: equ 119CH
TITLE: equ 0C81CH
TM0: equ 0C3C0H
TM1: equ 0C3C9H
TM2: equ 0C3CCH
TM3: equ 0C3DFH
TM4: equ 0C3F5H
TM4A: equ 0C3F9H
TM4B: equ 0C401H
TMARK: equ 0C3A1H
TMCNT: equ 1195H
TNAME: equ 0C893H
TSIZE: equ 0C8A4H
TVF1: equ 0C62CH
TVF2: equ 0C632H
TVF3: equ 0C646H
TVRFY: equ 0C627H
WBY1: equ 0C674H
WBYTE: equ 0C66EH
WRI1: equ 0C575H
WRI2: equ 0C592H
WRI3: equ 0C598H
WTAP1: equ 0C5BAH
WTAP2: equ 0C5CBH
WTAP3: equ 0C5F8H
WTAPE: equ 0C5B0H

View File

@@ -0,0 +1,38 @@
DEPTH = 512;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT BEGIN
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 00 00;
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00;
0020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F;
0030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F;
0040: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F;
0050: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F;
0060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
0070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
0080: 7D 20 20 20 20 20 20 20 20 20 20 5E 20 20 20 20;
0090: 20 20 65 88 7E 20 74 20 68 20 62 78 64 72 70 63;
00a0: 71 61 7A 77 73 75 69 20 D6 6B 66 76 20 FC DF 6A;
00b0: 6E 20 DC 6D 20 20 20 6F 6C C4 F6 E4 20 79 7B 20;
00c0: 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
00f0: 20 20 20 20 20 20 20 20 20 20 20 A3 20 20 20 20;
0100: 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 00 00;
0110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00;
0120: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F;
0130: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F;
0140: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F;
0150: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 8B 20;
0160: 93 A1 9A 9F 9C 92 AA 97 98 A6 AF A9 B8 B3 B0 B7;
0170: 9E A0 9D A4 96 A5 AB A3 98 BD A2 BE C0 80 94 20;
0180: 20 20 20 20 20 20 20 20 8B 20 20 20 20 20 20 20;
0190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
01a0: 20 20 20 FB 20 20 20 20 20 20 20 20 20 20 20 20;
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20;
END;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,134 @@
DEPTH = 2048;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT BEGIN
0000: ff ff ff ff ff ff ff 86 ff 37 ff ff ff 90 93 ff;
0010: ff ff 80 ff ff 20 00 ff ff ff 60 50 40 30 10 ff;
0020: ff 61 70 41 21 11 01 ff ff 91 71 51 22 31 02 ff;
0030: ff 72 62 52 42 32 12 ff ff ff 63 43 23 03 13 ff;
0040: ff 73 53 33 24 14 04 ff ff 64 74 44 54 34 05 ff;
0050: ff 95 45 ff 25 15 ff ff 81 85 84 55 ff 75 ff ff;
0060: ff ff ff ff ff ff 65 ff ff 66 35 46 26 ff ff ff;
0070: 96 87 76 56 47 36 ff 06 77 57 67 17 07 27 ff ff;
0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
00a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
00b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
00c0: ff ff ff ff ff ff ff ff ff ff 16 ff ff ff ff ff;
00d0: ff ff ff ff ff ff ff ff ff ff 97 ff ff ff ff ff;
00e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ef;
00f0: ff 81 92 ff 83 ff ff ff ff ff ff ff ff ff ff ff;
0100: ff ff ff ff ff ff ff 86 ff 37 ff ff ff 90 93 ff;
0110: ff ff 80 ff ff 20 00 ff ff ff 60 50 40 30 10 ff;
0120: ff 61 70 41 21 11 01 ff ff 91 71 51 22 31 02 ff;
0130: ff 72 62 52 42 32 12 ff ff ff 63 43 23 03 13 ff;
0140: ff 73 53 33 24 14 04 ff ff 64 74 44 54 34 05 ff;
0150: ff 95 45 ff 25 15 ff ff 81 85 84 55 ff 75 ff ff;
0160: ff ff ff ff ff ff 65 ff ff 66 35 46 26 ff ff ff;
0170: 96 87 76 56 47 36 ff 06 77 57 67 17 07 27 ff ff;
0180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0190: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
01a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
01b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
01c0: ff ff ff ff ff ff ff ff ff ff 16 ff ff ff ff ff;
01d0: ff ff ff ff ff ff ff ff ff ff 97 ff ff ff ff ff;
01e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ef;
01f0: ff 81 92 ff 83 ff ff ff ff ff ff ff ff ff ff ff;
0200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0210: ff ff 00 ff 27 14 16 ff ff ff 10 22 13 15 17 ff;
0220: ff 20 21 23 24 27 26 ff ff 40 31 32 34 25 36 ff;
0230: ff 41 30 42 33 35 37 ff ff ff 50 43 44 46 47 ff;
0240: ff 51 52 45 54 57 56 ff ff 60 70 53 63 55 67 ff;
0250: ff ff 62 ff 65 66 ff ff 11 07 73 72 64 76 ff ff;
0260: ff ff ff ff ff ff 61 ff ff 8a ff 84 77 ff ff ff;
0270: 12 ff 74 85 75 a7 ff ff ff 97 92 95 90 96 ff ff;
0280: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0290: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
02f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0310: ff ff 00 ff 27 14 16 ff ff ff 10 22 13 15 17 ff;
0320: ff 20 21 23 24 27 26 ff ff 40 31 32 34 25 36 ff;
0330: ff 41 30 42 33 35 37 ff ff ff 50 43 44 46 47 ff;
0340: ff 51 52 45 54 57 56 ff ff 60 70 53 63 55 67 ff;
0350: ff ff 62 ff 65 66 ff ff 11 07 73 72 64 76 ff ff;
0360: ff ff ff ff ff ff 61 ff ff 8a ff 84 77 ff ff ff;
0370: 12 ff 74 85 75 a7 ff ff ff 97 92 95 90 96 ff ff;
0380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
03f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0400: ff ff ff 93 95 97 96 ff ff ff ff ff 94 ff ff ff;
0410: ff 06 80 ff a6 27 57 ff ff ff 16 25 47 21 56 ff;
0420: ff 45 20 44 43 45 55 ff ff 64 22 42 24 26 53 ff;
0430: ff 32 46 40 41 17 52 ff ff ff 33 36 23 51 50 ff;
0440: ff 61 35 37 31 63 62 ff ff 60 70 34 0a 30 75 ff;
0450: ff ff ff ff 14 65 ff ff 04 ff 00 13 ff 67 ff ff;
0460: ff ff ff ff ff ff ff ff ff ff ff 72 ff ff ff ff;
0470: 77 76 74 ff 73 75 87 ff ff ff ff ff ff ff ff ff;
0480: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0490: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
04f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0500: ff ff ff 93 95 97 96 ff ff ff ff ff 94 ff ff ff;
0510: ff 06 80 ff a6 27 57 ff ff ff 16 25 47 21 56 ff;
0520: ff 45 20 44 43 45 55 ff ff 64 22 42 24 26 53 ff;
0530: ff 32 46 40 41 17 52 ff ff ff 33 36 23 51 50 ff;
0540: ff 61 35 37 31 63 62 ff ff 60 70 34 0a 30 75 ff;
0550: ff ff ff ff 14 65 ff ff 04 ff 00 13 ff 67 ff ff;
0560: ff ff ff ff ff ff ff ff ff ff ff 72 ff ff ff ff;
0570: 77 76 74 ff 73 75 87 ff ff ff ff ff ff ff ff ff;
0580: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0590: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
05f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
0600: ff 10 ff 04 02 00 01 ff ff 11 07 05 03 b0 b3 ff;
0610: ff 30 b2 ff ff 61 81 ff ff ff 72 63 41 67 82 ff;
0620: ff 43 70 44 45 84 83 ff ff 31 66 46 64 62 85 ff;
0630: ff 56 42 50 47 71 86 ff ff ff 55 52 65 87 90 ff;
0640: ff 77 53 51 57 80 91 ff ff 76 40 54 93 60 94 ff;
0650: ff 75 92 ff 95 73 ff ff b1 b2 32 96 ff a0 ff ff;
0660: ff ff ff ff ff ff 37 ff ff 21 74 24 27 ff ff ff;
0670: 20 15 22 25 26 12 ff ff ff 17 23 16 ff 13 ff ff;
0680: ff ff ff 06 ff ff ff ff ff ff ff ff ff ff ff ff;
0690: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
06a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
06b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
06c0: ff ff ff ff ff ff ff ff ff ff 14 ff ff ff ff ff;
06d0: ff ff ff ff ff ff ff ff ff ff 32 ff ff ff ff ff;
06e0: ff ff ff ff ff ff ff ff ff ff ff 35 ff ff ff ef;
06f0: a2 a3 34 ff 36 33 ff ff ff ff ff ff ff ff ff ff;
0700: ff 10 ff 04 02 00 01 ff ff 11 07 05 03 b0 b3 ff;
0710: ff 30 b2 ff ff 61 81 ff ff ff 72 63 41 67 82 ff;
0720: ff 43 70 44 45 84 83 ff ff 31 66 46 64 62 85 ff;
0730: ff 56 42 50 47 71 86 ff ff ff 55 52 65 87 90 ff;
0740: ff 77 53 51 57 80 91 ff ff 76 40 54 93 60 94 ff;
0750: ff 75 92 ff 95 73 ff ff b1 b2 32 96 ff a0 ff ff;
0760: ff ff ff ff ff ff 37 ff ff 21 74 24 27 ff ff ff;
0770: 20 15 22 25 26 12 ff ff ff 17 23 16 ff 13 ff ff;
0780: ff ff ff 06 ff ff ff ff ff ff ff ff ff ff ff ff;
0790: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
07a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
07b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff;
07c0: ff ff ff ff ff ff ff ff ff ff 14 ff ff ff ff ff;
07d0: ff ff ff ff ff ff ff ff ff ff 32 ff ff ff ff ff;
07e0: ff ff ff ff ff ff ff ff ff ff ff 35 ff ff ff ef;
07f0: a2 a3 34 ff 36 33 ff ff ff ff ff ff ff ff ff ff;
END;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
software/mzf/3-D MAZE.MZF Normal file

Binary file not shown.

BIN
software/mzf/MYMAZE.mzf Normal file

Binary file not shown.

Binary file not shown.

BIN
software/mzf/ramtest.mzf Normal file

Binary file not shown.

Binary file not shown.

BIN
software/mzf/tapecheck.mzf Normal file

Binary file not shown.

BIN
software/roms/IPL.rom Normal file

Binary file not shown.

Binary file not shown.

BIN
software/roms/MZ80B.rom Normal file

Binary file not shown.

Binary file not shown.

BIN
software/roms/MZFONT.rom Normal file

Binary file not shown.

BIN
software/roms/NEWMON.rom Normal file

Binary file not shown.

BIN
software/roms/SP1002.rom Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
software/roms/fdcrom.rom Normal file
View File

@@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

BIN
software/roms/key_1200.rom Normal file

Binary file not shown.

BIN
software/roms/key_700.rom Normal file

Binary file not shown.

BIN
software/roms/key_80a.rom Normal file

Binary file not shown.

BIN
software/roms/key_80b.rom Normal file

Binary file not shown.

BIN
software/roms/key_80c.rom Normal file

Binary file not shown.

BIN
software/roms/key_80k.rom Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
software/roms/mz-80acg.rom Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>