Converted filenames to lowercase to avoid MZF etc name clashes.

This commit is contained in:
Philip Smart
2021-05-21 16:31:06 +01:00
parent b9ade8df1c
commit 973fcd475b
99 changed files with 50594 additions and 35 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,4 +4,4 @@ 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-KM.asm"
INCLUDE "1z-013a-km.asm"

View File

@@ -4,4 +4,4 @@ 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"
INCLUDE "1z-013a.asm"

View File

@@ -4,4 +4,4 @@ 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-KM.asm"
INCLUDE "1z-013a-km.asm"

View File

@@ -4,4 +4,4 @@ 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"
INCLUDE "1z-013a.asm"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,546 @@
; ------------------------------------
; MZ-800 BASIC Interm.code conversion
; FI:EDIT ver 1.0A 7.18.84
; Programed by T.Miho
; ------------------------------------
;
INCLD MACRO
;
CVIMTX: ENT
PUSH DE
PUSH BC
LD C,0
DEC DE
CVIM10: INC DE
CVIM12: CALL IMSPACE
OR A
JR Z,IMEND
CP FFH
JR Z,IMPAI
CP 80H
JP NC,ER01
CP 20H
JR C,CVIM10
LD IX,CVIM12
PUSH IX
CP '"'
JR Z,IMSTR
CP "'"
JR Z,IMREM
CP "?"
JR Z,IMPRT
CP "."
JP Z,IMFLT
CP "$"
JP Z,IMHEX
CALL TSTNUM
JR C,IMRSV
JP IMNUM
;
IMEND: LD M,A
POP BC
POP DE
RET
;
IMPAI: LD M,E4H
CALL IM3R
JR CVIM12
;
IMPRT: LD A,8FH
CALL IM3RS
JR IMRSV6
;
IMREM: LD M,":"
CALL IM3R
LD M,"'"
CALL IM3RH
JP IMDATA
SKP H
;
IMSTR: LD M,A
CALL IM3R
IMSTR2: LD A,(DE)
OR A
RET Z
CP '"'
JR NZ,IMSTR
IM3RS: LD M,A
IM3R: INC DE
IM3RH: INC HL
IM3RC: INC C
RET NZ
JP ER08 ;LINE LENGTH
;
IMVAR: POP BC
LD A,(DE)
CALL TSTVAR
JR C,IM3RS
IMVAR2: CALL IM3RS
LD A,(DE)
CP "$"
JR Z,IM3RS
CALL TSTNUM
RET C
JR IMVAR2
;
IMRSV: PUSH BC
LD BC,CTBL1
CALL IMSER
JR NC,IMRSV4
LD BC,GTABL
CALL IMSER
LD C,FEH
JR NC,IMRSV2
LD BC,CTBL2
CALL IMSER
LD C,FFH
JR C,IMVAR
IMRSV2: LD M,C
INC HL
LD M,A
POP BC
CALL IM3RC
CALL IM3RH
CP B4H ; ERL ******
RET NZ
CALL IMSPACE
CP "="
RET NZ
LD M,F4H ; = ******
CALL IM3R
JR IMLNO
SKP H
;
IMRSV4: POP BC
CALL IM3RH
IMRSV6: CP 97H ; REM
JR Z,IMDATA
CP 94H ; DATA
JR Z,IMDATA
CP C2H ; ELSE
JR Z,IMELSE
CP E2H ; THEN
JR Z,IMLNO
CP E0H
RET NC
PUSH AF
CALL IMSPACE
CP "/"
JR NZ,IMRSV7
LD M,FBH ;/
CALL IM3R
CALL SKPDE
CALL IM3RS
JR IMRSV8
IMRSV7: CP "#"
JR NZ,IMRSV8
CALL IM3RS
CALL SKPDE
CALL TSTNUM
CALL NC,IMNUM
IMRSV8: POP AF
CP 8DH ; FOR
RET NC
;
IMLNO: CALL IMSPACE
CP '"'
JR NZ,IMLNO2
CALL IMSTR
JR IMLNO
IMLNO2: CP 2CH
RET C
CP 2FH
JR C,IMLNO4 ;",-."
CALL TSTNUM
RET C
CALL IMINT
JR IMLNO
IMLNO4: CALL IM3RS
JR IMLNO
;
IMELSE: DEC HL
LD M,":"
INC HL
LD M,A
CALL IM3RH
JR IMLNO
;
IMDATA: LD A,(DE)
CALL ENDCK0
RET Z
CALL IM3RS
CP '"'
CALL Z,IMSTR2
JR IMDATA
;
;
IMSER: PUSH HL ;Search in tabale
PUSH DE
LD HL,BC
LD B,7FH
IMSER2: POP DE
PUSH DE
INC B
LD A,M
CP FFH
JR NZ,IMSER3
POP DE ;Table end
POP HL
SCF
RET
;
IMSER3: CP "."
JR NZ,IMSER4
INC HL ;AND OR XOR NOT
DEC DE
LD A,(DE)
INC DE
CALL TSTVAR
JR NC,IMSER6
IMSER4: LD A,(DE)
CP " "
JR NZ,IMSER5
LD A,M
AND 7FH
SUB "A"
CP 26
JR C,IMSER6
CALL SKPDI
IMSER5: LD C,M
INC HL
INC DE
CP "."
JR Z,IMSER8
SUB C
JR Z,IMSER4
CP 80H
JR Z,IMSER9
IMSER6: DEC HL ;Not match
BIT 7,M
INC HL
JR Z,-3
JR IMSER2
IMSER8: LD A,B
CP E8H ;operator
JR NC,IMSER6
CCF
IMSER9: POP HL ;Found
POP HL
LD M,B
LD A,B
RET
;
IMSPACE:LD A,(DE)
CP " "
RET NZ
LD M,A
CALL IM3R
JR IMSPACE
SKP H
;
IMNUM: EX AF,AF'
PUSH DE
CALL SKPDI
POP DE
CALL TSTNUM ;check if one-digit
JR NC,IMFLT
CP "."
JR Z,IMFLT
CP "E"
JR Z,IMFLT
EX AF,AF'
SUB "0"-1
JP IMFLT ;ok, JP IM3RS
;
IMFLT: PUSH BC
LD M,15H
INC HL
PUSH HL
CALL CVFLAS
POP HL
LD BC,5
ADD HL,BC
LD A,6
JR BCKSPS
;
IMINT: PUSH BC
CALL CVBCAS
LD M,0BH
INC HL
JR PPOLNO
;
IMHEX: LD M,A
INC DE
LD A,(DE)
SVC .CKHEX
RST 3
DEFB .CKHEX
ENDM
JP C,IM3RH
PUSH BC
LD M,11H
INC HL
PUSH HL
EX DE,HL
SVC .DEHEX
RST 3
DEFB .DEHEX
ENDM
LD BC,DE
EX DE,HL
POP HL
PPOLNO: LD A,3
LD M,C
INC HL
LD M,B
INC HL
BCKSPS: POP BC
ADD A,C
JP C,ER08 ;LINE LENGTH
LD C,A
BCKSKP: DEC DE
LD A,(DE)
CP " "
JR Z,-4
INC DE
RET
SKP H
;
CVTXIM: ENT
PUSH HL
PUSH DE
PUSH BC
EXX
LD B,0
EXX
LD C,0
CVTX10: LD A,M
OR A
JR Z,TXEND
LD BC,CVTX10
PUSH BC
CP "'"
JR Z,TXDAT2
INC HL
LD BC,CTBL1
CP 20H
JR C,TXNUM
CP '"'
JR Z,TXSTR
CP ":"
JR Z,TX3AH
CP 97H ;REM
JR Z,TXDATA
CP 94H ;DATA
JR Z,TXDATA
CP E4H ;PI
JR Z,TXPAI
CP FEH
JR NC,TXRSV0
CP 80H
JP NC,TXRSV
JP STRDE
;
TXEND: LD (DE),A
POP BC
POP DE
POP HL
RET
;
TXPAI: LD A,FFH
JP STRDE
;
TXRSV0: LD BC,CTBL2
JR NZ,+5
LD BC,GTABL
LD A,M
INC HL
JR TXRSV
;
TXDATA: CALL TXRSV
RET Z
TXDAT2: LD A,M
CALL ENDCK0
RET Z
CALL STRDE
LD A,M
INC HL
CP '"'
CALL Z,TXSTR2
JR TXDAT2
;
TXSTR: CALL STRDE
TXSTR2: LD A,M
OR A
RET Z
INC HL
CP '"'
JR NZ,TXSTR
JR STRDE
;
TX3AH: LD (DE),A
LD A,M
CP C2H ; ELSE
RET Z
CP "'"
RET Z
JR STRDE'
;
TXNUM: CP 15H
JR Z,TXFLT
CP 0BH
JR NC,TXINT
DEC A
OR 30H
JR STRDE
;
TXINT: PUSH DE
LD E,M
INC HL
LD D,M
INC HL
PUSH HL
CP 12H
JR Z,TXINT2
CP 0CH
JR C,TXINT2
JR NZ,TXHEX
EX DE,HL
INC HL
INC HL
LD E,M
INC HL
LD D,M
TXINT2: EX DE,HL
CALL ASCFIV
LD BC,DE
POP HL
POP DE
TXINT4: LD A,(BC)
OR A
RET Z
CALL STRDE
INC BC
JR TXINT4
;
TXFLT: PUSH HL
PUSH DE
CALL CVASFL
LD BC,DE
POP DE
POP HL
REP5 INC,HL
INC HL
INC HL
INC HL
INC HL
INC HL
ENDM
JR TXINT4
;
TXRSV: CP 80H
JR Z,TXRSV4
EX AF,AF'
TXRSV2: LD A,(BC)
RLCA
INC BC
JR NC,TXRSV2
EX AF,AF'
DEC A
JR TXRSV
TXRSV4: LD A,(BC)
BIT 7,A
JR NZ,STRDES
CP "."
CALL NZ,STRDE
INC BC
JR TXRSV4
;
STRDES: AND 7FH
STRDE: LD (DE),A
OR A
RET Z
STRDE': INC DE
EXX
INC B
EXX
RET NZ
XOR A
LD (DE),A
DEC DE
EXX
DEC B
EXX
RET
;
TXHEX: LD A,"$"
EX AF,AF'
EX DE,HL
CALL HEXHL
LD BC,DE
POP HL
POP DE
EX AF,AF'
CALL STRDE
JR TXINT4
;
HEXHL: ENT
LD DE,DGBF12
PUSH DE
LD A,H
CALL HEXACC
LD A,L
CALL HEXACC
XOR A
LD (DE),A
POP DE
LD B,3
;
ZRSUP: LD A,(DE)
CP "0"
RET NZ
INC DE
DJNZ ZRSUP
RET
;
HEXACC: ENT
PUSH AF
RRCA
RRCA
RRCA
RRCA
AND 0FH
CALL HEXAC2
POP AF
AND 0FH
HEXAC2: ADD A,30H
CP 3AH
JR C,+4
ADD A,7
LD (DE),A
INC DE
RET
;
CVBCAS: ENT
PUSH HL
EX DE,HL
SVC .DEASC
RST 3
DEFB .DEASC
ENDM
LD BC,DE
EX DE,HL
POP HL
JP BCKSKP
;
END

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,716 @@
; -----------------------------
; MZ-800 BASIC Graphic command
; FI:GRPH ver 1.0B 9.21.84
; Programed by T.Miho
; -----------------------------
;
INCLD MACRO
;
BITFU2: DEFB 0 ;Default W0/W1
COL: ENT ;Color code
DEFB 03H
;
;;;;;;;;;;;;;;;
;
; SET/RESET [c,w]x,y
;
SET: ENT
DEFB F6H
RESET: ENT
XOR A
PUSH AF
CALL COORD0
SVC .POSSV
RST 3
DEFB .POSSV
ENDM
POP AF ;SET/RESET
PUSH HL
EXX
SVC .PSET
RST 3
DEFB .PSET
ENDM
POP HL
RET
;
;;;;;;;;;;;;;;;;;;
;
; LINE/BLINE [c,w] x0,y0,x1,y1,.....
;
LINE: ENT
DEFB F6H
BLINE: ENT
XOR A
LD (LINE4+1),A
CALL COORD0
CALL HCH2CH
LINE2: EXX
PUSH HL ;YS
PUSH DE ;XS
EXX
CALL COORD
POP DE ;XS
EX (SP),HL ;YS,Text
EXX
LINE4: LD A,0 ;LINE/BLINE
SVC .LINE
RST 3
DEFB .LINE
ENDM
POP HL
TEST1 ","
CALL TEST1
DEFB ","
ENDM
JR Z,LINE2
SVC .POSSV
RST 3
DEFB .POSSV
ENDM
RET
SKP H
;
;;;;;;;;;;;;;;;;;;;;;;;;
;
; PATTERN [C,W] N,X$
;
PATTER: ENT
CALL COLCON
CALL IDEEXP
XOR A
BIT 7,D
JR Z,GRDSP4
PUSH HL
LD H,A
LD L,A
SBC HL,DE
EX DE,HL
POP HL
LD A,1
GRDSP4: EX AF,AF'
LD A,D
OR A
JR NZ,ER03A
LD A,E
PUSH AF
EX AF,AF'
PUSH AF
CALL HCH2CH
CALL STREXP
POP AF
LD C,A
POP AF
PUSH HL
LD H,C
SVC .PATTR
RST 3
DEFB .PATTR
ENDM
POP HL
CALL ENDCHK
JR NZ,PATTER
RET
SKP H
;;;;;;;;;;;;;;;;;;;
;
; POSITION x,y
;
POSITI: ENT
CALL COORD
SVC .POSSV
RST 3
DEFB .POSSV
ENDM
RET
;
; Get X-Y coordinate
;
COORD0: CALL COLCON
COORD: CALL COORD1 ;Get x,y coordinate
PUSH DE
TEST1 ','
CALL TEST1
DEFB ','
ENDM
CALL COORD1
PUSH DE
EXX
POP HL
POP DE
EXX
RET
;
;
COORD1: CALL IDEEXP
LD A,D ;0000 ... 3FFF
ADD A,40H ;C000 ... FFFF
RET P
ER03A: JP ER03
SKP H
;;;;;;;;;;;;;;;;;;;;;;;
;
; color palette
;
PALET: ENT
CALL ENDCHK
JP Z,ER01
CALL PALRD
CALL COLCK2
AND 03H
PUSH AF
LD A,(PALBK)
LD D,E
SRL D
SRL D
CP D
JP NZ,ER22
TESTX ','
CALL TESTX
DEFB ','
ENDM
CALL PALRD
LD B,A
POP AF
SVC .DPLST
RST 3
DEFB .DPLST
ENDM
RET
;
PALRD: CALL IBYTE
CP 16 ;0 .. 15 check
JR NC,ER03A
RET
;
SKP H
;;;;;;;;;;;;;;;;;;;;
;
; BOX [c,w] xs,ys,xe,ye
BOX: ENT
CALL COORD0
EXX
PUSH HL ;YS
PUSH DE ;XS
EXX
CALL HCH2CH
CALL COORD
EXX
PUSH HL ;YE
PUSH DE ;XE
EXX
CALL ENDCHK
JR Z,BOX9
CALL CH2CH
CALL ENDCHK
LD A,(COL)
CALL NZ,COLCHK
SCF
BOX9: EXX
POP DE
POP HL
EXX
POP DE
EX (SP),HL
SVC .BOX
RST 3
DEFB .BOX
ENDM
POP HL
RET
SKP H
;
;;;;;;;;;;;;;;;;;;
;
; COLOR c,w
;
COLOR: ENT
CALL COLSUB
LD A,(COL)
SVC .DCOL
RST 3
DEFB .DCOL
ENDM
LD (SELCOL),A
LD A,(PWMODE)
LD (BITFU2),A
CALL ENDZ
RET
;
;;;;;;;;;;;;;;;;
;
; COLOR CONTROL EXP
;
COLCON: ENT
TEST1 ","
CALL TEST1
DEFB ","
ENDM
TEST1 "["
CALL TEST1
DEFB "["
ENDM
JR NZ,COLCN1
CALL COLSUB
LD A,(COL)
SVC .DGCOL
RST 3
DEFB .DGCOL
ENDM
TESTX "]"
CALL TESTX
DEFB "]"
ENDM
TEST1 ","
CALL TEST1
DEFB ","
ENDM
RET
;
COLCN1: LD A,(SELCOL)
LD (COL),A
SVC .DGCOL
RST 3
DEFB .DGCOL
ENDM
COLCN2: LD A,(BITFU2)
LD (PWMODE),A
RET
;
COLSUB: TEST1 ","
CALL TEST1
DEFB ","
ENDM
JR Z,COLC8
CALL COLCHK
LD (COL),A
TEST1 ','
CALL TEST1
DEFB ','
ENDM
JR NZ,COLCN2
COLC9: CALL IBYTE
CP 2
JR NC,ER03B
LD (PWMODE),A
RET
;
COLC8: LD A,(SELCOL)
LD (COL),A
JR COLC9
;
COLCHK: ENT
PUSH BC
CALL IBYTE
POP BC
COLCK2: LD A,(CRTMD1)
RRA
JR C,CMD1
RRA
JR C,CMD2
RRA
JR C,CMD3
CMD1: LD A,E
CP 4
JR NC,ER03B
RET
CMD2: LD A,E
CP 16
JR NC,ER03B
RET
CMD3: LD A,E
CP 2
RET C
ER03B: JP ER03
;
SKP H
;;;;;;;;;;;;;;;;;;;;
;
;PAINT COMMAND
;
PAINT: ENT
CALL COLCON
CALL POSITI
LD B,0
LD DE,PAINTB
PUSH DE
CALL ENDCHK
JR Z,PAINT3
PAINT1: CALL CH2CH
PUSH DE
CALL COLCHK
POP DE
LD (DE),A
INC DE
INC B
LD A,B
CP 16
JP Z,ER01
CALL ENDCHK
JR NZ,PAINT1
PAINT2: EX (SP),HL ;data adrs
PUSH HL
LD HL,-527
ADD HL,SP
LD (PAIWED),HL
POP HL
SVC .PAINT
RST 3
DEFB .PAINT
ENDM
JP C,ER06
POP HL
RET
;
PAINT3: LD A,(COL)
LD (DE),A
INC B ; data count
JR PAINT2
PAINTB: DEFS 16
SKP H
;;;;;;;;;;;;;;;;;;;;
;
;CIRCLE COMMAND
;
CIRCLE: ENT
PUSH HL
LD HL,0
LD (CW.H+1),HL
LD (CW.XS+1),HL
LD (CW.YS+1),HL
LD (CW.XE+1),HL
LD (CW.YE+1),HL
LD HL,KK
CALL CLRFAC
LD HL,FLT2PI
LD DE,SK ;\<5C>mßám\l=2PAI
CALL LDIR5
POP HL
;\s\ºl yÝ-Ä
CALL COORD0
SVC .POSSV
RST 3
DEFB .POSSV
ENDM
CALL HCH2CH
CALL IDEEXP
PUSH HL
LD A,D
AND C0H
JP NZ,ER03
EX DE,HL
LD (CW.R+2),HL ;ÞÙZs
LD (CW.XS+1),HL
LD (CW.XE+1),HL
LD HL,(INTFAC)
LD DE,CIR.R
CALL LDIR5
POP HL
CALL ENDCHK
JP Z,CW
CALL CH2CH
TEST1 ','
CALL TEST1
DEFB ','
ENDM
JR Z,CIRCL2
CALL HIRIT
CALL ENDCHK
JP Z,CW
CALL CH2CH
CIRCL2: TEST1 ','
CALL TEST1
DEFB ','
ENDM
JR Z,CIRCL8
LD IX,CW.XS+1
LD IY,KK
CALL STX
CALL ENDCHK
JP Z,CW
CALL CH2CH
CIRCL8: TEST1 ','
CALL TEST1
DEFB ','
ENDM
JR Z,CIRCL4
LD IX,CW.XE+1
LD IY,SK
CALL STX
CALL ENDCHK
JP Z,CW
CALL CH2CH
CIRCL4: TESTX 'O'
CALL TESTX
DEFB 'O'
ENDM
SCF
JR +3
CW: XOR A
PUSH HL
PUSH AF
LD HL,KK
LD DE,SK
CALL SUB
CALL LDIR5
LD A,(KK)
OR A
LD B,0
JR Z,CW2 ;KK=SK
LD HL,KK+1
RES 7,M
DEC HL ;HL:= ABS(KK-SK)
LD DE,FLTPAI
CALL CMP
LD B,1
JR C,CW2 ; ABS() < PI
LD DE,FLT2PI
CALL CMP
LD B,2
JR C,CW2 ; PI <= ABS() < 2*PI
LD B,3 ;2*PI <= ABS()
CW2: LD A,(SK+1)
AND 80H
OR B
LD B,A
POP AF ;CF='O'
LD A,B
EXX
CW.XS: LD DE,0 ;Start X
CW.YS: LD HL,0 ;Start Y
CW.H: LD BC,0 ;HIRITU
EXX
CW.XE: LD DE,0 ;End X
CW.YE: LD HL,0 ;End Y
CW.R: LD IX,0 ;R
SVC .CIRCL
RST 3
DEFB .CIRCL
ENDM
POP HL
OR A
RET
;
HIRIT: CALL IDEEXP
CALL PUSHR
LD HL,(INTFAC)
INC HL
BIT 7,M
JP NZ,ER03
DEC HL
LD DE,FLONE
CALL CMP
RET Z
LD A,1
JR C,HI
LD HL,FLONE
LD DE,CIRW3
PUSH DE
CALL LDIR5
POP HL
LD DE,(INTFAC)
CALL DIV
LD A,2
HI: LD (CW.H+1),A
LD DE,256DT
CALL MUL
LD DE,0.5DT
CALL ADD
CALL HLFLT
LD A,L
LD (CW.H+2),A
BIT 0,H
RET Z
XOR A
LD (CW.H+1),A
RET
;
STX: PUSH IX
PUSH IY
CALL IDEEXP
POP DE ;KK/SK
POP IX
PUSH HL
PUSH IX
LD HL,(INTFAC)
CALL LDIR5
LD HL,(INTFAC)
LD DE,HL
REP5 INC,DE
INC DE
INC DE
INC DE
INC DE
INC DE
ENDM
CALL LDIR5
CALL COS ;HL=(INTFAC)+5
LD DE,CIR.R
CALL MUL
CALL STXSUB
LD HL,(INTFAC)
CALL SIN
LD DE,CIR.R
CALL MUL
CALL NEG
CALL STXSUB
POP IX
POP HL
RET
;
STXSUB: INC HL
BIT 7,M
PUSH AF
RES 7,M
DEC HL
LD DE,0.5DT
CALL ADD
POP AF
INC HL
JR Z,+4
SET 7,M
DEC HL
CALL HLFLT
EX DE,HL
POP HL ;RET ADRS
EX (SP),HL ;Save coordinate
LD M,E
INC HL
LD M,D
INC HL
INC HL
EX (SP),HL
JP (HL)
;
;
;CIRCLE WORK AREA PART-2
;
CIR.R: DEFS 5
;
CIRW3: DEFS 5
;
256DT: DEF5 89,00,00,00,00
DEFW 0089H
DEFW 0000H
DEFB 00H
ENDM
0.5DT: DEF5 80,00,00,A7,C6
DEFW 0080H
DEFW A700H
DEFB C6H
ENDM
;
KK: DEFS 5
SK: DEFS 5
;
; SYMBOL command
;
DIRARE: EQU 27D0H
;
SMBOL: ENT
CALL COORD0 ;position load
SVC .POSSV ;position input
RST 3
DEFB .POSSV
ENDM
CALL HCH2CH
;string pointer load
CALL STREXP
;string zero check
LD A,B
OR A
PUSH BC
PUSH HL
LD C,B
LD B,0
LD HL,DIRARE
EX DE,HL
JR Z,SMBL2
LDIR ;string data xfer
SMBL2: POP HL
CALL HCH2CH
CALL IBYTE ;yoko bairitsu
LD A,D
OR E
JR Z,ERJP3 ;zero error
PUSH DE
CALL HCH2CH
CALL IBYTE ;tate bairitsu
LD A,D
OR E
ERJP3: JP Z,ER03 ;zero error
LD A,E
POP DE
LD D,A
CALL ENDCHK ;end check
PUSH DE
JR Z,SMBL1
CALL HCH2CH
CALL IBYTE ;angle load
LD A,3
CP E
JP C,ER03
LD A,E
DEFB 06H
SMBL1: XOR A
POP DE
POP BC
LD C,A ;angle push
LD A,B ;string length
OR A
RET Z ;zero return
LD A,C ;angle pop
PUSH HL
EX DE,HL
LD DE,DIRARE
SVC .SYMBL
RST 3
DEFB .SYMBL
ENDM
POP HL
RET
;
SKP H
;
;;;;;;;;;;;;;;
;
; HCOPY 1/2/3
; CLS 1/2/3
;
HCOPY: ENT
CALL ENDZ
PUSH HL
LD A,00H ;ASAHI modify
SVC .HCPY
RST 3
DEFB .HCPY
ENDM
POP HL
RET
;
CLS: ENT
CALL ENDZ
PUSH HL
SVC .CLS
RST 3
DEFB .CLS
ENDM
POP HL
RET
;
END

View File

