SFD700 bug fixes
This commit is contained in:
@@ -136,9 +136,9 @@ BNKSWSEL: MACRO
|
||||
ENDIF
|
||||
IF BUILD_SFD700 = 1
|
||||
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
|
||||
INC A ; FXXX are 4K banks, EXXX are 2K banks.
|
||||
INC A ; FXXX are 4K banks, EXXX are 4K banks.
|
||||
JR BNKSWJMP2
|
||||
BNKSWJMP: LD A,(ROMBK1) ; All other banks place the current active ROM into F000:FXXX space.
|
||||
BNKSWJMP2: OUT (REG_FXXX),A
|
||||
|
||||
@@ -51,8 +51,8 @@ VIDEOMODULE_ENA EQU 0 ; Targe
|
||||
; Only enable one BUILD_<> operative. Customisations applied according
|
||||
; to the target.
|
||||
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_PICOZ80 EQU 1 ; RFS is built for the picoZ80 board.
|
||||
BUILD_SFD700 EQU 1 ; RFS is built for the SFD700 Floppy Disk Controller.
|
||||
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_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
|
||||
ROMBANK6 EQU 6 + BNKDEFUROM ; : RFS Bank 6
|
||||
ROMBANK7 EQU 8 + BNKDEFUROM ; : RFS Bank 7 - Memory and timer test utilities.
|
||||
ROMBANK8 EQU 8 + BNKDEFUROM ; Free : RFS Bank 8 -
|
||||
ROMBANK9 EQU 9 + BNKDEFUROM ; Free : RFS Bank 9 -
|
||||
ROMBANK10 EQU 10 + BNKDEFUROM ; Free : RFS Bank 10 -
|
||||
ROMBANK11 EQU 11 + BNKDEFUROM ; Free : RFS Bank 11 -
|
||||
ROMBANK12 EQU 12 + BNKDEFUROM ; Free : CBIOS Bank 1 - Utilities
|
||||
ROMBANK13 EQU 13 + BNKDEFUROM ; Free : CBIOS Bank 2 - Screen / ANSI Terminal
|
||||
ROMBANK14 EQU 14 + BNKDEFUROM ; Free : CBIOS Bank 3 - SD Card
|
||||
ROMBANK15 EQU 15 + BNKDEFUROM ; Free : CBIOS Bank 4 - Floppy disk controller.
|
||||
ROMBANK8 EQU 10 + BNKDEFUROM ; Free : RFS Bank 8 -
|
||||
ROMBANK9 EQU 12 + BNKDEFUROM ; Free : RFS Bank 9 -
|
||||
ROMBANK10 EQU 14 + BNKDEFUROM ; Free : RFS Bank 10 -
|
||||
ROMBANK11 EQU 16 + BNKDEFUROM ; Free : RFS Bank 11 -
|
||||
ROMBANK12 EQU 17 + BNKDEFUROM ; Free : CBIOS Bank 1 - Utilities
|
||||
ROMBANK13 EQU 18 + BNKDEFUROM ; Free : CBIOS Bank 2 - Screen / ANSI Terminal
|
||||
ROMBANK14 EQU 19 + BNKDEFUROM ; Free : CBIOS Bank 3 - SD Card
|
||||
ROMBANK15 EQU 20 + BNKDEFUROM ; Free : CBIOS Bank 4 - Floppy disk controller.
|
||||
ENDIF
|
||||
|
||||
; MMC/SD command (SPI mode)
|
||||
|
||||
226
asm/rfs.asm
226
asm/rfs.asm
@@ -48,6 +48,116 @@
|
||||
; Bring in additional resources.
|
||||
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.
|
||||
@@ -633,10 +743,10 @@ SETMODE80: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
||||
JP MONIT
|
||||
ENDIF
|
||||
|
||||
NOTZPU: LDDE MSGNOTZINST ; No tranZPUter installed.
|
||||
LD HL,PRINTMSG
|
||||
CALL BKSW0to6
|
||||
RET
|
||||
;NOTZPU: LDDE MSGNOTZINST ; No tranZPUter installed.
|
||||
; LD HL,PRINTMSG
|
||||
; CALL BKSW0to6
|
||||
; RET
|
||||
|
||||
; 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
|
||||
@@ -1490,111 +1600,3 @@ MEND:
|
||||
INCLUDE "rfs_bank9.asm"
|
||||
INCLUDE "rfs_bank10.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
|
||||
RET
|
||||
|
||||
FLOPPY: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
||||
FLOPPY: IF BUILD_ROMDISK+BUILD_PICOZ80+BUILD_SFD700 = 1
|
||||
IF BUILD_MZ80A = 1
|
||||
PUSH DE ; Preserve pointer to input buffer.
|
||||
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/>.
|
||||
;--------------------------------------------------------------------------------------------------------
|
||||
|
||||
IF BUILD_SFD700 = 1
|
||||
ORG 0E000H
|
||||
ALIGN 0E300H
|
||||
DB "BANK10"
|
||||
ALIGN UROMADDR
|
||||
ENDIF
|
||||
|
||||
;===========================================================
|
||||
;
|
||||
; USER ROM BANK 10 -
|
||||
@@ -144,6 +151,7 @@ BKSWRET10: POP AF ; G
|
||||
ORG 0EFF8h
|
||||
DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
|
||||
ENDIF
|
||||
|
||||
; SFD700 - Pad to 10000H
|
||||
IF BUILD_SFD700 = 1
|
||||
ALIGN 10000H
|
||||
|
||||
@@ -37,6 +37,13 @@
|
||||
;- 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 -
|
||||
@@ -391,7 +398,7 @@ HELPSCR: IF BUILD_ROMDISK+BUILD_PICOZ80 = 1
|
||||
DB " - add NX for no exec, ie.LRNX.", 00DH
|
||||
DB "MXXXX - edit memory starting at X.", 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 "SD2T - copy sd card 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.?
|
||||
JP NZ,DASM_FIND ; NO=Do regular search
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
@@ -172,8 +172,8 @@ DASM_JUSTV: CALL DSMLFJVAL ; Left justify VAL_BUF(Trim leading zeros)
|
||||
CALL DASMGETPARM ; Build parameter string with value data
|
||||
|
||||
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 HL,(ADDR_LO) ; Address ->HL
|
||||
LD A,(ML_BTCOUNT) ;Get Total Byte count from lookup table
|
||||
@@ -193,11 +193,13 @@ DASM_SPCOUT: CALL PRNTS ; Pad with spaces to 15 bytes
|
||||
DEC C
|
||||
JP NZ,DASM_SPCOUT ; DONE? NO=Continue
|
||||
|
||||
LD HL,ASM_BUF ; Send Assembly string
|
||||
LD HL,ASM_BUF ; Send Assembly string
|
||||
EX DE,HL
|
||||
LD HL,PRINTMSG
|
||||
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
|
||||
CP 0FFh ; Using End Address?
|
||||
JP Z,DASM_CKEADR
|
||||
@@ -212,11 +214,42 @@ DASM_CKEADR: LD HL,(ASM_ADDR) ; Get End Address
|
||||
RET M ; If resulte negative - Exit
|
||||
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
|
||||
LD HL,PRINTMSG
|
||||
CALL BKSW7to6
|
||||
LD A,ROMBANK7+1 ; Restore F-page.
|
||||
OUT (REG_FXXX),A
|
||||
RET
|
||||
|
||||
|
||||
;******************************************************************
|
||||
; Dis-Assembler Routines
|
||||
;******************************************************************
|
||||
@@ -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
|
||||
; 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
|
||||
DSMFN_LOOP1: LD A,(IX+0)
|
||||
CP '#' ;Is Row Byte0='#'?
|
||||
@@ -605,8 +639,9 @@ DSMFN_MATCH: LD (ROW_ADDR),IX ; Save IX->ROW_ADDR
|
||||
LD (ML_BUF+1),A ; Save row byte8 ->ML_BUF1
|
||||
LD A,(IX+9)
|
||||
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
|
||||
EI ;Re-enable interrupts after table search.
|
||||
RET
|
||||
|
||||
;******************************************************************
|
||||
@@ -728,15 +763,19 @@ ASMLOOPEXIT: LD BC,VAL_BUF
|
||||
ASM_ERR_INS: LD DE,MSGNOINSTR
|
||||
LD HL,PRINTMSG
|
||||
CALL BKSW7to6
|
||||
JP ASM_LOOP1 ; Get another line of ASM input...
|
||||
|
||||
LD A,ROMBANK7+1 ; Restore F-page.
|
||||
OUT (REG_FXXX),A
|
||||
JP ASM_LOOP1 ; Get another line of ASM input...
|
||||
|
||||
ASM_FINDPRM: CALL ASMFINDPARM ; Look for matching parameter pattern
|
||||
LD A,(ML_BUF+2) ; Found one? NO=ERROR
|
||||
CP 0
|
||||
LD A,(ML_BUF+2) ; Found one? NO=ERROR
|
||||
CP 0
|
||||
JP NZ,ASMOUTML
|
||||
LD DE,MSGNOPARAM
|
||||
LD HL,PRINTMSG
|
||||
CALL BKSW7to6
|
||||
LD A,ROMBANK7+1 ; Restore F-page.
|
||||
OUT (REG_FXXX),A
|
||||
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
|
||||
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)
|
||||
JP DASM_JUSTV ; Skip to value justification
|
||||
|
||||
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
|
||||
|
||||
; Set up VAL_BUF defaults
|
||||
@@ -1014,7 +1053,7 @@ DASM_JUSTV: CALL DSMLFJVAL ; Left justify VAL_BUF
|
||||
|
||||
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 C,A
|
||||
LD HL,(ADDR_LO)
|
||||
@@ -1054,6 +1093,36 @@ DASM_CKEADR: LD HL,(ASM_ADDR)
|
||||
RET M
|
||||
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
|
||||
LD (BNKSELMROM),A
|
||||
DASM_ERR: LD DE,MSGNOTFND
|
||||
|
||||
@@ -36,6 +36,13 @@
|
||||
;- 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 -
|
||||
|
||||
@@ -38,6 +38,13 @@
|
||||
;- 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 -
|
||||
|
||||
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
|
||||
# | | | |----- Reserved
|
||||
# | | | | |-- 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/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_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/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 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/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/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 0 0 0 0 "${MZB_PATH}/Common/5z009-1b.mzf"
|
||||
addMZFToROMImageList 0 0 0 0 "${MZB_PATH}/Common/basic.${SECTORSIZE}.bin"
|
||||
|
||||
Reference in New Issue
Block a user