diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 96e3a90e..0960025a 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Source/Apps/assign/assign.asm b/Source/Apps/assign/assign.asm index 9d9ef4c5..f86a8e17 100644 --- a/Source/Apps/assign/assign.asm +++ b/Source/Apps/assign/assign.asm @@ -614,17 +614,11 @@ bootdra: ; Note: if MDFFENABLE is enabled, this wont select the ROM since the ; driver returns MD_AFSH (%00010111), and we cannot generalise this mask bootdro: - ld a,$FF ; specific mask to include all BITS + ld a,%11111101 ; ROM mask, excluding Bit 1, which varies ld (atrmask),a ; mask for device attributes - ld a,%00010100 ; specific mask for ROM drive. "MD_AROM" + ld a,%00010100 ; for values "MD_AROM", "MD_AFSH"; Att="000101x0" ld (atrcomp),a ; compare to after mask call bootadds ; do single slice assignment -; possible workaround below, not elegant. other woraround is to have a specific option for this code -; Better option is change the definitions for device attribute media types to -; 4=ROM, 5=RAM, 6=FLASH, 7=RAMF, (6,7 swapped) so much easir to mask RAM/ROM as only 1 bit difference -; ld a,%00010111 ; specific mask for ROM drive. "MD_AFSH" -; ld (atrcomp),a ; compare to after mask -; call bootadds ; do single slice assignment ret ; Finished, returning error ; ; FLOPPY DRIVE(S) diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 83279de0..4323e58d 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2343,10 +2343,8 @@ INIT2: LD C,(HL) ; PUT UNIT NUM IN C RST 08 ; CALL HBIOS LD A,C ; GET ATTRIBUTES - AND %10001111 ; ISOLATE TYPE BITS - CP %00000100 ; NOT FLOPPY, TYPE = ROM? - JR Z,INIT2A ; IF SO, ADJUST DEF DRIVE - CP %00000111 ; NOT FLOPPY, TYPE = FLASH? + AND %10001101 ; ISOLATE TYPE BITS, NOT FLOPPY + CP %00000100 ; TYPE=ROM/FLASH ; Att="0xxx01x0" JR NZ,INIT2X ; IF NOT THEN DONE ; INIT2A: diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index aa0a9578..170669eb 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -1162,7 +1162,7 @@ The non-Floppy specific bits are: |---------:|--------------------------------------------------| | 4 | LBA Capable | | 3-0 | Media Type: 0=Hard Disk, 1=CF, 2=SD, 3=USB, | -| | 4=ROM, 5=RAM, 6=RAMF, 7=FLASH, 8=CD-ROM, | +| | 4=ROM, 5=RAM, 6=FLASH, 7=RAMF, 8=CD-ROM, | | | 9=Cartridge | Device Type (D) indicates the specific hardware driver that handles the diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index e03cc1dd..0044822a 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -8701,8 +8701,8 @@ PS_DTSD .TEXT "SD Card$" PS_DTUSB .TEXT "USB Drive$" PS_DTROM .TEXT "ROM Disk$" PS_DTRAM .TEXT "RAM Disk$" +PS_DTFSH .TEXT "Flash ROM" PS_DTRF .TEXT "RAM Floppy$" -PS_DTFSH .TEXT "Flash Drive$" PS_DTCD .TEXT "CD-ROM$" PS_DTCRT .TEXT "Cartridge$" PS_DTOTHER .TEXT "???$" diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index e7e7fcea..1c899228 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -23,7 +23,7 @@ MD_ATTRIB .EQU 7 ; OFFSET OF ATTRIBUTE (BYTE) ; MD_AROM .EQU %00010100 ; ROM ATTRIBUTE MD_ARAM .EQU %00010101 ; RAM ATTRIBUTE -MD_AFSH .EQU %00010111 ; FLASH ATTRIBUTE +MD_AFSH .EQU %00010110 ; FLASH ATTRIBUTE ; MD_FDBG .EQU 0 ; FLASH DEBUG CODE MD_FVBS .EQU 1 ; FLASH VERBOSE OUTPUT @@ -109,9 +109,9 @@ MD_INIT: ; SETUP THE DIO TABLE ENTRIES ; #IF (MDROM & MDFFENABLE) - LD A,(MD_FFSEN) ; IF FLASH - OR A ; FILESYSTEM - JR NZ,MD_INIT1 ; CAPABLE, + LD A,(MD_FFSEN) ; IF FLASH + OR A ; FILESYSTEM + JR NZ,MD_INIT1 ; CAPABLE, LD A,MD_AFSH ; UPDATE ROM DIO LD (MD_CFGTBL + MD_CFGSIZ + MD_ATTRIB),A MD_INIT1: @@ -177,7 +177,7 @@ MD_RESET: RET ; ; -; +; MD_CAP: ; ASSUMES THAT UNIT 0 IS RAM, UNIT 1 IS ROM LD A,(IY+MD_DEV) ; GET DEVICE NUMBER OR A ; SET FLAGS @@ -259,7 +259,7 @@ MD_READ: ; #IF (MDFFENABLE) LD A,(IY+MD_ATTRIB) ; GET ADR OF SECTOR READ FUNC - LD BC,MD_RDSECF ; + LD BC,MD_RDSECF ; CP MD_AFSH ; RAM / ROM = MD_RDSEC JR Z,MD_RD1 ; FLASH = MD_RDSECF #ENDIF @@ -275,7 +275,7 @@ MD_WRITE: ; #IF (MDFFENABLE) LD A,(IY+MD_ATTRIB) ; GET ADR OF SECTOR WRITE FUNC - LD BC,MD_WRSECF ; + LD BC,MD_WRSECF ; CP MD_AFSH ; RAM / ROM = MD_WRSEC JR Z,MD_WR1 ; FLASH = MD_WRSECF #ENDIF @@ -371,7 +371,7 @@ MD_SECM: LD D,A ; FROM THE START LD E,0 ; - LD HL,MD_F4KBUF ; POINT TO THE SECTOR WE + LD HL,MD_F4KBUF ; POINT TO THE SECTOR WE ADD HL,DE ; WANT TO COPY LD DE,(MD_DSKBUF) ; @@ -385,7 +385,7 @@ MD_SECM: JP DMALDIR ; 4K SECTOR TO THE DISK BUFFER #ENDIF MD_NODMA: -#IF (!(DMAENABLE & (DMAMODE!=DMAMODE_NONE))) +#IF (!(DMAENABLE & (DMAMODE!=DMAMODE_NONE))) LD BC,512 ; COPY ONE 512B SECTOR FROM THE LDIR ; 4K SECTOR TO THE DISK BUFFER XOR A @@ -407,7 +407,7 @@ MD_NODMA: ; MD_IOSETUPF: LD L,(IY+MD_LBA+0) ; HL := LOW WORD OF LBA - LD H,(IY+MD_LBA+1) + LD H,(IY+MD_LBA+1) INC H ; SKIP FIRST 128MB (256 SECTORS) ; LD A,L ; SAVE LBA 4K @@ -421,7 +421,7 @@ MD_IOSETUPF: LD L,D ; DE:HL = HLX512 SLA H RL E - RL D + RL D ; RET ; @@ -443,7 +443,7 @@ MD_CALBAS: ; #IF (MD_FDBG==1) CALL PC_SPACE ; DISPLAY SECTOR - CALL PRTHEX32 ; SECTOR ADDRESS + CALL PRTHEX32 ; SECTOR ADDRESS CALL PC_SPACE ; IN DE:HL #ENDIF ; @@ -478,7 +478,7 @@ MD_WRSECF: ; CALLED FROM MD_RW PUSH HL ; IS THE SECTOR LD HL,(MD_LBA4K) ; WE WANT TO XOR A ; WRITE ALREADY - SBC HL,BC ; IN THE 4K + SBC HL,BC ; IN THE 4K POP HL ; BLOCK WE HAVE JR Z,MD_SECM1 ; IN THE BUFFER ; @@ -504,7 +504,7 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER LD D,A ; FROM THE START LD E,0 ; - LD HL,MD_F4KBUF ; POINT TO THE SECTOR WE + LD HL,MD_F4KBUF ; POINT TO THE SECTOR WE ADD HL,DE ; WANT TO COPY EX DE,HL ; @@ -562,7 +562,7 @@ MD_LBA4K .DW $FFFF ; LBA OF CURRENT SECTOR MD_FBAS .DW $FFFF ; BANK AND SECTOR #ENDIF ; -; READ RAM / ROM +; READ RAM / ROM ; MD_RDSEC: CALL MD_IOSETUP ; SETUP FOR MEMORY COPY @@ -744,7 +744,7 @@ MDSTR_LEN .TEXT "LEN=$" ; FLASH DRIVERS ;================================================================================================== ; -; UPPER RAM BANK IS ALWAYS AVAILABLE REGARDLESS OF MEMORY BANK SELECTION. +; UPPER RAM BANK IS ALWAYS AVAILABLE REGARDLESS OF MEMORY BANK SELECTION. ; HBX_BNKSEL AND HB_CURBNK ARE ALWAYS AVAILABLE IN UPPER MEMORY. ; ; THE STACK IS IN UPPER MEMORY DURING BIOS INITIALIZATION BUT IS IN LOWER @@ -754,7 +754,7 @@ MDSTR_LEN .TEXT "LEN=$" ; AND THE FLASH CHIP IS SWITCHED INTO THE LOWER BANK. ; ; EACH FLASH ROUTINE MUST FIT INTO TO THE HBX_BUF, INCLUDING IT'S LOCAL STACK WHICH -; IS REQUIRED FOR CALLING THE BANK SWITCH ROUTINES. +; IS REQUIRED FOR CALLING THE BANK SWITCH ROUTINES. ; ; INSPIRED BY WILL SOWERBUTTS FLASH4 UTILITY - https://github.com/willsowerbutts/flash4/ ; @@ -775,7 +775,7 @@ MD_FINIT: CALL MD_CALCU ; DISPLAY ; #IF (MD_FVBS==1) - CALL NEWLINE ; OF UNITS + CALL NEWLINE ; OF UNITS PRTS("MD: FLASH=$") CALL PRTDECB ; CONFIGURED FOR. #ENDIF @@ -786,14 +786,14 @@ MD_PROBE: LD E,C ; LD H,D ; WE INCREASE E BY $08 LD L,D ; ON EACH CYCLE THROUGH -; +; PUSH BC #IF (MD_FVBS==1) CALL PC_SPACE CALL MD_CALCU INC A SUB B ; PRINT - CALL PRTDECB ; DEVICE + CALL PRTDECB ; DEVICE LD A,'=' ; NUMBER CALL COUT #ENDIF @@ -872,7 +872,7 @@ MD_NXT1: CP C JR NZ,MD_NXT0 ; FIRST BYTE DOES NOT MATCH ; - INC HL + INC HL LD A,(HL) CP B DEC HL @@ -903,18 +903,18 @@ MD_NXT2: ;====================================================================== ; COMMON FUNCTION CALL FOR: ; -; MD_FIDEN_R - IDENTIFY FLASH CHIP +; MD_FIDEN_R - IDENTIFY FLASH CHIP ; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED ; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED ; ON EXIT BC CONTAINS THE CHIP ID BYTES. -; A NO STATUS IS RETURNED +; A NO STATUS IS RETURNED ; -; MD_FERAS_R - ERASE FLASH SECTOR +; MD_FERAS_R - ERASE FLASH SECTOR ; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED ; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED ; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL ; -; MD_FREAD_R - READ FLASH SECTOR +; MD_FREAD_R - READ FLASH SECTOR ; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED ; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED ; IX POINTS TO WHERE TO SAVE DATA @@ -926,7 +926,7 @@ MD_NXT2: ; IX POINTS TO DATA TO COMPARE. ; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL ; -; MD_FWRIT_R - WRITE FLASH SECTOR +; MD_FWRIT_R - WRITE FLASH SECTOR ; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED ; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED ; IX POINTS TO DATA TO BE WRITTEN @@ -979,7 +979,7 @@ MD_FNCALL: ; USING HBX_BUF FOR CODE AREA LD A,C ; RETURN WITH STATUS IN A RET ; RETURN TO MD_READF, MD_WRITEF ; -MD_SAVSTK .DW 0 +MD_SAVSTK .DW 0 ; #INCLUDE "flashlib.inc" ; diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 6d80fc81..9fa5eb83 100644 --- a/Source/HBIOS/rf.asm +++ b/Source/HBIOS/rf.asm @@ -13,7 +13,7 @@ RF_U3IO .EQU $AC ; BASED ADDRESS OF RAMFLOPPY 4 ; IO PORT OFFSETS ; RF_DAT .EQU 0 ; DATA IN/OUT ONLY TO SRAM - R/W -RF_AL .EQU 1 ; ADDRESS LOW FOR RAMF MEMORY - W/O +RF_AL .EQU 1 ; ADDRESS LOW FOR RAMF MEMORY - W/O RF_AH .EQU 2 ; ADDRESS HIGH FOR RAMF MEMORY - W/O RF_ST .EQU 3 ; STATUS PORT - R/O ; @@ -30,7 +30,7 @@ RF_IOAD .EQU 7 ; OFFSET OF DEVICE IO ADDRESS #IF ($RF_DEVCNT > RF_MAXRF) .ECHO "*** ONLY 4 RAM FLOPPY DEVICES SUPPORTED ***\n" -RF_DEVCNT .SET RF_MAXRF +RF_DEVCNT .SET RF_MAXRF #ENDIF ; ; DEVICE CONFIG TABLE (RAM DEVICE FIRST TO MAKE IT ALWAYS FIRST DRIVE) @@ -97,7 +97,7 @@ RF_CFGTBL: ; RF_INIT: CALL NEWLINE ; FORMATTING - PRTS("RF:$") + PRTS("RF:$") LD B,RF_DEVCNT ; LOOP CONTROL LD IY,RF_CFGTBL ; START OF CFG TABLE @@ -113,7 +113,7 @@ RF_INIT0: POP BC ; RESTORE BC DJNZ RF_INIT0 ; LOOP AS NEEDED - PRTS(" DEVICES=$") ; DISPLAY NUMBER + PRTS(" DEVICES=$") ; DISPLAY NUMBER LD A,RF_DEVCNT ; OF DEVICES CALL PRTDECB ; @@ -123,7 +123,7 @@ RF_INIT0: RF_UNIT: PRTS(" IO=0x$") ; DISPLAY LD A,(IY+RF_IOAD) ; PORT AND - CALL PRTHEXBYTE ; WRITE + CALL PRTHEXBYTE ; WRITE PRTS(" WP=$") ; PROTECT ADD A,RF_ST ; STATUS OF LD C,A ; THIS DEVICE @@ -198,7 +198,7 @@ RF_GEOM: RF_DEVICE: LD D,DIODEV_RF ; D := DEVICE TYPE LD E,(IY+RF_DEV) ; E := PHYSICAL DEVICE NUMBER - LD C,%00010110 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY + LD C,%00010111 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY LD H,0 ; H := 0, DRIVER HAS NO MODES LD L,(IY+RF_IOAD) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS @@ -345,7 +345,7 @@ RF_SETADR: OR RF_AL ; ADDRESS TO THE LD C,A ; TO THE MSB AND LD A,(IY+RF_LBA+0) ; LSB SECTRK - OUT (C),A ; REGISTERS. + OUT (C),A ; REGISTERS. LD A,(IY+RF_LBA+1) ; BYTE COUNTER INC C ; IS RESET OUT (C),A