SFD700 bug fixes

This commit is contained in:
Philip Smart
2026-04-01 23:29:33 +01:00
parent dfb82db143
commit 3f5216dd2b
11 changed files with 249 additions and 149 deletions

View File

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

View File

@@ -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)

View File

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

View File

@@ -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)

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

@@ -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"