@@ -0,0 +1,910 @@
; -----------------------------
; PLE-monitor CMT-driver
; FI:M-CMT ver 0.1 6.05.84
; -----------------------------
;
INCLD MACRO
;
$CMT: ENT
DEFW $RS ;###diff Lx
DEFM "CMT"
DEFB 0
DEFB 5FH ;Seq, W, R
$CMTF2: DEFB C0H ;CMT, 1OPN
DEFB 0
DEFW CTINI ;INIT
DEFW CTRINF ;RO
DEFW CTWINF ;WO
DEFW .RET ;START
DEFW 256 ;Block/byte
DEFW CTRDAT ;INP
DEFW CTWDAT ;OUT
DEFW 0 ;DELETE
DEFW 0 ;WDIR
DEFW ER59 ;FREE
;
CTINI: TEST1 "T" ; Change EOF process
CALL TEST1
DEFB "T"
ENDM
LD HL,$CMTF2
SET ##EOFE,M ; Tape BASIC mode
RET Z
RES ##EOFE,M ; Disk BASIC mode
OR A
RET
;
CTWINF: CALL PUSHR
LD DE,IBUFE
LD A,M
LD C,5
CP 2 ; BTX 2 ==> 5
JR Z,CTWF2
LD C,4
CP 3 ; BSD 3 ==> 4
JR Z,CTWF2
LD C,A
;
CTWF2: LD A,C
LD (DE),A
INC HL
INC DE
LD BC,17
LDIR
INC HL
INC HL
LD BC,6
LDIR
LD B,128-24
CALL ?CLRDE
LD HL,IBUFE
LD BC,128
CALL SAVE1
JR CTWD9
;
CTWDAT: CALL SAVE2
;
CTWD9: JP C,BREAKX ; break!
RET ; ok!
;-------------------------------
;
; read inf
; ent HL:adrs
;-------------------------------
CTRINF: LD A,37H ; SCF
LD (CTRDAT),A
PUSH HL
LD HL,IBUFE
LD BC,128
CALL LOAD1
JR C,CTERR ; error or break
LD DE,FINMES ; "Found"
CALL FNMPRT ; ? file name
POP DE
LD A,(ZLOG)
OR A ; ROPEN or LOAD?
LD A,M
JP NZ,CTRI1 ; R
LD C,2 ; L BTX 5 ==> 2
CP 5
JR Z,CTRI2
CTRI1: LD C,3 ; BSD 4 ==> 3
CP 4
JR Z,CTRI2
LD C,A
SUB 2
CP 2
JP C,ER61 ; file mode error!
;
CTRI2: LD A,C
LD (DE),A
INC HL
INC DE
LD BC,17
LDIR
XOR A
LD B,2
CALL ?CLRDE
LD BC,6
LDIR
LD B,32-18-2-6
JP ?CLRDE
;----------------------------------
;
; read data
; ent HL:adrs
; BC:byte size
;----------------------------------
CTRDAT: XOR A ; XOR A / SCF
JR NC,CTRD2
LD A,AFH ;XOR A
LD (CTRDAT),A
PUSH HL ; first time only
LD HL,ELMD
LD DE,LDNGMS ; "Loading"
CALL FNMPRT ; ? file name
POP HL
;
CTRD2: CALL LOAD2
RET NC ; ok!
;
CTERR: CP 2
JP NZ,BREAKX ; break!
LD A,70+80H
JP ERRORJ ; error!
;-----------------------------------
;
; CMT SAVE
;
;-----------------------------------
SAVE1: ENT ; Inf.
LD A,CCH
JR SAVE3
;
SAVE2: ENT ; Data
LD A,53H
;
SAVE3: LD (SPSV+1),SP ;;;
LD SP,IBUFE ;;;
PUSH DE
LD E,A
LD D,D7H ; 'W'=Dreg.
LD A,B
OR C
JR Z,RET1
CALL CKSUM ; check sum set
CALL MOTOR ; motor on
JR C,WRI3 ; break!
LD A,E
CP CCH
JR NZ,WRI2 ; write Data
PUSH DE
LD DE,WRTMES ; "Writing"
CALL FNMPRT ; ? file name
POP DE
;
WRI2: DI
CALL GAP ; write gap
CALL NC,WTAPE ; write Inf. or Data
;
WRI3: DI
CALL MSTOP ; motor off
;
RET1: POP DE
;
SPSV: LD SP,0 ;xxx
PUSH AF
SVC .EI
RST 3
DEFB .EI
ENDM
POP AF
RET
;--------------------------------
;
; CMT LOAD
;
;--------------------------------
LOAD1: ENT ; Inf.
LD A,CCH
JR LOAD3
;
LOAD2: ENT ; Data
LD A,53H
LOAD3: LD (SPSV+1),SP ;;;
LD SP,IBUFE ;;;
PUSH DE
LD D,D2H ; 'L'->Dreg
LD E,A
LD A,B
OR C
JR Z,RET1
CALL MOTOR ; motor on
DI
CALL NC,TMARK ; read gap & tape mark
CALL NC,RTAPE ; read Inf. or Data
JR WRI3
;-------------------------------------
;
; CMT VERIFY
;
;-------------------------------------
CMTVRF: ENT ; Data
PUSH HL
LD DE,VFNGMS ; "Verifying"
LD HL,ELMD
CALL FNMPRT ; ? file name
POP HL
CALL LOAD?2
RET NC ; ok!
CP 2
JP NZ,BREAKX ; break!
LD A,3+80H
JP ERRORJ ; error!
;
LOAD?2: ENT
LD (SPSV+1),SP ;;;
LD SP,IBUFE ;;;
PUSH DE
LD D,D2H
LD E,53H
LD A,B
OR C
JR Z,RET1
CALL CKSUM ; check sum set
CALL MOTOR ; motor on
DI
;
CALL NC,TMARK ; read gap & tape mark
CALL NC,TVRFY ; verify
JR WRI3
;----------------------------------------
; motor on
; exit CF=0:ok
; CF=1:break
;----------------------------------------
MOTOR: CALL PUSHR
SVC .DI
RST 3
DEFB .DI
ENDM
LD A,F8H
OUT (LSD0),A ; break set
LD B,10
;
MOT1: IN A,(LSD2)
AND 10H
JR Z,MOT4
;
MOT2: LD B,FFH ; 2sec delay
;
MOT3: CALL DLY7 ; 7ms delay
DJNZ MOT3 ; motor entry adjust
XOR A ; CF=0
RET
;
MOT4: LD A,6
OUT (LSD3),A
INC A
OUT (LSD3),A
DJNZ MOT1
LD A,(CMTMSG)
OR A
JR NZ,MOT6
SVC .CR2
RST 3
DEFB .CR2
ENDM
LD A,7FH ; Play mark
SVC .CRT1X
RST 3
DEFB .CRT1X
ENDM
LD A," "
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
LD A,D
CP D7H ; 'W'
LD DE,RECMES ; "RECORD."
JR Z,MOT5 ; write
LD DE,PLYMES ; "PLAY"
;
MOT5: SVC .CRTMS
RST 3
DEFB .CRTMS
ENDM
SVC .CR2
RST 3
DEFB .CR2
ENDM
;
MOT6: IN A,(LSD2)
AND 10H
JR NZ,MOT2
IN A,(LSD1)
AND 80H
JR NZ,MOT6
SCF ; CF=1,break!
RET
;-----------------------------------
;
; write tape
;
; in BC=byte size
; HL=adr.
;
; exit CF=0:ok.
; CF=1:break
;-----------------------------------
WTAPE: PUSH DE
PUSH BC
PUSH HL
LD D,2 ; repeat set
LD A,F8H
OUT (LSD0),A ; break set
;
WTAP1: LD A,M
CALL WBYTE ; 1 byte write
IN A,(LSD1)
AND 80H ; break check
SCF
JR Z,RTP5 ; break!
INC HL
DEC BC
LD A,B
OR C
JR NZ,WTAP1
LD HL,(SUMDT) ; check sum write
LD A,H
CALL WBYTE ; high
LD A,L
CALL WBYTE ; low
CALL LONG
XOR A
DEC D
JR Z,RTP5 ; ok!
LD B,A ; Breg=256
;
WTAP2: CALL SHORT ; write short 256
DJNZ WTAP2
POP HL
POP BC
PUSH BC
PUSH HL
JR WTAP1 ; repeat
;-------------------------------------
;
; read tape
;
; in BC=byte size
; HL=load adr.
;
; exit CF=0:ok
; CF=1,Acc=2:error
; else:break
;-------------------------------------
RTAPE: PUSH DE
PUSH BC
PUSH HL
LD D,2 ; repeat set
;
RTP1: CALL EDGE ; edge search:(49c)
JR C,RTP5 ; break!:7c
; reading point search
CALL DLY3 ; 17c (1232c)
IN A,(LSD2)
AND 20H
JR Z,RTP1 ; again
LD HL,0
LD (SUMDT),HL
POP HL
POP BC
PUSH BC
PUSH HL
;
RTP3: CALL RBYTE ; 1 byte read
JR C,RTP5 ; error!
LD M,A ; data->(mem.)
INC HL
DEC BC
LD A,B
OR C
JR NZ,RTP3
LD HL,(SUMDT) ; check sum
CALL RBYTE ; high
JR C,RTP5 ; error!
CP H
JR NZ,RTP6 ; error!
CALL RBYTE ; low
JR C,RTP5 ; error!
CP L
JR NZ,RTP6 ; error!
;
RTP4: XOR A
;
RTP5: POP HL
POP BC
POP DE
RET
;
RTP6: DEC D
JR NZ,RTP1 ; repeat
;
VFERR: LD A,2 ; error
SCF
JR RTP5
;-------------------------------------
;
; verify tape
;
; in BC=byte size
; HL=adr.
;
; exit CF=0:ok
; CF=1,Acc=2:error
; else:break
;-------------------------------------
TVRFY: PUSH DE
PUSH BC
PUSH HL
LD D,2 ; repeat set
;
TVF1: CALL EDGE ; edge search:(49c)
JR C,RTP5 ; break!:7c
; reading point search
CALL DLY3 ; 17c (1232c)
IN A,(LSD2)
AND 20H
JR Z,TVF1 ; again
POP HL
POP BC
PUSH BC
PUSH HL
;
TVF2: CALL RBYTE ; 1 byte read
JR C,RTP5 ; error!
CP M ; CP A.(mem.)
JR NZ,VFERR ; verify error!
INC HL
DEC BC
LD A,B
OR C
JR NZ,TVF2
LD HL,(CSMDT) ; Check sum.
CALL RBYTE ; high
JR C,RTP5 ; error!
CP H
JR NZ,VFERR ; error!
CALL RBYTE ; low
JR C,RTP5 ; error!
CP L
JR NZ,VFERR ; error!
DEC D
JR NZ,TVF1 ; repeat
JR RTP4 ; ok!
;
RECMES: DEFM 'RECORD.'
PLYMES: DEFM 'PLAY'
DEFB 0
;--------------------------------------
;
; file name print
;--------------------------------------
FNMPRT: LD A,(CMTMSG)
OR A
RET NZ
SVC .CR2
RST 3
DEFB .CR2
ENDM
SVC .CRTMS
RST 3
DEFB .CRTMS
ENDM
PUSH HL
INC HL
LD A,'"'
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
LD D,16
;
FNMLP: LD A,M
CP 0DH
JR Z,FNMLE
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
INC HL
DEC D
JR NZ,FNMLP
;
FNMLE: LD A,'"'
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
SVC .CR2
RST 3
DEFB .CR2
ENDM
POP HL
RET
;
WRTMES: DEFM 'WRITING '
DEFB 0
FINMES: DEFM 'FOUND '
DEFB 0
LDNGMS: DEFM 'LOADING '
DEFB 0
VFNGMS: DEFM 'VERIFYING '
DEFB 0
;
;
;-----------------------------------------
;
; tape format
;
; <LONG> <SHORT>
; <460us><496us><240us> <264us>
; b b b b b b
; gxxxxxx° gxx° gxx° g
; xxxxxt b hxxxxxxt hxxt hxxt
; b b b b
; b b b b
; / / / / / /
; ! ! Read point! ! Read point
; ! 368us ! 368us
; Read edge Read edge
;
;-----------------------------------------
;
; Information format : Data format
; :
; * gap : * gap
; short 10 sec : short 5 sec
; (22000) : (11000)
; * tape mark : * tape mark
; long 40 : long 20
; short 40 : short 20
; * long 1 : * long 1
; * Information : * Data
; block : block
; (128 bytes) : (???? bytes)
; * check sum : * check sum
; (2 bytes) : (2 bytes)
; * long 1 : * long 1
; * short 256 : * short 256
; * Information : * Data
; block : block
; (128 bytes) : (???? bytes)
; * check sum : * check sum
; (2 bytes) : (2 bytes)
; * long 1 : * long 1
;
;-----------------------------------------
;
;
; EDGE (tape data edge search)
; (85c+111c)/4= 49 clock
;
; exit CF=0:ok
; CF=1:break
;
EDGE: LD A,F8H
OUT (LSD0),A ; break set
NOP
;
EDG1: IN A,(LSD1)
AND 81H ; shift & break
JR NZ,EDG2
SCF
RET
;
EDG2: IN A,(LSD2) ; 11c
AND 20H ; 7c
JR NZ,EDG1 ; CSTR D5=0: 7c/12c
;
EDG3: IN A,(LSD1) ; 11c
AND 81H ; 7c
JR NZ,EDG4 ; 7c/12c
SCF
RET
;
EDG4: IN A,(LSD2) ; 7c
AND 20H ; 7c
JR Z,EDG3 ; CSTR D5=1: 7c/12c
RET ; 10c
;--------------------------------------
;
; 1 byte read
;
; exit SUMDT=Store
; CF=1:break
; CF=0:data=Acc
;--------------------------------------
RBYTE: PUSH DE
PUSH BC
PUSH HL
LD HL,0800H ; 8 repeat set
;
RBY1: CALL EDGE ; edge search:(49c)
JP C,TM4 ; break!:7c
; reading point search:17c(1232c)
CALL DLY3 ; 17c (1232c)
IN A,(LSD2) ; data read
AND 20H ; CF=0
JP Z,RBY2 ; again
PUSH HL
LD HL,(SUMDT) ; check sum set
INC HL
LD (SUMDT),HL
POP HL
SCF ; CF=1
;
RBY2: LD A,L
RLA ; rotate left
LD L,A
DEC H
JP NZ,RBY1 ; repeat
CALL EDGE
LD A,L
JR TM4 ; ok!
;-------------------------------------
;
; 1 byte write
; in Acc=data
;-------------------------------------
WBYTE: PUSH BC
LD B,8 ; 8 repeat set
CALL LONG ; write long
;
WBY1: RLCA ; rotate left
CALL C,LONG ; 'H' long
CALL NC,SHORT ; 'L' short
DEC B
JP NZ,WBY1 ; repeat
POP BC
RET
;-------------------------------------
;
; tape mark read
;
; in E=CCH:Inf. long40,short40
; else:Data long20,short20
;
; exit CF=0:ok
; CF=1:break
;
;-------------------------------------
TMARK: CALL GAPCK
;
PUSH DE
PUSH BC
PUSH HL
LD HL,2828H ; H=40,L=40
LD A,E
CP CCH ;'L'
JR Z,TM0
LD HL,1414H ; H=20,L=20
;
TM0: LD (TMCNT),HL
;
TM1: LD HL,(TMCNT)
;
TM2: CALL EDGE ; edge search:(49c)
JR C,TM4 ; break!:7c
; reading point search:17c(1232c)
CALL DLY3 ; 17c (1232c)
IN A,(LSD2)
AND 20H
JR Z,TM1 ; again
DEC H
JR NZ,TM2
;
TM3: CALL EDGE ; edge search:(49c)
JR C,TM4 ; break!:7c
; reading point search:17c(1232c)
CALL DLY3 ; 17c (1232c)
IN A,(LSD2)
AND 20H
JR NZ,TM1 ; again
DEC L
JR NZ,TM3
CALL EDGE
;
TM4: POP HL
;
TM5: POP BC
POP DE
RET
;------------------------------------
;
; check sum set
;
; in BC=byte size
; HL=adr.
;
; exit SUMDT=store
; CSMDT=store
;------------------------------------
CKSUM: PUSH DE
PUSH BC
PUSH HL
LD DE,0
;
CKS1: LD A,B
OR C
JR NZ,CKS2
EX DE,HL
LD (SUMDT),HL
LD (CSMDT),HL
JR TM4 ; ret
;
CKS2: LD A,(HL)
PUSH BC
LD B,8 ; 8 bits
;
CKS3: RLCA ; rotate left
JR NC,CKS4
INC DE
;
CKS4: DJNZ CKS3
POP BC
INC HL
DEC BC
JR CKS1
;--------------------------------------
;
; gap + tape mark
;
; in E=CCH:short gap (10 sec)
; else:short GAP ( 5 sec)
;--------------------------------------
GAP: PUSH DE
PUSH BC
LD A,E
LD BC,55F0H ; Inf. 22000(10 sec)
LD DE,2828H ; short40,long40
CP CCH ;'L'
JP Z,GAP1
LD BC,2AF8H ; Data 11000( 5 sec)
LD DE,1414H ;short20,long20
;
GAP1: CALL SHORT ; write short
DEC BC
LD A,B
OR C
JR NZ,GAP1
;
GAP2: CALL LONG ; write long
DEC D
JR NZ,GAP2
;
GAP3: CALL SHORT ; write short
DEC E
JR NZ,GAP3
CALL LONG
JR TM5
;-----------------------------------------
;
; GAP check
; (long100 search)
;-----------------------------------------
GAPCK: PUSH DE
PUSH BC
PUSH HL
;
GAPCK1: LD H,100 ; 100 repeat set
;
GAPCK2: CALL EDGE ; edge search:(49c)
JR C,TM4 ; error!:7c
CALL DLY3 ; reading point search:17c(1232c)
IN A,(LSD2)
AND 20H
JR NZ,GAPCK1 ; again
DEC H
JR NZ,GAPCK2
JR TM4
;----------------------------------------
;
; SHORT AND LONG PULSE FOR 1 BIT WRITE
;----------------------------------------
SHORT: PUSH AF ; 11c
LD A,03H ; 7c
OUT (LSD3),A ; 11c
CALL DLY1 ; 17c (408c)
CALL DLY1 ; 17c (408c)
LD A,02H ; 7c
OUT (LSD3),A ; 11c
CALL DLY1 ; 17c (408c)
CALL DLY1 ; 17c (408c)
POP AF ; 10c
RET ; 10c
;
;
LONG: PUSH AF ; 11c
LD A,03H ; 7c
OUT (LSD3),A ; 11c
CALL DLY4 ; 17c (1704c)
LD A,02H ; 7c
OUT (LSD3),A ; 11c
CALL DLY4 ; 17c (1704c)
POP AF ; 10c
RET ; 10c
;----------------------------------------
;
; MOTOR STOP
;----------------------------------------
MSTOP: PUSH AF
PUSH BC
PUSH DE
LD B,10
;
MST1: IN A,(LSD2) ; motor check
AND 10H
JR Z,MST3 ; ok
LD A,06H ; motor off
OUT (LSD3),A
INC A
OUT (LSD3),A
DJNZ MST1
;
MST3: POP DE
POP BC
POP AF
RET
;-------------------------------------------
;
; 7.046 ms delay ... 24989c
;-------------------------------------------
DLY7: ENT
PUSH BC ; 11c
LD B,20 ; 7c
;
DLY.7: CALL DLY3 ; 17*19+17 (23332c)
CALL DLY0 ; 17*19+17 ( 226c)
DJNZ DLY.7 ; 13*19+8
POP BC ; 10c
RET ; 10c
;-------------------------------------------
;
; 14 clock delay
;-------------------------------------------
DLY0: NOP ; 4c
RET ; 10c
;-------------------------------------------
;
; 347.4 us delay ... 1232c
;-------------------------------------------
DLY3: NOP ; 4c
LD A,76 ; 7c
;
DLYA: DEC A ; 4*XX+4
JR NZ,DLYA ; 12*XX+7
RET ; 10c
;-----------------------------------
;
; Delay for short.
; 115.0 us delay ... 408c
;-----------------------------------
DLY1: ENT
LD A,24 ; 7c
JR DLYA ; 12c
;-----------------------------------
;
; Delay for long.
; 480.4 us delay ... 1704c
;-----------------------------------
DLY4: ENT
LD A,105 ; 7c
JR DLYA ; 12c
;
END

View File

@@ -0,0 +1,74 @@
; ----------------------------
; PL-monitor FD dummy
; FI:DMY-FD ver 003 3.28.84
; ----------------------------
;
INCLD MACRO
;
;
$FD: ENT
DEFW $QD
DEFB 0
;
CLX: ENT ;dummy routines
DUST: ENT
FLOFF: ENT
FREEX: ENT
INREC: ENT
INX1B: ENT
LD.DIR: ENT
LDX: ENT
LOPX: ENT
OPX: ENT
PRREC: ENT
PRX1B: ENT
RECST: ENT
SVX: ENT
OR A
RET
;
FLOCK: ENT
FSWAP: ENT
JP ER59
SKP H
;
; SVC .DELET
;
FDELET: ENT
CALL PUSHR
LD HL,(ZDELT) ;SEQ
LD A,L
OR H
JR Z,FREN2
PUSH HL
SVC .LOPEN
RST 3
DEFB .LOPEN
ENDM
LD A,2
LD (ZRWX),A
CALL ?OPEND
JR FREN4
;
; SVC .RENAM
;
FRENAM: ENT
CALL PUSHR
LD HL,(ZWDIR)
LD A,L
OR H
FREN2: JP Z,ER59
PUSH HL
SVC .LOPEN
RST 3
DEFB .LOPEN
ENDM
LD HL,ELMD
CALL SETFNAM
LD HL,200H
LD (ZLOG),HL
CALL SERFLW ;check already exist
FREN4: POP IX
JP IOCALL
END

File diff suppressed because it is too large Load Diff

39
software/asm/mz-xz009/HLA Normal file
View File

@@ -0,0 +1,39 @@
# This viminfo file was generated by Vim 8.0.
# You may edit it if you are careful!
# Viminfo version
|1,4
# Value of 'encoding' when this file was written
*encoding=utf-8
# hlsearch on (H) or off (h):
~h
# Command Line History (newest to oldest):
:q
|2,0,1616620341,,"q"
# Search String History (newest to oldest):
# Expression History (newest to oldest):
# Input Line History (newest to oldest):
# Debug Line History (newest to oldest):
# Registers:
# File marks:
'0 1 0 /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep
|4,48,1,0,1616620341,"/srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep"
# Jumplist (newest first):
-' 1 0 /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep
|4,39,1,0,1616620341,"/srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep"
# History of marks within files (newest to oldest):
> /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep
* 1616620340 0
" 1 0

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,83 @@
; ---------------------------
; MZ-800 Macro define
; FI:MACRO ver 1.0 7.26.84
; ---------------------------
;
;
MACRO SVC
RST 3
DEFB @1
ENDM
;
MACRO IOCALL
LD IX,(@1)
CALL IOCALL
ENDM
;
MACRO TEST1
CALL TEST1
DEFB @1
ENDM
;
MACRO TESTX
CALL TESTX
DEFB @1
ENDM
;
MACRO DEF8
DEFW @2@1H
DEFW @4@3H
DEFW @6@5H
DEFW @8@7H
ENDM
;
MACRO DEF5
DEFW @2@1H
DEFW @4@3H
DEFB @5H
ENDM
;
MACRO REP5
@1 @2
@1 @2
@1 @2
@1 @2
@1 @2
ENDM
;
MACRO SVCT
@2: EQU @1H
DEFW @3
ENDM
END
MACRO TBL
DEFM "@1"
DEFB "@2"+80H
ENDM
MACRO ENTRY
ER@1: ENT
LD A,@1
DEFB 21H
ENDM
MACRO FKEY
DEFB FNB@1E-FNB@1S
FNB@1S: DEFM @2
IFD @3
DEFB @3
ENDIF
FNB@1E: DEFS FNB@1S+15-FNB@1E
ENDM
MACRO ERENT
ER@1: ENT
IFD @2
LD A,@1+80H
ENDIF
IFU @2
LD A,@1
ENDIF
DEFB 21H
ENDM

View File

