SFD700 bug fixes
This commit is contained in:
@@ -136,9 +136,9 @@ BNKSWSEL: MACRO
|
|||||||
ENDIF
|
ENDIF
|
||||||
IF BUILD_SFD700 = 1
|
IF BUILD_SFD700 = 1
|
||||||
OUT (REG_EXXX),A ; Execute active bank switch for E000:EFFF.
|
OUT (REG_EXXX),A ; Execute active bank switch for E000:EFFF.
|
||||||
CP ROMBANK6 ; ROMBANK6/7 page in ROM from E300:FFFF
|
CP ROMBANK6 ; ROMBANK6:11 page in ROM from E300:FFFF
|
||||||
JR C,BNKSWJMP
|
JR C,BNKSWJMP
|
||||||
INC A ; FXXX are 4K banks, EXXX are 2K banks.
|
INC A ; FXXX are 4K banks, EXXX are 4K banks.
|
||||||
JR BNKSWJMP2
|
JR BNKSWJMP2
|
||||||
BNKSWJMP: LD A,(ROMBK1) ; All other banks place the current active ROM into F000:FXXX space.
|
BNKSWJMP: LD A,(ROMBK1) ; All other banks place the current active ROM into F000:FXXX space.
|
||||||
BNKSWJMP2: OUT (REG_FXXX),A
|
BNKSWJMP2: OUT (REG_FXXX),A
|
||||||
|
|||||||
@@ -51,8 +51,8 @@ VIDEOMODULE_ENA EQU 0 ; Targe
|
|||||||
; Only enable one BUILD_<> operative. Customisations applied according
|
; Only enable one BUILD_<> operative. Customisations applied according
|
||||||
; to the target.
|
; to the target.
|
||||||
BUILD_ROMDISK EQU 0 ; RFS is built for the MZ-80A RomDisk card.
|
BUILD_ROMDISK EQU 0 ; RFS is built for the MZ-80A RomDisk card.
|
||||||
BUILD_SFD700 EQU 0 ; RFS is built for the SFD700 Floppy Disk Controller.
|
BUILD_SFD700 EQU 1 ; RFS is built for the SFD700 Floppy Disk Controller.
|
||||||
BUILD_PICOZ80 EQU 1 ; RFS is built for the picoZ80 board.
|
BUILD_PICOZ80 EQU 0 ; RFS is built for the picoZ80 board.
|
||||||
BUILD_MZ80A EQU 0 ; RFS is customised to operate on an MZ-80A.
|
BUILD_MZ80A EQU 0 ; RFS is customised to operate on an MZ-80A.
|
||||||
BUILD_MZ700 EQU 1 ; RFS is customised to operate on an MZ-700.
|
BUILD_MZ700 EQU 1 ; RFS is customised to operate on an MZ-700.
|
||||||
|
|
||||||
@@ -421,14 +421,14 @@ ROMBANK4 EQU 4 + BNKDEFUROM ;
|
|||||||
ROMBANK5 EQU 5 + BNKDEFUROM ; : RFS Bank 5
|
ROMBANK5 EQU 5 + BNKDEFUROM ; : RFS Bank 5
|
||||||
ROMBANK6 EQU 6 + BNKDEFUROM ; : RFS Bank 6
|
ROMBANK6 EQU 6 + BNKDEFUROM ; : RFS Bank 6
|
||||||
ROMBANK7 EQU 8 + BNKDEFUROM ; : RFS Bank 7 - Memory and timer test utilities.
|
ROMBANK7 EQU 8 + BNKDEFUROM ; : RFS Bank 7 - Memory and timer test utilities.
|
||||||
ROMBANK8 EQU 8 + BNKDEFUROM ; Free : RFS Bank 8 -
|
ROMBANK8 EQU 10 + BNKDEFUROM ; Free : RFS Bank 8 -
|
||||||
ROMBANK9 EQU 9 + BNKDEFUROM ; Free : RFS Bank 9 -
|
ROMBANK9 EQU 12 + BNKDEFUROM ; Free : RFS Bank 9 -
|
||||||
ROMBANK10 EQU 10 + BNKDEFUROM ; Free : RFS Bank 10 -
|
ROMBANK10 EQU 14 + BNKDEFUROM ; Free : RFS Bank 10 -
|
||||||
ROMBANK11 EQU 11 + BNKDEFUROM ; Free : RFS Bank 11 -
|
ROMBANK11 EQU 16 + BNKDEFUROM ; Free : RFS Bank 11 -
|
||||||
ROMBANK12 EQU 12 + BNKDEFUROM ; Free : CBIOS Bank 1 - Utilities
|
ROMBANK12 EQU 17 + BNKDEFUROM ; Free : CBIOS Bank 1 - Utilities
|
||||||
ROMBANK13 EQU 13 + BNKDEFUROM ; Free : CBIOS Bank 2 - Screen / ANSI Terminal
|
ROMBANK13 EQU 18 + BNKDEFUROM ; Free : CBIOS Bank 2 - Screen / ANSI Terminal
|
||||||
ROMBANK14 EQU 14 + BNKDEFUROM ; Free : CBIOS Bank 3 - SD Card
|
ROMBANK14 EQU 19 + BNKDEFUROM ; Free : CBIOS Bank 3 - SD Card
|
||||||
ROMBANK15 EQU 15 + BNKDEFUROM ; Free : CBIOS Bank 4 - Floppy disk controller.
|
ROMBANK15 EQU 20 + BNKDEFUROM ; Free : CBIOS Bank 4 - Floppy disk controller.
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
; MMC/SD command (SPI mode)
|
; MMC/SD command (SPI mode)
|
||||||
|
|||||||
226
asm/rfs.asm
226
asm/rfs.asm
@@ -48,6 +48,116 @@
|
|||||||
; Bring in additional resources.
|
; Bring in additional resources.
|
||||||
INCLUDE "rfs_definitions.asm"
|
INCLUDE "rfs_definitions.asm"
|
||||||
|
|
||||||
|
;============================================================
|
||||||
|
;
|
||||||
|
; SFD700 COMMAND TABLE
|
||||||
|
;
|
||||||
|
; Placed after all bank includes so DW forward references to
|
||||||
|
; functions in various IF blocks are resolved as backward refs.
|
||||||
|
;============================================================
|
||||||
|
IF BUILD_SFD700 = 1
|
||||||
|
ORG 0E000H
|
||||||
|
ALIGN 0E300H
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
; Monitor command table (SFD700). This table contains the list of recognised commands along with the
|
||||||
|
; handler function and bank in which it is located.
|
||||||
|
;
|
||||||
|
; 7 6:3 2:0
|
||||||
|
; MATCH BANK SIZE
|
||||||
|
CMDTABLE2: IF BUILD_SFD700 = 1
|
||||||
|
DB 000H | 038H | 003H
|
||||||
|
DB "ASM" ; Assembler.
|
||||||
|
DW ASM_MAIN
|
||||||
|
DB 000H | 000H | 005H
|
||||||
|
DB "BASIC" ; Load and run BASIC SA-5510.
|
||||||
|
DW LOADBASIC
|
||||||
|
DB 000H | 020H | 001H
|
||||||
|
DB 'B' ; Bell.
|
||||||
|
DW SGX
|
||||||
|
DB 000H | 000H | 003H
|
||||||
|
DB "CPM" ; Load and run CPM.
|
||||||
|
DW LOADCPM
|
||||||
|
DB 000H | 018H | 002H
|
||||||
|
DB "CP" ; Copy Memory.
|
||||||
|
DW MCOPY
|
||||||
|
DB 000H | 018H | 003H
|
||||||
|
DB "DUC" ; Dump SD Card file contents (hex or text).
|
||||||
|
DW DUMPSDCARD
|
||||||
|
DB 000H | 018H | 001H
|
||||||
|
DB 'C' ; Clear Memory.
|
||||||
|
DW INITMEMX
|
||||||
|
DB 000H | 038H | 004H
|
||||||
|
DB "DASM" ; Disassembler.
|
||||||
|
DW DASM_MAIN
|
||||||
|
DB 000H | 018H | 001H
|
||||||
|
DB 'D' ; Dump Memory.
|
||||||
|
DW DUMPX
|
||||||
|
DB 000H | 008H | 002H
|
||||||
|
DB "FL" ; 'FL' Floppy disk boot (built-in WD1773 FDC).
|
||||||
|
DW FLOPPY
|
||||||
|
DB 000H | 008H | 002H
|
||||||
|
DB "FD" ; 'FD' Floppy disk directory listing.
|
||||||
|
DW FDDIR
|
||||||
|
DB 000H | 058H | 001H
|
||||||
|
DB 'H' ; Help screen (bank 11).
|
||||||
|
DW HELP
|
||||||
|
DB 000H | 018H | 002H ; Bank 3, 2-char command.
|
||||||
|
DB "IN" ; I/O port input.
|
||||||
|
DW INX
|
||||||
|
DB 000H | 000H | 002H
|
||||||
|
DB "IR" ; List ROM directory.
|
||||||
|
DW DIRROM
|
||||||
|
DB 000H | 000H | 001H
|
||||||
|
DB 'J' ; Jump to address.
|
||||||
|
DW GOTOX
|
||||||
|
DB 000H | 020H | 004H
|
||||||
|
DB "LTNX" ; Load from CMT without auto execution.
|
||||||
|
DW LOADTAPENX
|
||||||
|
DB 000H | 020H | 002H
|
||||||
|
DB "LT" ; Load from CMT
|
||||||
|
DW LOADTAPE
|
||||||
|
DB 000H | 000H | 004H
|
||||||
|
DB "LRNX" ; Load from ROM without auto execution.
|
||||||
|
DW LOADROMNX
|
||||||
|
DB 000H | 000H | 002H
|
||||||
|
DB "LR" ; Load from ROM
|
||||||
|
DW LOADROM
|
||||||
|
DB 000H | 020H | 001H
|
||||||
|
DB "L" ; Original Load from CMT
|
||||||
|
DW LOADTAPE
|
||||||
|
DB 000H | 018H | 001H
|
||||||
|
DB 'M' ; Edit Memory.
|
||||||
|
DW MCORX
|
||||||
|
DB 000H | 018H | 003H ; Bank 3, 3-char command.
|
||||||
|
DB "OUT" ; I/O port output.
|
||||||
|
DW OUTX
|
||||||
|
DB 000H | 018H | 001H
|
||||||
|
DB 'P' ; Printer test.
|
||||||
|
DW PTESTX
|
||||||
|
DB 000H | 020H | 001H
|
||||||
|
DB 'R' ; Memory test.
|
||||||
|
DW MEMTEST
|
||||||
|
DB 000H | 020H | 002H
|
||||||
|
DB "ST" ; Save to CMT
|
||||||
|
DW SAVEX
|
||||||
|
DB 000H | 020H | 001H
|
||||||
|
DB 'S' ; Save to CMT
|
||||||
|
DW SAVEX
|
||||||
|
DB 000H | 000H | 004H
|
||||||
|
DB "TEST" ; A test function used in debugging.
|
||||||
|
DW LOCALTEST
|
||||||
|
DB 000H | 020H | 001H
|
||||||
|
DB 'T' ; Timer test.
|
||||||
|
DW TIMERTST
|
||||||
|
DB 000H | 000H | 001H
|
||||||
|
DB 'V' ; Verify CMT Save.
|
||||||
|
DW VRFYX
|
||||||
|
DB 0FFH ; END OF TABLE
|
||||||
|
|
||||||
|
ALIGN UROMADDR
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;============================================================
|
;============================================================
|
||||||
;
|
;
|
||||||
; USER ROM BANK 0 - Main RFS Entry point and functions.
|
; USER ROM BANK 0 - Main RFS Entry point and functions.
|
||||||
@@ -633,10 +743,10 @@ SETMODE80: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
|||||||
JP MONIT
|
JP MONIT
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
NOTZPU: LDDE MSGNOTZINST ; No tranZPUter installed.
|
;NOTZPU: LDDE MSGNOTZINST ; No tranZPUter installed.
|
||||||
LD HL,PRINTMSG
|
; LD HL,PRINTMSG
|
||||||
CALL BKSW0to6
|
; CALL BKSW0to6
|
||||||
RET
|
; RET
|
||||||
|
|
||||||
; The RFS depends on variables stored in unused parts of the Monitor scratch area.
|
; The RFS depends on variables stored in unused parts of the Monitor scratch area.
|
||||||
; When switching into a compatibility mode the memory is switched and these variables go
|
; When switching into a compatibility mode the memory is switched and these variables go
|
||||||
@@ -1490,111 +1600,3 @@ MEND:
|
|||||||
INCLUDE "rfs_bank9.asm"
|
INCLUDE "rfs_bank9.asm"
|
||||||
INCLUDE "rfs_bank10.asm"
|
INCLUDE "rfs_bank10.asm"
|
||||||
INCLUDE "rfs_bank11.asm"
|
INCLUDE "rfs_bank11.asm"
|
||||||
|
|
||||||
;============================================================
|
|
||||||
;
|
|
||||||
; SFD700 COMMAND TABLE
|
|
||||||
;
|
|
||||||
; Placed after all bank includes so DW forward references to
|
|
||||||
; functions in various IF blocks are resolved as backward refs.
|
|
||||||
;============================================================
|
|
||||||
IF BUILD_SFD700 = 1
|
|
||||||
ORG 0E000H
|
|
||||||
ALIGN 0E300H
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
; Monitor command table (SFD700). This table contains the list of recognised commands along with the
|
|
||||||
; handler function and bank in which it is located.
|
|
||||||
;
|
|
||||||
; 7 6:3 2:0
|
|
||||||
; MATCH BANK SIZE
|
|
||||||
CMDTABLE2: IF BUILD_SFD700 = 1
|
|
||||||
DB 000H | 038H | 003H
|
|
||||||
DB "ASM" ; Assembler.
|
|
||||||
DW ASM_MAIN
|
|
||||||
DB 000H | 000H | 005H
|
|
||||||
DB "BASIC" ; Load and run BASIC SA-5510.
|
|
||||||
DW LOADBASIC
|
|
||||||
DB 000H | 020H | 001H
|
|
||||||
DB 'B' ; Bell.
|
|
||||||
DW SGX
|
|
||||||
DB 000H | 000H | 003H
|
|
||||||
DB "CPM" ; Load and run CPM.
|
|
||||||
DW LOADCPM
|
|
||||||
DB 000H | 018H | 002H
|
|
||||||
DB "CP" ; Copy Memory.
|
|
||||||
DW MCOPY
|
|
||||||
DB 000H | 018H | 003H
|
|
||||||
DB "DUC" ; Dump SD Card file contents (hex or text).
|
|
||||||
DW DUMPSDCARD
|
|
||||||
DB 000H | 018H | 001H
|
|
||||||
DB 'C' ; Clear Memory.
|
|
||||||
DW INITMEMX
|
|
||||||
DB 000H | 038H | 004H
|
|
||||||
DB "DASM" ; Disassembler.
|
|
||||||
DW DASM_MAIN
|
|
||||||
DB 000H | 018H | 001H
|
|
||||||
DB 'D' ; Dump Memory.
|
|
||||||
DW DUMPX
|
|
||||||
DB 000H | 008H | 002H
|
|
||||||
DB "FL" ; 'FL' RFS Floppy load.
|
|
||||||
DW FDCK
|
|
||||||
; NB: FD/FDDIR command not available on SFD700 — FDDIR only exists
|
|
||||||
; for ROMDISK/picoZ80 builds (MZ-700 WD1773 FDC). SFD700 uses
|
|
||||||
; AFI ROM at F000 via FDCK for floppy operations.
|
|
||||||
DB 000H | 058H | 001H
|
|
||||||
DB 'H' ; Help screen (bank 11).
|
|
||||||
DW HELP
|
|
||||||
DB 000H | 018H | 002H ; Bank 3, 2-char command.
|
|
||||||
DB "IN" ; I/O port input.
|
|
||||||
DW INX
|
|
||||||
DB 000H | 000H | 002H
|
|
||||||
DB "IR" ; List ROM directory.
|
|
||||||
DW DIRROM
|
|
||||||
DB 000H | 000H | 001H
|
|
||||||
DB 'J' ; Jump to address.
|
|
||||||
DW GOTOX
|
|
||||||
DB 000H | 020H | 004H
|
|
||||||
DB "LTNX" ; Load from CMT without auto execution.
|
|
||||||
DW LOADTAPENX
|
|
||||||
DB 000H | 020H | 002H
|
|
||||||
DB "LT" ; Load from CMT
|
|
||||||
DW LOADTAPE
|
|
||||||
DB 000H | 000H | 004H
|
|
||||||
DB "LRNX" ; Load from ROM without auto execution.
|
|
||||||
DW LOADROMNX
|
|
||||||
DB 000H | 000H | 002H
|
|
||||||
DB "LR" ; Load from ROM
|
|
||||||
DW LOADROM
|
|
||||||
DB 000H | 020H | 001H
|
|
||||||
DB "L" ; Original Load from CMT
|
|
||||||
DW LOADTAPE
|
|
||||||
DB 000H | 018H | 001H
|
|
||||||
DB 'M' ; Edit Memory.
|
|
||||||
DW MCORX
|
|
||||||
DB 000H | 018H | 003H ; Bank 3, 3-char command.
|
|
||||||
DB "OUT" ; I/O port output.
|
|
||||||
DW OUTX
|
|
||||||
DB 000H | 018H | 001H
|
|
||||||
DB 'P' ; Printer test.
|
|
||||||
DW PTESTX
|
|
||||||
DB 000H | 020H | 001H
|
|
||||||
DB 'R' ; Memory test.
|
|
||||||
DW MEMTEST
|
|
||||||
DB 000H | 020H | 002H
|
|
||||||
DB "ST" ; Save to CMT
|
|
||||||
DW SAVEX
|
|
||||||
DB 000H | 020H | 001H
|
|
||||||
DB 'S' ; Save to CMT
|
|
||||||
DW SAVEX
|
|
||||||
DB 000H | 000H | 004H
|
|
||||||
DB "TEST" ; A test function used in debugging.
|
|
||||||
DW LOCALTEST
|
|
||||||
DB 000H | 020H | 001H
|
|
||||||
DB 'T' ; Timer test.
|
|
||||||
DW TIMERTST
|
|
||||||
DB 000H | 000H | 001H
|
|
||||||
DB 'V' ; Verify CMT Save.
|
|
||||||
DW VRFYX
|
|
||||||
DB 0FFH ; END OF TABLE
|
|
||||||
ENDIF
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ FDCKROM: LD A,(0F000h)
|
|||||||
OR A
|
OR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
FLOPPY: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
FLOPPY: IF BUILD_ROMDISK+BUILD_PICOZ80+BUILD_SFD700 = 1
|
||||||
IF BUILD_MZ80A = 1
|
IF BUILD_MZ80A = 1
|
||||||
PUSH DE ; Preserve pointer to input buffer.
|
PUSH DE ; Preserve pointer to input buffer.
|
||||||
LD DE,BPARA ; Copy disk parameter block into RAM work area. (From)
|
LD DE,BPARA ; Copy disk parameter block into RAM work area. (From)
|
||||||
|
|||||||
@@ -36,6 +36,13 @@
|
|||||||
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
;--------------------------------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF BUILD_SFD700 = 1
|
||||||
|
ORG 0E000H
|
||||||
|
ALIGN 0E300H
|
||||||
|
DB "BANK10"
|
||||||
|
ALIGN UROMADDR
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;===========================================================
|
;===========================================================
|
||||||
;
|
;
|
||||||
; USER ROM BANK 10 -
|
; USER ROM BANK 10 -
|
||||||
@@ -144,6 +151,7 @@ BKSWRET10: POP AF ; G
|
|||||||
ORG 0EFF8h
|
ORG 0EFF8h
|
||||||
DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
|
DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
; SFD700 - Pad to 10000H
|
; SFD700 - Pad to 10000H
|
||||||
IF BUILD_SFD700 = 1
|
IF BUILD_SFD700 = 1
|
||||||
ALIGN 10000H
|
ALIGN 10000H
|
||||||
|
|||||||
@@ -37,6 +37,13 @@
|
|||||||
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
;--------------------------------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF BUILD_SFD700 = 1
|
||||||
|
ORG 0E000H
|
||||||
|
ALIGN 0E300H
|
||||||
|
DB "BANK11"
|
||||||
|
ALIGN UROMADDR
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;===========================================================
|
;===========================================================
|
||||||
;
|
;
|
||||||
; USER ROM BANK 11 -
|
; USER ROM BANK 11 -
|
||||||
@@ -391,7 +398,7 @@ HELPSCR: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
|||||||
DB " - add NX for no exec, ie.LRNX.", 00DH
|
DB " - add NX for no exec, ie.LRNX.", 00DH
|
||||||
DB "MXXXX - edit memory starting at X.", 00DH
|
DB "MXXXX - edit memory starting at X.", 00DH
|
||||||
DB "P - test printer.", 00DH
|
DB "P - test printer.", 00DH
|
||||||
DB "QD/QL - QD dir/boot", 00DH
|
;DB "QD/QL - QD dir/boot", 00DH
|
||||||
DB "R - test dram memory.", 00DH
|
DB "R - test dram memory.", 00DH
|
||||||
DB "SD2T - copy sd card to tape.", 00DH
|
DB "SD2T - copy sd card to tape.", 00DH
|
||||||
DB "ST[XXXXYYYYZZZZ] - save mem to tape.", 00DH
|
DB "ST[XXXXYYYYZZZZ] - save mem to tape.", 00DH
|
||||||
|
|||||||
@@ -149,12 +149,12 @@ DASM_FILL: LD (HL),A
|
|||||||
CALL DASMBITINST ; Is This a BIT,SET or RES Inst.?
|
CALL DASMBITINST ; Is This a BIT,SET or RES Inst.?
|
||||||
JP NZ,DASM_FIND ; NO=Do regular search
|
JP NZ,DASM_FIND ; NO=Do regular search
|
||||||
CALL DSMFINDOPCD ; Search For Matching BIT,SET,RES OP Code
|
CALL DSMFINDOPCD ; Search For Matching BIT,SET,RES OP Code
|
||||||
JP Z,DASM_ERR ; NOT FOUND - Error Message
|
JP Z,DASM_UNK ; NOT FOUND - output raw byte and continue
|
||||||
CALL DASMGETINST ; Copy 4 byte Assembler Inst. to ASM_BUF
|
CALL DASMGETINST ; Copy 4 byte Assembler Inst. to ASM_BUF
|
||||||
JP DASM_JUSTV ; VAL_BUF has already been populated
|
JP DASM_JUSTV ; VAL_BUF has already been populated
|
||||||
|
|
||||||
DASM_FIND: CALL DSMFINDOPCD ; Search For Matching OP Code
|
DASM_FIND: CALL DSMFINDOPCD ; Search For Matching OP Code
|
||||||
JP Z,DASM_ERR ; NOT FOUND - Error Message
|
JP Z,DASM_UNK ; NOT FOUND - output raw byte and continue
|
||||||
|
|
||||||
CALL DASMGETINST ; Copy 4 byte Assembler Inst. to ASM_BUF
|
CALL DASMGETINST ; Copy 4 byte Assembler Inst. to ASM_BUF
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ DASM_JUSTV: CALL DSMLFJVAL ; Left justify VAL_BUF(Trim leading zeros)
|
|||||||
|
|
||||||
CALL DSMRTRIMASM ; Trim trailing spaces from ASM_BUF
|
CALL DSMRTRIMASM ; Trim trailing spaces from ASM_BUF
|
||||||
|
|
||||||
LD A,0Fh ; Output Memory Bytes and Advance Address Pointer
|
DASM_PROUT: LD A,0Fh ; Output Memory Bytes and Advance Address Pointer
|
||||||
LD C,A
|
LD C,A
|
||||||
LD HL,(ADDR_LO) ; Address ->HL
|
LD HL,(ADDR_LO) ; Address ->HL
|
||||||
LD A,(ML_BTCOUNT) ;Get Total Byte count from lookup table
|
LD A,(ML_BTCOUNT) ;Get Total Byte count from lookup table
|
||||||
@@ -197,6 +197,8 @@ DASM_SPCOUT: CALL PRNTS ; Pad with spaces to 15 bytes
|
|||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,PRINTMSG
|
LD HL,PRINTMSG
|
||||||
CALL BKSW7to6
|
CALL BKSW7to6
|
||||||
|
LD A,ROMBANK7+1 ; Restore F-page (BNKSWSELRET sets it to ROMBK1).
|
||||||
|
OUT (REG_FXXX),A
|
||||||
|
|
||||||
LD A,(COUNT_C) ; Get Row Count
|
LD A,(COUNT_C) ; Get Row Count
|
||||||
CP 0FFh ; Using End Address?
|
CP 0FFh ; Using End Address?
|
||||||
@@ -212,9 +214,40 @@ DASM_CKEADR: LD HL,(ASM_ADDR) ; Get End Address
|
|||||||
RET M ; If resulte negative - Exit
|
RET M ; If resulte negative - Exit
|
||||||
JP DASM_LOOP1 ; Otherwise Continue...
|
JP DASM_LOOP1 ; Otherwise Continue...
|
||||||
|
|
||||||
|
; Unknown/undefined opcode — output as "DB" and advance 1 byte.
|
||||||
|
DASM_UNK: LD A,1
|
||||||
|
LD (ML_BTCOUNT),A ; 1 byte only
|
||||||
|
LD HL,DASM_UNKDB ; "DB" string → ASM_BUF
|
||||||
|
LD DE,ASM_BUF
|
||||||
|
LD A,(HL)
|
||||||
|
LD (DE),A
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
LD A,(HL)
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
XOR A
|
||||||
|
LD (DE),A ; Null-terminate "DB"
|
||||||
|
; Put hex value of opcode into VAL_BUF
|
||||||
|
LD A,(ML_BUF)
|
||||||
|
CALL BYTE2ASCII ; H=LSB nib, L=MSB nib
|
||||||
|
LD A,L
|
||||||
|
LD (VAL_BUF),A
|
||||||
|
LD A,H
|
||||||
|
LD (VAL_BUF+1),A
|
||||||
|
LD A,'H'
|
||||||
|
LD (VAL_BUF+2),A
|
||||||
|
XOR A
|
||||||
|
LD (VAL_BUF+3),A ; Null-terminate
|
||||||
|
JP DASM_PROUT ; Go to print output
|
||||||
|
|
||||||
|
DASM_UNKDB: DB "DB", 0
|
||||||
|
|
||||||
DASM_ERR: LD DE,MSGNOTFND
|
DASM_ERR: LD DE,MSGNOTFND
|
||||||
LD HL,PRINTMSG
|
LD HL,PRINTMSG
|
||||||
CALL BKSW7to6
|
CALL BKSW7to6
|
||||||
|
LD A,ROMBANK7+1 ; Restore F-page.
|
||||||
|
OUT (REG_FXXX),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;******************************************************************
|
;******************************************************************
|
||||||
@@ -560,7 +593,8 @@ DASM_MOVINS: INC HL ; Inc Block Header data pointer
|
|||||||
; Return with BLK_ADDR=block header address, ROW_ADDR=found row address
|
; Return with BLK_ADDR=block header address, ROW_ADDR=found row address
|
||||||
; ML_BYCOUNT=a non-zero count if match was found
|
; ML_BYCOUNT=a non-zero count if match was found
|
||||||
;******************************************************************
|
;******************************************************************
|
||||||
DSMFINDOPCD: PUSH BC
|
DSMFINDOPCD: DI ;Disable interrupts during F-page table search.
|
||||||
|
PUSH BC
|
||||||
LD IX,OPCD_TABLE ;Set IX=Table Start Address
|
LD IX,OPCD_TABLE ;Set IX=Table Start Address
|
||||||
DSMFN_LOOP1: LD A,(IX+0)
|
DSMFN_LOOP1: LD A,(IX+0)
|
||||||
CP '#' ;Is Row Byte0='#'?
|
CP '#' ;Is Row Byte0='#'?
|
||||||
@@ -607,6 +641,7 @@ DSMFN_MATCH: LD (ROW_ADDR),IX ; Save IX->ROW_ADDR
|
|||||||
LD (ML_BTCOUNT),A ; Save byte count->ML_BYCOUNT
|
LD (ML_BTCOUNT),A ; Save byte count->ML_BYCOUNT
|
||||||
CP 0 ; Set Z flag if NOT FOUND
|
CP 0 ; Set Z flag if NOT FOUND
|
||||||
POP BC
|
POP BC
|
||||||
|
EI ;Re-enable interrupts after table search.
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;******************************************************************
|
;******************************************************************
|
||||||
@@ -728,6 +763,8 @@ ASMLOOPEXIT: LD BC,VAL_BUF
|
|||||||
ASM_ERR_INS: LD DE,MSGNOINSTR
|
ASM_ERR_INS: LD DE,MSGNOINSTR
|
||||||
LD HL,PRINTMSG
|
LD HL,PRINTMSG
|
||||||
CALL BKSW7to6
|
CALL BKSW7to6
|
||||||
|
LD A,ROMBANK7+1 ; Restore F-page.
|
||||||
|
OUT (REG_FXXX),A
|
||||||
JP ASM_LOOP1 ; Get another line of ASM input...
|
JP ASM_LOOP1 ; Get another line of ASM input...
|
||||||
|
|
||||||
ASM_FINDPRM: CALL ASMFINDPARM ; Look for matching parameter pattern
|
ASM_FINDPRM: CALL ASMFINDPARM ; Look for matching parameter pattern
|
||||||
@@ -737,6 +774,8 @@ ASM_FINDPRM: CALL ASMFINDPARM ; Look for matching parameter pattern
|
|||||||
LD DE,MSGNOPARAM
|
LD DE,MSGNOPARAM
|
||||||
LD HL,PRINTMSG
|
LD HL,PRINTMSG
|
||||||
CALL BKSW7to6
|
CALL BKSW7to6
|
||||||
|
LD A,ROMBANK7+1 ; Restore F-page.
|
||||||
|
OUT (REG_FXXX),A
|
||||||
JP ASM_LOOP1 ; Get another line of ASM input...
|
JP ASM_LOOP1 ; Get another line of ASM input...
|
||||||
|
|
||||||
|
|
||||||
@@ -988,12 +1027,12 @@ DASM_FILL: LD (HL),A
|
|||||||
|
|
||||||
; BIT/SET/RES path: value already in VAL_BUF
|
; BIT/SET/RES path: value already in VAL_BUF
|
||||||
CALL DSMFIND_BOTH ; Search both MROM banks
|
CALL DSMFIND_BOTH ; Search both MROM banks
|
||||||
JP Z,DASM_ERR2 ; NOT FOUND
|
JP Z,DASM_UNK2 ; NOT FOUND - output raw byte and continue
|
||||||
CALL DASMGETINST ; Copy instruction name (MROM still active)
|
CALL DASMGETINST ; Copy instruction name (MROM still active)
|
||||||
JP DASM_JUSTV ; Skip to value justification
|
JP DASM_JUSTV ; Skip to value justification
|
||||||
|
|
||||||
DASM_FIND: CALL DSMFIND_BOTH ; Search both MROM banks
|
DASM_FIND: CALL DSMFIND_BOTH ; Search both MROM banks
|
||||||
JP Z,DASM_ERR2 ; NOT FOUND
|
JP Z,DASM_UNK2 ; NOT FOUND - output raw byte and continue
|
||||||
CALL DASMGETINST ; Copy instruction name
|
CALL DASMGETINST ; Copy instruction name
|
||||||
|
|
||||||
; Set up VAL_BUF defaults
|
; Set up VAL_BUF defaults
|
||||||
@@ -1014,7 +1053,7 @@ DASM_JUSTV: CALL DSMLFJVAL ; Left justify VAL_BUF
|
|||||||
|
|
||||||
CALL DSMRTRIMASM ; Trim trailing spaces
|
CALL DSMRTRIMASM ; Trim trailing spaces
|
||||||
|
|
||||||
; Output memory bytes and advance address pointer
|
DASM_PROUT2: ; Output memory bytes and advance address pointer
|
||||||
LD A,0Fh
|
LD A,0Fh
|
||||||
LD C,A
|
LD C,A
|
||||||
LD HL,(ADDR_LO)
|
LD HL,(ADDR_LO)
|
||||||
@@ -1054,6 +1093,36 @@ DASM_CKEADR: LD HL,(ASM_ADDR)
|
|||||||
RET M
|
RET M
|
||||||
JP DASM_LOOP1
|
JP DASM_LOOP1
|
||||||
|
|
||||||
|
; Unknown/undefined opcode (picoZ80) — output as "DB" and advance 1 byte.
|
||||||
|
DASM_UNK2: POP AF ; Restore MROM bank
|
||||||
|
LD (BNKSELMROM),A
|
||||||
|
LD A,1
|
||||||
|
LD (ML_BTCOUNT),A ; 1 byte only
|
||||||
|
LD HL,DASM_UNKDB2 ; "DB" string → ASM_BUF
|
||||||
|
LD DE,ASM_BUF
|
||||||
|
LD A,(HL)
|
||||||
|
LD (DE),A
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
LD A,(HL)
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
XOR A
|
||||||
|
LD (DE),A ; Null-terminate "DB"
|
||||||
|
LD A,(ML_BUF)
|
||||||
|
CALL BYTE2ASCII ; H=LSB nib, L=MSB nib
|
||||||
|
LD A,L
|
||||||
|
LD (VAL_BUF),A
|
||||||
|
LD A,H
|
||||||
|
LD (VAL_BUF+1),A
|
||||||
|
LD A,'H'
|
||||||
|
LD (VAL_BUF+2),A
|
||||||
|
XOR A
|
||||||
|
LD (VAL_BUF+3),A
|
||||||
|
JP DASM_PROUT2 ; Go to print output
|
||||||
|
|
||||||
|
DASM_UNKDB2: DB "DB", 0
|
||||||
|
|
||||||
DASM_ERR2: POP AF ; Restore MROM bank
|
DASM_ERR2: POP AF ; Restore MROM bank
|
||||||
LD (BNKSELMROM),A
|
LD (BNKSELMROM),A
|
||||||
DASM_ERR: LD DE,MSGNOTFND
|
DASM_ERR: LD DE,MSGNOTFND
|
||||||
|
|||||||
@@ -36,6 +36,13 @@
|
|||||||
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
;--------------------------------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF BUILD_SFD700 = 1
|
||||||
|
ORG 0E000H
|
||||||
|
ALIGN 0E300H
|
||||||
|
DB "BANK8"
|
||||||
|
ALIGN UROMADDR
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;===========================================================
|
;===========================================================
|
||||||
;
|
;
|
||||||
; USER ROM BANK 8 -
|
; USER ROM BANK 8 -
|
||||||
|
|||||||
@@ -38,6 +38,13 @@
|
|||||||
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
;- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
;--------------------------------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IF BUILD_SFD700 = 1
|
||||||
|
ORG 0E000H
|
||||||
|
ALIGN 0E300H
|
||||||
|
DB "BANK9"
|
||||||
|
ALIGN UROMADDR
|
||||||
|
ENDIF
|
||||||
|
|
||||||
;===========================================================
|
;===========================================================
|
||||||
;
|
;
|
||||||
; USER ROM BANK 9 -
|
; USER ROM BANK 9 -
|
||||||
|
|||||||
BIN
roms/rfs.rom
vendored
BIN
roms/rfs.rom
vendored
Binary file not shown.
@@ -217,15 +217,15 @@ ROM_INCLUDE_RSV1=""
|
|||||||
# | | |------- Include in PICOZ80 Build
|
# | | |------- Include in PICOZ80 Build
|
||||||
# | | | |----- Reserved
|
# | | | |----- Reserved
|
||||||
# | | | | |-- Name and path of the sectored version of the MZF file.
|
# | | | | |-- Name and path of the sectored version of the MZF file.
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/1z-013b.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/1z-013b.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz2z009e_orig.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz2z009e_orig.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz2z009e_rfs.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/mz2z009e_rfs.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz5z008_orig.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz5z008_orig.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz5z008_rfs.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/mz5z008_rfs.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz5z009.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/mz5z009.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/msbasic_mz80a.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/msbasic_mz80a.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/msbasic_rfs40.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/msbasic_rfs40.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/msbasic_rfs80.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/msbasic_rfs80.${SECTORSIZE}.bin"
|
||||||
#
|
#
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/basic_sa5510.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/basic_sa5510.${SECTORSIZE}.bin"
|
||||||
@@ -259,7 +259,7 @@ addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/kniforth.${SECTORSIZE}.bin"
|
|||||||
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/tinylispmc.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/tinylispmc.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/apollo_word_1.9mmc_.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/apollo_word_1.9mmc_.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/hucalc_80a_m.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/hucalc_80a_m.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/Common/send-1.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/send-1.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/apollo_chess_v2a.${SECTORSIZE}.bin"
|
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/apollo_chess_v2a.${SECTORSIZE}.bin"
|
||||||
addMZFToROMImageList 0 0 0 0 "${MZB_PATH}/Common/5z009-1b.mzf"
|
addMZFToROMImageList 0 0 0 0 "${MZB_PATH}/Common/5z009-1b.mzf"
|
||||||
addMZFToROMImageList 0 0 0 0 "${MZB_PATH}/Common/basic.${SECTORSIZE}.bin"
|
addMZFToROMImageList 0 0 0 0 "${MZB_PATH}/Common/basic.${SECTORSIZE}.bin"
|
||||||
|
|||||||
Reference in New Issue
Block a user