@@ -0,0 +1,439 @@
; ----------------------------
; Lx-monitor EMM driver
; FI:MON-EMM ver 005 4.27.84
; ----------------------------
;
INCLD MACRO
;
$RAM: ENT
DEFW $FD
DEFM "RAM"
DEFB 0
DEFB 5FH
DEFB 20H ;1WOPN
DEFB 32 ;Max dir
DEFW EMINI ;INIT
DEFW EMRINF
DEFW EMWINF
DEFW EMON
DEFW 1024
DEFW EMRDAT
DEFW EMWDAT
DEFW EMDEL
DEFW EMWDIR
DEFW EMFRKB
;
EMFRKB: CALL EMFRB
LD C,H
LD B,0 ;/256
SRL C ;/512
SRL C ;/1024
OR A
RET
;
EMFRB: PUSH DE
LD HL,0 ;free area(bytes)
CALL EMLD2 ;max
PUSH DE
INC HL
INC HL
CALL EMLD2 ;use
POP HL
SBC HL,DE
JP C,ER41 ;I/O ERR
POP DE
RET
;
;
EMCLR: LD DE,10H
EMSETU: LD HL,2
CALL EMSV2 ;Set used mem
EX DE,HL
LD DE,0
JP EMSV2 ;File end mark
SKP H
;
EMINI: RET C
LD A,(EMFLG)
OR A
JP Z,ER50
CALL OKYN
TEST1 ","
CALL TEST1
DEFB ","
ENDM
PUSH HL
CALL EMCLR
POP HL
TEST1 0
CALL TEST1
DEFB 0
ENDM
RET Z ;INIT "EM:"
SVC .DEASC ;INIT "EM:$hhhh"
RST 3
DEFB .DEASC
ENDM
EMINI2: LD HL,0
DI
LD B,1
LD A,D
AND FCH
CP FCH
LD HL,FFFFH
JR Z,EMINI3 ;if >=FC00 then FFFF
LD B,3
LD A,D
OR A
LD HL,20H
JR NZ,+3 ;if <=00FF then 0020
EMINI3: EX DE,HL
LD A,B
LD (EMFLG),A
LD HL,0
CALL EMSV2 ;Set max mem
CALL PBCCLR
EI
RET
SKP H
;
; EMM power on routine
;
EMMPWR: ENT
LD HL,8
LD B,L
LD C,0
EMPWR2: CALL EMLD1
SUB L
OR C
LD C,A
LD A,L
CALL EMSV1
INC L
DJNZ EMPWR2
LD A,C
OR A
JR NZ,EMPWR4
LD HL,0 ;already initialized
CALL EMLD2
LD A,2
INC D
JR Z,+3
INC A
LD (EMFLG),A
JP PBCCLR
EMPWR4: CALL EMCLR
LD HL,0 ;check EMM installed?
LD A,5AH
CALL EMSV1
CALL EMLD1
SUB 5AH
LD DE,C000H ;Initial set 48KB
JR Z,EMINI2
XOR A
LD (EMFLG),A
RET
SKP H
;
; Dir search start
;
EMON: LD A,(EMFLG)
OR A
JP Z,ER50
LD HL,10H
LD (EMPTR),HL
RET
;
; Read inf
; ent HL:adrs
;
EMRINF: LD BC,HL
LD HL,(EMPTR)
CALL EMLD2
LD A,D
OR E
SCF
RET Z
INC HL
INC HL
PUSH HL
ADD HL,DE
JP C,ER41 ;I/O ERR
LD (EMPTR),HL
POP HL
INC HL
INC HL
INC HL
LD DE,BC
LD BC,32-2
CALL EMLDD
LD BC,32+2
ADD HL,BC
EX DE,HL
LD M,E ;Save data area adrs
INC HL
LD M,D
OR A
RET
;
; Read data
; ent HL:buffer adrs
; BC:byte size
;
EMRDAT: EX DE,HL
LD L,(IY+30)
LD H,(IY+31)
INC HL
INC HL
INC HL
CALL EMLDD
LD (IY+30),L
LD (IY+31),H
OR A
RET
SKP H
;
; Write file
; HL:inf adrs
;
EMWINF: PUSH AF
CALL SERFLW
PUSH HL
LD HL,2
CALL EMLD2
LD (EMWP0),DE
PUSH DE
LD HL,64+7
ADD HL,DE
CALL EMFRE? ;Check file space
POP DE
INC DE
INC DE
POP HL ;inf adrs
LD BC,64
POP AF
CALL EMSVB
LD (EMWP1),DE
RET
SKP H
;
; Write data
; HL:data adrs
; BC:data bytes
; A0:close flag
;
;
EMWDAT: PUSH AF
PUSH HL
PUSH BC
LD HL,(EMWP1)
INC BC
INC BC
INC BC
ADD HL,BC
CALL EMFRE?
POP BC
POP HL
LD DE,(EMWP1)
POP AF
PUSH AF
OR 01H ;data block
CALL EMSVB
LD (EMWP1),DE
POP AF
BIT 2,A ;close ?
RET Z ;no
PUSH DE ;yes
CALL EMSETU
POP HL
LD DE,(EMWP0)
DEC HL
DEC HL
OR A
SBC HL,DE
EX DE,HL
JP EMSV2
;
;
EMFRE?: JR C,ER53A
PUSH HL
LD HL,0
CALL EMLD2
OR A
POP HL
SBC HL,DE
RET C
ER53A: JP ER53 ;No file pace
SKP H
;
; delete file
;
EMDEL: LD HL,(ELMD30)
LD DE,-64-5
ADD HL,DE ;HL:=move destination
CALL EMLD2 ;DE:=delete size - 2
EX DE,HL ;DE:=move destination
ADD HL,DE
INC HL
INC HL ;HL:=move source
PUSH DE
PUSH HL
LD HL,2
CALL EMLD2
EX DE,HL ;HL:=last use
POP DE ;DE:=move source
PUSH DE
OR A
SBC HL,DE
INC HL
INC HL
LD BC,HL ;BC:=move bytes
POP HL ;HL:=move source
POP DE ;DE:=move destination
CALL EMLDIR
DEC DE
DEC DE ;DE:=new last-use
LD HL,2
JP EMSV2
;
; write dir
;
EMWDIR: LD HL,(ELMD30)
LD DE,-64
ADD HL,DE
EX DE,HL
LD HL,ELMD
LD BC,32
JP EMSVD
SKP H
;
EM.P0: EQU EAH
EM.P1: EQU EBH
;
; EMM 1 Byte Write
; ent A: data
; HL:EMM adrs
;
EMSV1: ENT
PUSH BC
LD C,EM.P1
LD B,H
OUT (C),L
OUT (EM.P0),A
POP BC
OR A
RET
;
; EMM 1 Byte Read
; ent HL:EMM adrs
; ext A: dat
;
EMLD1: ENT
PUSH BC
LD C,EM.P1
LD B,H
OUT (C),L
IN A,(EM.P0)
POP BC
OR A
RET
;
; EMM 2 Byte Write
; ent DE:data
; HL:EMM adrs
;
EMSV2: ENT
LD A,E
CALL EMSV1
INC HL
LD A,D
CALL EMSV1
DEC HL
RET
;
; EMM 2 Byte Read
; ent HL:EMM adrs
; DE:data
;
EMLD2: ENT
CALL EMLD1
LD E,A
INC HL
CALL EMLD1
LD D,A
DEC HL
RET
SKP H
;
; EMM write block
; ent HL :data Top
; DE :EMM Adrs
; BC :byte Size
; A :block flag
;
EMSVB: EX DE,HL
CALL EMSV1
INC HL
LD A,C
CALL EMSV1
INC HL
LD A,B
CALL EMSV1
INC HL
EX DE,HL
EMSVD: ENT
EX DE,HL
EMSVE: LD A,(DE)
CALL EMSV1
INC HL
INC DE
DEC BC
LD A,B
OR C
JR NZ,EMSVE
EX DE,HL
RET
;
; EMM BC Byte Read
; ent DE :Store Top
; HL :EMM Adrs
; BC :Byte Size
;
EMLDD: ENT
CALL EMLD1
LD (DE),A
INC HL
INC DE
DEC BC
LD A,B
OR C
RET Z
JR EMLDD
;
; EMM BC Byte LDIR
; ent HL :EMM source top
; DE :EMM destination top
; BC :Byte Size
;
EMLDIR: ENT
CALL EMLD1 ;EMM (HL) Data => Acc
EX DE,HL
CALL EMSV1 ;Acc => (DE) EMM
EX DE,HL
INC HL
INC DE
DEC BC
LD A,B
OR C
RET Z ;End
JR EMLDIR
END

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,469 @@
; ----------------------------
; MZ-800 RS-232C driver
; FI:MON-RS ver 001 8.02.84
; ----------------------------
;
INCLD MACRO
RSYS: EQU 1 ;0 700,1500
; 1 800
IF RSYS
RMCH: EQU 3
ENDIF
;
IF RSYS-1
RMCH: EQU 1
ENDIF
;
;
$RS: ENT
DEFW $RAM
DEFM "RS"
DEFW 0
DEFB 8FH ;Streem, O1C, I1C, W, R
DEFB RMCH ;ch.
DEFB 0
DEFW RSINI ;INIT
DEFW RSRO ;ROPEN
DEFW RSWO ;WOPEN
DEFW RSCL ;CLOSE
DEFW RSKL ;KILL
DEFW RSINP ;INP1C
DEFW RSOUT ;OUT1C
DEFW .RET ;POS
;
RSINI: RET C
PUSH IY
CALL SETIY
CALL RSINT0
CALL RSPARM
JR RETIY
;
RSINT0: SVC .DEASC
RST 3
DEFB .DEASC
ENDM
LD (IY+#MONIT),E
TEST1 ","
CALL TEST1
DEFB ","
ENDM
JP NZ,ER03
SVC .DEASC
RST 3
DEFB .DEASC
ENDM
LD (IY+#INIT),E
TEST1 0
CALL TEST1
DEFB 0
ENDM
RET Z
TEST1 ","
CALL TEST1
DEFB ","
ENDM
JP NZ,ER03
SVC .DEASC
RST 3
DEFB .DEASC
ENDM
LD (IY+#CRLF),E
RET
SKP H
;
RSRO:
RSWO: PUSH IY
CALL SETIY
LD A,(IY+#STAT)
INC (IY+#STAT)
OR A
CALL Z,RSOPEN
JR RETIY
;
;
RSCL:
RSKL: PUSH IY
CALL SETIY
DEC (IY+#STAT)
LD A,(IY+#STAT)
OR A
CALL Z,RCLOSE
JR RETIY2
;
;
;
RSINP: PUSH IY
CALL SETIY
CALL RSINP0
JP C,IOERR
CP (IY+#CRLF)
JR NZ,+4
LD A,0DH
RETIY2: OR A
RETIY: POP IY
RET
;
RSINP0: BIT 6,(IY+#INIT)
JP Z,GET1C
LD IX,GET1C
LD HL,IY
LD DE,#JISR
ADD HL,DE
JP JISR
;
RSOUT: PUSH IY
CALL SETIY
CP 0DH
JR NZ,+5
LD A,(IY+#CRLF)
CALL RSOUT0
JR RETIY
;
RSOUT0: BIT 6,(IY+#INIT)
JP Z,PUT1C
LD IX,PUT1C
LD HL,IY
LD DE,#JISX
ADD HL,DE
LD DE,(DISPX)
JP JISX
SKP H
;
SETIY: PUSH AF
PUSH DE
LD A,(ZCH)
INC A
LD IY,$A-TBLN
LD DE,TBLN
SETIY2: ADD IY,DE
DEC A
JR NZ,SETIY2
LD C,(IY+0)
POP DE
POP AF
RET
;
;
;*** PORT ADDRESS EQU ***
;
CHADT: EQU B0H
CHACT: EQU B1H
CHBDT: EQU B2H
CHBCT: EQU B3H
;
;
CHCDT: EQU D0H
CHCCT: EQU D1H
CHDDT: EQU D2H
CHDCT: EQU D3H
;
#CRLF: EQU -8
#JISX: EQU -7
#JISR: EQU -5
#MONIT: EQU -3
#INIT: EQU -2
#STAT: EQU -1
SKP H
;
;
DEFS 1 ;CR or LF
DEFS 2 ;for JISX
DEFS 2 ;for JISR
DEFS 1 ;monitor
DEFS 1 ;init code
DEFS 1 ;status
$A: DEFB CHACT ;0
DEFB CHADT ;1
DEFS 1 ;2 Mask Pattern
DEFW 1010H ;3,4
DEFW 4004H ;5,6 WR4
DEFW C003H ;7,8 WR3
DEFW 6005H ;9,10 WR5
DEFB 30H
DEFB 3
;
;
DEFS 8
$B: DEFB CHBCT
DEFB CHBDT
DEFS 1
DEFW 1010H
DEFW 4004H
DEFW C003H
DEFW 6005H
DEFB 30H
DEFB 3
;
;
IF RSYS
DEFS 8
$C: DEFB CHCCT ;0
DEFB CHCDT ;1
DEFS 1 ;2 Mask Pattern
DEFW 1010H ;3,4
DEFW 4004H ;5,6 WR4
DEFW C003H ;7,8 WR3
DEFW 6005H ;9,10 WR5
DEFB 30H
DEFB 3
;
;
DEFS 8
$D: DEFB CHDCT
DEFB CHDDT
DEFS 1
DEFW 1010H
DEFW 4004H
DEFW C003H
DEFW 6005H
DEFB 30H
DEFB 3
ENDIF
;
TBLN: EQU $B-$A
;
SKP H
;
;
; Break Check
;
BRK: CALL BRKCHK
RET NZ
JP BREAKZ
;
; sio parameter set
;
;
;
RSPARM:
LD A,18H ;channel reset
OUT (C),A
LD A,30H ;err reset
OUT (C),A
LD A,(IY+#INIT) ;inital bit
AND 0CH ;stop bit
JR NZ,RSP0
SET 2,(IY+#INIT) ;1 bit/chr
RSP0: LD A,(IY+#INIT) ;initial bit
LD B,A ;B=init code
AND 0FH ;mask
OR 40H ;clock rate *16
LD (IY+6),A ;wr4
LD A,B
AND 80H ;rx disable d7 bit/chr
OR 40H
LD (IY+8),A ;wr3
RRA
AND 7FH ;dtroff
OR 0AH ;tx enable rtson dtroff
LD (IY+10),A ;wr5
LD A,B
OR 7FH
LD (IY+2),A ;bit mask
CALL RSSUB
RSTBUF:
IN A,(C)
RRCA
RET NC
DEC C
IN A,(C)
INC C
LD A,1
OUT (C),A
IN A,(C)
AND 70H
JR Z,RSTBUF
RET
;
;
;
;
; SIO close
;
;
RCLOSE: RES 0,(IY+8) ;rx disable
RES 7,(IY+10) ;rdy off
LD (IY+#STAT),0
RSSUB: LD B,10
PUSH IY
POP HL
LD DE,3
ADD HL,DE
OTIR
RET
;
;
; SIO open
;
;
RSOPEN: LD A,30H
OUT (C),A ;err reset
RET
SKP H
;
;
; in IY=channel data
; C=channel control port
;
;
;
RSEN: SET 0,(IY+8) ;wr3 RX enable
LD A,13H
OUT (C),A ;ext/int reset
LD A,(IY+8) ;wr3
OUT (C),A ;wr5
LD A,35H ;err reset
OUT (C),A
LD A,(IY+10) ;wr5
OR 88H ;dtr,rts on tx enable
LD (IY+10),A ;wr5
OUT (C),A
RET
;
;
RSDIS: LD A,3
OUT (C),A
RES 0,(IY+8) ;wr3 RX disenable
LD A,(IY+8) ;wr3
OUT (C),A
;
RDYOF: RES 7,(IY+10) ;wr5 dtr reset
JR WR5OUT
;
;
RTSON: SET 1,(IY+10) ;wr5 rts set
JR WR5OUT
;
;
RTSOFF: RES 1,(IY+10) ;wr5 rts reset
JR WR5OUT
;
;
RDYON: SET 7,(IY+10) ;wr5 dtr set
WR5OUT: LD A,5
OUT (C),A
LD A,(IY+10) ;wr5
OUT (C),A
OR A
RET
SKP H
;
;
; Receive 1 char
;
;
GET1C: CALL PUSHR
LD C,(IY+0)
GET1: CALL BRK
CALL DRCKR
JR C,GET1
CALL RSEN
CHIN: CALL BRK
IN A,(C)
RRCA
JR NC,CHIN ;skip if no data
DEC C
IN A,(C) ;data input
INC C
AND (IY+2) ;mask
PUSH AF
LD A,1
OUT (C),A
IN A,(C)
AND 70H
JR NZ,RSER ;skip if err
CALL RDYOF
POP AF
RET
;
;
;
RSER: LD B,A
POP AF
PUSH BC
CALL RSPARM
POP BC
LD A,29 ;framing err
RLC B
RLC B
RET C
INC A ;overrun err
RLC B
RET C
INC A ;parity err
SCF
RET
SKP H
;
;
; Send 1 char
;
;
PUT1C: CALL PUSHR
LD C,(IY+0)
LD D,A
CALL RTSON
PUT1: CALL BRK
CALL DRCKS
CALL NC,CTSCK
JR C,PUT1
IN A,(C)
BIT 2,A ;tx buf empty ?
JR Z,PUT1
BIT 7,(IY+#MONIT) ;all chr send?
JR Z,PUT2
LD A,1
OUT (C),A
IN A,(C)
RRCA
JR NC,PUT1
PUT2: DEC C
OUT (C),D ;data out
INC C
BIT 6,(IY+#MONIT) ;rts on/off?
JR Z,PUT3
CALL RTSOFF
PUT3: OR A
RET
;
; DCD check
;
DRCKR: OR A
BIT 0,(IY+#MONIT) ;moniter dr ?
JR DRCK1
;
DRCKS: OR A ;carry clear
BIT 1,(IY+#MONIT) ;moniter dr ?
DRCK1: RET Z
LD A,10H ;ext/int reset
OUT (C),A
IN A,(C)
AND 8
RET NZ ;cy=0
SCF
RET
;
; CTS check
;
CTSCK: OR A
BIT 2,(IY+#MONIT) ;moniter cts ?
RET Z
LD A,10H
OUT (C),A
IN A,(C)
AND 20H
RET NZ
SCF
RET
;
END

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,640 @@
; -------------------------
; MZ-800 monitor Work area
; FI:MON2 ver 1.0A 9.05.84
; -------------------------
;
INCLD MACRO
INCLD XCRTEQU
;
;
; Interrupt vector
;
;
ORG 0FF0H
DEFS 12 ;interrupt reserve
;
ORG 0FFCH
DEFW PSGINT ;PSG(timer) interrupt
DEFW LPTINT ;Printer intrrupt
;
; Directry entry
;
ORG 1000H
ELMD: ENT ;file mode
DEFS 1
ELMD1: ENT ;file name
DEFS 17
ELMD18: ENT ;protection, type
DEFS 2
ELMD20: ENT ;size
DEFS 2
ELMD22: ENT ;adrs
DEFS 2
ELMD24: ENT ;exec
DEFS 2
ELMD26: ENT
DEFS 4
ELMD30: ENT
DEFS 2
ELMD32: ENT
DEFS 32
;
; LU table entry
;
ZTOP: ENT ;LU block top
DEFW 2
ZLOG: ENT ;LU#
DEFB 0
ZRWX: ENT ;1:R, 2:W, 3:X
DEFB 0
ZEQT: ENT ;Address of EQTBL
DEFW 0
ZCH: ENT ;CH#
DEFB 0
ZEOF: ENT ;EOF?
DEFB 0
ZWRK1: ENT ;Work 1
DEFB 0
ZWRK2: ENT ;Work 2
DEFB 0
;
SKP H
;
; EQT table entry
;
ZNXT: ENT ;STRM SQR RND
DEFW 0
ZDEVNM: ENT ;-- device name --
DEFS 4
ZFLAG1: ENT ;----- flag 1 ----
DEFB 1
ZFLAG2: ENT ;----- flag 2 ----
DEFB 0
ZDIRMX: ENT ;---- max dir ----
DEFB 0
ZINIT: ENT ;--- initialize --
DEFW 0
ZRO: ENT ;ROPEN RDINF
ZMAPS: ENT ; Map.start
DEFW 0
ZWO: ENT ;WOPEN WRFIL
ZMAPB: ENT ; Map.bytes
DEFW 0
ZCL: ENT ;CLOSE
ZSTRT: ENT ; START
ZDIRS: ENT ; Dir.start
DEFW 0
ZKL: ENT ;KILL
ZBLK: ENT ; - Block/byte -
DEFW 0
ZINP: ENT ;INP RDDAT BREAD
DEFW 0
ZOUT: ENT ;OUT WRDAT BWRIT
DEFW 0
ZPOS: ENT ;Position
ZDELT: ENT ; DELETE
DEFW 0
ZWDIR: ENT ; WR DIR
DEFW 0
ZFREE: ENT ; - free bytes -
DEFW 0
;
ZBYTES: EQU ZFREE+2-ZNXT ;Z-area bytes
;
DEFS 2
;
DCHAN: ENT ;default channel
DEFS 1
DDEV: ENT ;default device
DEFS 2
;
;
.$CRT: ENT
DEFW $CRT
.$LPT: ENT
DEFW $LPT
;
SKP H
;
; Work area pointers
;
TEXTST: ENT ;Text starat
DEFS 2
TEXTED: ENT
POOL: ENT ;I/O work
DEFS 2
POOLED: ENT
VARST: ENT ;Variable start
DEFS 2
STRST: ENT ;String start
DEFS 2
VARED: ENT ;Var & string end
DEFS 2
TMPEND: ENT ;Temporaly end
DEFS 2
INTFAC: ENT ;Initial FAC
DEFS 2
MEMLMT: ENT ;LIMIT command
DEFS 2
MEMMAX: ENT ;Last avairable memory
DEFW FF00H
;
;
; cursor / position work
;
;
;
CURXY: ENT ;cursor position
CURX: ENT
DEFB 0
CURY: ENT
DEFB 0
POSADR: ENT ;text buf addr
DEFW 2000H
BITADR: ENT ;bitmap mem addr
DEFW 8000H
;
POINTX: ENT ;Graphic x-coordinate
DEFS 2
POINTY: ENT ;Graphic y-coordinate
DEFS 2
;
CURFLG: ENT ;0:off 1:on
DEFB 0
CURMAK: ENT ;cursor mark 0=normal
DEFB 0 ; 1=sftlock
; 2=graph
SKP H
;
; CRT/LPT work
;
CMTMSG: ENT ;if =0 disp cmt-msg
DEFS 1
INPFLG: ENT ;0=plot off 1=plot on
DEFB 0
DISPX: ENT ;0=MSG 1=MSGX
DEFS 1
FILOUT: ENT ;0=CRT 1=LPT
DEFB 0
PSEL: ENT ;Printer select
DEFB 1
PCRLF: ENT ;LPT CRLF CODE
DEFB 0DH
LPT.TM: ENT ;LPT wait time
DEFB 14
LPOSB: ENT ;LPT position
DEFB 0
PSMAL: ENT ;LPT small/capital
DEFB 0
PNMODE: ENT ;LPT mode
DEFB 1 ; 1..text, 2..graph
;
;
; crt dispmode work
;
;
DMD: ENT ;disp mode 0 320 4 col
DEFB 0 ; 2 320 16 col
; 4 640 2 col
; 6 640 4 col
MEMOP: ENT ;option mem exit
DEFB 0 ;0= off 1= on
PWMODE: ENT ;graphic operation mode
DEFB 0
CMODE: ENT ;color mode
DEFB 3
CPLANE: ENT ;curent active plane
DEFB 3
MAXCF: ENT ;maximum plane data
DEFB 4
PMASK: ENT ;mask plane data
DEFB FFH
GMODE: ENT ;graphic color mode
DEFB 3
;
DEFS 50H ;10A0 -- 10EF monitor stack
;
;
;
IBUFE: ENT ;CMT work
DEFS 128
;
DEFS 34
DEFB EFH ;FLSDT
DEFS 2 ;STRFG, DPRNT
TMCNT: ENT
DEFS 2
SUMDT: ENT
DEFS 2 ;SUMDT
CSMDT: ENT
DEFS 2 ;CSMDT
DEFS 2 ;AMPM, TIMFG
DEFB 1 ;SWRK
TEMPW: ENT
DEFB 4 ;TEMPW
DEFB 5 ;ONTYO
DEFS 3 ;OCTV, RATIO
;
KEYBM1: ENT
DEFS 1
KEYBUF: ENT
DEFS 262
KEY262: ENT
DEFS 2
KEY264: ENT
DEFS 2
KEY266: ENT
DEFS 4
;
FUNBUF: ENT
FKEY 1,"RUN ",0DH
DEFB FNB1E-FNB1S
FNB1S: DEFM "RUN "
IFD 0DH
DEFB 0DH
ENDIF
FNB1E: DEFS FNB1S+15-FNB1E
ENDM
FKEY 2,"LIST "
DEFB FNB2E-FNB2S
FNB2S: DEFM "LIST "
IFD @3
ENDIF
FNB2E: DEFS FNB2S+15-FNB2E
ENDM
FKEY 3,"AUTO "
DEFB FNB3E-FNB3S
FNB3S: DEFM "AUTO "
IFD @3
ENDIF
FNB3E: DEFS FNB3S+15-FNB3E
ENDM
FKEY 4,"RENUM "
DEFB FNB4E-FNB4S
FNB4S: DEFM "RENUM "
IFD @3
ENDIF
FNB4E: DEFS FNB4S+15-FNB4E
ENDM
FKEY 5,"COLOR " ;QD FD ->"DIR "
DEFB FNB5E-FNB5S
FNB5S: DEFM "COLOR "
IFD @3
ENDIF
FNB5E: DEFS FNB5S+15-FNB5E
ENDM
FKEY 6,"CHR$("
DEFB FNB6E-FNB6S
FNB6S: DEFM "CHR$("
IFD @3
ENDIF
FNB6E: DEFS FNB6S+15-FNB6E
ENDM
FKEY 7,"DEF KEY("
DEFB FNB7E-FNB7S
FNB7S: DEFM "DEF KEY("
IFD @3
ENDIF
FNB7E: DEFS FNB7S+15-FNB7E
ENDM
FKEY 8,"CONT"
DEFB FNB8E-FNB8S
FNB8S: DEFM "CONT"
IFD @3
ENDIF
FNB8E: DEFS FNB8S+15-FNB8E
ENDM
FKEY 9,"SAVE "
DEFB FNB9E-FNB9S
FNB9S: DEFM "SAVE "
IFD @3
ENDIF
FNB9E: DEFS FNB9S+15-FNB9E
ENDM
FKEY 10,"LOAD "
DEFB FNB10E-FNB10S
FNB10S: DEFM "LOAD "
IFD @3
ENDIF
FNB10E: DEFS FNB10S+15-FNB10E
ENDM
;
INBUFC: ENT ;INBUF counter
DEFB 0
INBUFL: ENT ;INBUF length
DEFB 0
INBUF: ENT ;pending key 16
DEFS 16
;
LINLIM: ENT ;getline buffer limit
DEFB 255 ;const
KEYDAT: ENT
DEFB 0
;
; timer work
;
AMPM: ENT
DEFB 0
SECD: ENT
DEFW 0
;
; scrool work
;
XS: ENT ;console X start const=0
DEFB 0
XE: ENT ;console X end
DEFB 39
CWIDTH: ENT ;console width
DEFW 40 ;cwidth=xe+1
CSIZE: ENT ;csize=cwidth*8
DEFW 320
YS: ENT ;console Y start
DEFB 0
YE: ENT ;console Y end
DEFB 24
YW: ENT ;console Y width
DEFB 25 ;yw=ye-ys+1
;
; scrool custom data
;
SOF: ENT ;scrool offset
DEFW 0
SW: ENT ;scrool width
DEFB 7DH ;sw = yw*5
SSA: ENT ;scrool start
DEFB 0 ;ssa = ys*5
SEA: ENT ;scrool end
DEFB 7DH ;sea =(ye+1)*5
SSW: ENT ;scrool offset limit
DEFW 3E8H ;ssw = sw *8
;
; crt work (basic used)
;
CRTMD1: ENT ;crt bit data
DEFB 1
CRTMD2: ENT ;crt mode no. data
DEFB 1
SELCOL: ENT ;default color
DEFB 3
PAIWED: ENT
DEFW 0 ;paint stack end
;
;
;
; palette work
;
PALBK: ENT ;palette block number
DEFB 0
PALAD: ENT ;palette init addr
DEFW PAL4T
PALTBL: ENT ;palette data table
DEFS 4
;
;
; palette init data table
;
PAL2T: ENT ;palette
DEFB 00H ;PAL 0 black
DEFB 1FH ;PAL 1 white
DEFB 2FH ;PAL 2 white
DEFB 3FH ;PAL 3 white
;
PAL4T: ENT ;palette
DEFB 00H ;PAL 0 black
DEFB 11H ;PAL 1 blue
DEFB 22H ;PAL 2 red
DEFB 3FH ;PAL 3 white
;
PAL16T: ENT ;palette
DEFB 00H ;PAL 0 black
DEFB 11H ;PAL 1 blue
DEFB 22H ;PAL 2 red
DEFB 33H ;PAL 3 purple
;
;
; cursor init data table
;
CURDT1: ENT ;cursor normal
DEFB FFH ;0
DEFB FFH ;1
DEFB FFH ;2
DEFB FFH ;3
DEFB FFH ;4
DEFB FFH ;5
DEFB FFH ;6
DEFB FFH ;7
;
CURDT2: ENT ;cursor sftlock
DEFB 7EH ;0
DEFB FFH ;1
DEFB FFH ;2
DEFB FFH ;3
DEFB FFH ;4
DEFB FFH ;5
DEFB FFH ;6
DEFB 7EH ;7
;
CURDT3: ENT ;cursor graph
DEFB 00H ;0
DEFB 00H ;1
DEFB 00H ;2
DEFB 00H ;3
DEFB 00H ;4
DEFB 00H ;5
DEFB 00H ;6
DEFB FFH ;7
;
; screen management buffer
;
SCRNT0: ENT
DEFS 25
SCRNTE: DEFB 0
;
;
; emm work
;
;
EMFLG: ENT
DEFS 1
EMPTR: ENT
DEFS 2
EMWP0: ENT
DEFS 2
EMWP1: ENT
DEFS 2
SKP H
; ------------------------------
;
; lpt work
;
; ------------------------------
;
WPULSE: DEFB 0
WSTROB: DEFB 0
PBCMAW: DEFW 3FF0H
PBCN: ENT
DEFW 0 ;
PBCIP: DEFW C000H ;FIFO inp pointer
PBCOP: DEFW C000H ;FIFO out pointer
PBCTOP: DEFW C000H ;buffer top
SPLFLG: DEFB 0 ;spool on/stop/off
OUTIMF: DEFB 0 ;output image flag
HPCOUN: DEFB 4 ;printer counter
HERRF: ENT
DEFB 0 ;ROM error flag
;
;
;---------------------------------
;
;
; code translation table
;
;---------------------------------
;
CTABLE: ENT
DEFW CTABL1 ;change table address
;
;
CTABL1: DEFB 39 ;change number
;
;
DEFB 023H ;#
DEFB 023H
;
DEFB 040H ;@
DEFB 040H
;
DEFB 05BH ;[
DEFB 05BH
;
DEFB 05CH ;\
DEFB 05CH
;
DEFB 05DH ;]
DEFB 05DH
;
DEFB 08BH ;^
DEFB 05EH
;
DEFB 090H ;under_
DEFB 05FH
;
DEFB 093H ;'
DEFB 060H
;
DEFB 0A1H ;a
DEFB 061H
;
DEFB 09AH ;b
DEFB 062H
;
DEFB 09FH ;c
DEFB 063H
;
DEFB 09CH ;d
DEFB 064H
;
DEFB 092H ;e
DEFB 065H
;
DEFB 0AAH ;f
DEFB 066H
;
DEFB 097H ;g
DEFB 067H
;
DEFB 098H ;h
DEFB 068H
;
DEFB 0A6H ;i
DEFB 069H
;
DEFB 0AFH ;j
DEFB 06AH
;
DEFB 0A9H ;k
DEFB 06BH
;
DEFB 0B8H ;l
DEFB 6CH
;
DEFB 0B3H ;m
DEFB 6DH
;
DEFB 0B0H ;n
DEFB 6EH
;
DEFB 0B7H ;o
DEFB 6FH
;
DEFB 09EH ;p
DEFB 70H
;
DEFB 0A0H ;q
DEFB 71H
;
DEFB 09DH ;r
DEFB 72H
;
DEFB 0A4H ;s
DEFB 73H
;
DEFB 096H ;t
DEFB 74H
;
DEFB 0A5H ;u
DEFB 75H
;
DEFB 0ABH ;v
DEFB 76H
;
DEFB 0A3H ;w
DEFB 77H
;
DEFB 09BH ;x
DEFB 78H
;
DEFB 0BDH ;y
DEFB 79H
;
DEFB 0A2H ;z
DEFB 7AH
;
DEFB 0BEH ;{
DEFB 7BH
;
DEFB 0C0H
DEFB 7CH
;
DEFB 080H ;}
DEFB 7DH
;
DEFB 094H ;~
DEFB 7EH
;
DEFB 07FH ;
DEFB 7FH
;
;
END

View File

@@ -0,0 +1,941 @@
INCLD MACRO
LIST
INCLD XMON-ROM
;
;---------------------------------
; XMON-ROM 8.30.84
;
; JISX MZ-800 --> ASC
; ent A :data
; IX :output sub
; (HL) :tab counter
; E :DISPX
;
;---------------------------------
;
;
JISX: ENT
CP 0DH
JR Z,JISXCR
CP 0AH
JR Z,JISXCR
CALL AJISX ;code change
CP 20H
JR NC,.IX
BIT 0,E ;print/p ?
JR Z,.IX ;no
LD A," "
.IX: JP (IX)
;
JISXCR: CALL .IX
LD M,0
RET
;
AJISX: PUSH BC
LD C,0
CALL AJISX1
POP BC
RET
;
;
AJISX1: CALL PUSHR
LD HL,(CTABLE)
LD B,(HL) ;code counter set
INC HL ;HL=MZ-800
LD D,H ;DE=JIS
LD E,L
INC DE
BIT 0,C ;MZ-800 --> JIS ?
JR Z,AJISX2 ;yes
EX DE,HL
AJISX2: CP (HL)
JR Z,AJISX3 ;code match
INC HL
INC HL
INC DE
INC DE
DJNZ AJISX2
RET
;
AJISX3: LD A,(DE)
RET
;
;
;---------------------------------
;
;
; JISR ASC --> MZ-800
; ent (A) :data
; IX :input sub
;
;---------------------------------
;
;
JISR: ENT
CALL .IX ;input sub :A set
RET C
;
PUSH BC
LD C,1
CALL AJISX1
POP BC
OR A
RET
;---------------------------------
;
$LPT: ENT
DEFW $CMT
DEFM "LPT"
DEFB 0
DEFB 8AH ;Streem, O1C, W
DEFW 0
DEFW LPTINI
DEFW ER59 ;ROPEN
DEFW .RET ;WOPEN
DEFW .RET ;CLOSE
DEFW .RET ;KILL
DEFW 0 ;INP
DEFW LPT1C?
DEFW LPTPOS
;
;
PIO.AC: EQU FCH ;Port-A control
PIO.AD: EQU FEH ;Port-A data
PIO.BC: EQU FDH ;Port-B control
PIO.BD: EQU FFH ;Port-B data
;
P.PLT: EQU 0 ;1P01, 1P09
P.KP5: EQU 1 ;KP5
P.JIS: EQU 2 ;JIS code
P.THRU: EQU 3 ;thrue
;
;
LPTPOS: LD A,(INPFLG)
OR A
LD A,(LPOSB)
RET Z
LD A,(CURX)
RET
;
;
;
;----------------------------------
;
; PL ROM CALL
;
;----------------------------------
ROMST: EQU 03H ;F403H
ROMST1: EQU F400H
;
;
TIMST: ENT
CALL ROMJP2
DEFB ROMST
;
TIMRD: ENT
CALL ROMJP2
DEFB ROMST+3
;
STICK: ENT
CALL ROMJP2
DEFB ROMST+6
;
STRIG: ENT
CALL ROMJP2
DEFB ROMST+9
;
HCPY: ENT
CALL ROMJP
DEFB ROMST+12
;
LPT1C?: ENT
LD HL,DISPX
BIT 0,M
JR NZ,LPT1CX
;
LPT1C: ENT
PUSH IY
EX AF,AF'
LD A,3+15 ;F003+15
LD (APL1CD),A
LD A,.CRT1C
APL1CF: LD (APL1CE),A
EX AF,AF'
CALL APL1C
POP IY
PUSH BC
LD B,A
LD A,(INPFLG)
OR A
LD A,B
POP BC
RET Z
RST 3
APL1CE: DEFB .CRT1C
RET
APL1C: LD IY,JISX
CALL ROMJP
APL1CD: DEFB ROMST+15
;
LPT1CX: ENT
PUSH IY
EX AF,AF'
LD A,3+18 ;F003+18
LD (APL1CD),A
LD A,.CRT1CX
JR APL1CF
;
LPTINI: ENT
CALL ROMJP
DEFB ROMST+21
;
LPTOUT: ENT
CALL ROMJP
DEFB ROMST+24
;
PBCCLR: ENT
CALL ROMJP
DEFB ROMST+27
;
SPLOFF: ENT
CALL ROMJP
DEFB ROMST+30
;
SPLON: ENT
CALL ROMJP
DEFB ROMST+33
;
SPLSW: ENT
CALL ROMJP
DEFB ROMST+36
;
LPTM02: ENT
CALL ROMJP
DEFB ROMST+39
;
;---------------------------
;
;
;
ROMJP: EX AF,AF'
LD A,(PSEL)
BIT P.KP5,A
JR Z,ROMJP1
;
PUSH BC
LD B,3
SVC .MCTRL
RST 3
DEFB .MCTRL
ENDM
POP BC
;
ROMJP1: EX AF,AF'
ROMJP2: EX AF,AF'
XOR A
LD (KEY266),HL
LD (HERRF),A
EX AF,AF'
DI
LD (KEY264),SP
EX (SP),HL ;HL=call stored address
LD SP,HL ;
POP HL ;HL=call address
OUT (LSE3),A
LD SP,KEY262
CALL HLJP
OUT (LSE1),A
LD SP,(KEY264)
EX (SP),HL
INC SP
INC SP
EI
EX AF,AF'
LD A,(HERRF)
OR A
JR NZ,ROMERR
EX AF,AF'
RET
HLJP: LD H,0F4H ;HL=F4??H
JP (HL)
;
;
ROMERR:
LD B,A ;B=0
EX AF,AF'
DEC B ;B=1
JP Z,BREAKZ
DEC B ;B=2
JP NZ,ERRORJ
ROMER1: LD HL,(PBCN) ;INIT M2
LD A,H
OR L
JR Z,LPTM02
CALL SPLON
SVC .BREAK
RST 3
DEFB .BREAK
ENDM
JP Z,BREAKZ
JR ROMER1
;
;
LPTINT: ENT
DI
PUSH AF
PUSH HL
PUSH BC
LD (WKLINT),SP
LD SP,WKLINT
OUT (LSE3),A
CALL ROMST1
OUT (LSE1),A
LD SP,(WKLINT)
POP BC
POP HL
POP AF
EI
RETI
DEFS 8
WKLINT: DEFW 0
;
END
SKP H
INCLD MONOP
; ---------------------------
; MZ-800 Monitor command
; FI:MONOP ver 1.0A 8.04.84
; ---------------------------
;
MONOP: ENT
PUSH HL
LD DE,(ERRORP)
PUSH DE
LD DE,MONERR
LD (ERRORP),DE ;error ret adr set
LD A,(LINLIM)
PUSH AF
LD A,100 ;getline max set
LD (LINLIM),A
LD (MONSP+1),SP ;stack pointer push
XOR A
LD (FILOUT),A ;crt mode
MONCLD: LD SP,0000H ;stack initize
MONHOT: LD BC,MONHOT
PUSH BC ;last return addrs set
SVC .CR2 ;linefeed & cr
RST 3
DEFB .CR2
ENDM
LD A,"*" ;prompt disp
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
CALL MONEDT ;memory corretion ?
JR NC,-3
LD A,(DE)
CP "*"
RET NZ ;prompt check
INC DE
LD A,(DE) ;acc=next interpret data
INC DE ;next interpret data addr
;
;
; moniter tabel command jump
;
EXX ;parameter push
LD HL,MNCMTB
LD B,10 ;commands counter
MNCMCP: CP M
INC HL
JR Z,MNCMOK ;skip if just command
INC HL ;next search
INC HL
DJNZ MNCMCP
EXX
RET
;
MONERR: LD C,A
AND 7FH
JR Z,MONCLD ;Break
LD A,C ;acc=errcode
SVC .ERRX ;display error messege
RST 3
DEFB .ERRX
ENDM
SVC .ERCVR ;error recover fd/qd
RST 3
DEFB .ERCVR
ENDM
JR MONCLD
;
;
MNCMOK: LD E,M
INC HL
LD D,M
PUSH DE ;commnd addr set
EXX ;parameter pop
RET
;
MNCMTB: DEFM 'D'
DEFW MONDMP
DEFM 'M'
DEFW MONSET
DEFM 'P'
DEFW MONPRT
DEFM 'G'
DEFW MONGOT
DEFM 'F'
DEFW MONSCH
DEFM 'R'
DEFW MONSP
DEFM 'S'
DEFW MONSAV
DEFM 'L'
DEFW MONLOD
DEFM 'V'
DEFW MONVRY
DEFM 'T'
DEFW MONTRN
;
MONPRT: LD A,(FILOUT) ;lpt/crt
XOR 1
LD (FILOUT),A
RET
;---------------------------------
;
; moniter save commnd
;
;---------------------------------
MONSAV: CALL SAVTRN ;set addrs
RET C
EXX
CALL FNMST ;file name set
EXX
LD (ELMD20),BC ;bytes
LD (ELMD22),DE ;data adrs
LD (ELMD24),HL ;exec adrs
SVC .SAVEF ;save file
RST 3
DEFB .SAVEF
ENDM
RET
;---------------------------------
;
; moniter load command
;
;---------------------------------
MONLOD: CALL HLSET ;load addr set
PUSH HL ;hl=load addrs
PUSH AF
CALL LOAVRY ;filename set & open
POP AF
POP HL
JR NC,+5 ;user load addr set ??
LD HL,(ELMD22)
SVC .LOADF ;load file
RST 3
DEFB .LOADF
ENDM
RET
;---------------------------------
;
; filename set & open
;
;---------------------------------
LOAVRY: CALL FNMST ;file name set
SVC .LOPEN ;ropen
RST 3
DEFB .LOPEN
ENDM
CP 1
RET Z
JP ER61 ;File mode error
;---------------------------------
;
; moniter verify command
;
;---------------------------------
MONVRY: CALL LOAVRY ;filename set
LD HL,(ELMD22)
SVC .VRFYF ;file verify
RST 3
DEFB .VRFYF
ENDM
RET
;---------------------------------
;
; moniter rerturn command
;
; to BASIC
;---------------------------------
MONSP: LD SP,0000H
POP AF
LD (LINLIM),A
POP HL
LD (ERRORP),HL
POP HL
RET
;---------------------------------
;
; moniter operation
;
;---------------------------------
MONEDT: LD DE,FF00H ;moniter work
SVC .GETL
RST 3
DEFB .GETL
ENDM
JR C,MONEDE
;
; check ':xxxx='
;
LD A,(DE)
CP ":" ;mem correct ??
SCF
RET NZ
;
INC DE
CALL HLSET ;addrs input ?
RET C
LD A,(DE)
INC DE
XOR 3DH ;"=" input ?
RET NZ
;
;
NEXTAC: CALL ACSET ;data read
CCF
RET NC
LD M,A ;mem correction !
INC HL ;next pointer
JR NEXTAC
;
;
MONEDE: LD (DE),A ;error
RET
;----------------------------------
;
; 4 ascii to binary (word)
;
; ent. de=ascii data pointer
; ext hl=xxxxH
;
;----------------------------------
HLSET: PUSH HL
CALL SPCTAC ;separater search
PUSH DE
CALL ACSETH ;2 ascii to binary
JR C,HLSETE
LD H,A
CALL ACSETH ;2 ascii to binary
JR C,HLSETE
LD L,A
POP AF
POP AF
XOR A
RET
;
HLSETE: POP DE
POP HL
SCF
RET
;----------------------------------
;
; separater search
;
;----------------------------------
SPCTA2: INC DE
SPCTAC: LD A,(DE)
CP 20H
JR Z,SPCTA2
RET
;---------------------------------
;
; 1 ascii to binary (nible)
;
; ent. de=ascii data pointer
; ext acc= 0xH
;
;---------------------------------
ACSETS: LD A,(DE)
SVC .CKHEX ;0-9 a-f check
RST 3
DEFB .CKHEX
ENDM
INC DE ;next pointer
RET
;---------------------------------
;
; 2 ascii to binary (byte)
;
; ent. de=ascii data pointer
; ext acc= xxH
;
;---------------------------------
ACSET: CALL SPCTAC ;separeter search
CP ";"
JR Z,SEMIOK ;skip if ascii input
ACSETH:
PUSH BC
PUSH DE
CALL ACSETS ;1 ascii to binary(nible)
JR C,ACSTER
LD C,A ;high nible
CALL ACSETS ;1 ascii to binary(nible)
JR C,ACSTER
LD B,A ;low nible
LD A,C
RLCA
RLCA
RLCA
RLCA
ADD A,B
LD C,A
LD A,C
POP BC
POP BC
OR A
RET
;
ACSTER: POP DE
POP BC
SCF
RET
;----------------------------------
;
; ascii code input mode
;
;----------------------------------
SEMIOK: INC DE
LD A,(DE)
INC DE
OR A ;¯¯JR ACSETO
RET ;¯¯
;----------------------------------
;
; moniter jump commnd
;
;----------------------------------
MONGOT: CALL HLSET ;addrs set
RET C
JP (HL)
;----------------------------------
;
; moniter dump commnd
;
;----------------------------------
MONDMP: CALL HLSET ;top addrs set
JR C,MONDP1 ;skip if 'd' only
PUSH HL
CALL HLSET ;end addrs set
JR C,MONDP2 ;skip if top addrs only
POP DE
EX DE,HL
JR MONDP3
;
;
;
MONDP2: POP HL ;
MONDP1: EX DE,HL
LD HL,80H
ADD HL,DE ;last addrs calc
EX DE,HL
MONDP3: LD C,8 ;counter set
CALL MONDPS ;dump list disp
RET C
PUSH HL
SBC HL,DE ;dump end calc
POP HL
RET NC
JR MONDP3
;
MONDPS: CALL HLHXPR ;addrs disp
LD B,C
PUSH HL
MONDP4: LD A,M ;data read
CALL ACHXPR ;1 byte disp
INC HL
LD A,20H ;space disp
SVC .&1C
RST 3
DEFB .&1C
ENDM
DJNZ MONDP4
POP HL
;
LD A,"/" ;separater disp
SVC .&1C
RST 3
DEFB .&1C
ENDM
LD B,C
MONDP5: LD A,M ;data read
CP 20H ;contol code
JR NC,+4
LD A,"." ;yes, control code
SVC .&1C
RST 3
DEFB .&1C
ENDM
INC HL ;next pointer
DJNZ MONDP5
;
SVC .&CR ;
RST 3
DEFB .&CR
ENDM
SVC .HALT ;braek & stop
RST 3
DEFB .HALT
ENDM
OR A
RET
;--------------------------------
;
; disp addrs
;
; ent. hl=addrs
; ':xxxx='
;
;--------------------------------
HLHXPR: LD A,":"
SVC .&1C
RST 3
DEFB .&1C
ENDM
LD A,H
CALL ACHXPR ;acc disp
LD A,L
CALL ACHXPR ;acc disp
LD A,"="
SVC .&1C
RST 3
DEFB .&1C
ENDM
RET
;--------------------------------
;
; acc disp
;
; ent. acc = disp data
;
;--------------------------------
ACHXPR: PUSH AF
RLCA
RLCA
RLCA
RLCA
CALL AC1HXP ;nible disp
POP AF
AC1HXP: AND 0FH ;ascii trans
ADD A,30H
CP ":"
JR C,+4
ADD A,7
SVC .&1C ;disp acc(nible)
RST 3
DEFB .&1C
ENDM
RET
;---------------------------------
;
; moniter mem correction comd
;
;---------------------------------
MONSET: CALL HLSET ;
LD A,(FILOUT) ;lpt/crt switch
PUSH AF
XOR A
LD (FILOUT),A ;crt mode
MONSTL: SVC .CR2
RST 3
DEFB .CR2
ENDM
CALL HLHXPR ;addrs disp
LD A,M ;data read
CALL ACHXPR ;data disp
LD A,20 ;back space
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
CALL MONEDT ;moniter operation
JR NC,MONSTL
POP AF
LD (FILOUT),A
RET
;--------------------------------
;
; moniter search command
;
;--------------------------------
MONSCH: CALL HLSET ;start addrs
RET C
PUSH HL
CALL HLSET ;end addrs
POP BC
RET C
PUSH HL ;hl end addr
PUSH BC ;bc start addr
LD HL,FF00H ;check data read
CALL NEXTAC ;(hl)<--data
LD DE,FF00H
OR A
SBC HL,DE ;check data bytes
LD C,L
POP HL
PUSH HL
EXX
POP HL ;hl start addr
POP DE ;de end addr
EXX
RET Z
MNSHLP: CALL HLDECK ;de=FF00h
JR NZ,SKPSCH ;de check databuf
CALL MONDPS ;data disp
RET C
SKPSCH: SVC .BREAK
RST 3
DEFB .BREAK
ENDM
RET Z
EXX
INC HL ;next check pointer
PUSH HL
SCF
SBC HL,DE ;end check ?
POP HL
RET NC
PUSH HL
EXX
POP HL ;next check pointer
JR MNSHLP
;----------------------------------
;
; 3 pointer data interpret
;
; ent de=ascii data top addr
;
; ext de=first data
; bc=(second-first) data
; hl=last data
;
; used save,xfer commnd
;
; command : save : xfer
;
; de : start: source
; bc : bytes: bytes
; hl : end : destination
;----------------------------------
SAVTRN: CALL HLSET ;first
PUSH HL
CALL NC,HLSET ;second
POP BC ;first
RET C
SBC HL,BC ;calc bytes
INC HL
PUSH HL ;bytes
PUSH BC ;first
CALL HLSET ;last
PUSH HL ;last
EXX
POP HL ;last
POP DE ;first
POP BC ;bytes
RET
;-------------------------------
;
; moniter xfer command
;
;-------------------------------
MONTRN: CALL SAVTRN ;
RET C
EX DE,HL
PUSH HL
SBC HL,DE ;direction check
POP HL
JR C,LDDRTR
LDIR
RET
LDDRTR: ADD HL,BC ;last addrs calc
DEC HL
EX DE,HL
ADD HL,BC
DEC HL
EX DE,HL
LDDR
RET
;----------------------------------
;
; filename set
;
;----------------------------------
FNMST: LD A,(DE)
OR A
JR Z,FNMST2
INC DE
CP ":" ;demiliter seach
JR NZ,FNMST
FNMST2: SVC .COUNT ;count string length
RST 3
DEFB .COUNT
ENDM
SVC .DEVFN ;interpret dev. file name
RST 3
DEFB .DEVFN
ENDM
LD A,1
LD (ELMD),A ;.OBJ atribut
RET
;---------------------------------
;
; check (de) (hl) ?
;
; hl,de check data point
; c counter
;
;---------------------------------
HLDECK: LD A,(DE)
CP M
RET NZ
PUSH BC
PUSH DE
PUSH HL
LD B,C
HLDEC1: LD A,(DE)
CP M
JR NZ,HLDEC2
INC DE
INC HL
DJNZ HLDEC1
XOR A
HLDEC2: POP HL
POP DE
POP BC
RET
;
END
END

View File

@@ -0,0 +1,83 @@
ORG 3C00H
INCLD MACRO
LIST
INCLD XROM
;----------------------------------
;
; ascii display code trans
;
;----------------------------------
?ADCN: ENT
CP 10H ;EX only
JR C,?AD3 ; <10H ==> F0H
CP 80H
JR Z,?AD7 ; 80H ==> 40H
CP C0H
JR Z,?AD7 ; C0H ==> 80H
DI
OUT (LSE2),A
CALL 0BB9H
OUT (LSE0),A
EI
RET
?AD3: LD A,F0H
RET
?AD7: SUB 40H
RET
;
?DACN: ENT
CP F0H
JR NC,?DA3
CP 73H
JR Z,?AD3 ; 73H ==> F0H
CP 40H ;EX only
JR Z,?DA7 ; 40H ==> 80H
CP 80H
JR Z,?DA7 ; 80H ==> C0H
DI
OUT (LSE2),A
CALL 0BCEH
OUT (LSE0),A
EI
CP F0H
RET NZ
?DA3: LD A," "
RET
?DA7: ADD A,40H
RET
;
;
;
?KYTBL: ENT
PUSH AF
LD A,L
SUB 8
JR C,?KY0
SUB 48
JR C,?KY1
?KY0: ADD A,10
LD L,A
ADD HL,BC
LD C,M
POP AF
RET
?KY1: LD A,(BC)
PUSH AF
INC BC
LD A,(BC)
LD B,A
POP AF
LD C,A ;BC=ROM adrs
ADD HL,BC
DI
OUT (LSE2),A
LD A,M
OUT (LSE0),A
EI
CALL ?DACN
LD C,A
POP AF
RET
END
END

View File

@@ -0,0 +1,356 @@
LIST
INCLD XE1
IOOUT: EQU 0104H
DEASC: EQU 029EH
PATCH: EQU 0531H
INKEY0: EQU 0BA1H
IOERR: EQU 00EBH
TEST1: EQU 0164H
ERRX: EQU 0340H
COLS: EQU 049CH
HCLSW: EQU 061DH
PONT: EQU 0963H
INKEY1: EQU 0B21H
$KB: EQU 0DF6H
.HL: EQU 00A7H
PUSHR: EQU 00C7H
SETDFL: EQU 0314H
BINPUT: EQU 0A67H
PUSHRA: EQU 00BAH
CKHEX: EQU 02E9H
DCOLOR: EQU 048AH
PONTB: EQU 097AH
ERRORJ: EQU 00EDH
?CLRHL: EQU 0137H
?SETDE: EQU 013EH
INDRCT: EQU 0151H
INCHLF: EQU 015DH
IOCALL: EQU 0247H
DWIDTH: EQU 04EFH
ACCDI: EQU 05ADH
LBOUND: EQU 05F9H
PONTC: EQU 0960H
INKEY$: EQU 0B1AH
BRKCHK: EQU 001EH
DEVASC: EQU 010DH
DWIND: EQU 04AEH
PONTCB: EQU 0977H
INKEYF: EQU 0B8BH
SYSSTA: EQU 004DH
PUSHW: EQU 0671H
HCUROF: EQU 093BH
TESTX: EQU 016EH
PALOFF: EQU 0441H
DPALST: EQU 0476H
PRNTT: EQU 0A58H
EQTBL: EQU 0DDDH
$TEMPO: EQU 0041H
.RET: EQU 00B2H
?CLRDE: EQU 013DH
HLFTCH: EQU 015EH
HALT: EQU 02F8H
ADDP0: EQU 031CH
DGCOL: EQU 0493H
TBCALC: EQU 0615H
ERRORP: EQU 004FH
LDDEMD: EQU 0132H
ADDP1: EQU 0323H
HCLS: EQU 0652H
.NOP: EQU 00A6H
ASCHL: EQU 025EH
ADDP2: EQU 032AH
SETDNM: EQU 0397H
PLTOTX: EQU 0EB3H
DSMODE: EQU 03BEH
CURMOV: EQU 094DH
GETL: EQU 0A84H
BREAKX: EQU 00E6H
CHKACC: EQU 011BH
LDDEHL: EQU 0143H
LDHLDE: EQU 014AH
BITMAP: EQU 05CEH
BRKEY: EQU 0D22H
$CRT: EQU 0DDDH
CRT1C: EQU 0E61H
ADDHLA: EQU 0158H
DEHEX: EQU 02CEH
DPALBK: EQU 044FH
FLASH: EQU 0945H
$USR: EQU 0F7FH
BREAKZ: EQU 00E8H
LDDEMI: EQU 012DH
?SETHL: EQU 0138H
HCURON: EQU 092BH
LSPAL: EQU 00F0H
LSFC: EQU 00FCH
LSE0: EQU 00E0H
LSE1: EQU 00E1H
LSE2: EQU 00E2H
LSE3: EQU 00E3H
LSE4: EQU 00E4H
LSE5: EQU 00E5H
LSE6: EQU 00E6H
LSD0: EQU 00D0H
LSD1: EQU 00D1H
LSD2: EQU 00D2H
LSD3: EQU 00D3H
LSWF: EQU 00CCH
LSRF: EQU 00CDH
LSDMD: EQU 00CEH
LSSCR: EQU 00CFH
TEXTBF: EQU 2000H
BITBUF: EQU 8000H
FONTBF: EQU 1000H
ERRTXT: EQU FDA0H
.IOSVC: EQU 0003H
.MONOP: EQU 0000H
.CR1: EQU 0001H
.CR2: EQU 0002H
.CRT1C: EQU 0003H
.CRT1X: EQU 0004H
.CRTMS: EQU 0005H
.LPTOT: EQU 0006H
.LPT1C: EQU 0007H
.&CR: EQU 0008H
.&1C: EQU 0009H
.&1CX: EQU 000AH
.&MSG: EQU 000BH
.GETL: EQU 000CH
.INKEY: EQU 000DH
.BREAK: EQU 000EH
.HALT: EQU 000FH
.DI: EQU 0010H
.EI: EQU 0011H
.CURMV: EQU 0012H
.DEASC: EQU 0013H
.DEHEX: EQU 0014H
.CKHEX: EQU 0015H
.ASCHL: EQU 0016H
.COUNT: EQU 0017H
.ADDP0: EQU 0018H
.ADDP1: EQU 0019H
.ADDP2: EQU 001AH
.ERRX: EQU 001BH
.?DACN: EQU 001CH
.?ADCN: EQU 001DH
.STICK: EQU 001EH
.STRIG: EQU 001FH
.BELL: EQU 0020H
.PLAY: EQU 0021H
.SOUND: EQU 0022H
.MCTRL: EQU 0023H
.IOOUT: EQU 0024H
.TIMRD: EQU 0025H
.TIMST: EQU 0026H
.INP1C: EQU 0027H
.CLRIO: EQU 0028H
.SEGAD: EQU 0029H
.OPSEG: EQU 002AH
.DLSEG: EQU 002BH
.DEVNM: EQU 002CH
.DEVFN: EQU 002DH
.LUCHK: EQU 002EH
.LOPEN: EQU 002FH
.LOADF: EQU 0030H
.SAVEF: EQU 0031H
.VRFYF: EQU 0032H
.RWOPN: EQU 0033H
.INSTT: EQU 0034H
.INMSG: EQU 0035H
.INDAT: EQU 0036H
.PRSTR: EQU 0037H
.CLKL: EQU 0038H
.DIR: EQU 0039H
.SETDF: EQU 003AH
.LSALL: EQU 003BH
.FINIT: EQU 003CH
.DELET: EQU 003DH
.RENAM: EQU 003EH
.LOCK: EQU 003FH
.RECST: EQU 0040H
.INREC: EQU 0041H
.PRREC: EQU 0042H
.ERCVR: EQU 0043H
.SWAP: EQU 0044H
.CLS: EQU 0045H
.POSCK: EQU 0046H
.POSSV: EQU 0047H
.PSET: EQU 0048H
.LINE: EQU 0049H
.PATTR: EQU 004AH
.BOX: EQU 004BH
.PAINT: EQU 004CH
.CIRCL: EQU 004DH
.POINT: EQU 004EH
.HCPY: EQU 004FH
.DSMOD: EQU 0050H
.DPLBK: EQU 0051H
.DPLST: EQU 0052H
.DWIND: EQU 0053H
.DCOL: EQU 0054H
.DGCOL: EQU 0055H
.ICRT: EQU 0056H
.SYMBL: EQU 0057H
END
INCLD XE2
ZWRK2: EQU 1049H
ZWO: EQU 1057H
ZWDIR: EQU 1063H
VARST: EQU 1074H
STRST: EQU 1076H
INPFLG: EQU 108FH
LPOSB: EQU 1095H
INBUFL: EQU 1353H
YW: EQU 1371H
ZKL: EQU 105BH
ZINP: EQU 105DH
ELMD: EQU 1000H
ZOUT: EQU 105FH
.$LPT: EQU 106EH
VARED: EQU 1078H
CURX: EQU 1082H
POINTX: EQU 1088H
KEYDAT: EQU 1365H
SELCOL: EQU 137BH
PALAD: EQU 137FH
ELMD1: EQU 1001H
ZBLK: EQU 105BH
ZDELT: EQU 1061H
DDEV: EQU 106AH
POOLED: EQU 1074H
CURY: EQU 1083H
POINTY: EQU 108AH
CURFLG: EQU 108CH
CURMAK: EQU 108DH
FILOUT: EQU 1091H
PNMODE: EQU 1097H
CPLANE: EQU 109CH
KEY262: EQU 12AAH
CWIDTH: EQU 136BH
PAL2T: EQU 1385H
CURDT1: EQU 1391H
PBCN: EQU 13CEH
ELMD20: EQU 1014H
ZEQT: EQU 1044H
ZEOF: EQU 1047H
ZNXT: EQU 104AH
ZDEVNM: EQU 104CH
PSEL: EQU 1092H
INBUF: EQU 1354H
CURDT2: EQU 1399H
ELMD30: EQU 101EH
ZCH: EQU 1046H
ZFLAG1: EQU 1050H
INTFAC: EQU 107CH
MEMMAX: EQU 1080H
DMD: EQU 1098H
KEY264: EQU 12ACH
LINLIM: EQU 1364H
PAL4T: EQU 1389H
CURDT3: EQU 13A1H
ELMD22: EQU 1016H
ZFLAG2: EQU 1051H
BITADR: EQU 1086H
TMCNT: EQU 1195H
KEYBUF: EQU 11A4H
FUNBUF: EQU 12B2H
ELMD32: EQU 1020H
ZSTRT: EQU 1059H
PCRLF: EQU 1093H
KEY266: EQU 12AEH
INBUFC: EQU 1352H
SSA: EQU 1375H
HERRF: EQU 13D9H
ELMD24: EQU 1018H
TMPEND: EQU 107AH
DISPX: EQU 1090H
CMODE: EQU 109BH
SOF: EQU 1372H
PAL16T: EQU 138DH
EMPTR: EQU 13C4H
ZCL: EQU 1059H
POSADR: EQU 1084H
KEYBM1: EQU 11A3H
SEA: EQU 1376H
EMWP0: EQU 13C6H
ELMD26: EQU 101AH
ZMAPB: EQU 1057H
POOL: EQU 1072H
SW: EQU 1374H
PAIWED: EQU 137CH
PALBK: EQU 137EH
SCRNT0: EQU 13A9H
EMWP1: EQU 13C8H
ELMD18: EQU 1012H
ZRWX: EQU 1043H
ZRO: EQU 1055H
ZMAPS: EQU 1055H
.$CRT: EQU 106CH
CURXY: EQU 1082H
CMTMSG: EQU 108EH
IBUFE: EQU 10F0H
CSMDT: EQU 1199H
AMPM: EQU 1366H
XS: EQU 1369H
CRTMD1: EQU 1379H
EMFLG: EQU 13C3H
CTABLE: EQU 13DAH
ZLOG: EQU 1042H
ZDIRS: EQU 1059H
ZPOS: EQU 1061H
ZFREE: EQU 1065H
TEXTST: EQU 1070H
MEMLMT: EQU 107EH
PWMODE: EQU 109AH
PMASK: EQU 109EH
GMODE: EQU 109FH
YS: EQU 136FH
CRTMD2: EQU 137AH
ZTOP: EQU 1040H
PSMAL: EQU 1096H
SUMDT: EQU 1197H
TEMPW: EQU 119EH
XE: EQU 136AH
SSW: EQU 1377H
ZDIRMX: EQU 1052H
ZINIT: EQU 1053H
DCHAN: EQU 1069H
TEXTED: EQU 1072H
MEMOP: EQU 1099H
CSIZE: EQU 136DH
YE: EQU 1370H
ZWRK1: EQU 1048H
LPT.TM: EQU 1094H
MAXCF: EQU 109DH
SECD: EQU 1367H
PALTBL: EQU 1381H
LSPAL: EQU 00F0H
LSFC: EQU 00FCH
LSE0: EQU 00E0H
LSE1: EQU 00E1H
LSE2: EQU 00E2H
LSE3: EQU 00E3H
LSE4: EQU 00E4H
LSE5: EQU 00E5H
LSE6: EQU 00E6H
LSD0: EQU 00D0H
LSD1: EQU 00D1H
LSD2: EQU 00D2H
LSD3: EQU 00D3H
LSWF: EQU 00CCH
LSRF: EQU 00CDH
LSDMD: EQU 00CEH
LSSCR: EQU 00CFH
TEXTBF: EQU 2000H
BITBUF: EQU 8000H
FONTBF: EQU 1000H
ERRTXT: EQU FDA0H
ZBYTES: EQU 001DH
END
END

View File

@@ -0,0 +1,463 @@
; ---------------------------
; MZ-800 BASIC Music command
; FI:MUSIC ver 1.0A 7.18.84
; Programed by T.Miho
; ---------------------------
;
INCLD MACRO
;
DIRARE: EQU 27D0H
NMAX: EQU 83 ;/ÙÄs max
;
;
; SOUND m,l / SOUND=(r,d)
;
SOUND: ENT
TEST1 0F4H ;=
CALL TEST1
DEFB 0F4H
ENDM
JR NZ,SOUND1
CALL HCH28H ;(
CALL IBYTE
CP 16
SET 7,A
JR SOUND2
;
SOUND1: CALL IBYTE
CP NMAX+1
SOUND2: JP NC,ER03
PUSH AF
CALL HCH2CH ;,
CALL IDEEXP
POP AF
PUSH AF
OR A
CALL M,HCH29H ;)
POP AF
PUSH HL
SVC .SOUND
RST 3
DEFB .SOUND
ENDM
POP HL
RET
;
; TEMPO n (n= 1 to 7 )
;
TEMPO: ENT
CALL IBYTE
DEC A
CP 7
INC A
JP $TEMPO
SKP H
;
;;;;;;;;;;;;;;;;;;;;;
;
; NOISE A1$;A2$,B1$;...
; MUSIC A1$;A2$;...;A6$,B1$;...
;
NOISE: ENT
LD A,08H ;pattern (3)
DEFB 1
;
MUSIC: ENT
LD A,07H ;pattern (0,1,2)
LD (MUNOF),A ;channel pattern
CALL HLFTCH
LD B,3
CP BEH ;WAIT
JR Z,MCTRL
DEC B
CP 99H ;STOP
JR Z,MCTRL
CP DCH ;INIT
JR NZ,MUSIC1
;
LD DE,MUSCHO
LD B,4
LD A,2
CALL ?SETDE
MCTRL: PUSH HL
SVC .MCTRL
RST 3
DEFB .MCTRL
ENDM
POP HL
INC HL
RET
;
MUSIC1: CALL ENDCHK
RET Z
XOR A
LD (MUDNO),A
LD (MUCHNO),A
LD B,A
LD A,0DH
LD DE,DIRARE
LD (MMBU1A),DE
LD (DE),A
CALL ?SETDE
LD A,(MUNOF)
LD (MUNOF2),A
MUSI1: LD DE,MUNOF2
LD A,(DE)
RRC A
LD (DE),A
PUSH AF
LD B,0
JR NC,MUSI3
CALL HLFTCH
CP ";"
JR Z,MUSI3
CALL STREXP
MUSI3: PUSH HL
LD A,(MUCHNO)
CP 4
JP Z,ER01 ;Ch no over
INC A
LD (MUCHNO),A
INC B
JP Z,ER05
LD A,(MUDNO)
ADD A,B
JP C,ER05 ;data no. over
LD (MUDNO),A
LD HL,(MMBU1A)
CALL LDHLDE
LD (MMBU1A),HL
DEC HL
LD M,0DH
POP HL
POP AF
JR NC,MUSI1
CALL ENDCHK
JR Z,MUSI4
TEST1 ','
CALL TEST1
DEFB ','
ENDM
JR Z,MUSI4
TEST1 ';'
CALL TEST1
DEFB ';'
ENDM
JR MUSI1
MUSI4: PUSH HL
LD HL,DIRARE
LD IX,HL
LD IY,MUSCHO
LD B,4
MUSI5: PUSH BC
PUSH HL
LD HL,IX
LD DE,DIRARE
XOR A
SBC HL,DE
LD (IY+4),L
POP HL
LD (MUSI6+1),SP
CALL MML.EN
MUSI6: LD SP,0 ;xxx
POP BC
INC HL
INC IY
DJNZ MUSI5
LD B,3
SVC .MCTRL ;MWAIT
RST 3
DEFB .MCTRL
ENDM
MUSI8: LD BC,100H
LD HL,DIRARE
LD DE,DIRARE+700H
LDIR
LD B,4
LD HL,MMCHDA
MUSDS: LD E,M
LD D,0
INC HL
PUSH HL
LD HL,DIRARE+700H
ADD HL,DE
LD A,M
CP 0FFH
JR Z,MUSDS1
LD A,4
SUB B
PUSH BC
EX DE,HL
SVC .PLAY
RST 3
DEFB .PLAY
ENDM
POP BC
MUSDS1: POP HL
DJNZ MUSDS
LD B,1
SVC .MCTRL ;PSGON
RST 3
DEFB .MCTRL
ENDM
;
POP HL
JP MUSIC1
;
MUSCHO: DEFW 0202H ;Oct data eny ch.
DEFW 0202H
MMCHDA: DEFS 4 ;Play & Noise Data addr
;
MUDNO: DEFS 1 ;total data No.
MUCHNO: DEFS 1 ;ch no.
MMBU1A: DEFS 2 ;MML data buffer
MUNOF: DEFS 1 ;07:MUSIC 08:NOISE
MUNOF2: DEFS 1 ;rotate(MUNOF)
;
SKP H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; MML(HL) => IOCSM(IX) trans
; END code=00H or 0DH or C8H
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
MML.EN: CALL MML.WC
MML.E0: CALL HLFTCH
CALL MMAGCH
JR C,MMTCAL
LD C,0
CALL MML.AG ;String:A-G
JR MMTCA9
;
MMTCAL: CALL MMENCH
JP Z,MMLEND
LD B,12
EX DE,HL
LD HL,MMTCAT ;Call address table
MMTCA0: CP M ;cmp chr
INC HL
JR Z,MMTCAJ
DEC B
JP Z,ER03
INC HL
INC HL
JR MMTCA0
MMTCAJ: LD C,M
INC HL
LD B,M
EX DE,HL
INC HL
CALL .BC
MMTCA9: JP C,ER03
JR MML.E0
;
.BC: PUSH BC
RET
;
MMTCAT: DEFM '#'
DEFW MML.SH
DEFM '+'
DEFW MML.UO
DEFB D7H
DEFW MML.UO
DEFM '-'
DEFW MML.DO
DEFB CFH
DEFW MML.DO
DEFM 'O'
DEFW MML.O
DEFM 'N'
DEFW MML.N
DEFM 'T'
DEFW MML.T
DEFM 'V'
DEFW MML.V
DEFM 'S'
DEFW MML.S
DEFM 'M'
DEFW MML.M
DEFM 'L'
DEFW MML.L
;
MML.DO: LD C,-12 ;-
DEFB 11H
;
MML.UO: LD C,12 ;+
TEST1 "#"
CALL TEST1
DEFB "#"
ENDM
JR NZ,+3
INC C
DEFB 11H
;
MML.SH: LD C,1 ;#
CALL HLFTCH
CALL MMAGCH
RET C
MML.AG: LD B,A
INC HL
CALL MML.DL
CCF
CALL C,MML.L1
RET C
LD A,B
CP 'R'
JR Z,MML.R
PUSH HL
LD HL,ONCTT-41H ;A-G
CALL ADDHLA
LD B,(IY+0)
INC B
LD A,M
POP HL
ADD A,C
SUB 12
ADD A,12
DJNZ -2
JR MML.N0
;
MML.R: XOR A
MML.R0: PUSH AF
CALL MML.WO
POP AF
MML.W1: LD (IX+0),A
INC IX
RET
;
MML.O: CALL MML.DL ;O
JR NC,+4
LD A,2
CP 7
CCF
RET C
LD (IY+0),A ;oct No.
RET
;
MML.N: CALL MML.DL ;N
RET C
MML.N0: CP NMAX+1
CCF
RET C
JR MML.R0
;
MML.T: CALL MML.DL ;T
JR NC,+4
LD A,4
DEC A
CP 7
CCF
RET C
ADD A,6AH
LD (MML.W),A
RET
;
MML.V: CALL MML.DL ;V
JR NC,+4
LD A,15
CP 16
CCF
RET C
ADD A,80H
LD (MML.W+1),A
RET
;
MML.L: CALL MML.DL ;L
JR NC,+4
LD A,5
MML.L1: CP 10
CCF
RET C
MML.L2: ADD A,60H
LD (MML.W+2),A
RET
;
MML.S: CALL MML.DL ;S
RET C
CP 9
CCF
RET C
ADD A,90H
LD (MML.W+3),A
RET
;
MML.M: CALL MML.DL ;M
RET C
OR A
SCF
RET Z
LD B,A
LD C,0A0H
LD (MML.W+4),BC
OR A
RET
;
;
MML.DL: CALL HLFTCH
CALL MMENCH
SCF
CALL NZ,TSTNUM
RET C ;RET not number
SVC .DEASC
RST 3
DEFB .DEASC
ENDM
JP DCHECK
;
MMAGCH: CP 'R' ;A-G & R check
RET Z
CP 'A'
RET C
CP 'H'
CCF
RET
;
MMENCH: OR A
RET Z
CP 0DH
RET Z
CP 0C8H
RET
;
MMLEND: CALL MML.WO
LD A,FFH ;Music Data end
CALL MML.W1
JP MUSI6
;
MML.WO: LD DE,MML.W
LD B,6
LD A,(DE)
OR A
CALL NZ,MML.W1
INC DE
DJNZ -6
;
MML.WC: LD DE,MML.W
LD B,6
JP ?CLRDE
;
;
ONCTT: DEFB 9 ;A
DEFB 11 ;B
DEFB 0 ;C
DEFB 2 ;D
DEFB 4 ;E
DEFB 5 ;F
DEFB 7 ;G
;
MML.W: DEFB 0 ;T
DEFB 0 ;V
DEFB 0 ;L
DEFB 0 ;S
DEFB 0 ;Mn
DEFB 0
;
END

View File

@@ -0,0 +1,754 @@
; -----------------------------
; MZ-800 BASIC Plotter package
; FI:PLT ver 1.0A 8.25.84
; Programed by T.Miho
; -----------------------------
;
INCLD MACRO
;
P.PLT: EQU 0
PNCHNM: DEFB "N" ;N,S,L
;
NEWON: ENT
LD BC,ER59'
LD DE,NEWONT ;NEW ON
NEWON2: LD A,(DE) ; omit plotter
INC DE
ADD A,A
JR Z,NEWON4
LD HL,SJPTBL
CALL ADDHLA
LD M,C
INC HL
LD M,B
JR NEWON2
NEWON4: XOR A ; PLOT OFF
LD (INPFLG),A
LD A,(PNMODE)
DEC A
CALL NZ,MODETX ; PMODE TX
LD HL,NEWAD2
NEWON9: LD (TEXTST),HL
RET
SKP H
;
NEWONT: DEFB A2H ;PMODE
DEFB A3H ;PSKIP
DEFB A4H ;PLOT
DEFB A5H ;PLINE
DEFB A6H ;RLINE
DEFB A7H ;PMOVE
DEFB A8H ;RMOVE
DEFB AEH ;PCOLOR
DEFB AFH ;PHOME
DEFB B0H ;HSET
DEFB B1H ;GPRINT
DEFB B3H ;AXIS
DEFB BBH ;PCIRCLE
DEFB BCH ;PTEST
DEFB BDH ;PAGE
DEFB 0
;
LPTTMD: ENT
LD B,1 ;Check text mode
JR +4
LPTGMD: ENT
LD B,2 ;Check graph mode
LD A,(PNMODE)
CP B
RET Z
JP LPTMER
;
SKP H
;
NEWAD2: ENT
;
MODE: ENT
CALL MODE0 ;"PMODE" command
XOR A
LD (LPOSB),A ;LPT TAB
RET
;
MODE0: LD A,(INPFLG)
OR A
JP NZ,LPTMER
CALL PPCHCK
TEST1 "G"
CALL TEST1
DEFB "G"
ENDM
JP Z,PGRAPH
TESTX "T"
CALL TESTX
DEFB "T"
ENDM
TEST1 "N"
CALL TEST1
DEFB "N"
ENDM
JR Z,TEXTN
TEST1 "L"
CALL TEST1
DEFB "L"
ENDM
JR Z,TEXTN
TESTX "S"
CALL TESTX
DEFB "S"
ENDM
TEXTN: LD (PNCHNM),A
CALL ENDZ
CALL OUTA3H
MODETX: LD A,1
LD (PNMODE),A
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD A,(PNCHNM)
CP "N"
RET Z
CP "L"
LD A,0BH
JR Z,XLPTOT
T80CH: LD A,9
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
XLPTOT: SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
RET
;
OUTA3H: LD A,0AH
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD A,3
JR XLPTOT
;
PGRAPH: INC HL ;Graphic mode
CALL ENDZ
LD A,2
LD (PNMODE),A
JR XLPTOT
SKP H
;
SKIP: ENT
CALL PPCHCK
CALL LPTTMD ;SKIP n
CALL IDEEXP
LD A,E
OR A
RET Z
CP -20
JR NC,SKIPPS
CP 21
JP NC,ER03
SKIPPS: CALL ENDZ
BIT 7,E
JR NZ,SKIPD
SKIPI: LD A,0AH
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
DEC E
JR NZ,SKIPI
RET
;
SKIPD: LD A,03H
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
INC E
JR NZ,SKIPD
RET
;
PNMX99: PUSH HL
LD HL,999
JR +6
PNMX48: PUSH HL
LD HL,480
PUSH HL
ADD HL,DE
POP HL
JR C,PNMX2
SBC HL,DE
JP C,ER03
PNMX2: POP HL
RET
SKP H
;
PLINE: ENT ; PLINE %n,x,y
LD C,"D"
DEFB 11H
RLINE: ENT ; RLINE %n,x,y"
LD C,"J"
DEFB 11H
PMOVE: ENT ; PMOVE x,y
LD C,"M"
DEFB 11H
RMOVE: ENT ; RMOVE x,y
LD C,"R"
CALL PPCHCK
CALL LPTGMD
LD A,C
LD (LINEC+1),A
CP "M"
JR NC,LINE5 ;"M","R"
TEST1 "%"
CALL TEST1
DEFB "%"
ENDM
JR NZ,LINE5
CALL IBYTE
LD A,E
DEC A
CP 16
JP NC,ER03
DEC DE
LD A,"L"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
CALL NUMPLT
CALL LPTCR
CALL ENDCHK
RET Z
CALL CH2CH
LINE5: CALL IDEEXP
CALL CH2CH
CALL PNMX48
PUSH DE
CALL IDEEXP
CP ","
JR Z,LINEXY
CALL ENDZ
LINEXY: CALL PNMX99
POP BC
PUSH DE
LINEC: LD A,0 ;Plotter command
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD E,C
LD D,B
CALL NUMPLT ;X
CALL LPTCOM
POP DE
CALL NUMPLT ;Y
CALL LPTCR
CALL ENDCHK
RET Z
INC HL
JR LINE5
SKP H
;
PCOLOR: ENT
CALL PPCHCK
CALL IBYTE ;PCOLOR n
LD A,E
CP 4
JP NC,ER03
CALL ENDZ
LD A,(PNMODE)
CP 2
JR Z,PNMBR2
CALL OUTA3H
LD A,2
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
CALL PNMBR2
JP PRTTX
;
PNMBR2: LD A,"C"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD A,E
OR 30H
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LPTCR: LD A,0DH
JR +4
LPTCOM: LD A,","
YLPTOT: SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
RET
;
PHOME: ENT
LD C,"H"
DEFB 11H
HSET: ENT
LD C,"I"
CALL LPTGMD ;PHOME / HSET
CALL ENDZ
LD A,C
JR YLPTOT
;
SKP H
;
GPRINT: ENT
CALL PPCHCK
CALL LPTGMD ;GPRINT [n,s],x$
TEST1 "["
CALL TEST1
DEFB "["
ENDM
JR NZ,SYMBL2
CALL IBYTE
CP 64
JP NC,ER03
PUSH DE
CALL HCH2CH
CALL IBYTE
CP 4
JP NC,ER03
PUSH DE
TESTX "]"
CALL TESTX
DEFB "]"
ENDM
POP BC
POP DE
PUSH BC
LD A,"S"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
CALL NUMPLT
CALL LPTCOM
POP DE
LD A,"Q"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
CALL NUMPLT
CALL LPTCR
CALL ENDCHK
RET Z
CALL CH2CH
SYMBL2: CALL STREXP
CALL ENDCHK
JR Z,SYMBL5
CALL CH2CH
DEC HL
SYMBL5: LD A,B
OR A
JR Z,SYMBL4
LD A,"P"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
SYMBL3: LD A,(DE)
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
INC DE
DJNZ SYMBL3
CALL LPTCR
SYMBL4: CALL ENDCHK
RET Z
INC HL
JR SYMBL2
SKP H
;
AXIS: ENT
CALL LPTGMD ;AXIS x,p,r
CALL IBYTE
CP 2
JP NC,ER03
PUSH AF
CALL HCH2CH
CALL IDEEXP
PUSH DE
CALL CH2CH
CALL IBYTE
OR A
JP Z,ER03
CALL ENDZ
LD A,"X"
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
POP BC
POP AF
PUSH DE
PUSH BC
OR 30H
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
CALL LPTCOM
POP DE
CALL PNMX99
CALL NUMPLT
CALL LPTCOM
POP DE
CALL NUMPLT
JP LPTCR
SKP H
;
PCIRCLE:ENT
CALL LPTGMD ;PCIRCLE x,y,r,s,e,d
PUSH HL
LD DE,0
LD HL,CRS
CALL FLTHEX
LD DE,360
LD HL,CRE
CALL FLTHEX
LD HL,FLTEN
LD DE,CRTEN
CALL LDIR5
POP HL
CALL EXPR ;X
CALL CH2CH
PUSH HL
LD HL,CRX
EX DE,HL
CALL LDIR5
POP HL
CALL EXPR ;Y
CALL CH2CH
PUSH HL
LD HL,CRY
EX DE,HL
CALL LDIR5
POP HL
CALL EXPR ;R
PUSH HL
PUSH AF
LD HL,CRR
EX DE,HL
CALL LDIR5
LD A,(CRR+1)
RLCA
JP C,ER03
POP AF
CP ","
JR NZ,CIREND
POP HL
INC HL
CALL EXPR ;S
PUSH HL
PUSH AF
LD HL,CRS
EX DE,HL
CALL LDIR5
POP AF
CP ","
JR NZ,CIREND
POP HL
INC HL
CALL EXPR ;E
PUSH HL
PUSH AF
LD HL,CRE
EX DE,HL
CALL LDIR5
POP AF
CP ","
JR NZ,CIREND
POP HL
INC HL
CALL EXPR ;D
PUSH HL
LD HL,CRTEN
EX DE,HL
CALL LDIR5
LD A,(CRTEN+1)
RLCA
JP C,ER03
CIREND:
POP HL
CALL ENDZ
PUSH HL
;
LD HL,CRE
LD DE,CRS
LD A,(CRTEN)
OR A
CALL NZ,CMP
JP C,ER03
;
CALL CRXYRS ;CAL X,Y
;
LD HL,CRXX ;MOVE X,Y
LD (CRMOVX+1),HL
LD HL,CRYY
LD (CRMOVY+1),HL
CALL CRMOVE
LD A,(CRTEN)
OR A
JR Z,CREDLI
;
CRCLP: LD HL,CRS ;S+D
LD DE,CRTEN
CALL ADD
LD DE,CRE
CALL CMP
JR NC,EDLINE
CALL CRXYRS
CALL CRLINE
;
SVC .BREAK
RST 3
DEFB .BREAK
ENDM
JR NZ,CRCLP
;
POP HL
RET
;
EDLINE: CALL CREDST
CALL CRLINE
POP HL
RET
;
CREDST: LD HL,CRE
LD DE,CRS
LD BC,5
LDIR
JR CRXYRS
;
CREDLI: LD HL,CRX
LD (CRMOVX+1),HL
LD HL,CRY
LD (CRMOVY+1),HL
CALL CRLINE
CALL CREDST
LD HL,CRXX
LD (CRMOVX+1),HL
LD HL,CRYY
LD (CRMOVY+1),HL
CALL CRLINE
POP HL
RET
;
CRLINE: LD A,"D"
DEFB 21H
CRMOVE: LD A,"M"
PUSH AF
CRMOVX: LD HL,CRX
CALL HLFLT
PUSH HL
EX DE,HL
CALL PNMX99
CRMOVY: LD HL,CRY
CALL HLFLT
PUSH HL
EX DE,HL
CALL PNMX99
POP HL
POP DE
POP AF
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
PUSH HL
CALL NUMPLT
CALL LPTCOM
POP DE
CALL NUMPLT
JP LPTCR
;
CRXYRS: LD DE,(INTFAC)
LD HL,CRS
CALL LDIR5
LD HL,(INTFAC)
CALL RAD
CALL COS
LD DE,CRR
CALL MUL
LD DE,CRX
CALL ADD
LD DE,CRXX
CALL LDIR5
LD DE,(INTFAC)
LD HL,CRS
CALL LDIR5
LD HL,(INTFAC)
CALL RAD
CALL SIN
LD DE,CRR
CALL MUL
LD DE,CRY
CALL ADD
LD DE,CRYY
JP LDIR5
;
CRX: DEFS 5
CRY: DEFS 5
CRR: DEFS 5
CRS: DEFS 5
CRE: DEFS 5
CRTEN: DEFS 5
CRXX: DEFS 5
CRYY: DEFS 5
DEFS 5
;
;
;
NUMPLT: PUSH AF
PUSH HL
LD HL,(INTFAC)
CALL FLTHEX
CALL CVNMFL
SVC .COUNT
RST 3
DEFB .COUNT
ENDM
NUMPL2: LD A,(DE)
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
INC DE
DJNZ NUMPL2
POP HL
POP AF
RET
;
SKP H
;
TEST: ENT
CALL PPCHCK
CALL LPTTMD ;TEST command
CALL ENDZ
LD A,04H
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
RET
;
PAGE: ENT
CALL LPTTMD ;PAGE n
CALL IDEEXP
LD A,E
OR A
JP Z,ER03
CP 73
JP NC,ER03
CALL ENDZ
LD A,9
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD A,(PSEL)
BIT P.PLT,A
JR Z,PAGE2
CALL NUMPLT ;Plotter only
JP LPTCR
PAGE2: LD A,E ;Except plotter
LD DE,KEYBUF
CALL HEXACC
DEC DE
DEC DE
LD A,(DE)
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
INC DE
LD A,(DE)
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
RET
;
PLOT: ENT
LD A,M
CP 9DH ;PLOT ON/OFF
JR Z,PLOTO'
CP A1H ;OFF
JP NZ,ER01
XOR A
PLOTOK: LD (INPFLG),A
INC HL
RET
PLOTO': CALL LPTTMD
CALL PPCHCK
LD A,(PNCHNM)
CP "L"
JP Z,LPTMER
CALL PRTTX
PL40C: LD A,(INPFLG)
OR A
JR NZ,PLOTOK
CALL CONSOI
LD A,16H
SVC .CRT1C
RST 3
DEFB .CRT1C
ENDM
OR 01H
JR PLOTOK
;
PRTTX: LD A,1
SVC .LPTOT
RST 3
DEFB .LPTOT
ENDM
LD A,(CRTMD2)
CP 3
RET C
CALL T80CH
RET
;
PPCHCK: LD A,(PSEL)
BIT P.PLT,A ;if not plotter
JP Z,LPTMER ; then err
RET
;
NEWAD0: ENT
;
END

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
;
;
ORG 5800H
$START: ENT
END

View File

@@ -0,0 +1,9 @@
ORG 2000H
TEXTBF:
DEFS 2000
;
; work area
;
DIRARE: ENT ;DIR area
DEFS 800H
END

891
software/asm/mz2000_ipl.asm Normal file
View File

@@ -0,0 +1,891 @@
;****************************************************************
;
; MZ-2000 Initial Program Loader Firmware.
;
; Disassembled with dz80 v2.1 and comments copied from the
; MZ-80B IPL disassembly.
;
;****************************************************************
;
CR EQU 0D8H
TR EQU 0D9H
SCR EQU 0DAH
DR EQU 0DBH
DM EQU 0DCH
HS EQU 0DDH
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
IBUFE EQU 0CF00H
ATRB EQU 0CF00H
NAME EQU 0CF01H
SIZE EQU 0CF12H
DTADR EQU 0CF14H
SUMDT EQU 0FFE0H
TMCNT EQU 0FFE2H
IBADR1 EQU 0CF00H
IBADR2 EQU 08000H
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
PRGSTART EQU 00000H
ORG PRGSTART
L0000: JR START
;
; NST RESET
;
NST: LD A,003H ;Set PC1 NST=1
OUT (PPICTL),A
START: LD A,082H ;8255 A=OUT B=IN C=OUT
OUT (PPICTL),A
LD A,058H ;PIO A=OUT
OUT (PPIC),A
LD SP,SUMDT ;PIO B=IN
LD A,0F7H
OUT (PPIA),A
LD A,00FH
OUT (PIOCTLA),A ;BST=1 NST=0 OPEN=1 WRITE=1
LD A,0CFH
OUT (PIOCTLB),A
LD A,0FFH
OUT (PIOCTLB),A
XOR A ;Set Graphics VRAM to default, input to GRPH I, no output.
OUT (0F6H),A
OUT (GRPHCTL),A
INC A
OUT (0F7H),A
LD A,007H
OUT (0F5H),A
LD A,0D3H
OUT (PIOA),A
LD HL,0D000H
LD A,CR
CLEAR: LD (HL),000H ; DISPLAY CLEAR
INC HL
CP H
JR NZ,CLEAR
LD A,0FFH
OUT (PPIA),A
LD A,003H
OUT (0F7H),A
CALL L006E
LD A,002H
OUT (0F7H),A
CALL L006E
LD A,001H
OUT (0F7H),A
CALL L006E
LD A,013H
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.
L006E: LD HL,0C000H
DI
IN A,(PIOA)
SET 7,A
RES 6,A
OUT (PIOA),A
LD DE,0C001H
LD (HL),000H
LD BC,03E7FH
L0082: LDIR
RES 7,A
SET 6,A
OUT (PIOA),A
EI
RET
KEYS1: LD B,014H ;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 (TR),A
CALL DLY80U
IN A,(TR)
CP B
RET
;
; ;
; CMT CONTROL ;
; ;
;
CMT: CALL MSTOP
CALL KYEMES
CALL RDINF
JR C,ST1
CALL LDMSG
LD HL,NAME
LD E,010H
LD C,010H
CALL DISP2
LD A,(IBUFE)
CP 001H
JR NZ,MISMCH
CALL RDDAT
ST1: PUSH AF
CALL FR
POP AF
JP C,TRYAG
JP NST
MISMCH: LD HL,MES16
LD E,00AH
LD C,00FH
CALL DISP
CALL MSTOP
SCF
JR ST1
;
;READ INFORMATION
; CF=1:ERROR
?RDI:
RDINF: DI
IN A,(PPIC)
SET 5,A
OUT (PPIC),A
LD D,004H
LD BC,0080H
LD HL,IBUFE
RD1: CALL MOTOR
JR C,STPEIR
CALL TMARK
JR C,STPEIR
CALL RTAPE
JR C,STPEIR
BIT 3,D
JR Z,EIRTN
STPEIR: CALL MSTOP
EIRTN: EI
RET
;
;
;READ DATA
;
?RDD:
RDDAT: DI
LD D,008H
LD BC,(0CF12H)
LD HL,IBADR2
JR RD1
;
;
;READ TAPE
; BC=SIZE
; DE=LOAD ADDRSS
RTAPE: PUSH DE
PUSH BC
PUSH HL
LD H,002H
RTP2: CALL SPDIN
JR C,TRTN1 ; BREAK
JR Z,RTP2
LD D,H
LD HL,L0000
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: IN A,(PPIB)
CPL
RLCA
RET C ; BREAK
RLCA
JR NC,EDGE ; WAIT ON LOW
L016A: IN A,(PPIB)
CPL
RLCA
RET C ; BREAK
RLCA
JR C,L016A ; WAIT ON HIGH
RET
; 1 BYTE READ
; DATA=A
; SUMDT STORE
RBYTE: PUSH HL
LD HL,00800H ; 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,01414H
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
SPDIN: CALL EDGE ;WAIT ON HIGH
RET C ;BREAK
CALL DLY2
IN A,(PPIB) ;READ BIT
AND 040H
RET
;
;
;MOTOR ON
MOTOR: PUSH DE
PUSH BC
PUSH HL
IN A,(PPIB)
AND 020H
JR Z,MOTRD
LD HL,MES6
LD E,00AH
LD C,00EH
CALL DISP
CALL OPEN
MOT1: IN A,(PIOB)
CPL
RLCA
JR C,MOTR
IN A,(PPIB)
AND 020H
JR NZ,MOT1
CALL KYEMES
CALL DEL1M
MOTRD: CALL PLAY
MOTR: POP HL
POP BC
POP DE
RET
;
;
;MOTOR STOP
MSTOP: LD A,0F7H
OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
RET
;EJECT
OPEN: LD A,008H ;Reset PC4 - EJECT activate
OUT (PPICTL),A
CALL DEL6
LD A,009H
OUT (PPICTL),A ;Set PC4 - Deactivate EJECT
RET
KYEMES: LD HL,MES3
LD E,004H
LD C,01CH
CALL DISP
RET
;
;PLAY
PLAY: LD A,0FBH
OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
RET
FR: LD A,0FEH
FR1: OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
IN A,(PPIC)
RES 5,A
OUT (PPIC),A
RET
;
;TIMING DEL
DM1: PUSH AF
DM1A: XOR A
DM1B: DEC A
JR NZ,DM1B
DEC BC
LD A,B
OR C
JR NZ,DM1A
POP AF
POP BC
RET
DEL6: PUSH BC
LD BC,RDINF
JR DM1
DEL1M: PUSH BC
LD BC,060FH
JR DM1
;
;TAPE DELAY TIMING
;
;
DLY2: LD A,031H
DLY2A: DEC A
JP NZ,DLY2A
RET
LDMSG: LD HL,MES1
LD E,000H
LD C,00EH
JR DISP
DISP2: LD A,0D3H
OUT (PIOA),A
JR DISP1
BOOTER: LD HL,MES8
LD E,00AH
LD C,00DH
DISP: LD A,0D3H
OUT (PIOA),A
EXX
LD HL,0D000H
LD A,CR
DISP3: LD (HL),000H
INC HL
CP H
JR NZ,DISP3
EXX
DISP1: XOR A
LD B,A
LD D,0D0H
LDIR
LD A,013H
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 disk "
MES12: DB "C:Cassette tape"
MES13: DB "Drive No? (1-4)"
MES14: DB "This disk 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,IBUFE
XOR A
LD (0CF1EH),A
LD (0CF1FH),A
LD IY,SUMDT
LD HL,0100H
LD (IY+002H),L
LD (IY+003H),H
CALL BREAD ;INFORMATION INPUT
LD HL,IBUFE ;MASTER CHECK
LD DE,IPLMC
LD B,006H
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,00AH
CALL DISP2
LD IX,IBADR2
LD HL,(0CF14H)
LD (IY+002H),L
LD (IY+003H),H
CALL BREAD
CALL MOFF
JP NST
NODISK: LD HL,MES9
LD E,00AH
LD C,00DH
CALL DISP
JP ERR1
;
; READY CHECK
;
READY: LD A,(MTFG)
RRCA
CALL NC,MTON
LD A,(DRINO) ;DRIVE NO GET
OR 084H
OUT (DM),A ;DRIVE SELECT MOTON
XOR A
CALL DLY60M
LD HL,L0000
REDY0: DEC HL
LD A,H
OR L
JR Z,NODISK
RET C
RET C
CPL
RLCA
JR C,REDY0
LD A,(DRINO)
LD C,A
LD HL,CLBF0
LD B,000H
ADD HL,BC
BIT 0,(HL)
RET NZ
CALL RCLB
SET 0,(HL)
RET
;
; MOTOR ON
;
MTON: LD A,080H
OUT (DM),A
LD B,00AH ;1SEC DELAY
MTD1: LD HL,03C19H
MTD2: DEC HL
LD A,L
OR H
JR NZ,MTD2
DJNZ MTD1
LD A,001H
LD (MTFG),A
RET
;
; Track SEEK
;
SEEK: LD A,01BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 099H
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,00BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 085H
XOR 004H
POP HL
RET Z
JP ERR
;
; BUSY AND WAIT
;
BUSY: PUSH DE
PUSH HL
CALL DLY80U
LD E,007H
BUSY2: LD HL,L0000
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,000H
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+004H),H
LD (IY+005H),L
DCHK: LD A,(DRINO)
CP 004H
JR NC,DTCK1
LD A,(IY+004H)
CP 046H
JR NC,DTCK1
LD A,(IY+005H)
OR A
JR Z,DTCK1
CP 011H
JR NC,DTCK1
LD A,(IY+002H)
OR (IY+003H)
RET NZ
DTCK1: JP ERR
;
; SEQUENTIAL READ
;
BREAD: DI
CALL CONVRT
LD A,00AH
LD (RETRY),A
READ1: CALL READY
LD D,(IY+003H)
LD A,(IY+002H)
OR A
JR Z,RE0
INC D
RE0: LD A,(IY+005H)
LD (IY+001H),A
LD A,(IY+004H)
LD (IY+000H),A
PUSH IX
POP HL
RE8: SRL A
CPL
OUT (DR),A
JR NC,RE1
LD A,001H
JR RE2
RE1: LD A,000H
RE2: CPL
OUT (HS),A
CALL SEEK
JR NZ,REE
LD C,DR
LD A,(IY+000H)
SRL A
CPL
OUT (TR),A
LD A,(IY+001H)
CPL
OUT (SCR),A
EXX
LD HL,RE3
PUSH HL
EXX
LD A,094H
CPL
OUT (CR),A
CALL WAIT
RE6: LD B,000H
RE4: IN A,(CR)
RRCA
RET C
RRCA
JR C,RE4
INI
JR NZ,RE4
INC (IY+001H)
LD A,(IY+001H)
CP 011H
JR Z,RETS
DEC D
JR NZ,RE6
JR RE5
RETS: DEC D
RE5: LD A,CR
CPL
OUT (CR),A
CALL BUSY
RE3: IN A,(CR)
CPL
AND 0FFH
JR NZ,REE
EXX
POP HL
EXX
LD A,(IY+001H)
CP 011H
JR NZ,REX
LD A,001H
LD (IY+001H),A
INC (IY+000H)
REX: LD A,D
OR A
JR NZ,RE7
LD A,080H
OUT (DM),A
RET
RE7: LD A,(IY+000H)
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,008H
WAIT2: LD HL,L0000
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,007H
LD C,01BH
CALL DISP
JR ERR1
;
; ;
; ERRROR OR BREAK ;
; ;
;
ERR: CALL BOOTER
ERR1: CALL MOFF
LD SP,SUMDT
TRYAG: CALL FDCC
JR NZ,TRYAG3
LD HL,MES10
LD E,05AH
LD C,00CH
CALL DISP2
LD E,0ABH
LD C,011H
CALL DISP2
LD E,0D3H
LD C,00FH
CALL DISP2
TRYAG1: CALL KEYS1
BIT 3,A
JP Z,CMT
BIT 6,A
JR Z,DNO
JR TRYAG1
DNO: LD HL,MES13
LD E,00AH
LD C,00FH
CALL DISP
DNO10: LD D,012H
CALL DNO0
JR NC,DNO3
LD D,018H
CALL DNO0
JR NC,DNO3
JR DNO10
DNO3: LD A,B
LD (DRINO),A
JP FD
TRYAG3: LD HL,MES15
LD E,054H
LD C,01DH
CALL DISP2
TRYAG4: LD B,006H
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,000H
LD C,004H
RRCA
DNO1: RRCA
RET NC
INC B
DEC C
JR NZ,DNO1
RET
;
; TIME DELAY (1M &60M &80U )
;
DLY80U: PUSH DE
LD DE,000DH
JP DLYT
DLY1M: PUSH DE
LD DE,L0082
JP DLYT
DLY60M: PUSH DE
LD DE,01A2CH
DLYT: DEC DE
LD A,E
OR D
JR NZ,DLYT
POP DE
RET
;
;
; ;
; INTRAM EXROM ;
; ;
;
EXROMT: LD HL,IBADR2
LD IX,EROM1
JR SEROMA
EROM1: IN A,(0F9H)
CP 000H
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,004H
SEROMD: DEC D
JR NZ,SEROMD
JP (IX)
; Align to rom size.
DS 0800H - 1 - ($ + 0800H - 1) % 0800H, 0FFh

View File

@@ -54,7 +54,7 @@ KEYS: IN A,(PIOA)
AND 0F0H
OR B
OUT (PIOA),A
IN A,(PIOB) ;Read the strobed key.
IN A,(PIOB) ;Read the strobed key.
RET
;
;
@@ -237,7 +237,7 @@ TM3: CALL SPDIN
JR RBY3
;READ 1 BIT
SPDIN: CALL EDGE ;WAIT ON HIGH
RET C ;BREAK
RET C ;BREAK
CALL DLY2
IN A,(PPIB) ;READ BIT
@@ -823,6 +823,9 @@ SEROMD: DEC D
JR NZ,SEROMD
JP (IX)
; Align to ROM size.
DS 0800H - 1 - ($ + 0800H - 1) % 0800H, 0FFh
;----------------------------------------------------------
; Variables/Work area
;----------------------------------------------------------

View File

@@ -0,0 +1 @@
mz2000_ipl.ini

View File

@@ -0,0 +1,889 @@
;****************************************************************
;
; MZ-2000 Initial Program Loader Firmware.
;
; Disassembled with dz80 v2.1 and comments copied from the
; MZ-80B IPL disassembly.
;
;****************************************************************
;
CR EQU 0D8H
TR EQU 0D9H
SCR EQU 0DAH
DR EQU 0DBH
DM EQU 0DCH
HS EQU 0DDH
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
IBUFE EQU 0CF00H
ATRB EQU 0CF00H
NAME EQU 0CF01H
SIZE EQU 0CF12H
DTADR EQU 0CF14H
SUMDT EQU 0FFE0H
TMCNT EQU 0FFE2H
IBADR1 EQU 0CF00H
IBADR2 EQU 08000H
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
PRGSTART EQU 00000H
ORG PRGSTART
L0000: JR START
;
; NST RESET
;
NST: LD A,003H ;Set PC1 NST=1
OUT (PPICTL),A
START: LD A,082H ;8255 A=OUT B=IN C=OUT
OUT (PPICTL),A
LD A,058H ;PIO A=OUT
OUT (PPIC),A
LD SP,SUMDT ;PIO B=IN
LD A,0F7H
OUT (PPIA),A
LD A,00FH
OUT (PIOCTLA),A ;BST=1 NST=0 OPEN=1 WRITE=1
LD A,0CFH
OUT (PIOCTLB),A
LD A,0FFH
OUT (PIOCTLB),A
XOR A ;Set Graphics VRAM to default, input to GRPH I, no output.
OUT (0F6H),A
OUT (GRPHCTL),A
INC A
OUT (0F7H),A
LD A,007H
OUT (0F5H),A
LD A,0D3H
OUT (PIOA),A
LD HL,0D000H
LD A,CR
CLEAR: LD (HL),000H ; DISPLAY CLEAR
INC HL
CP H
JR NZ,CLEAR
LD A,0FFH
OUT (PPIA),A
LD A,003H
OUT (0F7H),A
CALL L006E
LD A,002H
OUT (0F7H),A
CALL L006E
LD A,001H
OUT (0F7H),A
CALL L006E
LD A,013H
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.
L006E: LD HL,0C000H
DI
IN A,(PIOA)
SET 7,A
RES 6,A
OUT (PIOA),A
LD DE,0C001H
LD (HL),000H
LD BC,03E7FH
L0082: LDIR
RES 7,A
SET 6,A
OUT (PIOA),A
EI
RET
KEYS1: LD B,014H ;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 (TR),A
CALL DLY80U
IN A,(TR)
CP B
RET
;
; ;
; CMT CONTROL ;
; ;
;
CMT: CALL MSTOP
CALL KYEMES
CALL RDINF
JR C,ST1
CALL LDMSG
LD HL,NAME
LD E,010H
LD C,010H
CALL DISP2
LD A,(IBUFE)
CP 001H
JR NZ,MISMCH
CALL RDDAT
ST1: PUSH AF
CALL FR
POP AF
JP C,TRYAG
JP NST
MISMCH: LD HL,MES16
LD E,00AH
LD C,00FH
CALL DISP
CALL MSTOP
SCF
JR ST1
;
;READ INFORMATION
; CF=1:ERROR
?RDI:
RDINF: DI
IN A,(PPIC)
SET 5,A
OUT (PPIC),A
LD D,004H
LD BC,0080H
LD HL,IBUFE
RD1: CALL MOTOR
JR C,STPEIR
CALL TMARK
JR C,STPEIR
CALL RTAPE
JR C,STPEIR
BIT 3,D
JR Z,EIRTN
STPEIR: CALL MSTOP
EIRTN: EI
RET
;
;
;READ DATA
;
?RDD:
RDDAT: DI
LD D,008H
LD BC,(0CF12H)
LD HL,IBADR2
JR RD1
;
;
;READ TAPE
; BC=SIZE
; DE=LOAD ADDRSS
RTAPE: PUSH DE
PUSH BC
PUSH HL
LD H,002H
RTP2: CALL SPDIN
JR C,TRTN1 ; BREAK
JR Z,RTP2
LD D,H
LD HL,L0000
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: IN A,(PPIB)
CPL
RLCA
RET C ; BREAK
RLCA
JR NC,EDGE ; WAIT ON LOW
L016A: IN A,(PPIB)
CPL
RLCA
RET C ; BREAK
RLCA
JR C,L016A ; WAIT ON HIGH
RET
; 1 BYTE READ
; DATA=A
; SUMDT STORE
RBYTE: PUSH HL
LD HL,00800H ; 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,01414H
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
SPDIN: CALL EDGE ;WAIT ON HIGH
RET C ;BREAK
CALL DLY2
IN A,(PPIB) ;READ BIT
AND 040H
RET
;
;
;MOTOR ON
MOTOR: PUSH DE
PUSH BC
PUSH HL
IN A,(PPIB)
AND 020H
JR Z,MOTRD
LD HL,MES6
LD E,00AH
LD C,00EH
CALL DISP
CALL OPEN
MOT1: IN A,(PIOB)
CPL
RLCA
JR C,MOTR
IN A,(PPIB)
AND 020H
JR NZ,MOT1
CALL KYEMES
CALL DEL1M
MOTRD: CALL PLAY
MOTR: POP HL
POP BC
POP DE
RET
;
;
;MOTOR STOP
MSTOP: LD A,0F7H
OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
RET
;EJECT
OPEN: LD A,008H ;Reset PC4 - EJECT activate
OUT (PPICTL),A
CALL DEL6
LD A,009H
OUT (PPICTL),A ;Set PC4 - Deactivate EJECT
RET
KYEMES: LD HL,MES3
LD E,004H
LD C,01CH
CALL DISP
RET
;
;PLAY
PLAY: LD A,0FBH
OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
RET
FR: LD A,0FEH
FR1: OUT (PPIA),A
CALL DEL6
LD A,0FFH
OUT (PPIA),A
IN A,(PPIC)
RES 5,A
OUT (PPIC),A
RET
;
;TIMING DEL
DM1: PUSH AF
DM1A: XOR A
DM1B: DEC A
JR NZ,DM1B
DEC BC
LD A,B
OR C
JR NZ,DM1A
POP AF
POP BC
RET
DEL6: PUSH BC
LD BC,RDINF
JR DM1
DEL1M: PUSH BC
LD BC,060FH
JR DM1
;
;TAPE DELAY TIMING
;
;
DLY2: LD A,031H
DLY2A: DEC A
JP NZ,DLY2A
RET
LDMSG: LD HL,MES1
LD E,000H
LD C,00EH
JR DISP
DISP2: LD A,0D3H
OUT (PIOA),A
JR DISP1
BOOTER: LD HL,MES8
LD E,00AH
LD C,00DH
DISP: LD A,0D3H
OUT (PIOA),A
EXX
LD HL,0D000H
LD A,CR
DISP3: LD (HL),000H
INC HL
CP H
JR NZ,DISP3
EXX
DISP1: XOR A
LD B,A
LD D,0D0H
LDIR
LD A,013H
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 disk "
MES12: DB "C:Cassette tape"
MES13: DB "Drive No? (1-4)"
MES14: DB "This disk 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,IBUFE
XOR A
LD (0CF1EH),A
LD (0CF1FH),A
LD IY,SUMDT
LD HL,0100H
LD (IY+002H),L
LD (IY+003H),H
CALL BREAD ;INFORMATION INPUT
LD HL,IBUFE ;MASTER CHECK
LD DE,IPLMC
LD B,006H
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,00AH
CALL DISP2
LD IX,IBADR2
LD HL,(0CF14H)
LD (IY+002H),L
LD (IY+003H),H
CALL BREAD
CALL MOFF
JP NST
NODISK: LD HL,MES9
LD E,00AH
LD C,00DH
CALL DISP
JP ERR1
;
; READY CHECK
;
READY: LD A,(MTFG)
RRCA
CALL NC,MTON
LD A,(DRINO) ;DRIVE NO GET
OR 084H
OUT (DM),A ;DRIVE SELECT MOTON
XOR A
CALL DLY60M
LD HL,L0000
REDY0: DEC HL
LD A,H
OR L
JR Z,NODISK
RET C
RET C
CPL
RLCA
JR C,REDY0
LD A,(DRINO)
LD C,A
LD HL,CLBF0
LD B,000H
ADD HL,BC
BIT 0,(HL)
RET NZ
CALL RCLB
SET 0,(HL)
RET
;
; MOTOR ON
;
MTON: LD A,080H
OUT (DM),A
LD B,00AH ;1SEC DELAY
MTD1: LD HL,03C19H
MTD2: DEC HL
LD A,L
OR H
JR NZ,MTD2
DJNZ MTD1
LD A,001H
LD (MTFG),A
RET
;
; Track SEEK
;
SEEK: LD A,01BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 099H
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,00BH
CPL
OUT (CR),A
CALL BUSY
CALL DLY60M
IN A,(CR)
CPL
AND 085H
XOR 004H
POP HL
RET Z
JP ERR
;
; BUSY AND WAIT
;
BUSY: PUSH DE
PUSH HL
CALL DLY80U
LD E,007H
BUSY2: LD HL,L0000
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,000H
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+004H),H
LD (IY+005H),L
DCHK: LD A,(DRINO)
CP 004H
JR NC,DTCK1
LD A,(IY+004H)
CP 046H
JR NC,DTCK1
LD A,(IY+005H)
OR A
JR Z,DTCK1
CP 011H
JR NC,DTCK1
LD A,(IY+002H)
OR (IY+003H)
RET NZ
DTCK1: JP ERR
;
; SEQUENTIAL READ
;
BREAD: DI
CALL CONVRT
LD A,00AH
LD (RETRY),A
READ1: CALL READY
LD D,(IY+003H)
LD A,(IY+002H)
OR A
JR Z,RE0
INC D
RE0: LD A,(IY+005H)
LD (IY+001H),A
LD A,(IY+004H)
LD (IY+000H),A
PUSH IX
POP HL
RE8: SRL A
CPL
OUT (DR),A
JR NC,RE1
LD A,001H
JR RE2
RE1: LD A,000H
RE2: CPL
OUT (HS),A
CALL SEEK
JR NZ,REE
LD C,DR
LD A,(IY+000H)
SRL A
CPL
OUT (TR),A
LD A,(IY+001H)
CPL
OUT (SCR),A
EXX
LD HL,RE3
PUSH HL
EXX
LD A,094H
CPL
OUT (CR),A
CALL WAIT
RE6: LD B,000H
RE4: IN A,(CR)
RRCA
RET C
RRCA
JR C,RE4
INI
JR NZ,RE4
INC (IY+001H)
LD A,(IY+001H)
CP 011H
JR Z,RETS
DEC D
JR NZ,RE6
JR RE5
RETS: DEC D
RE5: LD A,CR
CPL
OUT (CR),A
CALL BUSY
RE3: IN A,(CR)
CPL
AND 0FFH
JR NZ,REE
EXX
POP HL
EXX
LD A,(IY+001H)
CP 011H
JR NZ,REX
LD A,001H
LD (IY+001H),A
INC (IY+000H)
REX: LD A,D
OR A
JR NZ,RE7
LD A,080H
OUT (DM),A
RET
RE7: LD A,(IY+000H)
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,008H
WAIT2: LD HL,L0000
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,007H
LD C,01BH
CALL DISP
JR ERR1
;
; ;
; ERRROR OR BREAK ;
; ;
;
ERR: CALL BOOTER
ERR1: CALL MOFF
LD SP,SUMDT
TRYAG: CALL FDCC
JR NZ,TRYAG3
LD HL,MES10
LD E,05AH
LD C,00CH
CALL DISP2
LD E,0ABH
LD C,011H
CALL DISP2
LD E,0D3H
LD C,00FH
CALL DISP2
TRYAG1: CALL KEYS1
BIT 3,A
JP Z,CMT
BIT 6,A
JR Z,DNO
JR TRYAG1
DNO: LD HL,MES13
LD E,00AH
LD C,00FH
CALL DISP
DNO10: LD D,012H
CALL DNO0
JR NC,DNO3
LD D,018H
CALL DNO0
JR NC,DNO3
JR DNO10
DNO3: LD A,B
LD (DRINO),A
JP FD
TRYAG3: LD HL,MES15
LD E,054H
LD C,01DH
CALL DISP2
TRYAG4: LD B,006H
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,000H
LD C,004H
RRCA
DNO1: RRCA
RET NC
INC B
DEC C
JR NZ,DNO1
RET
;
; TIME DELAY (1M &60M &80U )
;
DLY80U: PUSH DE
LD DE,000DH
JP DLYT
DLY1M: PUSH DE
LD DE,L0082
JP DLYT
DLY60M: PUSH DE
LD DE,01A2CH
DLYT: DEC DE
LD A,E
OR D
JR NZ,DLYT
POP DE
RET
;
;
; ;
; INTRAM EXROM ;
; ;
;
EXROMT: LD HL,IBADR2
LD IX,EROM1
JR SEROMA
EROM1: IN A,(0F9H)
CP 000H
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,004H
SEROMD: DEC D
JR NZ,SEROMD
JP (IX)

View File

@@ -0,0 +1,264 @@
----------------------------------------
-- dZ80 configuration file
----------------------------------------
----------------------------------------
-- Disassembly control
----------------------------------------
cpu="z80"
inputfile="mz2000_ipl.rom"
outputfile="mz2000_ipl.asm"
--fileheadersize=27
filebaseaddr=0
disstart=0
disend=1606
--quiet=0
labelledoutput=1
----------------------------------------
-- Layout
----------------------------------------
labelreference=1
addresscolumn=1
opcodecolumn=1
relativejumpcomment=1
uppercase=1
autoblanklines=1
db="db"
comment="; "
radix=16
numprefix="0"
numsuffix="H"
----------------------------------------
-- Scripts
----------------------------------------
--script="scripts\\spectrum.lua"
----------------------------------------
-- References
----------------------------------------
referencefile="mz2000_ipl.ref"
inportreference=1
outportreference=1
addressreference=1
indirectaddressreference=1
limitreferences=1
----------------------------------------
-- Opcode mapfile and code/data areas
----------------------------------------
--opmapfile="mayhem.map"
-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it.
d_SetCodeRegion(0, 1606)
-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word
-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants.
d_SetDataRegion( hex("0289"), 218)
d_SetStringRegion( hex("0289"), 13)
d_SetStringRegion( hex("0297"), 27)
d_SetStringRegion( hex("02B3"), 13)
d_SetStringRegion( hex("02C1"), 12)
d_SetStringRegion( hex("02CE"), 12)
d_SetStringRegion( hex("02DB"), 11)
d_SetStringRegion( hex("02E7"), 31)
d_SetStringRegion( hex("0307"), 14)
d_SetStringRegion( hex("0316"), 22)
d_SetStringRegion( hex("032D"), 3)
d_SetStringRegion( hex("0331"), 28)
d_SetStringRegion( hex("034E"), 14)
d_SetStringRegion( hex("035D"), 7)
-- Create a mapping table of known Sharp I/O ports and 8 bit constants.
--
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
--d_SetByteEquate(hex("FE") , 1, "PRTC" )
--d_SetByteEquate(hex("FF") , 1, "PRTD" )
-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80
-- can use to replace an address with the label. The EQU list will also be output at the start
-- of the disassembly file so it can compile.
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
d_SetWordEquate(hex("0002"), 1, "NST" )
d_SetWordEquate(hex("0006"), 1, "START" )
d_SetWordEquate(hex("0036"), 1, "CLEAR" )
d_SetWordEquate(hex("0060"), 1, "KEYIN" )
d_SetWordEquate(hex("008C"), 1, "KEYS1" )
d_SetWordEquate(hex("008E"), 1, "KEYS" )
d_SetWordEquate(hex("0098"), 1, "NKIN" )
d_SetWordEquate(hex("00A0"), 1, "FDCC" )
d_SetWordEquate(hex("0364"), 1, "FD" )
d_SetWordEquate(hex("00AC"), 1, "CMT" )
d_SetWordEquate(hex("00CE"), 1, "ST1" )
d_SetWordEquate(hex("00D9"), 1, "MISMCH" )
d_SetWordEquate(hex("026D"), 1, "DISP" )
d_SetWordEquate(hex("01F6"), 1, "MSTOP" )
d_SetWordEquate(hex("00E9"), 1, "RDINF" )
d_SetWordEquate(hex("00F8"), 1, "RD1" )
d_SetWordEquate(hex("01C7"), 1, "MOTOR" )
d_SetWordEquate(hex("0193"), 1, "TMARK" )
d_SetWordEquate(hex("010B"), 1, "STPEIR" )
d_SetWordEquate(hex("010E"), 1, "EIRTN" )
d_SetWordEquate(hex("0110"), 1, "RDDAT" )
d_SetWordEquate(hex("011C"), 1, "RTAPE" )
d_SetWordEquate(hex("0121"), 1, "RTP2" )
d_SetWordEquate(hex("01BB"), 1, "SPDIN" )
d_SetWordEquate(hex("015E"), 1, "TRTN1" )
d_SetWordEquate(hex("0121"), 1, "RTP2" )
d_SetWordEquate(hex("0133"), 1, "RTP3" )
d_SetWordEquate(hex("0173"), 1, "RBYTE" )
d_SetWordEquate(hex("0154"), 1, "RTP5" )
d_SetWordEquate(hex("015A"), 1, "RTP6" )
d_SetWordEquate(hex("0266"), 1, "BOOTER" )
d_SetWordEquate(hex("0162"), 1, "EDGE" )
d_SetWordEquate(hex("0177"), 1, "RBY1" )
d_SetWordEquate(hex("0188"), 1, "RBY2" )
d_SetWordEquate(hex("0191"), 1, "RBY3" )
d_SetWordEquate(hex("019C"), 1, "TM0" )
d_SetWordEquate(hex("019F"), 1, "TM1" )
d_SetWordEquate(hex("01A2"), 1, "TM2" )
d_SetWordEquate(hex("01AC"), 1, "TM3" )
d_SetWordEquate(hex("01DD"), 1, "MOT1" )
d_SetWordEquate(hex("01EF"), 1, "MOTRD" )
d_SetWordEquate(hex("01F2"), 1, "MOTR" )
d_SetWordEquate(hex("0202"), 1, "OPEN" )
d_SetWordEquate(hex("020E"), 1, "KYEMES" )
d_SetWordEquate(hex("0219"), 1, "PLAY" )
d_SetWordEquate(hex("0237"), 1, "DM1" )
d_SetWordEquate(hex("0238"), 1, "DM1A" )
d_SetWordEquate(hex("0239"), 1, "DM1B" )
d_SetWordEquate(hex("0244"), 1, "DEL6" )
d_SetWordEquate(hex("024A"), 1, "DEL1M" )
d_SetWordEquate(hex("0250"), 1, "DLY2" )
d_SetWordEquate(hex("0252"), 1, "DLY2A" )
d_SetWordEquate(hex("0257"), 1, "LDMSG" )
d_SetWordEquate(hex("027E"), 1, "DISP1" )
d_SetWordEquate(hex("0260"), 1, "DISP2" )
d_SetWordEquate(hex("0277"), 1, "DISP3" )
d_SetWordEquate(hex("0289"), 1, "MES1" )
d_SetWordEquate(hex("0297"), 1, "MES3" )
d_SetWordEquate(hex("02B3"), 1, "MES6" )
d_SetWordEquate(hex("02C1"), 1, "MES8" )
d_SetWordEquate(hex("02CE"), 1, "MES9" )
d_SetWordEquate(hex("02DB"), 1, "MES10" )
d_SetWordEquate(hex("0307"), 1, "MES13" )
d_SetWordEquate(hex("0316"), 1, "MES14" )
d_SetWordEquate(hex("034E"), 1, "MES16" )
d_SetWordEquate(hex("035D"), 1, "IPLMC" )
d_SetWordEquate(hex("0387"), 1, "MCHECK" )
d_SetWordEquate(hex("03B4"), 1, "NODISK" )
d_SetWordEquate(hex("03C1"), 1, "READY" )
d_SetWordEquate(hex("03D6"), 1, "REDY0" )
d_SetWordEquate(hex("03F4"), 1, "MTON" )
d_SetWordEquate(hex("03FA"), 1, "MTD1" )
d_SetWordEquate(hex("03FD"), 1, "MTD2" )
d_SetWordEquate(hex("040A"), 1, "SEEK" )
d_SetWordEquate(hex("041B"), 1, "MOFF" )
d_SetWordEquate(hex("0431"), 1, "RCLB" )
d_SetWordEquate(hex("0449"), 1, "BUSY" )
d_SetWordEquate(hex("0450"), 1, "BUSY2" )
d_SetWordEquate(hex("0453"), 1, "BUSY0" )
d_SetWordEquate(hex("0461"), 1, "BUSY1" )
d_SetWordEquate(hex("0467"), 1, "CONVRT" )
d_SetWordEquate(hex("0470"), 1, "TRANS" )
d_SetWordEquate(hex("0477"), 1, "TRANS1" )
d_SetWordEquate(hex("0480"), 1, "DCHK" )
d_SetWordEquate(hex("049F"), 1, "DTCK1" )
d_SetWordEquate(hex("04A2"), 1, "BREAD" )
d_SetWordEquate(hex("04AB"), 1, "READ1" )
d_SetWordEquate(hex("04B8"), 1, "RE0" )
d_SetWordEquate(hex("04C7"), 1, "RE8" )
d_SetWordEquate(hex("04D2"), 1, "RE1" )
d_SetWordEquate(hex("04D4"), 1, "RE2" )
d_SetWordEquate(hex("04FA"), 1, "RE6" )
d_SetWordEquate(hex("04FC"), 1, "RE4" )
d_SetWordEquate(hex("0516"), 1, "RETS" )
d_SetWordEquate(hex("0517"), 1, "RE5" )
d_SetWordEquate(hex("051F"), 1, "RE3" )
d_SetWordEquate(hex("0538"), 1, "REX" )
d_SetWordEquate(hex("0541"), 1, "RE7" )
d_SetWordEquate(hex("0546"), 1, "REE" )
d_SetWordEquate(hex("0555"), 1, "WAIT" )
d_SetWordEquate(hex("055C"), 1, "WAIT2" )
d_SetWordEquate(hex("055F"), 1, "WAIT0" )
d_SetWordEquate(hex("056D"), 1, "WAIT1" )
d_SetWordEquate(hex("0572"), 1, "NMASTE" )
d_SetWordEquate(hex("057E"), 1, "ERR" )
d_SetWordEquate(hex("0581"), 1, "ERR1" )
d_SetWordEquate(hex("0583"), 1, "TRYAG2" )
d_SetWordEquate(hex("0587"), 1, "TRYAG" )
d_SetWordEquate(hex("05A4"), 1, "TRYAG1" )
d_SetWordEquate(hex("05B2"), 1, "DNO" )
d_SetWordEquate(hex("05BC"), 1, "DNO10" )
d_SetWordEquate(hex("05CC"), 1, "DNO3" )
d_SetWordEquate(hex("05D3"), 1, "TRYAG3" )
d_SetWordEquate(hex("05DD"), 1, "TRYAG4" )
d_SetWordEquate(hex("05DF"), 1, "TRYAG5" )
d_SetWordEquate(hex("0331"), 1, "MES15" )
d_SetWordEquate(hex("05E9"), 1, "DNO0" )
d_SetWordEquate(hex("05F7"), 1, "DNO1" )
d_SetWordEquate(hex("05FE"), 1, "DLY80U" )
d_SetWordEquate(hex("0605"), 1, "DLY1M" )
d_SetWordEquate(hex("060C"), 1, "DLY60M" )
d_SetWordEquate(hex("0610"), 1, "DLYT" )
d_SetWordEquate(hex("0617"), 1, "EXROMT" )
d_SetWordEquate(hex("0620"), 1, "EROM1" )
d_SetWordEquate(hex("062B"), 1, "ERMT1" )
d_SetWordEquate(hex("062D"), 1, "EROM2" )
d_SetWordEquate(hex("063A"), 1, "SEROMA" )
d_SetWordEquate(hex("0642"), 1, "SEROMD" )
d_SetWordEquate(hex("CF00"), 1, "IBUFE" )
d_SetWordEquate(hex("CF00"), 1, "ATRB" )
d_SetWordEquate(hex("CF01"), 1, "NAME" )
d_SetWordEquate(hex("CF12"), 1, "SIZE" )
d_SetWordEquate(hex("CF14"), 1, "DTADR" )
d_SetWordEquate(hex("FFE0"), 1, "SUMDT" )
d_SetWordEquate(hex("FFE2"), 1, "TMCNT" )
d_SetWordEquate(hex("CF00"), 1, "IBADR1" )
d_SetWordEquate(hex("8000"), 1, "IBADR2" )
d_SetWordEquate(hex("FFE0"), 1, "NTRACK" )
d_SetWordEquate(hex("FFE1"), 1, "NSECT" )
d_SetWordEquate(hex("FFE2"), 1, "BSIZE" )
d_SetWordEquate(hex("FFE4"), 1, "STTR" )
d_SetWordEquate(hex("FFE5"), 1, "STSE" )
d_SetWordEquate(hex("FFE6"), 1, "MTFG" )
d_SetWordEquate(hex("FFE7"), 1, "CLBF0" )
d_SetWordEquate(hex("FFE8"), 1, "CLBF1" )
d_SetWordEquate(hex("FFE9"), 1, "CLBF2" )
d_SetWordEquate(hex("FFEA"), 1, "CLBF3" )
d_SetWordEquate(hex("FFEB"), 1, "RETRY" )
d_SetWordEquate(hex("FFEC"), 1, "DRINO" )
d_SetByteEquate(hex("D8"), 1, "CR" )
d_SetByteEquate(hex("D9"), 1, "TR" )
d_SetByteEquate(hex("DA"), 1, "SCR" )
d_SetByteEquate(hex("DB"), 1, "DR" )
d_SetByteEquate(hex("DC"), 1, "DM" )
d_SetByteEquate(hex("DD"), 1, "HS" )
d_SetByteEquate(hex("E0"), 1, "PPIA" )
d_SetByteEquate(hex("E1"), 1, "PPIB" )
d_SetByteEquate(hex("E2"), 1, "PPIC" )
d_SetByteEquate(hex("E3"), 1, "PPICTL" )
d_SetByteEquate(hex("E8"), 1, "PIOA" )
d_SetByteEquate(hex("E9"), 1, "PIOCTLA" )
d_SetByteEquate(hex("EA"), 1, "PIOB" )
d_SetByteEquate(hex("EB"), 1, "PIOCTLB" )
d_SetByteEquate(hex("F4"), 1, "GRPHCTL" )
-- Comments to be added at fixed addresses.
d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." )
d_SetComment( hex("5B55"), "Relocated to 0x3302 for 0x5B bytes." )
d_SetComment( hex("5BB0"), "Relocated to 0x4806 for 0xF8 bytes." )
d_SetComment( hex("5CA8"), "End of Relocated code." )
----------------------------------------
-- End of configuration file
----------------------------------------

View File

@@ -0,0 +1,466 @@
dZ80 2.1 Reference file from the disassembly of "mz2000_ipl.rom".
Input Port Reference (22 entries)
---------------------------------
Input Port 000d8H. 6 references:
--------------------------------
00415H: IN A,(0D8H)
0043dH: IN A,(0D8H)
00458H: IN A,(0D8H)
004fcH: IN A,(0D8H)
0051fH: IN A,(0D8H)
00564H: IN A,(0D8H)
Input Port 000d9H. 1 references:
--------------------------------
000a8H: IN A,(0D9H)
Input Port 000e1H. 5 references:
--------------------------------
00162H: IN A,(0E1H)
0016aH: IN A,(0E1H)
001c2H: IN A,(0E1H)
001caH: IN A,(0E1H)
001e3H: IN A,(0E1H)
Input Port 000e2H. 2 references:
--------------------------------
000eaH: IN A,(0E2H)
00230H: IN A,(0E2H)
Input Port 000e8H. 3 references:
--------------------------------
00072H: IN A,(0E8H)
0008eH: IN A,(0E8H)
005e9H: IN A,(0E8H)
Input Port 000eaH. 3 references:
--------------------------------
00095H: IN A,(0EAH)
001ddH: IN A,(0EAH)
005f0H: IN A,(0EAH)
Input Port 000f9H. 2 references:
--------------------------------
00620H: IN A,(0F9H)
0062dH: IN A,(0F9H)
Output Port Reference (50 entries)
----------------------------------
Output Port 000d8H. 4 references:
---------------------------------
0040dH: OUT (0D8H),A
00435H: OUT (0D8H),A
004f5H: OUT (0D8H),A
0051aH: OUT (0D8H),A
Output Port 000d9H. 2 references:
---------------------------------
000a3H: OUT (0D9H),A
004e4H: OUT (0D9H),A
Output Port 000daH. 1 references:
---------------------------------
004eaH: OUT (0DAH),A
Output Port 000dbH. 1 references:
---------------------------------
004caH: OUT (0DBH),A
Output Port 000dcH. 4 references:
---------------------------------
003cdH: OUT (0DCH),A
003f6H: OUT (0DCH),A
0041fH: OUT (0DCH),A
0053eH: OUT (0DCH),A
Output Port 000ddH. 1 references:
---------------------------------
004d5H: OUT (0DDH),A
Output Port 000e0H. 8 references:
---------------------------------
00013H: OUT (0E0H),A
0003eH: OUT (0E0H),A
001f8H: OUT (0E0H),A
001ffH: OUT (0E0H),A
0021bH: OUT (0E0H),A
00222H: OUT (0E0H),A
00227H: OUT (0E0H),A
0022eH: OUT (0E0H),A
Output Port 000e2H. 3 references:
---------------------------------
0000cH: OUT (0E2H),A
000eeH: OUT (0E2H),A
00234H: OUT (0E2H),A
Output Port 000e3H. 4 references:
---------------------------------
00004H: OUT (0E3H),A
00008H: OUT (0E3H),A
00204H: OUT (0E3H),A
0020bH: OUT (0E3H),A
Output Port 000e8H. 9 references:
---------------------------------
0002fH: OUT (0E8H),A
00057H: OUT (0E8H),A
00078H: OUT (0E8H),A
00088H: OUT (0E8H),A
00093H: OUT (0E8H),A
00262H: OUT (0E8H),A
0026fH: OUT (0E8H),A
00286H: OUT (0E8H),A
005eeH: OUT (0E8H),A
Output Port 000e9H. 1 references:
---------------------------------
00017H: OUT (0E9H),A
Output Port 000ebH. 2 references:
---------------------------------
0001bH: OUT (0EBH),A
0001fH: OUT (0EBH),A
Output Port 000f4H. 1 references:
---------------------------------
00024H: OUT (0F4H),A
Output Port 000f5H. 1 references:
---------------------------------
0002bH: OUT (0F5H),A
Output Port 000f6H. 1 references:
---------------------------------
00022H: OUT (0F6H),A
Output Port 000f7H. 4 references:
---------------------------------
00027H: OUT (0F7H),A
00042H: OUT (0F7H),A
00049H: OUT (0F7H),A
00050H: OUT (0F7H),A
Output Port 000f8H. 2 references:
---------------------------------
00635H: OUT (0F8H),A
0063bH: OUT (0F8H),A
Output Port 000f9H. 1 references:
---------------------------------
0063eH: OUT (0F9H),A
Direct address Reference (47 entries)
-------------------------------------
Direct address 00000H. 4 references:
------------------------------------
00129H: LD HL,00000H
003d3H: LD HL,00000H
00450H: LD HL,00000H
0055cH: LD HL,00000H
Direct address 0000dH. 1 references:
------------------------------------
005ffH: LD DE,0000DH
Direct address 00010H. 1 references:
------------------------------------
00469H: LD DE,00010H
Direct address 00080H. 1 references:
------------------------------------
000f2H: LD BC,00080H
Direct address 00082H. 1 references:
------------------------------------
00606H: LD DE,00082H
Direct address 000e9H. 1 references:
------------------------------------
00245H: LD BC,000E9H
Direct address 00100H. 1 references:
------------------------------------
00373H: LD HL,00100H
Direct address 00289H. 1 references:
------------------------------------
00257H: LD HL,00289H
Direct address 00297H. 1 references:
------------------------------------
0020eH: LD HL,00297H
Direct address 002b3H. 1 references:
------------------------------------
001d0H: LD HL,002B3H
Direct address 002c1H. 1 references:
------------------------------------
00266H: LD HL,002C1H
Direct address 002ceH. 1 references:
------------------------------------
003b4H: LD HL,002CEH
Direct address 002dbH. 1 references:
------------------------------------
0058cH: LD HL,002DBH
Direct address 00307H. 1 references:
------------------------------------
005b2H: LD HL,00307H
Direct address 00316H. 1 references:
------------------------------------
00572H: LD HL,00316H
Direct address 00331H. 1 references:
------------------------------------
005d3H: LD HL,00331H
Direct address 0034eH. 1 references:
------------------------------------
000d9H: LD HL,0034EH
Direct address 0035dH. 1 references:
------------------------------------
00382H: LD DE,0035DH
Direct address 0051fH. 1 references:
------------------------------------
004edH: LD HL,0051FH
Direct address 0060fH. 1 references:
------------------------------------
0024bH: LD BC,0060FH
Direct address 00620H. 1 references:
------------------------------------
0061aH: LD IX,00620H
Direct address 0062dH. 1 references:
------------------------------------
00627H: LD IX,0062DH
Direct address 00800H. 1 references:
------------------------------------
00174H: LD HL,00800H
Direct address 01414H. 1 references:
------------------------------------
00194H: LD HL,01414H
Direct address 01a2cH. 1 references:
------------------------------------
0060dH: LD DE,01A2CH
Direct address 03c19H. 1 references:
------------------------------------
003faH: LD HL,03C19H
Direct address 03e7fH. 1 references:
------------------------------------
0007fH: LD BC,03E7FH
Direct address 08000H. 3 references:
------------------------------------
00117H: LD HL,08000H
0039eH: LD IX,08000H
00617H: LD HL,08000H
Direct address 0c000H. 1 references:
------------------------------------
0006eH: LD HL,0C000H
Direct address 0c001H. 1 references:
------------------------------------
0007aH: LD DE,0C001H
Direct address 0cf00H. 3 references:
------------------------------------
000f5H: LD HL,0CF00H
00364H: LD IX,0CF00H
0037fH: LD HL,0CF00H
Direct address 0cf01H. 1 references:
------------------------------------
000baH: LD HL,0CF01H
Direct address 0cf07H. 1 references:
------------------------------------
00394H: LD HL,0CF07H
Direct address 0cf12H. 1 references:
------------------------------------
00113H: LD BC,(0CF12H)
Direct address 0d000H. 2 references:
------------------------------------
00031H: LD HL,0D000H
00272H: LD HL,0D000H
Direct address 0ffe0H. 3 references:
------------------------------------
0000eH: LD SP,0FFE0H
0036fH: LD IY,0FFE0H
00584H: LD SP,0FFE0H
Direct address 0ffe7H. 1 references:
------------------------------------
003e5H: LD HL,0FFE7H
Indirect address Reference (27 entries)
---------------------------------------
Indirect address 0cf00H. 1 references:
--------------------------------------
000c4H: LD A,(0CF00H)
Indirect address 0cf14H. 1 references:
--------------------------------------
003a2H: LD HL,(0CF14H)
Indirect address 0cf1eH. 2 references:
--------------------------------------
00369H: LD (0CF1EH),A
0046cH: LD HL,(0CF1EH)
Indirect address 0cf1fH. 1 references:
--------------------------------------
0036cH: LD (0CF1FH),A
Indirect address 0ffe0H. 4 references:
--------------------------------------
0012cH: LD (0FFE0H),HL
0013fH: LD HL,(0FFE0H)
0017fH: LD HL,(0FFE0H)
00183H: LD (0FFE0H),HL
Indirect address 0ffe2H. 2 references:
--------------------------------------
0019cH: LD (0FFE2H),HL
0019fH: LD HL,(0FFE2H)
Indirect address 0ffe6H. 4 references:
--------------------------------------
0005dH: LD (0FFE6H),A
003c1H: LD A,(0FFE6H)
00406H: LD (0FFE6H),A
0042dH: LD (0FFE6H),A
Indirect address 0ffe7H. 1 references:
--------------------------------------
00421H: LD (0FFE7H),A
Indirect address 0ffe8H. 1 references:
--------------------------------------
00424H: LD (0FFE8H),A
Indirect address 0ffe9H. 1 references:
--------------------------------------
00427H: LD (0FFE9H),A
Indirect address 0ffeaH. 1 references:
--------------------------------------
0042aH: LD (0FFEAH),A
Indirect address 0ffebH. 3 references:
--------------------------------------
004a8H: LD (0FFEBH),A
00546H: LD A,(0FFEBH)
0054aH: LD (0FFEBH),A
Indirect address 0ffecH. 5 references:
--------------------------------------
0005aH: LD (0FFECH),A
003c8H: LD A,(0FFECH)
003e1H: LD A,(0FFECH)
00480H: LD A,(0FFECH)
005cdH: LD (0FFECH),A
End of reference file for "mz2000_ipl.rom"

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,568 @@
----------------------------------------
-- dZ80 configuration file
----------------------------------------
----------------------------------------
-- Disassembly control
----------------------------------------
cpu="z80"
inputfile="SA-5510.bin"
outputfile="SA-5510.asm"
--fileheadersize=27
filebaseaddr=4605
disstart=0
disend=16946
--disstart=0
--disend=3584
--quiet=0
labelledoutput=1
----------------------------------------
-- Layout
----------------------------------------
labelreference=1
addresscolumn=1
opcodecolumn=1
relativejumpcomment=1
uppercase=1
autoblanklines=1
db="db"
comment="; "
radix=16
numprefix="0"
numsuffix="H"
----------------------------------------
-- Scripts
----------------------------------------
--script="scripts\\spectrum.lua"
----------------------------------------
-- References
----------------------------------------
referencefile="SA-5510.ref"
inportreference=1
outportreference=1
addressreference=1
indirectaddressreference=1
limitreferences=1
----------------------------------------
-- Opcode mapfile and code/data areas
----------------------------------------
--opmapfile="mayhem.map"
-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it.
-- d_SetCodeRegion(4608, 2464)
-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word
-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants.
d_SetDataRegion( hex("1347"), 100) -- 0x1347
d_SetStringRegion(hex("1347"), 28)
d_SetStringRegion(hex("1364"), 31)
d_SetStringRegion(hex("1384"), 5)
d_SetStringRegion(hex("138A"), 6)
d_SetStringRegion(hex("1391"), 3)
d_SetStringRegion(hex("1395"), 6)
d_SetStringRegion(hex("139C"), 6)
d_SetDataRegion( hex("2FC2"), 30)
d_SetStringRegion(hex("2FC2"), 6)
d_SetStringRegion(hex("2FC9"), 8)
d_SetStringRegion(hex("2FD2"), 10)
d_SetStringRegion(hex("2FDD"), 2)
d_SetStringRegion(hex("1D44"), 9)
-- Reserved key words.
d_SetDataRegion( hex("15A8"), 402) -- 0x15A8 Start of tokens.
d_SetStringRegion(hex("15A8"), 2) -- 0 - REM
d_SetStringRegion(hex("15AB"), 3) -- 1 - DATA
d_SetStringRegion(hex("15AF"), 0) -- 2 - undefined
d_SetStringRegion(hex("15B0"), 0) -- 3 - undefined
d_SetStringRegion(hex("15B1"), 3) -- 4 - READ
d_SetStringRegion(hex("15B5"), 3) -- 5 - LIST
d_SetStringRegion(hex("15B9"), 2) -- 6 - RUN
d_SetStringRegion(hex("15BC"), 2) -- 7 - NEW
d_SetStringRegion(hex("15BF"), 4) -- 8 - PRINT
d_SetStringRegion(hex("15C4"), 2) -- 9 - LET
d_SetStringRegion(hex("15C7"), 2) -- 10 - FOR
d_SetStringRegion(hex("15CA"), 1) -- 11 - IF
d_SetStringRegion(hex("15CC"), 3) -- 12 - THEN
d_SetStringRegion(hex("15D0"), 3) -- 13 - GOTO
d_SetStringRegion(hex("15D4"), 4) -- 14 - GOSUB
d_SetStringRegion(hex("15D9"), 5) -- 15 - RETURN
d_SetStringRegion(hex("15DF"), 3) -- 16 - NEXT
d_SetStringRegion(hex("15E3"), 3) -- 17 - STOP
d_SetStringRegion(hex("15E7"), 2) -- 18 - END
d_SetStringRegion(hex("15EA"), 0) -- 19 - undefined
d_SetStringRegion(hex("15EB"), 1) -- 20 - ON
d_SetStringRegion(hex("15ED"), 3) -- 21 - LOAD
d_SetStringRegion(hex("15F1"), 3) -- 22 - SAVE
d_SetStringRegion(hex("15F5"), 5) -- 23 - VERIFY
d_SetStringRegion(hex("15FB"), 3) -- 24 - POKE
d_SetStringRegion(hex("15FF"), 2) -- 25 - DIM
d_SetStringRegion(hex("1602"), 5) -- 26 - DEF FN
d_SetStringRegion(hex("1608"), 4) -- 27 - INPUT
d_SetStringRegion(hex("160D"), 6) -- 28 - RESTORE
d_SetStringRegion(hex("1614"), 2) -- 29 - CLS
d_SetStringRegion(hex("1617"), 4) -- 30 - MUSIC
d_SetStringRegion(hex("161C"), 4) -- 31 - TEMPO
d_SetStringRegion(hex("1621"), 3) -- 32 - USRN
d_SetStringRegion(hex("1625"), 4) -- 33 - WOPEN
d_SetStringRegion(hex("162A"), 4) -- 34 - ROPEN
d_SetStringRegion(hex("162F"), 4) -- 35 - CLOSE
d_SetStringRegion(hex("1634"), 2) -- 36 - MON
d_SetStringRegion(hex("1637"), 4) -- 37 - LIMIT
d_SetStringRegion(hex("163C"), 3) -- 38 - CONT
d_SetStringRegion(hex("1640"), 2) -- 39 - GET
d_SetStringRegion(hex("1643"), 3) -- 40 - INP@
d_SetStringRegion(hex("1647"), 3) -- 41 - OUT@
d_SetStringRegion(hex("164B"), 5) -- 42 - CURSOR
d_SetStringRegion(hex("1651"), 2) -- 43 - SET
d_SetStringRegion(hex("1654"), 4) -- 44 - RESET
d_SetStringRegion(hex("1659"), 0) -- 45 - undefined
d_SetStringRegion(hex("165A"), 0) -- 46 - undefined
d_SetStringRegion(hex("165B"), 0) -- 47 - undefined
d_SetStringRegion(hex("165C"), 0) -- 48 - undefined
d_SetStringRegion(hex("165D"), 0) -- 49 - undefined
d_SetStringRegion(hex("165E"), 0) -- 59 - undefined
d_SetStringRegion(hex("165F"), 3) -- 51 - AUTO
d_SetStringRegion(hex("1663"), 0) -- 52 - undefined
d_SetStringRegion(hex("1664"), 0) -- 53 - undefined
d_SetStringRegion(hex("1665"), 5) -- 54 - COPY/P
d_SetStringRegion(hex("166B"), 5) -- 55 - PAGE/P
d_SetStringRegion(hex("1671"), 0) -- 56 - undefined
d_SetStringRegion(hex("1672"), 0) -- 57 - undefined
d_SetStringRegion(hex("1673"), 0) -- 58 - undefined
d_SetStringRegion(hex("1674"), 0) -- 59 - undefined
d_SetStringRegion(hex("1675"), 0) -- 60 - undefined
d_SetStringRegion(hex("1676"), 0) -- 61 - undefined
d_SetStringRegion(hex("1677"), 0) -- 62 - undefined
d_SetStringRegion(hex("1678"), 0) -- 63 - undefined
d_SetStringRegion(hex("1679"), 0) -- 64 - undefined
d_SetStringRegion(hex("167A"), 0) -- 65 - undefined
d_SetStringRegion(hex("167B"), 1) -- 66 - undefined
d_SetStringRegion(hex("167D"), 1) -- 67 - undefined
-- Functions
d_SetStringRegion(hex("167F"), 1) -- >=
d_SetStringRegion(hex("1681"), 1) -- <>
d_SetStringRegion(hex("1683"), 1) -- =<
d_SetStringRegion(hex("1685"), 1) -- <=
d_SetStringRegion(hex("1687"), 1) -- <=
d_SetStringRegion(hex("1689"), 1) -- <=
d_SetStringRegion(hex("168B"), 0) -- undefined
d_SetStringRegion(hex("168C"), 0) -- <=
d_SetStringRegion(hex("168D"), 0) -- <=
d_SetStringRegion(hex("168E"), 0) -- undefined
d_SetStringRegion(hex("168F"), 0) -- undefined
d_SetStringRegion(hex("1690"), 0) -- undefined
d_SetStringRegion(hex("1691"), 0) -- undefined
d_SetStringRegion(hex("1692"), 0) -- undefined
d_SetStringRegion(hex("1693"), 0) -- undefined
d_SetStringRegion(hex("1694"), 0) -- undefined
d_SetStringRegion(hex("1695"), 0) -- undefined
d_SetStringRegion(hex("1696"), 0) -- undefined
d_SetStringRegion(hex("1697"), 0) -- undefined
d_SetStringRegion(hex("1698"), 0) -- undefined
d_SetStringRegion(hex("1699"), 0) -- undefined
d_SetStringRegion(hex("169A"), 0) -- undefined
d_SetStringRegion(hex("169B"), 0) -- undefined
d_SetStringRegion(hex("169C"), 0) -- undefined
d_SetStringRegion(hex("169D"), 0) -- undefined
d_SetStringRegion(hex("168E"), 0) -- undefined
d_SetStringRegion(hex("168F"), 0) -- undefined
d_SetStringRegion(hex("16A0"), 1) -- TO
d_SetStringRegion(hex("16A2"), 3) -- STEP
d_SetStringRegion(hex("16A6"), 5) -- LEFT$(
d_SetStringRegion(hex("16AC"), 6) -- RIGHT$(
d_SetStringRegion(hex("16B3"), 4) -- MID$(
d_SetStringRegion(hex("16B8"), 3) -- LEN(
d_SetStringRegion(hex("16BC"), 4) -- CHR$(
d_SetStringRegion(hex("16C1"), 4) -- STR$(
d_SetStringRegion(hex("16C6"), 3) -- ASC(
d_SetStringRegion(hex("16CA"), 3) -- VAL(
d_SetStringRegion(hex("16CE"), 4) -- PEEK(
d_SetStringRegion(hex("16D3"), 3) -- TAB(
d_SetStringRegion(hex("16D7"), 6) -- SPACE$(
d_SetStringRegion(hex("16DE"), 3) -- SIZE
d_SetStringRegion(hex("16E2"), 2) -- undefined
d_SetStringRegion(hex("16E5"), 6) -- STRING$(
d_SetStringRegion(hex("16ED"), 0) -- undefined
d_SetStringRegion(hex("16EE"), 10) -- CHARACTER$(
d_SetStringRegion(hex("16F9"), 2) -- CSR
d_SetStringRegion(hex("16FC"), 12) -- undefined
d_SetStringRegion(hex("1709"), 3) -- RND(
d_SetStringRegion(hex("170D"), 3) -- SIN(
d_SetStringRegion(hex("1711"), 3) -- COS(
d_SetStringRegion(hex("1715"), 3) -- TAN(
d_SetStringRegion(hex("1719"), 3) -- ATN(
d_SetStringRegion(hex("171D"), 3) -- EXP(
d_SetStringRegion(hex("1721"), 3) -- INT(
d_SetStringRegion(hex("1725"), 3) -- LOG(
d_SetStringRegion(hex("1729"), 2) -- LN(
d_SetStringRegion(hex("172C"), 3) -- ABS(
d_SetStringRegion(hex("1730"), 3) -- SGN(
d_SetStringRegion(hex("1734"), 3) -- SQR(
d_SetStringRegion(hex("1738"), 2) -- End of Table
d_SetDataRegion( hex("13AB"), 77) -- 0x13AB
d_SetStringRegion(hex("4223"), 15) -- 0x4223 BASIC SA-5510
d_SetDataRegion( hex("1D15"), 2) -- 0x1D15 Data
d_SetDataRegion( hex("1C4C"), 1)
d_SetDataRegion( hex("1C63"), 1) -- 0x1C63 Data
d_SetWordRegion( hex("1BB2"), 128) -- 0x1BB2 Data
d_SetDataRegion( hex("3400"), 3) -- 0x3400 Data
d_SetDataRegion( hex("3404"), 1) -- 0x3404 Data
d_SetDataRegion( hex("2355"), 1) -- 0x2355 Data
d_SetDataRegion( hex("239F"), 1) -- 0x239f Data
d_SetWordRegion( hex("2691"), 34)
d_SetWordRegion( hex("26B3"), 40)
d_SetWordRegion( hex("26DB"), 24)
d_SetDataRegion( hex("26F3"), 6)
d_SetDataRegion( hex("27B2"), 2) -- 0x27B2 Data
d_SetDataRegion( hex("2884"), 1) -- 0x2885 Data
d_SetDataRegion( hex("2A83"), 25) -- 0x2A83 Data
--d_SetDataRegion( hex("2B3D"), 2) -- 0x2B3D Data
--d_SetDataRegion( hex("2D1D"), 2) -- 0x2D1D Data
-- Function table.
d_SetWordRegion( hex("22E1"), 18)
-- Function calls, CALL <Operation Byte> <Function>
d_SetDataRegion( hex("204A"), 2)
d_SetDataRegion( hex("12CE"), 1)
d_SetWordRegion( hex("12CF"), 2)
d_SetDataRegion( hex("1A78"), 1)
d_SetWordRegion( hex("1A79"), 2)
d_SetDataRegion( hex("1C54"), 1)
d_SetWordRegion( hex("1C55"), 2)
d_SetDataRegion( hex("1E23"), 1)
d_SetWordRegion( hex("1E24"), 2)
d_SetDataRegion( hex("20EB"), 1)
d_SetWordRegion( hex("20EC"), 2)
d_SetDataRegion( hex("21B3"), 1)
d_SetWordRegion( hex("21B4"), 2)
d_SetDataRegion( hex("287F"), 1)
d_SetWordRegion( hex("2880"), 2)
d_SetDataRegion( hex("2949"), 1)
d_SetWordRegion( hex("294A"), 2)
d_SetDataRegion( hex("29A2"), 1)
d_SetWordRegion( hex("29A3"), 2)
d_SetDataRegion( hex("2A3A"), 1)
d_SetWordRegion( hex("2A3B"), 2)
d_SetDataRegion( hex("2A4E"), 1)
d_SetWordRegion( hex("2A4F"), 2)
d_SetDataRegion( hex("2B10"), 1)
d_SetWordRegion( hex("2B11"), 2)
d_SetDataRegion( hex("2B32"), 1)
d_SetWordRegion( hex("2B33"), 2)
d_SetDataRegion( hex("2B6C"), 1)
d_SetWordRegion( hex("2B6D"), 2)
d_SetDataRegion( hex("2C05"), 1)
d_SetWordRegion( hex("2C06"), 2)
d_SetDataRegion( hex("2CFF"), 1)
d_SetWordRegion( hex("2D00"), 2)
d_SetDataRegion( hex("2D56"), 1)
d_SetWordRegion( hex("2D57"), 2)
d_SetDataRegion( hex("2D5C"), 1)
d_SetWordRegion( hex("2D5D"), 2)
d_SetDataRegion( hex("2CB2"), 1)
d_SetWordRegion( hex("2CB3"), 2)
d_SetDataRegion( hex("2D78"), 1)
d_SetWordRegion( hex("2D79"), 2)
d_SetDataRegion( hex("2D88"), 1)
d_SetWordRegion( hex("2D89"), 2)
d_SetDataRegion( hex("2D95"), 1)
d_SetWordRegion( hex("2D96"), 2)
d_SetDataRegion( hex("2DA2"), 1)
d_SetWordRegion( hex("2DA3"), 2)
d_SetDataRegion( hex("2DB0"), 1)
d_SetWordRegion( hex("2DB1"), 2)
d_SetDataRegion( hex("2E97"), 1)
d_SetWordRegion( hex("2E98"), 2)
d_SetDataRegion( hex("2FE7"), 1)
d_SetWordRegion( hex("2FE8"), 2)
d_SetDataRegion( hex("3323"), 1)
d_SetWordRegion( hex("3324"), 2)
d_SetDataRegion( hex("2D74"), 1)
d_SetDataRegion( hex("2E33"), 32)
d_SetDataRegion( hex("2EB0"), 3)
d_SetDataRegion( hex("2F8C"), 2)
d_SetDataRegion( hex("2FE8"), 2)
d_SetDataRegion( hex("37AE"), 269)
d_SetDataRegion( hex("3CE7"), 30)
d_SetDataRegion( hex("3F05"), 48)
d_SetDataRegion( hex("4041"), 35)
d_SetDataRegion( hex("406F"), 7)
d_SetDataRegion( hex("4121"), 56)
d_SetDataRegion( hex("18BE"), 3)
d_SetDataRegion( hex("18D7"), 3)
d_SetDataRegion( hex("1CAA"), 2)
d_SetWordRegion( hex("1D90"), 2)
d_SetDataRegion( hex("2104"), 3)
--d_SetDataRegion( hex("2221"), 3)
d_SetDataRegion( hex("2317"), 1)
d_SetDataRegion( hex("270F"), 3)
d_SetWordRegion( hex("2929"), 2)
d_SetDataRegion( hex("2A14"), 2)
d_SetDataRegion( hex("2A2A"), 2)
d_SetDataRegion( hex("2C8B"), 3)
d_SetWordRegion( hex("2CDE"), 2)
d_SetDataRegion( hex("2D10"), 2)
d_SetWordRegion( hex("2D90"), 2)
d_SetDataRegion( hex("30F4"), 3)
d_SetDataRegion( hex("3BE9"), 25)
d_SetDataRegion( hex("4118"), 3)
d_SetDataRegion( hex("3DED"), 5)
d_SetDataRegion( hex("3DF2"), 5)
d_SetDataRegion( hex("3DF7"), 5)
d_SetDataRegion( hex("3DFC"), 5)
d_SetDataRegion( hex("1B42"), 1)
d_SetDataRegion( hex("1C5A"), 1)
d_SetDataRegion( hex("1D02"), 1)
d_SetDataRegion( hex("1D89"), 1)
d_SetDataRegion( hex("1F31"), 1)
d_SetDataRegion( hex("204F"), 1)
d_SetDataRegion( hex("208F"), 1)
d_SetDataRegion( hex("2116"), 1)
d_SetDataRegion( hex("220F"), 1)
d_SetDataRegion( hex("221B"), 1)
d_SetDataRegion( hex("221F"), 1)
d_SetDataRegion( hex("245F"), 1)
d_SetDataRegion( hex("24FD"), 1)
d_SetDataRegion( hex("2715"), 1)
d_SetDataRegion( hex("284E"), 1)
d_SetDataRegion( hex("2855"), 1)
d_SetDataRegion( hex("288F"), 1)
d_SetDataRegion( hex("28C6"), 1)
d_SetDataRegion( hex("2AB3"), 1)
d_SetDataRegion( hex("2B75"), 1)
d_SetDataRegion( hex("2C21"), 1)
d_SetDataRegion( hex("2CEF"), 1)
d_SetDataRegion( hex("2D7E"), 1)
d_SetDataRegion( hex("2D8E"), 1)
d_SetDataRegion( hex("2D9B"), 1)
d_SetDataRegion( hex("2DA8"), 1)
d_SetDataRegion( hex("2DB6"), 1)
-- Create a mapping table of known Sharp I/O ports and 8 bit constants.
--
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
d_SetByteEquate(hex("FE") , 1, "PRTC" )
d_SetByteEquate(hex("FF") , 1, "PRTD" )
-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80
-- can use to replace an address with the label. The EQU list will also be output at the start
-- of the disassembly file so it can compile.
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
d_SetWordEquate(hex("0003"), 1, "GETL" )
d_SetWordEquate(hex("0006"), 1, "LETNL" )
d_SetWordEquate(hex("0009"), 1, "NL" )
d_SetWordEquate(hex("000C"), 1, "PRNTS" )
d_SetWordEquate(hex("000F"), 1, "PRNTT" )
d_SetWordEquate(hex("0012"), 1, "PRNT" )
d_SetWordEquate(hex("0015"), 1, "MSG" )
d_SetWordEquate(hex("0018"), 1, "MSGX" )
d_SetWordEquate(hex("001B"), 1, "GETKY" )
d_SetWordEquate(hex("001E"), 1, "BRKEY" )
d_SetWordEquate(hex("0021"), 1, "?WRI" )
d_SetWordEquate(hex("0024"), 1, "?WRD" )
d_SetWordEquate(hex("0027"), 1, "?RDI" )
d_SetWordEquate(hex("002A"), 1, "?RDD" )
d_SetWordEquate(hex("002D"), 1, "?VRFY" )
d_SetWordEquate(hex("0030"), 1, "MELDY" )
d_SetWordEquate(hex("0033"), 1, "?TMST" )
d_SetWordEquate(hex("003B"), 1, "TIMRD" )
d_SetWordEquate(hex("003E"), 1, "BELL" )
d_SetWordEquate(hex("0041"), 1, "XTEMP" )
d_SetWordEquate(hex("0044"), 1, "MSTA" )
d_SetWordEquate(hex("0047"), 1, "MSTP" )
d_SetWordEquate(hex("0000"), 1, "MONIT" )
d_SetWordEquate(hex("0089"), 1, "SS" )
d_SetWordEquate(hex("0095"), 1, "ST1" )
d_SetWordEquate(hex("0410"), 1, "HLHEX" )
d_SetWordEquate(hex("041F"), 1, "_2HEX" )
d_SetWordEquate(hex("074D"), 1, "?MODE" )
d_SetWordEquate(hex("08CA"), 1, "?KEY" )
d_SetWordEquate(hex("096C"), 1, "PRNT3" )
d_SetWordEquate(hex("0BB9"), 1, "?ADCN" )
d_SetWordEquate(hex("0BCE"), 1, "?DACN" )
d_SetWordEquate(hex("0DB5"), 1, "?DSP" )
d_SetWordEquate(hex("0DA6"), 1, "?BLNK" )
d_SetWordEquate(hex("0DDC"), 1, "?DPCT" )
d_SetWordEquate(hex("03BA"), 1, "PRTHL" )
d_SetWordEquate(hex("03C3"), 1, "PRTHX" )
d_SetWordEquate(hex("03DA"), 1, "ASC" )
d_SetWordEquate(hex("03F9"), 1, "HEX" )
d_SetWordEquate(hex("0DDC"), 1, "DPCT" )
d_SetWordEquate(hex("0DA7"), 1, "DLY12" )
d_SetWordEquate(hex("0DAA"), 1, "DLY12A" )
d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" )
d_SetWordEquate(hex("06A3"), 1, "MOTOR" )
d_SetWordEquate(hex("071A"), 1, "CKSUM" )
d_SetWordEquate(hex("077A"), 1, "GAP" )
d_SetWordEquate(hex("0485"), 1, "WTAPE" )
d_SetWordEquate(hex("0700"), 1, "MSTOP" )
d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" )
d_SetWordEquate(hex("1200"), 1, "COLDSTRT" )
d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON")
d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" )
d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" )
d_SetWordEquate(hex("2E33"), 1, "CMTBUF" )
d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" )
d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" )
d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" )
d_SetWordEquate(hex("2D12"), 1, "CMDREAD" )
d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" )
d_SetWordEquate(hex("1E91"), 1, "CMDRUN" )
d_SetWordEquate(hex("1C42"), 1, "CMDNEW" )
d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" )
d_SetWordEquate(hex("1D6A"), 1, "CMDLET" )
d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" )
d_SetWordEquate(hex("21AD"), 1, "CMDIF" )
d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" )
d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" )
d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" )
d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" )
d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" )
d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" )
d_SetWordEquate(hex("1D15"), 1, "CMDEND" )
d_SetWordEquate(hex("203E"), 1, "CMDON" )
d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" )
d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" )
d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" )
d_SetWordEquate(hex("2191"), 1, "CMDPOKE" )
d_SetWordEquate(hex("2080"), 1, "CMDDIM" )
d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" )
d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" )
d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" )
d_SetWordEquate(hex("21A6"), 1, "CMDCLS" )
d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" )
d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" )
d_SetWordEquate(hex("2942"), 1, "CMDUSRN" )
d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" )
d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" )
d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" )
d_SetWordEquate(hex("28B6"), 1, "CMDMON" )
d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" )
d_SetWordEquate(hex("29CE"), 1, "CMDCONT" )
d_SetWordEquate(hex("2902"), 1, "CMDGET" )
d_SetWordEquate(hex("29FE"), 1, "CMDINP" )
d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" )
d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" )
d_SetWordEquate(hex("2AA6"), 1, "CMDSET" )
d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" )
d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" )
d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" )
d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" )
d_SetWordEquate(hex("13AE"), 1, "OVFLERR" )
d_SetWordEquate(hex("13B1"), 1, "ILDATERR" )
d_SetWordEquate(hex("13B4"), 1, "DATMISERR" )
d_SetWordEquate(hex("13B7"), 1, "STRLENERR" )
d_SetWordEquate(hex("13BA"), 1, "MEMERR" )
d_SetWordEquate(hex("13C0"), 1, "LINELENERR" )
d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" )
d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" )
d_SetWordEquate(hex("13C9"), 1, "FUNCERR" )
d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" )
d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" )
d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" )
d_SetWordEquate(hex("13D5"), 1, "LINEERR" )
d_SetWordEquate(hex("13D8"), 1, "CONTERR" )
d_SetWordEquate(hex("13DB"), 1, "BADWRERR" )
d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" )
d_SetWordEquate(hex("13E1"), 1, "READDATAERR")
d_SetWordEquate(hex("13E4"), 1, "OPENERR" )
d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" )
d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" )
d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" )
d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" )
d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR")
d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" )
d_SetWordEquate(hex("1347"), 1, "TITLEMSG" )
d_SetWordEquate(hex("1364"), 1, "COPYRMSG" )
d_SetWordEquate(hex("1384"), 1, "READYMSG" )
d_SetWordEquate(hex("138A"), 1, "ERRORMSG" )
d_SetWordEquate(hex("1391"), 1, "INMSG" )
d_SetWordEquate(hex("1395"), 1, "BREAKMSG" )
d_SetWordEquate(hex("139C"), 1, "BYTESMSG" )
d_SetWordEquate(hex("13A3"), 1, "ERRCODE" )
d_SetWordEquate(hex("1332"), 1, "MSGNL" )
d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" )
d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" )
d_SetWordEquate(hex("124E"), 1, "WARMSTRT" )
d_SetWordEquate(hex("167F"), 1, "OPERATORTBL")
d_SetWordEquate(hex("17FC"), 1, "STRTONUM" )
d_SetWordEquate(hex("1E88"), 1, "GETNUM" )
d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" )
d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE")
d_SetWordEquate(hex("177B"), 1, "EXECHL" )
d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" )
d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" )
d_SetWordEquate(hex("490D"), 0, "LINEBUFR" )
d_SetComment( hex("1795"), "Scan for character after command" )
d_SetComment( hex("1779"), "Get address after call and jump to it via a RET command." )
d_SetComment( hex("2E1D"), "Compare loaded filename against name given by user." )
d_SetComment( hex("2B0D"), "Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /." )
d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." )
-- Known Sharp Constants.
d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE
d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME
d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE
d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS
d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS
d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT
d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK
d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK
d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE)
d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES
d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT
d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END
d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS
d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS
d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER
d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP
d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END
d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA
d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK
d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG
d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE
d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA
d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG
d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER
d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER
d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA
d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA
d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA
d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG
d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG
d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK
d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK
d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK
d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO
d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER
----------------------------------------
-- End of configuration file
----------------------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
SA-5510.ini

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,875 @@
dZ80 2.1 Reference file from the disassembly of "XPATCH-5510.bin".
Direct address Reference (127 entries)
--------------------------------------
Direct address 00000H. 3 references:
------------------------------------
05098H: LD DE,00000H
05696H: LD BC,00000H
05a94H: LD HL,00000H
Direct address 00002H. 1 references:
------------------------------------
05729H: LD BC,00002H
Direct address 00003H. 1 references:
------------------------------------
056f4H: LD BC,00003H
Direct address 0000aH. 2 references:
------------------------------------
050d8H: LD DE,0000AH
050e5H: LD DE,0000AH
Direct address 00011H. 1 references:
------------------------------------
05b06H: LD BC,00011H
Direct address 00016H. 1 references:
------------------------------------
05a83H: LD BC,00016H
Direct address 0001cH. 1 references:
------------------------------------
05a69H: LD BC,0001CH
Direct address 0005bH. 1 references:
------------------------------------
05b45H: LD BC,0005BH
Direct address 00080H. 1 references:
------------------------------------
0515fH: LD BC,00080H
Direct address 000f8H. 1 references:
------------------------------------
05b4dH: LD BC,000F8H
Direct address 00100H. 1 references:
------------------------------------
05167H: LD BC,00100H
Direct address 00200H. 1 references:
------------------------------------
05c8fH: LD BC,00200H
Direct address ATRB. 1 references:
----------------------------------
05b5eH: LD HL,010F0H
Direct address SIZE. 3 references:
----------------------------------
05bbdH: LD BC,(01102H)
05c08H: LD BC,(01102H)
05c72H: LD BC,(01102H)
Direct address DTADR. 2 references:
-----------------------------------
05bc9H: LD (01104H),DE
05befH: LD DE,(01104H)
Direct address BUFER. 6 references:
-----------------------------------
05386H: LD DE,011A3H
053e6H: LD DE,011A3H
054b0H: LD DE,011A3H
054fbH: LD DE,011A3H
05569H: LD DE,011A3H
055ecH: LD DE,011A3H
Direct address 011ccH. 2 references:
------------------------------------
053afH: LD DE,011CCH
0552eH: LD HL,011CCH
Direct address 01211H. 1 references:
------------------------------------
055abH: LD DE,01211H
Direct address 01414H. 1 references:
------------------------------------
05c92H: LD DE,01414H
Direct address 015a8H. 1 references:
------------------------------------
0584eH: LD HL,015A8H
Direct address 0165eH. 1 references:
------------------------------------
05a7aH: LD DE,0165EH
Direct address 01b35H. 1 references:
------------------------------------
0506dH: LD BC,01B35H
Direct address 01c16H. 1 references:
------------------------------------
05a66H: LD DE,01C16H
Direct address 02035H. 1 references:
------------------------------------
058b6H: LD SP,02035H
Direct address 02305H. 1 references:
------------------------------------
05a80H: LD DE,02305H
Direct address 02a2fH. 1 references:
------------------------------------
05a06H: CPL
Direct address 02f6cH. 1 references:
------------------------------------
05aafH: LD HL,02F6CH
Direct address 032d4H. 1 references:
------------------------------------
05a0eH: CALL NC,06D32H
Direct address 03302H. 2 references:
------------------------------------
05a8eH: LD HL,03302H
05b42H: LD DE,03302H
Direct address 0330bH. 1 references:
------------------------------------
05abaH: LD HL,0330BH
Direct address 03311H. 1 references:
------------------------------------
05a9dH: LD HL,03311H
Direct address 03338H. 1 references:
------------------------------------
05a88H: LD HL,03338H
Direct address 033abH. 1 references:
------------------------------------
05a0cH: XOR E
Direct address 04224H. 1 references:
------------------------------------
05b03H: LD DE,04224H
Direct address 04806H. 2 references:
------------------------------------
05a12H: LD B,048H
05b4aH: LD DE,04806H
Direct address 0488eH. 1 references:
------------------------------------
05a16H: ADC A,(HL)
Direct address 048c1H. 1 references:
------------------------------------
05aa3H: LD HL,048C1H
Direct address LINEBUFR. 7 references:
--------------------------------------
05378H: LD DE,0490DH
0539fH: LD DE,0490DH
05427H: LD DE,0490DH
054d7H: LD HL,0490DH
05501H: LD HL,0490DH
0555cH: LD DE,0490DH
057b3H: LD DE,0490DH
Direct address 0490fH. 1 references:
------------------------------------
053e9H: LD HL,0490FH
Direct address 04a0eH. 2 references:
------------------------------------
053d6H: LD DE,04A0EH
059acH: LD HL,04A0EH
Direct address 04e84H. 1 references:
------------------------------------
0574fH: LD IX,04E84H
Direct address 04e86H. 1 references:
------------------------------------
056cbH: LD HL,04E86H
Direct address 0505cH. 1 references:
------------------------------------
05248H: LD DE,0505CH
Direct address 05063H. 7 references:
------------------------------------
0509bH: LD (05063H),DE
050afH: LD (05063H),DE
050c4H: LD (05063H),DE
050efH: LD BC,(05063H)
051a6H: LD BC,(05063H)
0527aH: LD DE,(05063H)
0591cH: LD BC,(05063H)
Direct address 05065H. 5 references:
------------------------------------
050a1H: LD (05065H),DE
050baH: LD (05065H),DE
050c8H: LD (05065H),DE
05118H: LD BC,(05065H)
05926H: LD BC,(05065H)
Direct address 05067H. 3 references:
------------------------------------
050dbH: LD (05067H),DE
051adH: LD BC,(05067H)
0528aH: LD DE,(05067H)
Direct address 05069H. 2 references:
------------------------------------
050e8H: LD (05069H),DE
0529eH: LD DE,(05069H)
Direct address 0506dH. 1 references:
------------------------------------
05a10H: LD L,L
Direct address 0507dH. 1 references:
------------------------------------
05077H: LD DE,0507DH
Direct address 05089H. 1 references:
------------------------------------
0512dH: LD DE,05089H
Direct address 05255H. 1 references:
------------------------------------
05216H: LD DE,05255H
Direct address 05257H. 1 references:
------------------------------------
05231H: LD DE,05257H
Direct address 0525cH. 1 references:
------------------------------------
05221H: LD DE,0525CH
Direct address 052f0H. 1 references:
------------------------------------
05a14H: RET P
Direct address 05363H. 1 references:
------------------------------------
05a18H: LD H,E
Direct address 05446H. 1 references:
------------------------------------
05392H: LD DE,05446H
Direct address 05453H. 1 references:
------------------------------------
054a5H: LD DE,05453H
Direct address 05469H. 2 references:
------------------------------------
054c2H: LD BC,(05469H)
05531H: LD DE,(05469H)
Direct address 0548eH. 1 references:
------------------------------------
05a1aH: ADC A,(HL)
Direct address 05499H. 1 references:
------------------------------------
05565H: LD BC,05499H
Direct address 055abH. 1 references:
------------------------------------
0558aH: LD DE,055ABH
Direct address 055b3H. 1 references:
------------------------------------
054e7H: LD DE,055B3H
Direct address 055c5H. 1 references:
------------------------------------
05a1cH: PUSH BC
Direct address 055f8H. 1 references:
------------------------------------
055dcH: LD DE,055F8H
Direct address 05614H. 2 references:
------------------------------------
056a1H: LD (05614H),DE
056d3H: LD DE,(05614H)
Direct address 05616H. 1 references:
------------------------------------
05a1eH: LD D,056H
Direct address 05807H. 2 references:
------------------------------------
05744H: LD DE,05807H
05772H: LD HL,05807H
Direct address 05820H. 1 references:
------------------------------------
0576bH: LD HL,05820H
Direct address 05838H. 1 references:
------------------------------------
05acbH: LD HL,05838H
Direct address 05849H. 1 references:
------------------------------------
05ac2H: LD HL,05849H
Direct address 0585dH. 2 references:
------------------------------------
05840H: LD DE,0585DH
05857H: LD HL,0585DH
Direct address 05899H. 1 references:
------------------------------------
05b39H: LD HL,05899H
Direct address 058a5H. 1 references:
------------------------------------
0589fH: LD DE,058A5H
Direct address 058b7H. 1 references:
------------------------------------
05af4H: LD HL,058B7H
Direct address 058e0H. 1 references:
------------------------------------
05adeH: LD HL,058E0H
Direct address 058ebH. 1 references:
------------------------------------
05a04H: EX DE,HL
Direct address 05907H. 1 references:
------------------------------------
05a08H: RLCA
Direct address 0590eH. 1 references:
------------------------------------
05a0aH: LD C,059H
Direct address 059c7H. 1 references:
------------------------------------
05969H: LD DE,059C7H
Direct address 05a04H. 2 references:
------------------------------------
05a63H: LD HL,05A04H
05b0bH: LD HL,05A04H
Direct address 05a20H. 1 references:
------------------------------------
05a72H: LD DE,05A20H
Direct address 05a3cH. 1 references:
------------------------------------
05a6eH: LD HL,05A3CH
Direct address 05a52H. 1 references:
------------------------------------
05b00H: LD HL,05A52H
Direct address 05a61H. 1 references:
------------------------------------
05af8H: LD HL,05A61H
Direct address 05b55H. 1 references:
------------------------------------
05b3fH: LD HL,05B55H
Direct address 0d753H. 1 references:
------------------------------------
05c6fH: LD DE,0D753H
Direct address 0e548H. 1 references:
------------------------------------
05bb9H: LD DE,0E548H
Direct address 0ffffH. 1 references:
------------------------------------
05bb3H: LD HL,0FFFFH
Indirect address Reference (120 entries)
----------------------------------------
Indirect address DTADR. 2 references:
-------------------------------------
05bd9H: LD HL,(01104H)
05c76H: LD HL,(01104H)
Indirect address DSPXY. 2 references:
-------------------------------------
0521bH: LD (01171H),A
05228H: LD (01171H),A
Indirect address DPRNT. 1 references:
-------------------------------------
0539bH: LD A,(01194H)
Indirect address 01201H. 1 references:
--------------------------------------
05b33H: LD (01201H),HL
Indirect address 01225H. 1 references:
--------------------------------------
05b3cH: LD (01225H),HL
Indirect address 01492H. 1 references:
--------------------------------------
05aceH: LD (01492H),A
Indirect address 01493H. 1 references:
--------------------------------------
05ad1H: LD (01493H),HL
Indirect address 0153eH. 1 references:
--------------------------------------
05ac5H: LD (0153EH),A
Indirect address 0153fH. 1 references:
--------------------------------------
05ac8H: LD (0153FH),HL
Indirect address 018b4H. 1 references:
--------------------------------------
05b11H: LD (018B4H),HL
Indirect address 01958H. 6 references:
--------------------------------------
05153H: LD HL,(01958H)
052bbH: LD HL,(01958H)
053bbH: LD HL,(01958H)
05935H: LD HL,(01958H)
0598cH: LD HL,(01958H)
05b0eH: LD (01958H),HL
Indirect address 01ac8H. 1 references:
--------------------------------------
05b14H: LD (01AC8H),HL
Indirect address 01ae2H. 1 references:
--------------------------------------
05b17H: LD (01AE2H),HL
Indirect address 01b14H. 1 references:
--------------------------------------
05b1aH: LD (01B14H),HL
Indirect address 01b1cH. 1 references:
--------------------------------------
05b1dH: LD (01B1CH),HL
Indirect address 01c16H. 1 references:
--------------------------------------
05aeaH: LD (01C16H),A
Indirect address 01c17H. 1 references:
--------------------------------------
05aefH: LD (01C17H),A
Indirect address 01c7dH. 2 references:
--------------------------------------
05b7cH: LD (01C7DH),A
05b84H: LD (01C7DH),A
Indirect address 01c7eH. 1 references:
--------------------------------------
05b20H: LD (01C7EH),HL
Indirect address 01ccdH. 1 references:
--------------------------------------
05a91H: LD (01CCDH),HL
Indirect address 01ccfH. 1 references:
--------------------------------------
05a97H: LD (01CCFH),HL
Indirect address 01cd1H. 1 references:
--------------------------------------
05a9aH: LD (01CD1H),HL
Indirect address 01ec2H. 1 references:
--------------------------------------
05b23H: LD (01EC2H),HL
Indirect address 022c9H. 1 references:
--------------------------------------
05a8bH: LD (022C9H),HL
Indirect address 028f5H. 2 references:
--------------------------------------
05b6cH: LD (028F5H),A
05b74H: LD (028F5H),A
Indirect address 02b11H. 1 references:
--------------------------------------
05aa0H: LD (02B11H),HL
Indirect address 02d44H. 1 references:
--------------------------------------
05b26H: LD (02D44H),HL
Indirect address 02f19H. 2 references:
--------------------------------------
05c9aH: LD (02F19H),A
05ca2H: LD (02F19H),A
Indirect address 02f24H. 1 references:
--------------------------------------
05b29H: LD (02F24H),HL
Indirect address 0303cH. 1 references:
--------------------------------------
05b2cH: LD (0303CH),HL
Indirect address 03042H. 1 references:
--------------------------------------
05b2fH: LD (03042H),HL
Indirect address 0307bH. 1 references:
--------------------------------------
05aa6H: LD (0307BH),HL
Indirect address 03140H. 1 references:
--------------------------------------
05ab7H: LD (03140H),A
Indirect address 03141H. 1 references:
--------------------------------------
05abdH: LD (03141H),HL
Indirect address 0315bH. 1 references:
--------------------------------------
05ab2H: LD (0315BH),HL
Indirect address 0318cH. 1 references:
--------------------------------------
05aa9H: LD (0318CH),HL
Indirect address 03199H. 1 references:
--------------------------------------
05aacH: LD (03199H),HL
Indirect address 031adH. 1 references:
--------------------------------------
05adbH: LD (031ADH),A
Indirect address 031aeH. 1 references:
--------------------------------------
05ae1H: LD (031AEH),HL
Indirect address 0322eH. 1 references:
--------------------------------------
05ad4H: LD A,(0322EH)
Indirect address 041ecH. 1 references:
--------------------------------------
05afdH: LD (041ECH),A
Indirect address 041ffH. 1 references:
--------------------------------------
05b36H: LD (041FFH),HL
Indirect address 0430dH. 1 references:
--------------------------------------
058c3H: LD A,(0430DH)
Indirect address 04a0eH. 5 references:
--------------------------------------
053ceH: LD HL,(04A0EH)
054f2H: LD HL,(04A0EH)
0557bH: LD HL,(04A0EH)
05582H: LD (04A0EH),HL
055e4H: LD HL,(04A0EH)
Indirect address 04a10H. 1 references:
--------------------------------------
05543H: LD HL,(04A10H)
Indirect address 04ab3H. 3 references:
--------------------------------------
052f3H: LD HL,(04AB3H)
0562eH: LD HL,(04AB3H)
05c1fH: LD HL,(04AB3H)
Indirect address 04ab5H. 3 references:
--------------------------------------
0530eH: LD HL,(04AB5H)
05647H: LD HL,(04AB5H)
05c14H: LD HL,(04AB5H)
Indirect address 04e4eH. 2 references:
--------------------------------------
0519fH: LD (04E4EH),HL
0532eH: LD (04E4EH),HL
Indirect address 04e94H. 2 references:
--------------------------------------
05175H: LD HL,(04E94H)
05179H: LD (04E94H),HL
Indirect address 0504eH. 1 references:
--------------------------------------
0536dH: LD A,(0504EH)
Indirect address 05051H. 2 references:
--------------------------------------
050ecH: LD (05051H),HL
05901H: LD (05051H),HL
Indirect address 05063H. 1 references:
--------------------------------------
0595bH: LD HL,(05063H)
Indirect address 05065H. 4 references:
--------------------------------------
050f3H: LD HL,(05065H)
051b8H: LD HL,(05065H)
05272H: LD HL,(05065H)
05954H: LD HL,(05065H)
Indirect address 05067H. 2 references:
--------------------------------------
0510aH: LD HL,(05067H)
0594aH: LD HL,(05067H)
Indirect address 05069H. 1 references:
--------------------------------------
051c6H: LD HL,(05069H)
Indirect address 0506bH. 2 references:
--------------------------------------
05149H: LD (0506BH),HL
05943H: LD HL,(0506BH)
Indirect address 05465H. 6 references:
--------------------------------------
05364H: LD (05465H),A
0538bH: LD A,(05465H)
05432H: LD A,(05465H)
05490H: LD (05465H),A
05553H: LD A,(05465H)
055c7H: LD (05465H),A
Indirect address 05466H. 6 references:
--------------------------------------
0548aH: LD (05466H),A
0549fH: LD A,(05466H)
055d6H: LD A,(05466H)
0590fH: LD (05466H),A
05963H: LD A,(05466H)
05978H: LD (05466H),A
Indirect address 05467H. 6 references:
--------------------------------------
05383H: LD (05467H),A
053b7H: LD A,(05467H)
054b3H: LD A,(05467H)
054f5H: LD A,(05467H)
05574H: LD A,(05467H)
055efH: LD A,(05467H)
Indirect address 05468H. 4 references:
--------------------------------------
053b2H: LD (05468H),A
054c9H: LD A,(05468H)
05535H: LD A,(05468H)
0556fH: LD A,(05468H)
Indirect address 05469H. 3 references:
--------------------------------------
05404H: LD (05469H),HL
0556cH: LD HL,(05469H)
05598H: LD A,(05469H)
Indirect address 0546bH. 4 references:
--------------------------------------
05424H: LD (0546BH),HL
054adH: LD HL,(0546BH)
054bfH: LD HL,(0546BH)
0551eH: LD HL,(0546BH)
Indirect address 05611H. 5 references:
--------------------------------------
05617H: LD (05611H),A
05628H: LD (05611H),A
057e3H: LD A,(05611H)
057f2H: LD A,(05611H)
057ffH: LD A,(05611H)
Indirect address 05612H. 2 references:
--------------------------------------
056a5H: LD (05612H),HL
05736H: LD HL,(05612H)
Indirect address 05614H. 1 references:
--------------------------------------
056faH: LD HL,(05614H)
Indirect address 058e0H. 1 references:
--------------------------------------
058fdH: LD (058E0H),A
End of reference file for "XPATCH-5510.bin"

View File

@@ -0,0 +1,330 @@
----------------------------------------
-- dZ80 configuration file
----------------------------------------
----------------------------------------
-- Disassembly control
----------------------------------------
cpu="z80"
inputfile="XPATCH-5510.bin"
outputfile="XPATCH-5510.asm"
--fileheadersize=27
filebaseaddr=20572
disstart=0
disend=23724
--disstart=0
--disend=3584
--quiet=0
labelledoutput=1
----------------------------------------
-- Layout
----------------------------------------
labelreference=1
addresscolumn=1
opcodecolumn=1
relativejumpcomment=1
uppercase=1
autoblanklines=1
db="db"
comment="; "
radix=16
numprefix="0"
numsuffix="H"
----------------------------------------
-- Scripts
----------------------------------------
--script="scripts\\spectrum.lua"
----------------------------------------
-- References
----------------------------------------
referencefile="XPATCH-5510.ref"
inportreference=1
outportreference=1
addressreference=1
indirectaddressreference=1
limitreferences=1
----------------------------------------
-- Opcode mapfile and code/data areas
----------------------------------------
--opmapfile="mayhem.map"
-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it.
d_SetCodeRegion(20572, 3152)
-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word
-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants.
d_SetDataRegion( hex("507D"), 27)
d_SetStringRegion( hex("507D"), 11)
d_SetStringRegion( hex("5089"), 15)
d_SetDataRegion( hex("5255"), 23)
d_SetStringRegion( hex("5257"), 4)
d_SetStringRegion( hex("525C"), 15)
d_SetDataRegion( hex("5446"), 31)
d_SetStringRegion( hex("5446"), 12)
d_SetStringRegion( hex("5453"), 17)
d_SetDataRegion( hex("5465"), 8)
d_SetStringRegion( hex("55B3"), 18)
d_SetStringRegion( hex("55F8"), 25)
d_SetDataRegion( hex("5807"), 49)
d_SetStringRegion( hex("5807"), 23)
--d_SetStringRegion( hex("581F"), 5)
d_SetStringRegion( hex("5827"), 5)
d_SetStringRegion( hex("582F"), 5)
d_SetDataRegion( hex("585D"), 45)
d_SetStringRegion( hex("585D"), 4)
d_SetStringRegion( hex("5862"), 5)
d_SetStringRegion( hex("5868"), 7)
d_SetStringRegion( hex("5870"), 5)
d_SetStringRegion( hex("5876"), 3)
d_SetStringRegion( hex("587A"), 5)
d_SetStringRegion( hex("5880"), 3)
d_SetStringRegion( hex("5884"), 3)
--d_SetStringRegion( hex("585D"), 4)
--d_SetDataRegion( hex("58A5"), 59)
--d_SetStringRegion( hex("58A5"), 17)
--d_SetStringRegion( hex("58B7"), 40)
d_SetDataRegion( hex("59C7"), 25)
d_SetStringRegion( hex("59C7"), 24)
d_SetDataRegion( hex("5A04"), 56)
d_SetWordRegion( hex("5A04"), 28)
-- Reserved key words.
d_SetDataRegion( hex("5A20"), 28)
d_SetStringRegion( hex("5A20"), 3) -- LINE
d_SetStringRegion( hex("5A24"), 3) -- AUTO
d_SetStringRegion( hex("5A28"), 2) -- CLR
d_SetStringRegion( hex("5A2B"), 3) -- MOVE
d_SetStringRegion( hex("5A2F"), 5) -- COPY/P
d_SetStringRegion( hex("5A35"), 5) -- PAGE/P
d_SetDataRegion( hex("5A52"), 17)
d_SetStringRegion( hex("5A52"), 15)
-- Create a mapping table of known Sharp I/O ports and 8 bit constants.
--
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
d_SetByteEquate(hex("FE") , 1, "PRTC" )
d_SetByteEquate(hex("FF") , 1, "PRTD" )
-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80
-- can use to replace an address with the label. The EQU list will also be output at the start
-- of the disassembly file so it can compile.
-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address.
d_SetWordEquate(hex("0003"), 1, "GETL" )
d_SetWordEquate(hex("0006"), 1, "LETNL" )
d_SetWordEquate(hex("0009"), 1, "NL" )
d_SetWordEquate(hex("000C"), 1, "PRNTS" )
d_SetWordEquate(hex("000F"), 1, "PRNTT" )
d_SetWordEquate(hex("0012"), 1, "PRNT" )
d_SetWordEquate(hex("0015"), 1, "MSG" )
d_SetWordEquate(hex("0018"), 1, "MSGX" )
d_SetWordEquate(hex("001B"), 1, "GETKY" )
d_SetWordEquate(hex("001E"), 1, "BRKEY" )
d_SetWordEquate(hex("0021"), 1, "?WRI" )
d_SetWordEquate(hex("0024"), 1, "?WRD" )
d_SetWordEquate(hex("0027"), 1, "?RDI" )
d_SetWordEquate(hex("002A"), 1, "?RDD" )
d_SetWordEquate(hex("002D"), 1, "?VRFY" )
d_SetWordEquate(hex("0030"), 1, "MELDY" )
d_SetWordEquate(hex("0033"), 1, "?TMST" )
d_SetWordEquate(hex("003B"), 1, "TIMRD" )
d_SetWordEquate(hex("003E"), 1, "BELL" )
d_SetWordEquate(hex("0041"), 1, "XTEMP" )
d_SetWordEquate(hex("0044"), 1, "MSTA" )
d_SetWordEquate(hex("0047"), 1, "MSTP" )
d_SetWordEquate(hex("0000"), 1, "MONIT" )
d_SetWordEquate(hex("0089"), 1, "SS" )
d_SetWordEquate(hex("0095"), 1, "ST1" )
d_SetWordEquate(hex("0410"), 1, "HLHEX" )
d_SetWordEquate(hex("041F"), 1, "_2HEX" )
d_SetWordEquate(hex("074D"), 1, "?MODE" )
d_SetWordEquate(hex("08CA"), 1, "?KEY" )
d_SetWordEquate(hex("096C"), 1, "PRNT3" )
d_SetWordEquate(hex("0BB9"), 1, "?ADCN" )
d_SetWordEquate(hex("0BCE"), 1, "?DACN" )
d_SetWordEquate(hex("0DB5"), 1, "?DSP" )
d_SetWordEquate(hex("0DA6"), 1, "?BLNK" )
d_SetWordEquate(hex("0DDC"), 1, "?DPCT" )
d_SetWordEquate(hex("03BA"), 1, "PRTHL" )
d_SetWordEquate(hex("03C3"), 1, "PRTHX" )
d_SetWordEquate(hex("03DA"), 1, "ASC" )
d_SetWordEquate(hex("03F9"), 1, "HEX" )
d_SetWordEquate(hex("0DDC"), 1, "DPCT" )
d_SetWordEquate(hex("0DA7"), 1, "DLY12" )
d_SetWordEquate(hex("0DAA"), 1, "DLY12A" )
d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" )
d_SetWordEquate(hex("06A3"), 1, "MOTOR" )
d_SetWordEquate(hex("071A"), 1, "CKSUM" )
d_SetWordEquate(hex("077A"), 1, "GAP" )
d_SetWordEquate(hex("0485"), 1, "WTAPE" )
d_SetWordEquate(hex("0700"), 1, "MSTOP" )
d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" )
d_SetWordEquate(hex("1200"), 1, "COLDSTRT" )
d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON")
d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" )
d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" )
d_SetWordEquate(hex("2E33"), 1, "CMTBUF" )
d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" )
-- Known BASIC SA-5510 labels/addresses.
d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" )
d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" )
d_SetWordEquate(hex("2D12"), 1, "CMDREAD" )
d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" )
d_SetWordEquate(hex("1E91"), 1, "CMDRUN" )
d_SetWordEquate(hex("1C42"), 1, "CMDNEW" )
d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" )
d_SetWordEquate(hex("1D6A"), 1, "CMDLET" )
d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" )
d_SetWordEquate(hex("21AD"), 1, "CMDIF" )
d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" )
d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" )
d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" )
d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" )
d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" )
d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" )
d_SetWordEquate(hex("1D15"), 1, "CMDEND" )
d_SetWordEquate(hex("203E"), 1, "CMDON" )
d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" )
d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" )
d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" )
d_SetWordEquate(hex("2191"), 1, "CMDPOKE" )
d_SetWordEquate(hex("2080"), 1, "CMDDIM" )
d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" )
d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" )
d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" )
d_SetWordEquate(hex("21A6"), 1, "CMDCLS" )
d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" )
d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" )
d_SetWordEquate(hex("2942"), 1, "CMDUSRN" )
d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" )
d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" )
d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" )
d_SetWordEquate(hex("28B6"), 1, "CMDMON" )
d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" )
d_SetWordEquate(hex("29CE"), 1, "CMDCONT" )
d_SetWordEquate(hex("2902"), 1, "CMDGET" )
d_SetWordEquate(hex("29FE"), 1, "CMDINP" )
d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" )
d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" )
d_SetWordEquate(hex("2AA6"), 1, "CMDSET" )
d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" )
d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" )
d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" )
d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" )
d_SetWordEquate(hex("13AE"), 1, "OVFLERR" )
d_SetWordEquate(hex("13B1"), 1, "ILDATERR" )
d_SetWordEquate(hex("13B4"), 1, "DATMISERR" )
d_SetWordEquate(hex("13B7"), 1, "STRLENERR" )
d_SetWordEquate(hex("13BA"), 1, "MEMERR" )
d_SetWordEquate(hex("13C0"), 1, "LINELENERR" )
d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" )
d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" )
d_SetWordEquate(hex("13C9"), 1, "FUNCERR" )
d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" )
d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" )
d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" )
d_SetWordEquate(hex("13D5"), 1, "LINEERR" )
d_SetWordEquate(hex("13D8"), 1, "CONTERR" )
d_SetWordEquate(hex("13DB"), 1, "BADWRERR" )
d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" )
d_SetWordEquate(hex("13E1"), 1, "READDATAERR")
d_SetWordEquate(hex("13E4"), 1, "OPENERR" )
d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" )
d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" )
d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" )
d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" )
d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR")
d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" )
d_SetWordEquate(hex("1347"), 1, "TITLEMSG" )
d_SetWordEquate(hex("1364"), 1, "COPYRMSG" )
d_SetWordEquate(hex("1384"), 1, "READYMSG" )
d_SetWordEquate(hex("138A"), 1, "ERRORMSG" )
d_SetWordEquate(hex("1391"), 1, "INMSG" )
d_SetWordEquate(hex("1395"), 1, "BREAKMSG" )
d_SetWordEquate(hex("139C"), 1, "BYTESMSG" )
d_SetWordEquate(hex("13A3"), 1, "ERRCODE" )
d_SetWordEquate(hex("1332"), 1, "MSGNL" )
d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" )
d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" )
d_SetWordEquate(hex("124E"), 1, "WARMSTRT" )
d_SetWordEquate(hex("167F"), 1, "OPERATORTBL")
d_SetWordEquate(hex("17FC"), 1, "STRTONUM" )
d_SetWordEquate(hex("1E88"), 1, "GETNUM" )
d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" )
d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE")
d_SetWordEquate(hex("177B"), 1, "EXECHL" )
d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" )
d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" )
d_SetWordEquate(hex("490D"), 0, "LINEBUFR" )
-- XPATCH labels/addresses.
d_SetWordEquate(hex("5A63"), 1, "XPINIT" )
d_SetWordEquate(hex("5B55"), 1, "RELOC3302" )
d_SetWordEquate(hex("5BB0"), 1, "RELOC4806" )
-- Comments to be added at fixed addresses.
d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." )
d_SetComment( hex("5B55"), "Relocated to 0x3302 for 0x5B bytes." )
d_SetComment( hex("5BB0"), "Relocated to 0x4806 for 0xF8 bytes." )
d_SetComment( hex("5CA8"), "End of Relocated code." )
-- Known Sharp Constants.
d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE
d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME
d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE
d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS
d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS
d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT
d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK
d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK
d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE)
d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES
d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT
d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END
d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS
d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS
d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER
d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP
d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END
d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA
d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK
d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG
d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE
d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA
d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG
d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER
d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER
d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA
d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA
d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA
d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG
d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG
d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK
d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK
d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK
d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO
d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER
----------------------------------------
-- End of configuration file
----------------------------------------

Binary file not shown.

View File

@@ -0,0 +1 @@
XPATCH.ini

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
software/roms/mz80afi.rom Normal file

Binary file not shown.

BIN
software/roms/sa1510.orig Normal file

Binary file not shown.

View File

@@ -38,7 +38,7 @@ INCDIR=${ROOTDIR}/software/asm/include
ROMDIR=${ROOTDIR}/software/roms # Compiled or source ROM files.
HDRDIR=${ROOTDIR}/software/hdr # MZF headers directory.
MZFDIR=${ROOTDIR}/software/MZF/Common # MZF Format source files.
CPMVERSIONS="MZ700_80C:0 MZ80A_80C:1 MZ80A_STD:2"
CPMVERSIONS="mz700_80c:0 mz80a_80c:1 mz80a_std:2"
# As the tranZPUter project has eveolved different variants of CP/M are needed, so this loop along with the CPMVERSIONS string builds the versions as needed.
for ver in ${CPMVERSIONS}
@@ -70,6 +70,6 @@ do
# Manual tinkering to produce the loadable MZF file...
#
cat ${ROMDIR}/cpm22.bin ${ROMDIR}/cbios.bin > ${ROMDIR}/CPM223_${FILEEXT}.BIN
cat ${HDRDIR}/cpm22_${FILEEXT}.HDR ${ROMDIR}/CPM223_${FILEEXT}.BIN > ${MZFDIR}/CPM223_${FILEEXT}.MZF
cat ${ROMDIR}/cpm22.bin ${ROMDIR}/cbios.bin > ${ROMDIR}/cpm223_${FILEEXT}.bin
cat ${HDRDIR}/cpm22_${FILEEXT}.hdr ${ROMDIR}/cpm223_${FILEEXT}.bin > ${MZFDIR}/cpm223_${FILEEXT}.mzf
done

View File

@@ -34,9 +34,10 @@ ROOTDIR=../../tranZPUter
TOOLDIR=${ROOTDIR}/software/tools
JARDIR=${ROOTDIR}/software/tools
ASM=glass-0.5.jar
BUILDROMLIST="MZ800_1Z_013B MZ800_9Z_504M MZ800_IOCS MZ80AFI monitor_SA1510 monitor_80c_SA1510 monitor_1Z-013A monitor_80c_1Z-013A monitor_1Z-013A-KM monitor_80c_1Z-013A-KM MZ80B_IPL"
BUILDROMLIST="mz2000_ipl mz800_1z_013b mz800_9z_504m mz800_iocs mz80afi monitor_sa1510 monitor_80c_sa1510 monitor_1z-013a monitor_80c_1z-013a monitor_1z-013a-km monitor_80c_1z-013a-km mz80b_ipl"
#BUILDMZFLIST="hi-ramcheck sharpmz-test"
BUILDMZFLIST="5Z009-1B SA-5510_TZFS MSBASIC_MZ80A MSBASIC_MZ700 MSBASIC_TZ40 MSBASIC_TZ80 sharpmz-test"
#BUILDMZFLIST="basic_sp-5025 5z009-1b sa-5510_tzfs msbasic_mz80a msbasic_mz700 msbasic_tz40 msbasic_tz80 sharpmz-test"
BUILDMZFLIST="5z009-1b sa-5510_tzfs msbasic_mz80a msbasic_mz700 msbasic_tz40 msbasic_tz80 sharpmz-test"
ASMDIR=${ROOTDIR}/software/asm
ASMTMPDIR=${ROOTDIR}/software/tmp
INCDIR=${ROOTDIR}/software/asm/include
@@ -54,20 +55,20 @@ do
OBJNAME=${f}.obj
SYMNAME=${f}.sym
ROMNAME=${f}.rom
MZFNAME=${f}.MZF
MZFNAME=${f}.mzf
# Special handling for the 4 version of MS BASIC.
if [[ ${SRCNAME} = "MSBASIC_MZ80A" ]]; then
ASMNAME="MSBASIC.asm"
if [[ ${SRCNAME} = "msbasic_mz80a" ]]; then
ASMNAME="msbasic.asm"
echo "BUILD_VERSION EQU 0" > ${INCDIR}/MSBASIC_BuildVersion.asm
elif [[ ${SRCNAME} = "MSBASIC_MZ700" ]]; then
ASMNAME="MSBASIC.asm"
elif [[ ${SRCNAME} = "msbasic_mz700" ]]; then
ASMNAME="msbasic.asm"
echo "BUILD_VERSION EQU 1" > ${INCDIR}/MSBASIC_BuildVersion.asm
elif [[ ${SRCNAME} = "MSBASIC_TZ40" ]]; then
ASMNAME="MSBASIC.asm"
elif [[ ${SRCNAME} = "msbasic_tz40" ]]; then
ASMNAME="msbasic.asm"
echo "BUILD_VERSION EQU 2" > ${INCDIR}/MSBASIC_BuildVersion.asm
elif [[ ${SRCNAME} = "MSBASIC_TZ80" ]]; then
ASMNAME="MSBASIC.asm"
elif [[ ${SRCNAME} = "msbasic_tz80" ]]; then
ASMNAME="msbasic.asm"
echo "BUILD_VERSION EQU 3" > ${INCDIR}/MSBASIC_BuildVersion.asm
fi
@@ -104,4 +105,4 @@ do
done
# Manual tinkering to build the MZ800 Rom.
cat ${ROMDIR}/MZ800_1Z_013B.rom ${ROMDIR}/MZ800_CGROM.ORI ${ROMDIR}/MZ800_9Z_504M.rom ${ROMDIR}/MZ800_IOCS.rom > ${ROMDIR}/MZ800_IPL.rom
cat ${ROMDIR}/mz800_1z_013b.rom ${ROMDIR}/mz800_cgrom.ori ${ROMDIR}/mz800_9z_504m.rom ${ROMDIR}/mz800_iocs.rom > ${ROMDIR}/mz800_ipl.rom

View File

@@ -65,8 +65,8 @@ do
# Uncomment if your not using my modified version 0.5.1 which fixes the bug
# echo -n -e '\xff' >> ${ROMDIR}/${f}.rom
else
echo "Copy ${ASMDIR}/${f}.obj to ${MZFDIR}/${f}.MZF"
cp ${ASMTMPDIR}/${f}.obj ${MZFDIR}/${f}.MZF
echo "Copy ${ASMDIR}/${f}.obj to ${MZFDIR}/${f}.mzf"
cp ${ASMTMPDIR}/${f}.obj ${MZFDIR}/${f}.mzf
fi
fi
done

View File

@@ -197,14 +197,14 @@ done
# Manually copy required files.
cp ${rootdir}/${softwaredir}/roms/tzfs.rom $media/TZFS/;
cp ${rootdir}/${softwaredir}/roms/monitor_SA1510.rom $media/TZFS/SA1510.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_SA1510.rom $media/TZFS/SA1510-8.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_1Z-013A.rom $media/TZFS/1Z-013A.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_1Z-013A.rom $media/TZFS/1Z-013A-8.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_1Z-013A-KM.rom $media/TZFS/1Z-013A-KM.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_1Z-013A-KM.rom $media/TZFS/1Z-013A-KM-8.rom;
cp ${rootdir}/${softwaredir}/roms/MZ80B_IPL.rom $media/TZFS/MZ80B_IPL.rom;
cp ${rootdir}/${softwaredir}/roms/MZ800_* $media/TZFS/;
cp ${rootdir}/${softwaredir}/roms/monitor_sa1510.rom $media/TZFS/sa1510.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_sa1510.rom $media/TZFS/sa1510-8.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_1z-013a.rom $media/TZFS/1z-013a.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_1z-013a.rom $media/TZFS/1z-013a-8.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_1z-013a-km.rom $media/TZFS/1z-013a-km.rom;
cp ${rootdir}/${softwaredir}/roms/monitor_80c_1z-013a-km.rom $media/TZFS/1z-013a-km-8.rom;
cp ${rootdir}/${softwaredir}/roms/mz80b_ipl.rom $media/TZFS/mz80b_ipl.rom;
cp ${rootdir}/${softwaredir}/roms/mz800_* $media/TZFS/;
cp ${rootdir}/${softwaredir}/roms/cpm22.bin $media/CPM/;
cp ${rootdir}/${softwaredir}/CPM/SDC16M/RAW/* $media/CPM/;
cp ${rootdir}/${softwaredir}/MZF/Common/* $media/MZF/;

Binary file not shown.

BIN
software/tools/dz80_v20 Executable file

Binary file not shown.

View File

@@ -36,7 +36,7 @@
# remove it fro the lists.
#BUILDCPMLIST="cpm22"
#SOURCEDIRS="CPM_RFS_[1] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*"
SOURCEDIRS="CPM_RFS_[1-2] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*"
SOURCEDIRS="cpm_rfs_[1-2] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*"
ROOTDIR=`realpath ../../tranZPUter`
CPM_PATH=${ROOTDIR}/software/CPM
@@ -187,15 +187,15 @@ do
CPMIMAGE="${DISKSDIR}/${f}.RAW"
else
CPMIMAGE=""
echo "ALERT! ALERT! Couldnt find CPM image:${f}.RAW, not creating MZF file!"
echo "ALERT! ALERT! Couldnt find CPM image:${f}.raw, not creating MZF file!"
fi
if [ "${CPMIMAGE}" != "" ]; then
# Building is just a matter of concatenating together the heaader and the rom image.
cat "${HDRDIR}/${f}.HDR" "${CPMIMAGE}" > "${MZFDIR}/${f}.MZF"
cat "${HDRDIR}/${f}.hdr" "${CPMIMAGE}" > "${MZFDIR}/${f}.mzf"
# Place the name of the file into the MZF list so that we create an MZF format binary from this image.
(cd ${MZFDIR}; ls -l ${f}.MZF ${f}.mzf 2>/dev/null | sed 's/ / /g' | sed 's/ / /g' | cut -d' ' -f5,9- >> /tmp/filelist 2>/dev/null)
(cd ${MZFDIR}; ls -l ${f}.mzf ${f}.mzf 2>/dev/null | sed 's/ / /g' | sed 's/ / /g' | cut -d' ' -f5,9- >> /tmp/filelist 2>/dev/null)
fi
done