From 8fe3526ecde2dc7494a1a800d986daf1d5ed6ac9 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 30 Mar 2016 17:10:08 -0700 Subject: [PATCH] API Revisions / Cleanup - Improved banked copy size and performance - Revised API for SETCPY, BNKCPY, SETBNK, and GETBNK --- Source/Apps/OSLdr.asm | 1 + Source/CBIOS/cbios.asm | 85 ++-- Source/CBIOS/util.asm | 27 +- Source/CBIOS/ver.inc | 6 +- Source/HBIOS/API.txt | 76 ++- Source/HBIOS/Config/mk4_cvdu.asm | 4 +- Source/HBIOS/Config/mk4_diskio3.asm | 4 +- Source/HBIOS/Config/mk4_dsd.asm | 4 +- Source/HBIOS/Config/mk4_propio.asm | 4 +- Source/HBIOS/Config/mk4_std.asm | 4 +- Source/HBIOS/Config/n8_2312.asm | 4 +- Source/HBIOS/Config/n8_2511.asm | 4 +- Source/HBIOS/Config/sbc_ci.asm | 5 +- Source/HBIOS/Config/sbc_cvdu.asm | 4 +- Source/HBIOS/Config/sbc_dide.asm | 4 +- Source/HBIOS/Config/sbc_diskio.asm | 4 +- Source/HBIOS/Config/sbc_diskio3+cvdu.asm | 4 +- Source/HBIOS/Config/sbc_diskio3.asm | 4 +- Source/HBIOS/Config/sbc_dsd.asm | 4 +- Source/HBIOS/Config/sbc_mfpic.asm | 4 +- Source/HBIOS/Config/sbc_ppide.asm | 4 +- Source/HBIOS/Config/sbc_ppisd.asm | 4 +- Source/HBIOS/Config/sbc_propio.asm | 4 +- Source/HBIOS/Config/sbc_rf.asm | 4 +- Source/HBIOS/Config/sbc_simh.asm | 4 +- Source/HBIOS/Config/sbc_std.asm | 4 +- Source/HBIOS/Config/sbc_vdu.asm | 4 +- Source/HBIOS/Config/zeta2_ppide.asm | 4 +- Source/HBIOS/Config/zeta2_ppisd.asm | 4 +- Source/HBIOS/Config/zeta2_ppp.asm | 4 +- Source/HBIOS/Config/zeta2_std.asm | 4 +- Source/HBIOS/Config/zeta_ppide.asm | 4 +- Source/HBIOS/Config/zeta_ppisd.asm | 4 +- Source/HBIOS/Config/zeta_ppp.asm | 4 +- Source/HBIOS/Config/zeta_std.asm | 4 +- Source/HBIOS/ansi.asm | 14 +- Source/HBIOS/asci.asm | 6 +- Source/HBIOS/cvdu_font.asm | 2 + Source/HBIOS/fd.asm | 11 +- Source/HBIOS/hbios.asm | 316 +++++++------ Source/HBIOS/hbios.inc | 24 +- Source/HBIOS/ide.asm | 10 +- Source/HBIOS/ppide.asm | 10 +- Source/HBIOS/{scg.asm => tms.asm} | 500 ++++++++++---------- Source/HBIOS/{scg_font.inc => tms_font.inc} | 4 +- Source/HBIOS/tty.asm | 14 +- Source/HBIOS/uart.asm | 6 +- Source/HBIOS/util.asm | 27 +- 48 files changed, 668 insertions(+), 592 deletions(-) rename Source/HBIOS/{scg.asm => tms.asm} (59%) rename Source/HBIOS/{scg_font.inc => tms_font.inc} (97%) diff --git a/Source/Apps/OSLdr.asm b/Source/Apps/OSLdr.asm index bb2cf5d1..81461a9c 100644 --- a/Source/Apps/OSLdr.asm +++ b/Source/Apps/OSLdr.asm @@ -247,6 +247,7 @@ init1: ld (biover),hl ; save version ld b,bfgbnk ; HBIOS func: get current bank rst 08 ; do it + ld a,c ; move to A ld (tpabnk),a ; save it init2: diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index babc9dc6..a0aed222 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -313,13 +313,16 @@ WBOOT: RST 08 ; DO IT #ELSE ; RESTORE COMMAND PROCESSOR FROM CACHE IN HB BANK - LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + ;LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD DE,(BNKBIOS) ; D = DEST (USER BANK), E = SRC (BIOS BANK) - RST 08 ; SET BANKS FOR INTERBANK COPY - LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD HL,CCP_SIZ ; HL = COPY LEN = SIZE OF COMMAND PROCESSOR + RST 08 ; DO IT + ;LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY LD HL,(CCPBUF) ; COPY FROM FIXED LOCATION IN HB BANK LD DE,CCP_LOC ; TO CCP LOCATION IN USR BANK - LD IX,CCP_SIZ ; COPY CONTENTS OF COMMAND PROCESSOR + ;LD IX,CCP_SIZ ; COPY CONTENTS OF COMMAND PROCESSOR RST 08 ; DO IT #ENDIF ; @@ -1056,19 +1059,22 @@ BLK_BLOCK: LDIR RET #ELSE - LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + ;LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD A,(BNKUSER) ; GET USER BANK LD E,A ; E = SOURCE (USER BANK) LD A,(BNKBIOS) ; GET DEST BANK LD D,A ; D = DEST (BIOS BANK) - RST 08 ; SET BANKS FOR INTERBANK COPY + LD HL,128 ; HL = COPY LEN = DMA BUFFER SIZE + RST 08 ; DO IT CALL BLK_SETUP ; SETUP SOURCE AND DESTINATION - LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + ;LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY EX DE,HL ; SWAP HL/DE FOR BLOCK OPERATION - PUSH IX ; SAVE IX - LD IX,128 ; DMA BUFFER SIZE + ;PUSH IX ; SAVE IX + ;LD IX,128 ; DMA BUFFER SIZE RST 08 ; DO IT - POP IX ; RESTORE IX + ;POP IX ; RESTORE IX RET #ENDIF ; @@ -1083,15 +1089,18 @@ BLK_DEBLOCK: LDIR RET #ELSE - LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + ;LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD DE,(BNKBIOS) ; E = SOURCE (BIOS BANK), D = DEST (USER BANK) + LD HL,128 ; HL = COPY LEN = DMA BUFFER SIZE RST 08 ; DO IT CALL BLK_SETUP ; SETUP SOURCE AND DESTINATION - LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY - PUSH IX ; SAVE IX - LD IX,128 ; DMA BUFFER SIZE + ;LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY + ;PUSH IX ; SAVE IX + ;LD IX,128 ; DMA BUFFER SIZE RST 08 ; DO IT - POP IX ; RESTORE IX + ;POP IX ; RESTORE IX RET #ENDIF ; @@ -1259,14 +1268,13 @@ DSK_WRITE: #IFDEF PLTUNA DSK_IO: -DSK_IO1: PUSH BC LD DE,(HSTTRK) ; GET TRACK INTO HL LD B,4 ; PREPARE TO LEFT SHIFT BY 4 BITS -DSK_IO2: +DSK_IO1: SLA E ; SHIFT DE LEFT BY 4 BITS RL D - DJNZ DSK_IO2 ; LOOP TILL ALL BITS DONE + DJNZ DSK_IO1 ; LOOP TILL ALL BITS DONE LD A,(HSTSEC) ; GET THE SECTOR INTO A AND $0F ; GET RID OF TOP NIBBLE OR E ; COMBINE WITH E @@ -1319,13 +1327,16 @@ CHS: CP DIODEV_FD ; FLOPPY? JR NZ,CHSHD ; IF NOT, DO HD CHS XLAT ; -; FLOPPY SPECIFIC TRANSLATION -; CURRENTLY LEAVES HEAD VALUE IMBEDDED IN -; TRACK WHICH HBIOS FD DRIVER HANDLES +; FLOPPY SPECIFIC TRANSLATION ASSUMES FLOPPY IS DOUBLE-SIDED AND +; USES LOW ORDER BIT OF TRACK AS HEAD VALUE +; +; HBIOS SEEK: HL=CYLINDER, D=HEAD, E=SECTOR ; - - LD DE,(HSTSEC) ; SECTOR DE, HEAD(D) BECOMES ZERO - LD HL,(HSTTRK) ; TRACK -> TRACK (LOW BIT HAS HEAD) + LD DE,(HSTSEC) ; SECTOR -> DE, HEAD(D) BECOMES ZERO + LD HL,(HSTTRK) ; TRACK -> HL (LOW BIT HAS HEAD) + SRL H ; SHIFT HEAD BIT OUT OF HL + RR L ; ... AND INTO CARRY + RL D ; CARRY BIT (HEAD) INTO D JR CHS2 ; ; HARD DISK SPECIFIC TRANSLATION @@ -1811,16 +1822,19 @@ INIT: LD (9),HL ; STORE AT 0x0009 ; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) - ; FOR USE DURING INIT - LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + ; FOR REFERENCE USE DURING INIT + ;LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD DE,(BNKBIOS) ; D = DEST (USER BANK), E = SOURCE (BIOS BANK) - RST 08 ; SET BANKS FOR INTERBANK COPY - LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD HL,HCB_SIZ ; HL = COPY LEN = SIZE OF HCB + RST 08 ; DO IT + ;LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY LD HL,HCB_LOC ; COPY FROM FIXED LOCATION IN HB BANK LD DE,HCB ; TO TEMP LOCATION IN USR BANK - LD IX,HCB_SIZ ; COPY CONTENTS OF HCB + ;LD IX,HCB_SIZ ; COPY CONTENTS OF HCB RST 08 ; DO IT - + ; CAPTURE RAM DRIVE STARTING BANK LD A,(HCB + HCB_BIDRAMD0) LD (BNKRAMD),A @@ -1861,22 +1875,25 @@ INIT: POP DE ; RECOVER OPERATING BANK RST 08 ; DO IT #ELSE - ; SAVE COMMAND PROCESSOR TO DEDICATED CACHE IN RAM BANK 1 + ; SAVE COMMAND PROCESSOR TO ALLOCATED CACHE IN RAM BANK 1 LD B,BF_SYSALLOC ; HBIOS FUNC: ALLOCATE HEAP MEMORY LD HL,CCP_SIZ ; SIZE TO ALLOC (SIZE OF CCP) RST 08 ; DO IT CALL NZ,PANIC ; BIG PROBLEM LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) - LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + ;LD B,BF_SYSXCPY ; HBIOS FUNC: SYSTEM EXTENDED COPY + LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD A,(BNKUSER) ; GET USER BANK LD E,A ; E = SOURCE (USER BANK) LD A,(BNKBIOS) ; GET BIOS BANK LD D,A ; D = DEST (BIOS BANK) + LD HL,CCP_SIZ ; HL = COPY LEN = SIZE OF COMMAND PROCESSOR RST 08 ; DO IT - LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + ;LD B,BF_SYSCPY ; HBIOS FUNC: SYSTEM COPY + LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY LD HL,CCP_LOC ; COPY FROM CCP LOCATION IN USR BANK LD DE,(CCPBUF) ; TO ALLOCATED LOCATION IN HB BANK - LD IX,CCP_SIZ ; COPY CONTENTS OF COMMAND PROCESSOR + ;LD IX,CCP_SIZ ; COPY CONTENTS OF COMMAND PROCESSOR RST 08 ; DO IT #ENDIF diff --git a/Source/CBIOS/util.asm b/Source/CBIOS/util.asm index 9b928827..023688ed 100644 --- a/Source/CBIOS/util.asm +++ b/Source/CBIOS/util.asm @@ -140,16 +140,16 @@ _REGDMP: LD (REGDMP_PC),HL ; SAVE PC VALUE EX (SP),HL ; BACK THE WAY IT WAS - LD (UTSTKSAV),SP ; SAVE ORIGINAL STACK POINTER - LD SP,UTPRVSTK ; SWITCH TO PRIVATE STACK + LD (REGDMP_SP),SP ; SAVE STACK POINTER + + ;LD (RD_STKSAV),SP ; SAVE ORIGINAL STACK POINTER + ;LD SP,RD_STACK ; SWITCH TO PRIVATE STACK PUSH AF PUSH BC PUSH DE PUSH HL - CALL PC_LBKT - PUSH AF LD A,'@' CALL COUT @@ -157,9 +157,9 @@ _REGDMP: PUSH BC LD BC,(REGDMP_PC) - CALL PRTHEXWORD + CALL PRTHEXWORD ; PC POP BC - CALL PC_COLON + CALL PC_LBKT PUSH BC PUSH AF POP BC @@ -176,7 +176,7 @@ _REGDMP: POP BC CALL PRTHEXWORD ; HL CALL PC_COLON - LD BC,(UTSTKSAV) + LD BC,(REGDMP_SP) CALL PRTHEXWORD ; SP CALL PC_RBKT @@ -187,12 +187,17 @@ _REGDMP: POP BC POP AF - LD SP,(UTSTKSAV) ; BACK TO ORIGINAL STACK FRAME + ;LD SP,(RD_STKSAV) ; BACK TO ORIGINAL STACK FRAME JP $FFFF ; RETURN, $FFFF IS DYNAMICALLY UPDATED REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE ; REGDMP_PC .DW 0 +REGDMP_SP .DW 0 +; +;RD_STKSAV .DW 0 +; .FILL $FF,16*2 ; 16 LEVEL PRIVATE STACK +;RD_STACK .EQU $ ; ; ; @@ -425,9 +430,3 @@ PRTHEXBUF1: INC DE DJNZ PRTHEXBUF1 RET -; -; PRIVATE STACK -; -UTSTKSAV .DW 0 - .FILL $FF,64 ; 32 LEVEL PRIVATE STACK SPACE -UTPRVSTK .EQU $ \ No newline at end of file diff --git a/Source/CBIOS/ver.inc b/Source/CBIOS/ver.inc index 2e9018a2..89ffed7b 100644 --- a/Source/CBIOS/ver.inc +++ b/Source/CBIOS/ver.inc @@ -1,5 +1,5 @@ #DEFINE RMJ 2 -#DEFINE RMN 7 -#DEFINE RUP 1 +#DEFINE RMN 8 +#DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "2.7.1" +#DEFINE BIOSVER "2.8.0-pre.1" diff --git a/Source/HBIOS/API.txt b/Source/HBIOS/API.txt index 40881410..a68cad94 100644 --- a/Source/HBIOS/API.txt +++ b/Source/HBIOS/API.txt @@ -2,7 +2,39 @@ HBIOS Management Functions ========================== -GET ($07): +SETBNK ($F0): + B=Function A=Result + C=Bank Id C=Previous Bank Id + +GETBNK ($F1): + B=Function A=Result + C=Bank Id + +SETCPY ($F2): + B=Function A=Result + D=Destination Bank Id + E=Source Bank Id + HL=Count of Bytes to Copy + +BNKCPY ($F3): + B=Function A=Result + DE=Destination Address + HL=Source Address + +ALLOC ($F4): + B=Function A=Result + HL=Size HL=Address of Allocated Memory Block + +FREE ($F5): + B=Function A=Result + HL=Address of Memory Block to Free + +VER ($F6): + B=Function A=Result + C=Reserved (set to 0) DE=Version (Maj/Min/Upd/Pat) + L=Platform Id + +GET ($F7): BC=Function/Subfunction A=Result Subfunctions: @@ -40,7 +72,7 @@ GET ($07): D=BIOS Bank Id E=User Bank Id -SET ($08): +SET ($F8): BC=Function/Subfunction A=Result BOOTINFO ($E0): @@ -48,6 +80,17 @@ SET ($08): L=Boot Bank Id DE=Boot Volume (Disk Unit/Slice) +PEEK: ($F9): + B=Function A=Result + D=Bank E=Byte Value + HL=Address + +POKE: ($FA): + B=Function A=Result + D=Bank + E=Byte Value + HL=Address + ================ Serial Functions ================ @@ -76,18 +119,22 @@ OST ($03): INIT ($04): BC=Function/Unit A=Result DE=Line Characteristics - L=Terminal Type + L=Terminal Type? QUERY ($05) BC=Function/Unit A=Result DE=Line Characteristics (Baud, Flow Control, etc.) - H=Device Type (RS-232, Terminal, etc.) - L=Terminal Type (TTY, VT-102, etc.) + L=Terminal Type? (TTY, VT-100, etc.) DEVICE ($06): BC=Function/Unit A=Result D=Device Type E=Device Number + C=Device Attributes + + Serial Device Attributes Byte: + ;7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM) + H=Media Type (RS-232, Terminal, etc.) L=Video Unit Id (if Media Type == VDA) @@ -141,13 +188,13 @@ DEVICE ($17) BC=Function/Unit A=Result D=Device Type (MD, FD, IDE, etc.) E=Device Number (0..n) - C=Disk Attributes + C=Device Attributes Report the Device Type (Floppy, IDE, SD, etc.) and Device Number. Call does not perform any I/O and succeeds even if the device is in an error state. It does not reset the unit status. - Disk Device Attribute Byte: + Disk Device Attributes Byte: 7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM) If Floppy: @@ -182,7 +229,7 @@ CAPACITY ($1A): BC=Block Size A=Result - Return device capacity information. + Report current media capacity information. If media is unknown, return error (no media) GEOMETRY ($1B): @@ -193,16 +240,9 @@ GEOMETRY ($1B): BC=Block Size A=Result - Return device geometry information. + Report current media geometry information. If media is unknown, return error (no media) -INFO ($1F): - BC=Function/Sub-function A=Result - - C=0: Report total unit count in system: - BC=Function/Sub-function A=Result - B=Count - =============== Video Functions =============== @@ -227,11 +267,11 @@ Serial 0 UART0: RS-232 38400,8N1,HFC Serial 1 PRPCON0: Direct -- Serial 2 CVDU0: Direct -- Serial 2 VDU0: Direct -- -Serial 2 SCG0: Direct -- +Serial 2 TMS0: Direct -- Video 0 PRPCON0: VDA Text 80x25, ANSI Video 1 CVDU0: VDA Text 80x25, ANSI Video 2 VDU0: VDA Text 80x25, ANSI -Video 3 SCG0: VDA Text 40x25, TTY +Video 3 TMS0: VDA Text 40x25, TTY Unit: Function Group & Unit Index Device: _DEVICE Device Type & Device Num diff --git a/Source/HBIOS/Config/mk4_cvdu.asm b/Source/HBIOS/Config/mk4_cvdu.asm index b332d2e4..bec6052d 100644 --- a/Source/HBIOS/Config/mk4_cvdu.asm +++ b/Source/HBIOS/Config/mk4_cvdu.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU TRUE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/mk4_diskio3.asm b/Source/HBIOS/Config/mk4_diskio3.asm index 8c0a16eb..5b8fcfd7 100644 --- a/Source/HBIOS/Config/mk4_diskio3.asm +++ b/Source/HBIOS/Config/mk4_diskio3.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/mk4_dsd.asm b/Source/HBIOS/Config/mk4_dsd.asm index d6e9ae76..8dd86238 100644 --- a/Source/HBIOS/Config/mk4_dsd.asm +++ b/Source/HBIOS/Config/mk4_dsd.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/mk4_propio.asm b/Source/HBIOS/Config/mk4_propio.asm index e162519c..4979f4c7 100644 --- a/Source/HBIOS/Config/mk4_propio.asm +++ b/Source/HBIOS/Config/mk4_propio.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/mk4_std.asm b/Source/HBIOS/Config/mk4_std.asm index 2bdffa69..39e04e91 100644 --- a/Source/HBIOS/Config/mk4_std.asm +++ b/Source/HBIOS/Config/mk4_std.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/n8_2312.asm b/Source/HBIOS/Config/n8_2312.asm index 5bab0803..1b0aca3a 100644 --- a/Source/HBIOS/Config/n8_2312.asm +++ b/Source/HBIOS/Config/n8_2312.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/n8_2511.asm b/Source/HBIOS/Config/n8_2511.asm index 84a9991a..d0657d9c 100644 --- a/Source/HBIOS/Config/n8_2511.asm +++ b/Source/HBIOS/Config/n8_2511.asm @@ -27,8 +27,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_ASCIB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_ci.asm b/Source/HBIOS/Config/sbc_ci.asm index d0aaff44..71698544 100644 --- a/Source/HBIOS/Config/sbc_ci.asm +++ b/Source/HBIOS/Config/sbc_ci.asm @@ -37,8 +37,9 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NEC ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_cvdu.asm b/Source/HBIOS/Config/sbc_cvdu.asm index e7ad49ed..4cb8a04e 100644 --- a/Source/HBIOS/Config/sbc_cvdu.asm +++ b/Source/HBIOS/Config/sbc_cvdu.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU TRUE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_dide.asm b/Source/HBIOS/Config/sbc_dide.asm index 9946042a..94545cfb 100644 --- a/Source/HBIOS/Config/sbc_dide.asm +++ b/Source/HBIOS/Config/sbc_dide.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_diskio.asm b/Source/HBIOS/Config/sbc_diskio.asm index 51fd4711..2d3e1cb9 100644 --- a/Source/HBIOS/Config/sbc_diskio.asm +++ b/Source/HBIOS/Config/sbc_diskio.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_diskio3+cvdu.asm b/Source/HBIOS/Config/sbc_diskio3+cvdu.asm index 3fe489eb..bbbfe3b6 100644 --- a/Source/HBIOS/Config/sbc_diskio3+cvdu.asm +++ b/Source/HBIOS/Config/sbc_diskio3+cvdu.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU TRUE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_diskio3.asm b/Source/HBIOS/Config/sbc_diskio3.asm index 17f14447..e39a372f 100644 --- a/Source/HBIOS/Config/sbc_diskio3.asm +++ b/Source/HBIOS/Config/sbc_diskio3.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_dsd.asm b/Source/HBIOS/Config/sbc_dsd.asm index c2774326..125b28bf 100644 --- a/Source/HBIOS/Config/sbc_dsd.asm +++ b/Source/HBIOS/Config/sbc_dsd.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_mfpic.asm b/Source/HBIOS/Config/sbc_mfpic.asm index 36834ed2..10992405 100644 --- a/Source/HBIOS/Config/sbc_mfpic.asm +++ b/Source/HBIOS/Config/sbc_mfpic.asm @@ -37,8 +37,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_ppide.asm b/Source/HBIOS/Config/sbc_ppide.asm index f7760347..8ef49197 100644 --- a/Source/HBIOS/Config/sbc_ppide.asm +++ b/Source/HBIOS/Config/sbc_ppide.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_ppisd.asm b/Source/HBIOS/Config/sbc_ppisd.asm index 4a14ac25..6da87a2a 100644 --- a/Source/HBIOS/Config/sbc_ppisd.asm +++ b/Source/HBIOS/Config/sbc_ppisd.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_propio.asm b/Source/HBIOS/Config/sbc_propio.asm index 17db2724..30484750 100644 --- a/Source/HBIOS/Config/sbc_propio.asm +++ b/Source/HBIOS/Config/sbc_propio.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_rf.asm b/Source/HBIOS/Config/sbc_rf.asm index cbe92bd4..35922957 100644 --- a/Source/HBIOS/Config/sbc_rf.asm +++ b/Source/HBIOS/Config/sbc_rf.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_simh.asm b/Source/HBIOS/Config/sbc_simh.asm index 5caa2a26..3fc05209 100644 --- a/Source/HBIOS/Config/sbc_simh.asm +++ b/Source/HBIOS/Config/sbc_simh.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_std.asm b/Source/HBIOS/Config/sbc_std.asm index 4f48786b..efbfa0ca 100644 --- a/Source/HBIOS/Config/sbc_std.asm +++ b/Source/HBIOS/Config/sbc_std.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/sbc_vdu.asm b/Source/HBIOS/Config/sbc_vdu.asm index 722ce80d..dbb828ae 100644 --- a/Source/HBIOS/Config/sbc_vdu.asm +++ b/Source/HBIOS/Config/sbc_vdu.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU TRUE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta2_ppide.asm b/Source/HBIOS/Config/zeta2_ppide.asm index 5239c583..7dfe0333 100644 --- a/Source/HBIOS/Config/zeta2_ppide.asm +++ b/Source/HBIOS/Config/zeta2_ppide.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta2_ppisd.asm b/Source/HBIOS/Config/zeta2_ppisd.asm index afa10291..4dab0917 100644 --- a/Source/HBIOS/Config/zeta2_ppisd.asm +++ b/Source/HBIOS/Config/zeta2_ppisd.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta2_ppp.asm b/Source/HBIOS/Config/zeta2_ppp.asm index e4a00493..f20c9879 100644 --- a/Source/HBIOS/Config/zeta2_ppp.asm +++ b/Source/HBIOS/Config/zeta2_ppp.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta2_std.asm b/Source/HBIOS/Config/zeta2_std.asm index 1f84c68f..f296ac12 100644 --- a/Source/HBIOS/Config/zeta2_std.asm +++ b/Source/HBIOS/Config/zeta2_std.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta_ppide.asm b/Source/HBIOS/Config/zeta_ppide.asm index 666bba53..ea0ae4fd 100644 --- a/Source/HBIOS/Config/zeta_ppide.asm +++ b/Source/HBIOS/Config/zeta_ppide.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta_ppisd.asm b/Source/HBIOS/Config/zeta_ppisd.asm index 92094346..04c9462e 100644 --- a/Source/HBIOS/Config/zeta_ppisd.asm +++ b/Source/HBIOS/Config/zeta_ppisd.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta_ppp.asm b/Source/HBIOS/Config/zeta_ppp.asm index b8a7ddd9..4ffc5c45 100644 --- a/Source/HBIOS/Config/zeta_ppp.asm +++ b/Source/HBIOS/Config/zeta_ppp.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/Config/zeta_std.asm b/Source/HBIOS/Config/zeta_std.asm index 644f3bec..b33ebd4a 100644 --- a/Source/HBIOS/Config/zeta_std.asm +++ b/Source/HBIOS/Config/zeta_std.asm @@ -32,8 +32,8 @@ ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) ; VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT -UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT -SCGENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index bde6b869..4613b77f 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -199,20 +199,14 @@ ANSI_CIOOST: ; VIDEO OUTPUT IS *ALWAYS* READY ; INITIALIZE ; ANSI_CIOINIT: - ; SETUP AND FORWARD CALL TO PARENT VDA DRIVER'S VDAINIT FUNCTION - LD B,BF_VDAINI ; WE ARE FORWARDING TO VDAINIT FUNCTION - LD A,(ANSI_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR - LD C,A ; AND PUT IT IN C - LD D,L ; TERMTYPE TO D - LD E,0 ; VIDEO MODE = 0 - LD HL,0 ; NO BITMAP, LEAVE IT ALONG - JP ANSI_VDADISP ; LET VDA DRIVER HANDLE IT FROM HERE + XOR A ; NOTHING TO DO, SIGNAL SUCCESS + RET ; ... AND RETURN ; ; QUERY STATUS ; ANSI_CIOQUERY: - LD DE,0 - LD HL,0 + LD DE,$FFFF + LD HL,$FFFF XOR A RET ; diff --git a/Source/HBIOS/asci.asm b/Source/HBIOS/asci.asm index 6cd65f4a..3f3d2a53 100644 --- a/Source/HBIOS/asci.asm +++ b/Source/HBIOS/asci.asm @@ -229,7 +229,8 @@ ASCI0_OST: ; ; ASCI0_INITDEV: - CALL PANIC + XOR A ; NOT IMPLEMENTED!!! + RET ; ; ; @@ -320,7 +321,8 @@ ASCI1_OST: ; ; ASCI1_INITDEV: - CALL PANIC + XOR A ; NOT IMPLEMENTED!!! + RET ; ; ; diff --git a/Source/HBIOS/cvdu_font.asm b/Source/HBIOS/cvdu_font.asm index dbe80ba0..dadf3465 100644 --- a/Source/HBIOS/cvdu_font.asm +++ b/Source/HBIOS/cvdu_font.asm @@ -511,6 +511,7 @@ CVDU_FONTDATA: .DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF .DB $00,$00,$00,$00,$00,$00,$00,$00 +#IF 1 .DB $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 .DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $3C,$66,$6E,$6E,$60,$62,$3C,$00 @@ -1023,3 +1024,4 @@ CVDU_FONTDATA: .DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF .DB $00,$00,$00,$00,$00,$00,$00,$00 +#ENDIF \ No newline at end of file diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 807a18a1..e2358fbc 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -808,13 +808,10 @@ FD_RUN: ;CALL FD_SELECTUNIT ; MAP HSTTRK TO FCD_H, FCD_C - LD BC,(HSTTRK) - LD A,C ; HEAD IS LOW ORDER BIT - AND 1 ; ISOLATE IT - LD (FCD_H),A ; SAVE IT - LD A,C ; LOAD TRACK IN A - SRL A ; DIVIDE BY 2 FOR PHYSICAL TRACK - LD (FCD_C),A ; SAVE IT + LD A,(HSTTRK) ; GET TRACK VALUE (CYLINDER IS MORE ACCURATE) + LD (FCD_C),A ; ... AND MOVE IT TO CYL PARM + LD A,(HSTHEAD) ; GET HEAD VALUE + LD (FCD_H),A ; ... AND MOVE IT TO HEAD PARM ; MAP HSTSEC TO FCD_R LD BC,(HSTSEC) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 3aef7262..193d102f 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -174,6 +174,7 @@ HBX_BNKSEL1: ; Copy Data - Possibly between banks. This resembles CP/M 3, but ; usage of the HL and DE registers is reversed. ; Caller MUST ensure stack is already in high memory. +; Caller MUST preset HBX_SRCBNK and HBX_DSTBNK. ; Enter: ; HL = Source Address ; DE = Destination Address @@ -184,61 +185,48 @@ HBX_BNKSEL1: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; HBX_BNKCPY: - ; Save current bank to restore at end - LD A,(HB_CURBNK) - LD (HBX_CPYBNK),A - - ; Setup for copy loop - LD (HB_SRCADR),HL ; Init working source adr - LD (HB_DSTADR),DE ; Init working dest adr - LD H,B ; Move bytes to copy from BC - LD L,C ; ... to HL to use as byte counter -; -HBX_BNKCPY2: - ; Copy loop - LD A,L ; Low byte of count to A - AND $7F ; Isolate bits relevant to 128 byte buf - LD BC,$80 ; Assume full buf copy - JR Z,HBX_BNKCPY3 ; If full buf copy, go do it - LD C,A ; Otherwise, BC := bytes to copy -; -HBX_BNKCPY3: - PUSH HL ; Save bytes left to copy - CALL HBX_BNKCPY4 ; Do it - POP HL ; Recover bytes left to copy - XOR A ; Clear CF - SBC HL,BC ; Reflect bytes copied in HL - JR NZ,HBX_BNKCPY2 ; If any left, then loop - LD A,$FF ; Load original bank ($FF is replaced at entry) -HBX_CPYBNK .EQU $ - 1 - - JR HBX_BNKSEL ; Select and return -; -HBX_BNKCPY4: ; Switch to source bank - LD A,(HB_SRCBNK) ; Get source bank - CALL HBX_BNKSEL ; Set source bank -; - ; Copy BC bytes from HL -> BUF, allow HL to increment - PUSH BC ; Save copy length - LD HL,(HB_SRCADR) ; Point to source adr - LD DE,HBX_BUF ; Setup buffer as interim destination - LDIR ; Copy BC bytes: src -> buffer - LD (HB_SRCADR),HL ; Update source adr - POP BC ; Recover copy length -; - ; Switch to dest bank - LD A,(HB_DSTBNK) ; Get destination bank - CALL HBX_BNKSEL ; Set destination bank -; - ; Copy BC bytes from BUF -> HL, allow DE to increment - PUSH BC ; Save copy length - LD HL,HBX_BUF ; Use the buffer as source now - LD DE,(HB_DSTADR) ; Setup final destination for copy - LDIR ; Copy BC bytes: buffer -> dest - LD (HB_DSTADR),DE ; Update dest adr - POP BC ; Recover copy length -; - RET ; Done + LD A,(HB_CURBNK) ; GET CURRENT BANK + PUSH AF ; AND SAVE TO RESTORE LATER + PUSH BC ; CUR LEN -> (SP) +; +HBX_BC_LOOP: + EX (SP),HL ; HL := CUR LEN, (SP) := CUR SRC + LD BC,HBX_BUFSIZ ; SET BC TO BOUNCE BUFFER SIZE + OR A ; CLEAR CARRY FLAG + SBC HL,BC ; CUR LEN := CUR LEN - BBUF SIZE + JR C,HBX_BC_LAST ; END GAME, LESS THAN BBUF BYTES LEFT + EX (SP),HL ; HL := CUR SRC, (SP) := REM LEN + CALL HBX_BC_ITER ; DO A FULL BBUF SIZE CHUNK + JR HBX_BC_LOOP ; AND REPEAT TILL DONE +; +HBX_BC_LAST: + ; HL IS BETWEEN -(BBUF SIZE) AND -1, BC = BBUF SIZE + OR A ; CLEAR CARRY + ADC HL,BC ; HL := REM LEN (0 - 127) + EX (SP),HL ; HL := CUR SRC, (SP) := REM LEN + POP BC ; BC := REM LEN + CALL NZ,HBX_BC_ITER ; DO FINAL CHUNK, BUT ONLY IF NOT ZERO BYTES + POP AF ; RECOVER ORIGINAL BANK + JP HBX_BNKSEL ; SWITCH TO CURRENT BANK AND EXIT +; +HBX_BC_ITER: + ; HL = SRC ADR, DE = DEST ADR, BC = LEN + PUSH BC ; SAVE COPY LEN + PUSH DE ; FINAL DEST ON STACK + LD DE,HBX_BUF ; SET DEST TO BUF + LD A,(HB_SRCBNK) ; GET SOURCE BANK + CALL HBX_BNKSEL ; SWITCH TO SOURCE BANK + LDIR ; HL -> BUF (DE), BC BYTES, HL UPDATED SRC ADR + POP DE ; DE := FINAL DEST + POP BC ; GET LEN BACK IN BC + PUSH HL ; SAVE UPDATED SRC ADR + LD HL,HBX_BUF ; SET SRC ADR TO BUF + LD A,(HB_DSTBNK) ; GET DEST BANK + CALL HBX_BNKSEL ; SWITCH TO DEST BANK + LDIR ; BUF (HL) -> DE, BC BYTES, DE UPDATED DEST ADR + POP HL ; RECOVER UPDATED SRC ADR + ; HL = UPD SRC, DE = UPD DEST, BC = 0 + RET ; ; Call a routine in another bank saving and restoring the original bank. ; Caller MUST ensure stack is already in high memory. @@ -374,6 +362,27 @@ HBX_INT1: ; DONE RETI ; IMPLICITLY REENABLES INTERRUPTS! ; +; PEEK & POKE ROUTINES +; ADDRESS IN HL, BANK IN D, VALUE IN/OUT IN E, A IS TRASHED +; +HBX_PEEK: + LD A,(HB_CURBNK) + PUSH AF + LD A,D + CALL HBX_BNKSEL + LD E,(HL) + POP AF + JP HBX_BNKSEL +; +HBX_POKE: + LD A,(HB_CURBNK) + PUSH AF + LD A,D + CALL HBX_BNKSEL + LD (HL),E + POP AF + JP HBX_BNKSEL +; ; FILLER FOR UNUSED HBIOS PROXY CODE SPACE ; PAD TO START OF INTERRUPT VECTOR TABLE ; @@ -420,12 +429,13 @@ HBX_STACK .EQU $ .DB BID_USR ; BNKCPY SOURCE BANK ID .DW 0 ; BNKCPY DESTINATION ADDRESS .DB BID_USR ; BNKCPY DESTINATION BANK ID - .FILL 8,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE + .DW 0 ; BNKCPY LENGTH + .FILL 6,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE JP HBX_INVOKE ; FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08) JP HBX_BNKSEL ; FIXED ADR ENTRY FOR HBX_BNKSEL JP HBX_BNKCPY ; FIXED ADR ENTRY FOR HBX_BNKCPY JP HBX_BNKCALL ; FIXED ADR ENTRY FOR HBX_BNKCALL - .DW HBX_IDENT ; ADDRESS OF HBIOS PROXY START + .DW HBX_IDENT ; ADDRESS OF HBIOS PROXY START (DEPRECATED) .DW HBX_IDENT ; ADDRESS OF HBIOS IDENT INFO DATA BLOCK ; .FILL $MEMTOP - $ ; FILL TO END OF MEMORY (AS NEEDED) @@ -617,11 +627,11 @@ HB_INITTBL: #IF (CVDUENABLE) .DW CVDU_INIT #ENDIF -#IF (UPD7220ENABLE) - .DW UPD7220_INIT +#IF (NECENABLE) + .DW NEC_INIT #ENDIF -#IF (SCGENABLE) - .DW SCG_INIT +#IF (TMSENABLE) + .DW TMS_INIT #ENDIF #IF (DSKYENABLE) .DW DSKY_INIT @@ -692,7 +702,7 @@ IDLE: ; HB_DISPATCH: ; -#IF 1 ; *DEBUG* START +#IF 0 ; *DEBUG* START ; CALL HB_DISPCALL ; DO THE WORK ; @@ -701,6 +711,8 @@ HB_DISPATCH: LD A,(HBX_STACK - HBX_STKSIZ + $08) CP $FF CALL NZ,PANIC + LD A,$FF + LD (HBX_STACK - HBX_STKSIZ + $08),A POP AF RET HB_DISPCALL: @@ -803,13 +815,13 @@ CIO_DISPATCH1: CP CIODEV_CVDU JP Z,CVDU_DISPCIO #ENDIF -#IF (UPD7220ENABLE) - CP CIODEV_UPD7220 - JP Z,UPD7220_DISPCIO +#IF (NECENABLE) + CP CIODEV_NEC + JP Z,NEC_DISPCIO #ENDIF -#IF (SCGENABLE) - CP CIODEV_SCG - JP Z,SCG_DISPCIO +#IF (TMSENABLE) + CP CIODEV_TMS + JP Z,TMS_DISPCIO #ENDIF CALL PANIC RET @@ -879,7 +891,7 @@ CIO_ADDENT: ; RET ; AND RETURN DIO_DISPATCH: -; +; #IF 0 ; *DEBUG* START ; ; DUMP INCOMING CALL @@ -966,7 +978,6 @@ DIO_DISPATCH1: #ENDIF CALL PANIC RET - ; ; CONVERT AN HBIOS STANDARD HARD DISK CHS ADDRESS TO ; AN LBA ADDRESS. A STANDARD HBIOS HARD DISK IS ASSUMED @@ -1146,13 +1157,13 @@ VDA_DISPATCH1: CP VDADEV_CVDU JP Z,CVDU_DISPATCH #ENDIF -#IF (UPD7220ENABLE) +#IF (NECENABLE) CP VDADEV_7220 - JP Z,UPD7220_DISPATCH + JP Z,NEC_DISPATCH #ENDIF -#IF (SCGENABLE) - CP VDADEV_SCG - JP Z,SCG_DISPATCH +#IF (TMSENABLE) + CP VDADEV_TMS + JP Z,TMS_DISPATCH #ENDIF CALL PANIC ; @@ -1193,9 +1204,9 @@ SYS_DISPATCH: DEC A JP Z,SYS_GETBNK ; $F1 DEC A - JP Z,SYS_COPY ; $F2 + JP Z,SYS_SETCPY ; $F2 DEC A - JP Z,SYS_XCOPY ; $F3 + JP Z,SYS_BNKCPY ; $F3 DEC A JP Z,SYS_ALLOC ; $F4 DEC A @@ -1213,31 +1224,52 @@ SYS_DISPATCH: CALL PANIC ; INVALID ; ; SET ACTIVE MEMORY BANK AND RETURN PREVIOUSLY ACTIVE MEMORY BANK -; NOTE THAT IT GOES INTO EFFECT AS HBIOS IS EXITED +; NOTE THAT IT GOES INTO EFFECT AS HBIOS FUNCTION IS EXITED ; HERE, WE JUST SET THE CURRENT BANK ; CALLER MUST EXTABLISH UPPER MEMORY STACK BEFORE INVOKING THIS FUNCTION! ; SYS_SETBNK: - LD A,(HBX_INVBNK) ; GET THE PREVIOUS ACTIVE MEMORY BANK - PUSH AF ; SAVE IT - LD A,C ; LOAD THE NEW BANK REQUESTED - LD (HBX_INVBNK),A ; SET IT FOR ACTIVATION UPON HBIOS RETURN - POP AF ; GET PREVIOUS BANK INTO A - OR A - RET + PUSH HL ; SAVE INCOMING HL + LD HL,HBX_INVBNK ; POINT TO HBIOS INVOKE BANK ID ADDRESS + LD A,(HL) ; GET EXISTING BANK ID TO A + LD (HL),C ; UPDATE INVOKE BANK TO NEW BANK ID + LD C,A ; PUT PREVIOUS BANK ID IN C FOR RETURN + POP HL ; RESTORE ORIGINAL HL + XOR A ; SIGNAL SUCCESS + RET ; DONE ; ; GET ACTIVE MEMORY BANK ; SYS_GETBNK: LD A,(HBX_INVBNK) ; GET THE ACTIVE MEMORY BANK - OR A + LD C,A ; MOVE TO C + XOR A ; SIGNAL SUCCESS RET ; -; PERFORM MEMORY COPY POTENTIALLY ACROSS BANKS +; SET BANKS AND LENGTH FOR INTERBANK MEMORY COPY (BNKCPY) +; ENTRY: E=SOURCE BANK ID +; D=DEST BANK ID +; HL=COPY LENGTH (IN BYTES) ; -SYS_COPY: - PUSH IX - POP BC +SYS_SETCPY: + LD A,E + LD (HB_SRCBNK),A ; RECORD THE SOURCE BANK + LD A,D + LD (HB_DSTBNK),A ; RECORD THE DESTINATION BANK + LD (HB_CPYLEN),HL ; RECORD THE COPY LENGTH + XOR A + RET +; +; PERFORM MEMORY COPY POTENTIALLY ACROSS BANKS +; ENTRY: HL=SOURCE ADDRESS +; DE=DESTINATION ADDRESS +; NOTE: SRC/DEST BANK & COPY LENGTH MUST BE SET VIA SETCPY +; +SYS_BNKCPY: + PUSH HL ; SAVE INCOMING HL + LD HL,(HB_CPYLEN) ; HL := COPY LEN (SAVED IN SETCPY) + EX (SP),HL ; RESTORE HL & SET (SP) TO COPY LEN + POP BC ; BC := COPY LEN ;; *DEBUG* START ;PUSH AF @@ -1279,16 +1311,6 @@ SYS_COPY: XOR A RET ; -; SET BANKS FOR EXTENDED (INTERBANK) MEMORY COPY -; -SYS_XCOPY: - LD A,E - LD (HB_SRCBNK),A - LD A,D - LD (HB_DSTBNK),A - XOR A - RET -; ; ALLOCATE HL BYTES OF MEMORY FROM HBIOS HEAP ; RETURNS POINTER TO ALLOCATED MEMORY IN HL ; ON SUCCESS RETURN A == 0, AND Z SET @@ -1381,7 +1403,7 @@ SYS_GETMEMINFO: XOR A RET ; -; GET SERIAL UNIT COUNT +; GET BANK CONFIGURATION INFORMATION ; RETURNS: ; D: HBIOS BANK ID ; E: USER BANK ID @@ -1440,21 +1462,20 @@ SYS_SETBOOTINFO: XOR A RET ; -; RETURN A BYTE OF MEMORY FROM HBIOS BANK -; ENTRY: HL=ADDRESS IN HBIOS BANK (0H-7FFFH) -; RETURN: C=BYTE VALUE +; RETURN A BYTE OF MEMORY FROM SPECIFIED BANK +; ENTRY: D=BANK ID, HL=ADDRESS +; RETURN: E=BYTE VALUE ; SYS_PEEK: - LD C,(HL) + CALL HBX_PEEK ; IMPLEMENTED IN PROXY XOR A RET ; -; WRITE A BYTE OF MEMORY TO HBIOS BANK -; ENTRY: HL=ADDRESS IN HBIOS BANK (0H-7FFFH) -; RETURN: C=BYTE VALUE +; WRITE A BYTE OF MEMORY TO SPECIFIED BANK +; ENTRY: D=BANK ID, HL=ADDRESS IN HBIOS BANK, E=BYTE VALUE ; SYS_POKE: - LD (HL),C + CALL HBX_POKE ; IMPLEMENTED IN PROXY XOR A RET ;; @@ -1684,21 +1705,21 @@ SIZ_CVDU .EQU $ - ORG_CVDU .ECHO " bytes.\n" #ENDIF ; -#IF (UPD7220ENABLE) -ORG_UPD7220 .EQU $ - #INCLUDE "upd7220.asm" -SIZ_UPD7220 .EQU $ - ORG_UPD7220 - .ECHO "UPD7220 occupies " - .ECHO SIZ_UPD7220 +#IF (NECENABLE) +ORG_NEC .EQU $ + #INCLUDE "nec.asm" +SIZ_NEC .EQU $ - ORG_NEC + .ECHO "NEC occupies " + .ECHO SIZ_NEC .ECHO " bytes.\n" #ENDIF ; -#IF (SCGENABLE) -ORG_SCG .EQU $ - #INCLUDE "scg.asm" -SIZ_SCG .EQU $ - ORG_SCG - .ECHO "SCG occupies " - .ECHO SIZ_SCG +#IF (TMSENABLE) +ORG_TMS .EQU $ + #INCLUDE "tms.asm" +SIZ_TMS .EQU $ - ORG_TMS + .ECHO "TMS occupies " + .ECHO SIZ_TMS .ECHO " bytes.\n" #ENDIF ; @@ -2286,8 +2307,7 @@ PS_SERIAL: ; PRINT SERIAL TYPE (SERIAL ATTRIBUTE IN E) ; PS_PRTST: - LD HL,PS_STDUMMY - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + CALL PS_PRTNUL ; NUL FOR NOW LD A,18 ; 18 CHAR FIELD SUB C CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) @@ -2298,6 +2318,10 @@ PS_PRTST: PS_PRTSC: LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG RST 08 ; DE:HL := BAUD RATE + LD A,D ; TEST FOR $FF + AND E + INC A ; SET Z IF DE == $FF + JP Z,PS_PRTNUL ; $FF == NO CONFIG DEFINED PUSH DE ; DE:HL ==> HL:BC PUSH HL POP BC @@ -2341,8 +2365,7 @@ PS_VIDEO: ; PRINT VIDEO TYPE (VIDEO ATTRIBUTE IN E) ; PS_PRTVT: - LD HL,PS_VTDUMMY - CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + CALL PS_PRTNUL ; NUL FOR NOW LD A,18 ; 18 CHAR FIELD SUB C CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) @@ -2351,8 +2374,16 @@ PS_PRTVT: ; PRINT VIDEO CONFIG (UNIT IN C, ATTRIBUTE IN E) ; PS_PRTVC: - LD HL,PS_VCDUMMY - CALL PS_PRT + PRTS("TEXT$") + CALL PC_COMMA + LD B,BF_VDAQRY ; FUNC: QUERY FOR VDA CONFIG + RST 08 ; D:=ROWS, E:=COLS + LD A,E + CALL PRTDECB + LD A,'x' + CALL COUT + LD A,D + CALL PRTDECB RET ; ; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE @@ -2378,6 +2409,12 @@ PS_PRTDEV: CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) RET ; +; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE +; +PS_PRTNUL: + LD HL,PS_STRNUL + ; FALL THRU TO PS_PRT +; ; ; PS_PRT: @@ -2407,6 +2444,8 @@ PS_PAD1: ; PS_BCDTMP .FILL 5,0 ; TEMPORARY BCD NUMBER STORAGE ; +PS_STRNUL .TEXT "--$" ; DISPLAY STRING FOR NUL VALUE +; ; DISK DEVICE STRINGS ; PS_DDSTRREF: @@ -2448,7 +2487,7 @@ PS_FLP3 .TEXT "3.5\", $" PS_FLPN .TEXT "???\", $" ; PS_FLPSS .TEXT "SS/$" -PS_FLPDS .TEXT "SS/$" +PS_FLPDS .TEXT "DS/$" ; PS_FLPSD .TEXT "SD$" PS_FLPDD .TEXT "DD$" @@ -2459,38 +2498,35 @@ PS_FLPED .TEXT "ED$" ; PS_SDSTRREF: .DW PS_SDUART, PS_SDASCI, PS_SDVDU, PS_SDCVDU - .DW PS_SDUPD7220, PS_SDSCG, PS_SDPRPCON, PS_SDPPPCON + .DW PS_SDNEC, PS_SDTMS, PS_SDPRPCON, PS_SDPPPCON ; PS_SDUART .TEXT "UART$" PS_SDASCI .TEXT "ASCI$" PS_SDVDU .TEXT "VDU$" PS_SDCVDU .TEXT "CVDU$" -PS_SDUPD7220 .TEXT "UPD7220$" -PS_SDSCG .TEXT "SCG$" +PS_SDNEC .TEXT "NEC$" +PS_SDTMS .TEXT "TMS$" PS_SDPRPCON .TEXT "PRPCON$" PS_SDPPPCON .TEXT "PPPCON$" ; ; SERIAL TYPE STRINGS ; -PS_STDUMMY .TEXT "--$" ; ; VIDEO DEVICE STRINGS ; PS_VDSTRREF: - .DW PS_VDVDU, PS_VDCVDU, PS_VDUPD7220, PS_VDSCG + .DW PS_VDVDU, PS_VDCVDU, PS_VDNEC, PS_VDTMS ; PS_VDVDU .TEXT "VDU$" PS_VDCVDU .TEXT "CVDU$" -PS_VDUPD7220 .TEXT "UPD7220$" -PS_VDSCG .TEXT "SCG$" +PS_VDNEC .TEXT "NEC$" +PS_VDTMS .TEXT "TMS$" ; ; SERIAL TYPE STRINGS ; -PS_VTDUMMY .TEXT "--$" ; ; VIDEO CONFIG STRINGS ; -PS_VCDUMMY .TEXT "--$" ; ; ; 0 1 2 3 4 5 6 7 @@ -2624,17 +2660,15 @@ HSTLBAHI .EQU $ ; BLOCK ADDRESS LBA HIGH WORD HSTSEC .DB 0 ; SECTOR (0-255) HSTHEAD .DB 0 ; HEAD (0-255) ; -DIOBUF .DW 0 ; PTR TO CURRENT DISK XFR BUFFER -; HB_INTSTKSAV .DW 0 ; SAVED STACK POINTER DURING INT PROCESSING .FILL $40,$FF ; 32 ENTRY STACK FOR INTERRUPT PROCESSING HB_INTSTK .EQU $ ; TOP OF INTERRUPT PROCESSING STACK ; -STR_BANNER .DB "SBC HBIOS v", BIOSVER, ", ", TIMESTAMP, "$" +STR_BANNER .DB "RetroBrew HBIOS v", BIOSVER, ", ", TIMESTAMP, "$" STR_PLATFORM .DB PLATFORM_NAME, "$" STR_SWITCH .DB "*** Activating CRT Console ***$" ; -HB_TMPBUF .FILL 512,0 ; INTERNAL DISK BUFFER +HB_WRKBUF .FILL 512,0 ; INTERNAL DISK BUFFER ; HB_END .EXPORT HB_END ; EXPORT ENDING ADDRESS ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index bcfe89e0..0b3f383f 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -55,8 +55,8 @@ BF_VDAKRD .EQU BF_VDA + 14 ; READ KEYBOARD BF_SYS .EQU $F0 BF_SYSSETBNK .EQU BF_SYS + 0 ; SET CURRENT BANK BF_SYSGETBNK .EQU BF_SYS + 1 ; GET CURRENT BANK -BF_SYSCPY .EQU BF_SYS + 2 ; COPY TO/FROM RAM/ROM MEMORY BANK -BF_SYSXCPY .EQU BF_SYS + 3 ; EXTENDED COPY SETUP +BF_SYSSETCPY .EQU BF_SYS + 2 ; COPY TO/FROM RAM/ROM MEMORY BANK +BF_SYSBNKCPY .EQU BF_SYS + 3 ; EXTENDED COPY SETUP BF_SYSALLOC .EQU BF_SYS + 4 ; ALLOC HBIOS HEAP MEMORY BF_SYSFREE .EQU BF_SYS + 5 ; FREE HBIOS HEAP MEMORY BF_SYSVER .EQU BF_SYS + 6 ; GET HBIOS VERSION @@ -81,8 +81,8 @@ CIODEV_UART .EQU $00 CIODEV_ASCI .EQU $10 CIODEV_VDU .EQU $20 CIODEV_CVDU .EQU $30 -CIODEV_UPD7220 .EQU $40 -CIODEV_SCG .EQU $50 +CIODEV_NEC .EQU $40 +CIODEV_TMS .EQU $50 CIODEV_PRPCON .EQU $60 CIODEV_PPPCON .EQU $70 CIODEV_CONSOLE .EQU $D0 @@ -105,10 +105,10 @@ DIODEV_HDSK .EQU $90 ; VDA DEVICE IDS ; ;VDADEV_NONE .EQU $00 ; NO VDA DEVICE -VDADEV_VDU .EQU $00 ; ECB VDU - 6545 CHIP -VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - 8563 CHIP (NOT IMP) -VDADEV_UPD7220 .EQU $20 ; ECB uP7220 (NOT IMPLEMENTED) -VDADEV_SCG .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM +VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545 +VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563 +VDADEV_NEC .EQU $20 ; ECB NEC UPD7220 (NOT IMPLEMENTED) +VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918 ; ; EMULATION TYPES ; @@ -147,12 +147,6 @@ HCB_BIDRAMD0 .EQU $DC ; FIRST BANK OF RAM DRIVE HCB_BIDRAMDN .EQU $DD ; LAST BANK OF RAM DRIVE HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE HCB_BIDROMDN .EQU $DF ; LAST BANK OF ROM DRIVE - -;; DEVICE LISTS (POINTS TO START OF LIST, PREFIXED BY ENTRY COUNT) -;HCB_CDL .EQU $E0 + 1 ; CHARACTER DEVICES (MAX 7) -;HCB_PDL .EQU $E8 + 1 ; PRINT DEVICE LIST (MAX 3) -;HCB_VDL .EQU $EC + 1 ; VIDEO DEVICE LIST (MAX 3) -;HCB_DDL .EQU $F0 + 1 ; DISK DEVICE LIST (MAX 15) ; ; HBIOS PROXY COMMON DATA BLOCK ; EXACTLY 32 BYTES AT $FFE0-$FFFF @@ -166,7 +160,7 @@ HB_SRCADR .EQU HBX_XFCDAT + 2 ; BNKCPY: DESTINATION BANK ID HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS HB_DSTBNK .EQU HBX_XFCDAT + 7 ; BNKCPY: SOURCE ADDRESS -HB_CNT .EQU HBX_XFCDAT + 8 ; BNKCPY: COUNT +HB_CPYLEN .EQU HBX_XFCDAT + 8 ; BNKCPY: COPY LENGTH ; HBX_XFCFNS .EQU HBX_XFC + $10 ; JUMP TABLE PORTION OF HBIOS PROXY INTERFACE AREA HB_INVOKE .EQU HBX_XFCFNS + (0 * 3) ; INVOKE HBIOS FUNCTION diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index fa59fbdc..e473bd4b 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -293,7 +293,7 @@ IDE_INIT2: ; ; PRINT LBA/NOLBA CALL PC_SPACE ; FORMATTING - LD HL,HB_TMPBUF ; POINT TO BUFFER START + LD HL,HB_WRKBUF ; POINT TO BUFFER START LD DE,98+1 ; OFFSET OF BYTE CONTAINING LBA FLAG ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS LD A,(HL) ; GET THE BYTE @@ -512,7 +512,7 @@ IDE_IDENTIFY: LD (IDE_CMD),A CALL IDE_RUNCMD RET NZ - LD HL,HB_TMPBUF + LD HL,HB_WRKBUF JP IDE_GETBUF ; EXIT THRU BUFRD ; ; @@ -911,11 +911,11 @@ IDE_INITDEV: CALL IDE_IDENTIFY ; EXECUTE IDENTIFY COMMAND RET NZ ; BAIL OUT ON ERROR ; - LD DE,HB_TMPBUF ; POINT TO BUFFER + LD DE,HB_WRKBUF ; POINT TO BUFFER DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING ; ; DETERMINE IF CF DEVICE - LD HL,HB_TMPBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG + LD HL,HB_WRKBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG LD A,$8A ; FIRST BYTE OF MARKER IS $8A CP (HL) ; COMPARE JR NZ,IDE_INITDEV1 ; IF NO MATCH, NOT CF @@ -931,7 +931,7 @@ IDE_INITDEV1: ; GET DEVICE CAPACITY AND SAVE IT IDE_DPTR(IDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD PUSH HL ; SAVE POINTER - LD HL,HB_TMPBUF ; POINT TO BUFFER START + LD HL,HB_WRKBUF ; POINT TO BUFFER START LD A,120 ; OFFSET OF SECTOR COUNT CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT CALL LD32 ; LOAD IT TO DE:HL diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 62ababb8..0a4f459c 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -289,7 +289,7 @@ PPIDE_INIT2: ; ; PRINT LBA/NOLBA CALL PC_SPACE ; FORMATTING - LD HL,HB_TMPBUF ; POINT TO BUFFER START + LD HL,HB_WRKBUF ; POINT TO BUFFER START LD DE,98+1 ; OFFSET OF BYTE CONTAINING LBA FLAG ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS LD A,(HL) ; GET THE BYTE @@ -536,7 +536,7 @@ PPIDE_IDENTIFY: LD (PPIDE_CMD),A CALL PPIDE_RUNCMD RET NZ - LD HL,HB_TMPBUF + LD HL,HB_WRKBUF JP PPIDE_GETBUF ; EXIT THRU BUFRD ; ; @@ -991,11 +991,11 @@ PPIDE_INITDEV: CALL PPIDE_IDENTIFY ; EXECUTE PPIDENTIFY COMMAND RET NZ ; BAIL OUT ON ERROR ; - LD DE,HB_TMPBUF ; POINT TO BUFFER + LD DE,HB_WRKBUF ; POINT TO BUFFER DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING ; ; DETERMINE IF CF DEVICE - LD HL,HB_TMPBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG + LD HL,HB_WRKBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG LD A,$8A ; FIRST BYTE OF MARKER IS $8A CP (HL) ; COMPARE JR NZ,PPIDE_INITDEV1 ; IF NO MATCH, NOT CF @@ -1011,7 +1011,7 @@ PPIDE_INITDEV1: ; GET DEVICE CAPACITY AND SAVE IT PPIDE_DPTR(PPIDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD PUSH HL ; SAVE POINTER - LD HL,HB_TMPBUF ; POINT TO BUFFER START + LD HL,HB_WRKBUF ; POINT TO BUFFER START LD A,120 ; OFFSET OF SECTOR COUNT CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT CALL LD32 ; LOAD IT TO DE:HL diff --git a/Source/HBIOS/scg.asm b/Source/HBIOS/tms.asm similarity index 59% rename from Source/HBIOS/scg.asm rename to Source/HBIOS/tms.asm index 9121e4e1..47bbfa61 100644 --- a/Source/HBIOS/scg.asm +++ b/Source/HBIOS/tms.asm @@ -11,89 +11,89 @@ ; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA? ; ;====================================================================== -; SCG DRIVER - CONSTANTS +; TMS DRIVER - CONSTANTS ;====================================================================== ; -SCG_CMDREG .EQU N8_BASE + $19 ; READ STATUS / WRITE REG SEL -SCG_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA +TMS_CMDREG .EQU N8_BASE + $19 ; READ STATUS / WRITE REG SEL +TMS_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA ; -SCG_ROWS .EQU 24 -SCG_COLS .EQU 40 +TMS_ROWS .EQU 24 +TMS_COLS .EQU 40 ; ; BELOW WAS TUNED FOR N8 AT 18MHZ WITH 3 IO WAIT STATES ; WILL NEED TO BE MODIFIED FOR DIFFERENT ACCESS SPEEDS ; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!! ; -#DEFINE SCG_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP +#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; ;====================================================================== -; SCG DRIVER - INITIALIZATION +; TMS DRIVER - INITIALIZATION ;====================================================================== ; -SCG_INIT: - PRTS("SCG: IO=0x$") - LD A,SCG_DATREG +TMS_INIT: + PRTS("TMS: IO=0x$") + LD A,TMS_DATREG CALL PRTHEXBYTE ; - CALL SCG_CRTINIT ; SETUP THE SCG CHIP REGISTERS - CALL SCG_LOADFONT ; LOAD FONT DATA FROM ROM TO SCG STRORAGE + CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS + CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE ; ; ADD OURSELVES TO VDA DISPATCH TABLE LD B,0 ; PHYSICAL UNIT IS ZERO - LD C,VDADEV_SCG ; DEVICE TYPE + LD C,VDADEV_TMS ; DEVICE TYPE LD DE,0 ; UNIT DATA BLOB ADDRESS CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED ; ; ADD OURSELVES TO CIO DISPATCH TABLE LD B,0 ; PHYSICAL UNIT IS ZERO - LD C,CIODEV_SCG ; DEVICE TYPE + LD C,CIODEV_TMS ; DEVICE TYPE LD DE,0 ; UNIT DATA BLOB ADDRESS CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE LD D,VDAEMU ; DEFAULT EMULATION LD E,0 ; VIDEO MODE = 0 - JP SCG_VDAINI + JP TMS_VDAINI ; ;====================================================================== -; SCG DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS +; TMS DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS ;====================================================================== ; -SCG_DISPCIO: +TMS_DISPCIO: JP PANIC -SCG_CIODISPADR .EQU $ - 2 +TMS_CIODISPADR .EQU $ - 2 ; ;====================================================================== -; SCG DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS +; TMS DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS ;====================================================================== ; -SCG_DISPATCH: +TMS_DISPATCH: LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION - JP Z,SCG_VDAINI ; $40 + JP Z,TMS_VDAINI ; $40 DEC A - JP Z,SCG_VDAQRY ; $41 + JP Z,TMS_VDAQRY ; $41 DEC A - JP Z,SCG_VDARES ; $42 + JP Z,TMS_VDARES ; $42 DEC A - JP Z,SCG_VDADEV ; $43 + JP Z,TMS_VDADEV ; $43 DEC A - JP Z,SCG_VDASCS ; $44 + JP Z,TMS_VDASCS ; $44 DEC A - JP Z,SCG_VDASCP ; $45 + JP Z,TMS_VDASCP ; $45 DEC A - JP Z,SCG_VDASAT ; $46 + JP Z,TMS_VDASAT ; $46 DEC A - JP Z,SCG_VDASCO ; $47 + JP Z,TMS_VDASCO ; $47 DEC A - JP Z,SCG_VDAWRC ; $48 + JP Z,TMS_VDAWRC ; $48 DEC A - JP Z,SCG_VDAFIL ; $49 + JP Z,TMS_VDAFIL ; $49 DEC A - JP Z,SCG_VDACPY ; $4A + JP Z,TMS_VDACPY ; $4A DEC A - JP Z,SCG_VDASCR ; $4B + JP Z,TMS_VDASCR ; $4B DEC A JP Z,PPK_STAT ; $4C DEC A @@ -102,307 +102,307 @@ SCG_DISPATCH: JP Z,PPK_READ ; $4E CALL PANIC -SCG_VDAINI: +TMS_VDAINI: ; RESET VDA PUSH DE ; SAVE EMULATION TYPE (IN D) - CALL SCG_VDARES ; RESET VDA + CALL TMS_VDARES ; RESET VDA POP DE ; RECOVER EMULATION TYPE ; INITIALIZE EMULATION LD B,D ; EMULATION TYPE TO B - LD C,CIODEV_SCG ; PASS OUR DEVICE TYPE IN C - LD DE,SCG_DISPATCH ; DISPATCH ADDRESS TO DE + LD C,CIODEV_TMS ; PASS OUR DEVICE TYPE IN C + LD DE,TMS_DISPATCH ; DISPATCH ADDRESS TO DE CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER - LD (SCG_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS + LD (TMS_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS XOR A ; SIGNAL SUCCESS RET -SCG_VDAQRY: +TMS_VDAQRY: LD C,$00 ; MODE ZERO IS ALL WE KNOW - LD D,SCG_ROWS ; ROWS - LD E,SCG_COLS ; COLS + LD D,TMS_ROWS ; ROWS + LD E,TMS_COLS ; COLS LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET XOR A ; SIGNAL SUCCESS RET -SCG_VDADEV: - LD D,VDADEV_SCG ; D := DEVICE TYPE +TMS_VDADEV: + LD D,VDADEV_TMS ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT XOR A ; SIGNAL SUCCESS RET -SCG_VDARES: +TMS_VDARES: LD DE,0 ; ROW = 0, COL = 0 - CALL SCG_XY ; SEND CURSOR TO TOP LEFT + CALL TMS_XY ; SEND CURSOR TO TOP LEFT LD A,' ' ; BLANK THE SCREEN - LD DE,SCG_ROWS * SCG_COLS ; FILL ENTIRE BUFFER - CALL SCG_FILL ; DO IT + LD DE,TMS_ROWS * TMS_COLS ; FILL ENTIRE BUFFER + CALL TMS_FILL ; DO IT LD DE,0 ; ROW = 0, COL = 0 - CALL SCG_XY ; SEND CURSOR TO TOP LEFT + CALL TMS_XY ; SEND CURSOR TO TOP LEFT XOR A DEC A - LD (SCG_CURSAV),A - CALL SCG_SETCUR ; SET CURSOR + LD (TMS_CURSAV),A + CALL TMS_SETCUR ; SET CURSOR XOR A ; SIGNAL SUCCESS RET -SCG_VDASCS: +TMS_VDASCS: CALL PANIC ; NOT IMPLEMENTED (YET) -SCG_VDASCP: - CALL SCG_CLRCUR - CALL SCG_XY ; SET CURSOR POSITION - CALL SCG_SETCUR +TMS_VDASCP: + CALL TMS_CLRCUR + CALL TMS_XY ; SET CURSOR POSITION + CALL TMS_SETCUR XOR A ; SIGNAL SUCCESS RET -SCG_VDASAT: +TMS_VDASAT: XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS RET -SCG_VDASCO: +TMS_VDASCO: XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS RET -SCG_VDAWRC: - CALL SCG_CLRCUR ; CURSOR OFF +TMS_VDAWRC: + CALL TMS_CLRCUR ; CURSOR OFF LD A,E ; CHARACTER TO WRITE GOES IN A - CALL SCG_PUTCHAR ; PUT IT ON THE SCREEN - CALL SCG_SETCUR + CALL TMS_PUTCHAR ; PUT IT ON THE SCREEN + CALL TMS_SETCUR XOR A ; SIGNAL SUCCESS RET -SCG_VDAFIL: - CALL SCG_CLRCUR +TMS_VDAFIL: + CALL TMS_CLRCUR LD A,E ; FILL CHARACTER GOES IN A EX DE,HL ; FILL LENGTH GOES IN DE - CALL SCG_FILL ; DO THE FILL - CALL SCG_SETCUR + CALL TMS_FILL ; DO THE FILL + CALL TMS_SETCUR XOR A ; SIGNAL SUCCESS RET -SCG_VDACPY: - CALL SCG_CLRCUR - ; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS SCG_POS +TMS_VDACPY: + CALL TMS_CLRCUR + ; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS TMS_POS ; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT PUSH HL ; SAVE LENGTH - CALL SCG_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL + CALL TMS_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL POP BC ; RECOVER LENGTH IN BC - LD DE,(SCG_POS) ; PUT DEST IN DE - CALL SCG_BLKCPY ; DO A BLOCK COPY - CALL SCG_SETCUR + LD DE,(TMS_POS) ; PUT DEST IN DE + CALL TMS_BLKCPY ; DO A BLOCK COPY + CALL TMS_SETCUR XOR A RET -SCG_VDASCR: - CALL SCG_CLRCUR -SCG_VDASCR0: +TMS_VDASCR: + CALL TMS_CLRCUR +TMS_VDASCR0: LD A,E ; LOAD E INTO A OR A ; SET FLAGS - JR Z,SCG_VDASCR2 ; IF ZERO, WE ARE DONE + JR Z,TMS_VDASCR2 ; IF ZERO, WE ARE DONE PUSH DE ; SAVE E - JP M,SCG_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL - CALL SCG_SCROLL ; SCROLL FORWARD ONE LINE + JP M,TMS_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL + CALL TMS_SCROLL ; SCROLL FORWARD ONE LINE POP DE ; RECOVER E DEC E ; DECREMENT IT - JR SCG_VDASCR0 ; LOOP -SCG_VDASCR1: - CALL SCG_RSCROLL ; SCROLL REVERSE ONE LINE + JR TMS_VDASCR0 ; LOOP +TMS_VDASCR1: + CALL TMS_RSCROLL ; SCROLL REVERSE ONE LINE POP DE ; RECOVER E INC E ; INCREMENT IT - JR SCG_VDASCR0 ; LOOP -SCG_VDASCR2: - CALL SCG_SETCUR + JR TMS_VDASCR0 ; LOOP +TMS_VDASCR2: + CALL TMS_SETCUR XOR A RET ; ;====================================================================== -; SCG DRIVER - PRIVATE DRIVER FUNCTIONS +; TMS DRIVER - PRIVATE DRIVER FUNCTIONS ;====================================================================== ; ;---------------------------------------------------------------------- ; SET TMS9918 REGISTER VALUE -; SCG_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C +; TMS_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C ;---------------------------------------------------------------------- ; -SCG_SET: - OUT (SCG_CMDREG),A ; WRITE IT - SCG_IODELAY +TMS_SET: + OUT (TMS_CMDREG),A ; WRITE IT + TMS_IODELAY LD A,C ; GET THE DESIRED REGISTER OR $80 ; SET BIT 7 - OUT (SCG_CMDREG),A ; SELECT THE DESIRED REGISTER - SCG_IODELAY + OUT (TMS_CMDREG),A ; SELECT THE DESIRED REGISTER + TMS_IODELAY RET ; ;---------------------------------------------------------------------- ; SET TMS9918 READ/WRITE ADDRESS -; SCG_WR SETS TMS9918 TO BEGIN WRITING TO ADDRESS SPECIFIED IN HL -; SCG_RD SETS TMS9918 TO BEGIN READING TO ADDRESS SPECIFIED IN HL +; TMS_WR SETS TMS9918 TO BEGIN WRITING TO ADDRESS SPECIFIED IN HL +; TMS_RD SETS TMS9918 TO BEGIN READING TO ADDRESS SPECIFIED IN HL ;---------------------------------------------------------------------- ; -SCG_WR: +TMS_WR: PUSH HL SET 6,H ; SET WRITE BIT - CALL SCG_RD + CALL TMS_RD POP HL RET ; -SCG_RD: +TMS_RD: LD A,L - OUT (SCG_CMDREG),A - SCG_IODELAY + OUT (TMS_CMDREG),A + TMS_IODELAY LD A,H - OUT (SCG_CMDREG),A - SCG_IODELAY + OUT (TMS_CMDREG),A + TMS_IODELAY RET ; ;---------------------------------------------------------------------- ; MOS 8563 DISPLAY CONTROLLER CHIP INITIALIZATION ;---------------------------------------------------------------------- ; -SCG_CRTINIT: +TMS_CRTINIT: ; SET WRITE ADDRESS TO $0 LD HL,0 - CALL SCG_WR + CALL TMS_WR ; ; FILL ENTIRE RAM CONTENTS LD DE,$4000 -SCG_CRTINIT1: +TMS_CRTINIT1: XOR A - OUT (SCG_DATREG),A + OUT (TMS_DATREG),A DEC DE LD A,D OR E - JR NZ,SCG_CRTINIT1 + JR NZ,TMS_CRTINIT1 ; ; INITIALIZE VDU REGISTERS LD C,0 ; START WITH REGISTER 0 - LD B,SCG_INIT9918LEN ; NUMBER OF REGISTERS TO INIT - LD HL,SCG_INIT9918 ; HL = POINTER TO THE DEFAULT VALUES -SCG_CRTINIT2: + LD B,TMS_INIT9918LEN ; NUMBER OF REGISTERS TO INIT + LD HL,TMS_INIT9918 ; HL = POINTER TO THE DEFAULT VALUES +TMS_CRTINIT2: LD A,(HL) ; GET VALUE - CALL SCG_SET ; WRITE IT + CALL TMS_SET ; WRITE IT INC HL ; POINT TO NEXT VALUE INC C ; POINT TO NEXT REGISTER - DJNZ SCG_CRTINIT2 ; LOOP + DJNZ TMS_CRTINIT2 ; LOOP RET ; ;---------------------------------------------------------------------- ; LOAD FONT DATA ;---------------------------------------------------------------------- ; -SCG_LOADFONT: +TMS_LOADFONT: ; SET WRITE ADDRESS TO $800 LD HL,$800 - CALL SCG_WR + CALL TMS_WR ; ; FILL $800 BYTES FROM FONTDATA - LD HL,SCG_FONTDATA + LD HL,TMS_FONTDATA LD DE,$100 * 8 -SCG_LOADFONT1: +TMS_LOADFONT1: LD B,8 -SCG_LOADFONT2: +TMS_LOADFONT2: LD A,(HL) PUSH AF INC HL - DJNZ SCG_LOADFONT2 + DJNZ TMS_LOADFONT2 ; LD B,8 -SCG_LOADFONT3: +TMS_LOADFONT3: POP AF - OUT (SCG_DATREG),A + OUT (TMS_DATREG),A DEC DE - DJNZ SCG_LOADFONT3 + DJNZ TMS_LOADFONT3 ; LD A,D OR E - JR NZ,SCG_LOADFONT1 + JR NZ,TMS_LOADFONT1 ; RET ; ;---------------------------------------------------------------------- ; VIRTUAL CURSOR MANAGEMENT -; SCG_SETCUR CONFIGURES AND DISPLAYS CURSOR AT CURRENT CURSOR LOCATION -; SCG_CLRCUR REMOVES THE CURSOR +; TMS_SETCUR CONFIGURES AND DISPLAYS CURSOR AT CURRENT CURSOR LOCATION +; TMS_CLRCUR REMOVES THE CURSOR ; ; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH ; FOR CHAR 255 TO BE THE INVERSE OF THE GLYPH OF THE CHARACTER UNDER ; THE CURRENT CURSOR POSITION. THE CHARACTER CODE IS THEN SWITCH TO ; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY ; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT -; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO SCG_CLRCUR PRIOR TO -; CHANGES AND SCG_SETCUR AFTER CHANGES. +; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO TMS_CLRCUR PRIOR TO +; CHANGES AND TMS_SETCUR AFTER CHANGES. ;---------------------------------------------------------------------- ; -SCG_SETCUR: +TMS_SETCUR: PUSH HL ; PRESERVE HL PUSH DE ; PRESERVE DE - LD HL,(SCG_POS) ; GET CURSOR POSITION - CALL SCG_RD ; SETUP TO READ VDU BUF - IN A,(SCG_DATREG) ; GET REAL CHAR UNDER CURSOR - SCG_IODELAY ; DELAY + LD HL,(TMS_POS) ; GET CURSOR POSITION + CALL TMS_RD ; SETUP TO READ VDU BUF + IN A,(TMS_DATREG) ; GET REAL CHAR UNDER CURSOR + TMS_IODELAY ; DELAY PUSH AF ; SAVE THE CHARACTER - CALL SCG_WR ; SETUP TO WRITE TO THE SAME PLACE + CALL TMS_WR ; SETUP TO WRITE TO THE SAME PLACE LD A,$FF ; REPLACE REAL CHAR WITH 255 - OUT (SCG_DATREG),A ; DO IT - SCG_IODELAY ; DELAY + OUT (TMS_DATREG),A ; DO IT + TMS_IODELAY ; DELAY POP AF ; RECOVER THE REAL CHARACTER LD B,A ; PUT IT IN B - LD A,(SCG_CURSAV) ; GET THE CURRENTLY SAVED CHAR + LD A,(TMS_CURSAV) ; GET THE CURRENTLY SAVED CHAR CP B ; COMPARE TO CURRENT - JR Z,SCG_SETCUR3 ; IF EQUAL, BYPASS EXTRA WORK + JR Z,TMS_SETCUR3 ; IF EQUAL, BYPASS EXTRA WORK LD A,B ; GET REAL CHAR BACK TO A - LD (SCG_CURSAV),A ; SAVE IT + LD (TMS_CURSAV),A ; SAVE IT ; GET THE GLYPH DATA FOR REAL CHARACTER LD HL,0 ; ZERO HL LD L,A ; HL IS NOW RAW CHAR INDEX LD B,3 ; LEFT SHIFT BY 3 BITS -SCG_SETCUR0: ; MULT BY 8 FOR FONT INDEX +TMS_SETCUR0: ; MULT BY 8 FOR FONT INDEX SLA L ; SHIFT LSB INTO CARRY RL H ; SHFT MSB FROM CARRY - DJNZ SCG_SETCUR0 ; LOOP 3 TIMES + DJNZ TMS_SETCUR0 ; LOOP 3 TIMES LD DE,$800 ; OFFSET TO START OF FONT TABLE ADD HL,DE ; ADD TO FONT INDEX - CALL SCG_RD ; SETUP TO READ GLYPH + CALL TMS_RD ; SETUP TO READ GLYPH LD B,8 ; 8 BYTES - LD HL,SCG_BUF ; INTO BUFFER -SCG_SETCUR1: ; READ GLYPH LOOP - IN A,(SCG_DATREG) ; GET NEXT BYTE - SCG_IODELAY ; IO DELAY + LD HL,TMS_BUF ; INTO BUFFER +TMS_SETCUR1: ; READ GLYPH LOOP + IN A,(TMS_DATREG) ; GET NEXT BYTE + TMS_IODELAY ; IO DELAY LD (HL),A ; SAVE VALUE IN BUF INC HL ; BUMP BUF POINTER - DJNZ SCG_SETCUR1 ; LOOP FOR 8 BYTES + DJNZ TMS_SETCUR1 ; LOOP FOR 8 BYTES ; ; NOW WRITE INVERTED GLYPH INTO FONT INDEX 255 LD HL,$800 + (255 * 8) ; LOC OF GLPYPH DATA FOR CHAR 255 - CALL SCG_WR ; SETUP TO WRITE THE INVERTED GLYPH + CALL TMS_WR ; SETUP TO WRITE THE INVERTED GLYPH LD B,8 ; 8 BYTES PER GLYPH - LD HL,SCG_BUF ; POINT TO BUFFER -SCG_SETCUR2: ; WRITE INVERTED GLYPH LOOP + LD HL,TMS_BUF ; POINT TO BUFFER +TMS_SETCUR2: ; WRITE INVERTED GLYPH LOOP LD A,(HL) ; GET THE BYTE INC HL ; BUMP THE BUF POINTER XOR $FF ; INVERT THE VALUE - OUT (SCG_DATREG),A ; WRITE IT TO VDU - SCG_IODELAY ; IO DELAY - DJNZ SCG_SETCUR2 ; LOOP FOR ALL 8 BYTES OF GLYPH + OUT (TMS_DATREG),A ; WRITE IT TO VDU + TMS_IODELAY ; IO DELAY + DJNZ TMS_SETCUR2 ; LOOP FOR ALL 8 BYTES OF GLYPH ; -SCG_SETCUR3: ; RESTORE REGISTERS AND RETURN +TMS_SETCUR3: ; RESTORE REGISTERS AND RETURN POP DE ; RECOVER DE POP HL ; RECOVER HL RET ; RETURN ; ; ; -SCG_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN +TMS_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN PUSH HL ; SAVE HL - LD HL,(SCG_POS) ; POINT TO CURRENT CURSOR POS - CALL SCG_WR ; SET UP TO WRITE TO VDU - LD A,(SCG_CURSAV) ; GET THE REAL CHARACTER - OUT (SCG_DATREG),A ; WRITE IT - SCG_IODELAY ; IO DELAY + LD HL,(TMS_POS) ; POINT TO CURRENT CURSOR POS + CALL TMS_WR ; SET UP TO WRITE TO VDU + LD A,(TMS_CURSAV) ; GET THE REAL CHARACTER + OUT (TMS_DATREG),A ; WRITE IT + TMS_IODELAY ; IO DELAY POP HL ; RECOVER HL RET ; RETURN ; @@ -410,9 +410,9 @@ SCG_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E ;---------------------------------------------------------------------- ; -SCG_XY: - CALL SCG_XY2IDX ; CONVERT ROW/COL TO BUF IDX - LD (SCG_POS),HL ; SAVE THE RESULT (DISPLAY POSITION) +TMS_XY: + CALL TMS_XY2IDX ; CONVERT ROW/COL TO BUF IDX + LD (TMS_POS),HL ; SAVE THE RESULT (DISPLAY POSITION) RET ; ;---------------------------------------------------------------------- @@ -420,10 +420,10 @@ SCG_XY: ; D=ROW, E=COL ;---------------------------------------------------------------------- ; -SCG_XY2IDX: +TMS_XY2IDX: LD A,E ; SAVE COLUMN NUMBER IN A LD H,D ; SET H TO ROW NUMBER - LD E,SCG_COLS ; SET E TO ROW LENGTH + LD E,TMS_COLS ; SET E TO ROW LENGTH CALL MULT8 ; MULTIPLY TO GET ROW OFFSET LD E,A ; GET COLUMN BACK ADD HL,DE ; ADD IT IN @@ -433,15 +433,15 @@ SCG_XY2IDX: ; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR ;---------------------------------------------------------------------- ; -SCG_PUTCHAR: +TMS_PUTCHAR: PUSH AF ; SAVE CHARACTER - LD HL,(SCG_POS) ; LOAD CURRENT POSITION INTO HL - CALL SCG_WR ; SET THE WRITE ADDRESS + LD HL,(TMS_POS) ; LOAD CURRENT POSITION INTO HL + CALL TMS_WR ; SET THE WRITE ADDRESS POP AF ; RECOVER CHARACTER TO WRITE - OUT (SCG_DATREG),A ; WRITE THE CHARACTER - LD HL,(SCG_POS) ; LOAD CURRENT POSITION INTO HL + OUT (TMS_DATREG),A ; WRITE THE CHARACTER + LD HL,(TMS_POS) ; LOAD CURRENT POSITION INTO HL INC HL - LD (SCG_POS),HL + LD (TMS_POS),HL RET ; ;---------------------------------------------------------------------- @@ -451,19 +451,19 @@ SCG_PUTCHAR: ; DE: NUMBER OF CHARACTERS TO FILL ;---------------------------------------------------------------------- ; -SCG_FILL: +TMS_FILL: LD C,A ; SAVE THE CHARACTER TO WRITE - LD HL,(SCG_POS) ; SET STARTING POSITION - CALL SCG_WR ; SET UP FOR WRITE + LD HL,(TMS_POS) ; SET STARTING POSITION + CALL TMS_WR ; SET UP FOR WRITE ; -SCG_FILL1: +TMS_FILL1: LD A,C ; RECOVER CHARACTER TO WRITE - OUT (SCG_DATREG),A - SCG_IODELAY + OUT (TMS_DATREG),A + TMS_IODELAY DEC DE LD A,D OR E - JR NZ,SCG_FILL1 + JR NZ,TMS_FILL1 ; RET ; @@ -471,50 +471,50 @@ SCG_FILL1: ; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED) ;---------------------------------------------------------------------- ; -SCG_SCROLL: +TMS_SCROLL: LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER - LD C,SCG_ROWS - 1 ; SET UP LOOP COUNTER FOR ROWS - 1 + LD C,TMS_ROWS - 1 ; SET UP LOOP COUNTER FOR ROWS - 1 ; -SCG_SCROLL0: ; READ LINE THAT IS ONE PAST CURRENT DESTINATION +TMS_SCROLL0: ; READ LINE THAT IS ONE PAST CURRENT DESTINATION PUSH HL ; SAVE CURRENT DESTINATION - LD DE,SCG_COLS + LD DE,TMS_COLS ADD HL,DE ; POINT TO NEXT ROW SOURCE - CALL SCG_RD ; SET UP TO READ - LD DE,SCG_BUF - LD B,SCG_COLS -SCG_SCROLL1: - IN A,(SCG_DATREG) - SCG_IODELAY + CALL TMS_RD ; SET UP TO READ + LD DE,TMS_BUF + LD B,TMS_COLS +TMS_SCROLL1: + IN A,(TMS_DATREG) + TMS_IODELAY LD (DE),A INC DE - DJNZ SCG_SCROLL1 + DJNZ TMS_SCROLL1 POP HL ; RECOVER THE DESTINATION ; ; WRITE THE BUFFERED LINE TO CURRENT DESTINATION - CALL SCG_WR ; SET UP TO WRITE - LD DE,SCG_BUF - LD B,SCG_COLS -SCG_SCROLL2: + CALL TMS_WR ; SET UP TO WRITE + LD DE,TMS_BUF + LD B,TMS_COLS +TMS_SCROLL2: LD A,(DE) - OUT (SCG_DATREG),A - SCG_IODELAY + OUT (TMS_DATREG),A + TMS_IODELAY INC DE - DJNZ SCG_SCROLL2 + DJNZ TMS_SCROLL2 ; ; BUMP TO NEXT LINE - LD DE,SCG_COLS + LD DE,TMS_COLS ADD HL,DE DEC C ; DECREMENT ROW COUNTER - JR NZ,SCG_SCROLL0 ; LOOP THRU ALL ROWS + JR NZ,TMS_SCROLL0 ; LOOP THRU ALL ROWS ; ; FILL THE NEWLY EXPOSED BOTTOM LINE - CALL SCG_WR + CALL TMS_WR LD A,' ' - LD B,SCG_COLS -SCG_SCROLL3: - OUT (SCG_DATREG),A - SCG_IODELAY - DJNZ SCG_SCROLL3 + LD B,TMS_COLS +TMS_SCROLL3: + OUT (TMS_DATREG),A + TMS_IODELAY + DJNZ TMS_SCROLL3 ; RET ; @@ -522,50 +522,50 @@ SCG_SCROLL3: ; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED) ;---------------------------------------------------------------------- ; -SCG_RSCROLL: - LD HL,SCG_COLS * (SCG_ROWS - 1) - LD C,SCG_ROWS - 1 +TMS_RSCROLL: + LD HL,TMS_COLS * (TMS_ROWS - 1) + LD C,TMS_ROWS - 1 ; -SCG_RSCROLL0: ; READ THE LINE THAT IS ONE PRIOR TO CURRENT DESTINATION +TMS_RSCROLL0: ; READ THE LINE THAT IS ONE PRIOR TO CURRENT DESTINATION PUSH HL ; SAVE THE DESTINATION ADDRESS - LD DE,-SCG_COLS + LD DE,-TMS_COLS ADD HL,DE ; SET SOURCE ADDRESS - CALL SCG_RD ; SET UP TO READ - LD DE,SCG_BUF ; POINT TO BUFFER - LD B,SCG_COLS ; LOOP FOR EACH COLUMN -SCG_RSCROLL1: - IN A,(SCG_DATREG) ; GET THE CHAR - SCG_IODELAY ; RECOVER + CALL TMS_RD ; SET UP TO READ + LD DE,TMS_BUF ; POINT TO BUFFER + LD B,TMS_COLS ; LOOP FOR EACH COLUMN +TMS_RSCROLL1: + IN A,(TMS_DATREG) ; GET THE CHAR + TMS_IODELAY ; RECOVER LD (DE),A ; SAVE IN BUFFER INC DE ; BUMP BUFFER POINTER - DJNZ SCG_RSCROLL1 ; LOOP THRU ALL COLS + DJNZ TMS_RSCROLL1 ; LOOP THRU ALL COLS POP HL ; RECOVER THE DESTINATION ADDRESS ; ; WRITE THE BUFFERED LINE TO CURRENT DESTINATION - CALL SCG_WR ; SET THE WRITE ADDRESS - LD DE,SCG_BUF ; POINT TO BUFFER - LD B,SCG_COLS ; INIT LOOP COUNTER -SCG_RSCROLL2: + CALL TMS_WR ; SET THE WRITE ADDRESS + LD DE,TMS_BUF ; POINT TO BUFFER + LD B,TMS_COLS ; INIT LOOP COUNTER +TMS_RSCROLL2: LD A,(DE) ; LOAD THE CHAR - OUT (SCG_DATREG),A ; WRITE TO SCREEN - SCG_IODELAY ; DELAY + OUT (TMS_DATREG),A ; WRITE TO SCREEN + TMS_IODELAY ; DELAY INC DE ; BUMP BUF POINTER - DJNZ SCG_RSCROLL2 ; LOOP THRU ALL COLS + DJNZ TMS_RSCROLL2 ; LOOP THRU ALL COLS ; ; BUMP TO THE PRIOR LINE - LD DE,-SCG_COLS ; LOAD COLS (NEGATIVE) + LD DE,-TMS_COLS ; LOAD COLS (NEGATIVE) ADD HL,DE ; BACK UP THE ADDRESS DEC C ; DECREMENT ROW COUNTER - JR NZ,SCG_RSCROLL0 ; LOOP THRU ALL ROWS + JR NZ,TMS_RSCROLL0 ; LOOP THRU ALL ROWS ; ; FILL THE NEWLY EXPOSED BOTTOM LINE - CALL SCG_WR + CALL TMS_WR LD A,' ' - LD B,SCG_COLS -SCG_RSCROLL3: - OUT (SCG_DATREG),A - SCG_IODELAY - DJNZ SCG_RSCROLL3 + LD B,TMS_COLS +TMS_RSCROLL3: + OUT (TMS_DATREG),A + TMS_IODELAY + DJNZ TMS_RSCROLL3 ; RET ; @@ -573,48 +573,48 @@ SCG_RSCROLL3: ; BLOCK COPY BC BYTES FROM HL TO DE ;---------------------------------------------------------------------- ; -SCG_BLKCPY: +TMS_BLKCPY: ; SAVE DESTINATION AND LENGTH PUSH BC ; LENGTH PUSH DE ; DEST ; ; READ FROM THE SOURCE LOCATION -SCG_BLKCPY1: - CALL SCG_RD ; SET UP TO READ FROM ADDRESS IN HL - LD DE,SCG_BUF ; POINT TO BUFFER +TMS_BLKCPY1: + CALL TMS_RD ; SET UP TO READ FROM ADDRESS IN HL + LD DE,TMS_BUF ; POINT TO BUFFER LD B,C -SCG_BLKCPY2: - IN A,(SCG_DATREG) ; GET THE NEXT BYTE - SCG_IODELAY ; DELAY +TMS_BLKCPY2: + IN A,(TMS_DATREG) ; GET THE NEXT BYTE + TMS_IODELAY ; DELAY LD (DE),A ; SAVE IN BUFFER INC DE ; BUMP BUF PTR - DJNZ SCG_BLKCPY2 ; LOOP AS NEEDED + DJNZ TMS_BLKCPY2 ; LOOP AS NEEDED ; ; WRITE TO THE DESTINATION LOCATION POP HL ; RECOVER DESTINATION INTO HL - CALL SCG_WR ; SET UP TO WRITE - LD DE,SCG_BUF ; POINT TO BUFFER + CALL TMS_WR ; SET UP TO WRITE + LD DE,TMS_BUF ; POINT TO BUFFER POP BC ; GET LOOP COUNTER BACK LD B,C -SCG_BLKCPY3: +TMS_BLKCPY3: LD A,(DE) ; GET THE CHAR FROM BUFFER - OUT (SCG_DATREG),A ; WRITE TO VDU - SCG_IODELAY ; DELAY + OUT (TMS_DATREG),A ; WRITE TO VDU + TMS_IODELAY ; DELAY INC DE ; BUMP BUF PTR - DJNZ SCG_BLKCPY3 ; LOOP AS NEEDED + DJNZ TMS_BLKCPY3 ; LOOP AS NEEDED ; RET ; ;================================================================================================== -; SCG DRIVER - DATA +; TMS DRIVER - DATA ;================================================================================================== ; -SCG_POS .DW 0 ; CURRENT DISPLAY POSITION -SCG_CURSAV .DB 0 ; SAVES ORIGINAL CHARACTER UNDER CURSOR -SCG_BUF .FILL 256,0 ; COPY BUFFER +TMS_POS .DW 0 ; CURRENT DISPLAY POSITION +TMS_CURSAV .DB 0 ; SAVES ORIGINAL CHARACTER UNDER CURSOR +TMS_BUF .FILL 256,0 ; COPY BUFFER ; ;================================================================================================== -; SCG DRIVER - TMS9918 REGISTER INITIALIZATION +; TMS DRIVER - TMS9918 REGISTER INITIALIZATION ;================================================================================================== ; ; Control Registers (write CMDREG): @@ -655,7 +655,7 @@ SCG_BUF .FILL 256,0 ; COPY BUFFER ; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. ; INT Set at each screen update, used for interrupts. ; -SCG_INIT9918: +TMS_INIT9918: .DB $00 ; REG 0 - NO EXTERNAL VID .DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 .DB $00 ; REG 2 - PATTERN NAME TABLE := 0 @@ -665,11 +665,11 @@ SCG_INIT9918: .DB $00 ; REG 6 - NO SPRITE GENERATOR TABLE .DB $F0 ; REG 7 - WHITE ON BLACK ; -SCG_INIT9918LEN .EQU $ - SCG_INIT9918 +TMS_INIT9918LEN .EQU $ - TMS_INIT9918 ; ;================================================================================================== -; SCG DRIVER - FONT DATA +; TMS DRIVER - FONT DATA ;================================================================================================== ; -SCG_FONTDATA: -#INCLUDE "scg_font.inc" \ No newline at end of file +TMS_FONTDATA: +#INCLUDE "TMS_font.inc" \ No newline at end of file diff --git a/Source/HBIOS/scg_font.inc b/Source/HBIOS/tms_font.inc similarity index 97% rename from Source/HBIOS/scg_font.inc rename to Source/HBIOS/tms_font.inc index 9e7fa721..4d204d95 100644 --- a/Source/HBIOS/scg_font.inc +++ b/Source/HBIOS/tms_font.inc @@ -1,4 +1,4 @@ -; n8v_font.inc - automatically generated by n8vidtst +; tms_font.inc - automatically generated by n8vidtst .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x00(0) .DB 030h,030h,030h,03ch,03ch,000h,000h,000h ; 0x01(1) .DB 030h,030h,030h,0f0h,0f0h,000h,000h,000h ; 0x02(2) @@ -255,5 +255,5 @@ .DB 000h,0f8h,080h,040h,03ch,0f0h,000h,000h ; 0xfd(253) .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xfe(254) .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0xff(255) -; eof - n8v_font.inc +; eof - tms_font.inc diff --git a/Source/HBIOS/tty.asm b/Source/HBIOS/tty.asm index 3a7466e1..e8d55476 100644 --- a/Source/HBIOS/tty.asm +++ b/Source/HBIOS/tty.asm @@ -89,20 +89,14 @@ TTY_CIOOST: ; ; TTY_CIOINIT: - ; SETUP AND FORWARD CALL TO PARENT VDA DRIVER'S VDAINIT FUNCTION - LD B,BF_VDAINI ; WE ARE FORWARDING TO VDAINIT FUNCTION - LD A,(TTY_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR - LD C,A ; AND PUT IT IN C - LD D,L ; TERMTYPE TO D - LD E,0 ; VIDEO MODE = 0 - LD HL,0 ; NO BITMAP, LEAVE IT ALONG - JP TTY_VDADISP ; LET VDA DRIVER HANDLE IT FROM HERE + XOR A ; NOTHING TO DO, SIGNAL SUCCESS + RET ; ... AND RETURN ; ; ; TTY_CIOQUERY: - LD DE,0 - LD HL,0 + LD DE,$FFFF + LD HL,$FFFF XOR A RET ; diff --git a/Source/HBIOS/uart.asm b/Source/HBIOS/uart.asm index 1bb7cdd3..399ac9e8 100644 --- a/Source/HBIOS/uart.asm +++ b/Source/HBIOS/uart.asm @@ -250,7 +250,8 @@ UART0_OST: RET ; UART0_INITDEV: - CALL PANIC + XOR A ; NOT IMPLEMENTED!!! + RET ; ; ; @@ -362,7 +363,8 @@ UART1_OST: RET ; UART1_INITDEV: - CALL PANIC + XOR A ; NOT IMPLEMENTED!!! + RET ; ; ; diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index 0d33f053..47547709 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -347,16 +347,16 @@ _REGDMP: LD (REGDMP_PC),HL ; SAVE PC VALUE EX (SP),HL ; BACK THE WAY IT WAS - LD (UTSTKSAV),SP ; SAVE ORIGINAL STACK POINTER - LD SP,UTPRVSTK ; SWITCH TO PRIVATE STACK + LD (REGDMP_SP),SP ; SAVE STACK POINTER + + ;LD (RD_STKSAV),SP ; SAVE ORIGINAL STACK POINTER + ;LD SP,RD_STACK ; SWITCH TO PRIVATE STACK PUSH AF PUSH BC PUSH DE PUSH HL - CALL PC_LBKT - PUSH AF LD A,'@' CALL COUT @@ -364,9 +364,9 @@ _REGDMP: PUSH BC LD BC,(REGDMP_PC) - CALL PRTHEXWORD + CALL PRTHEXWORD ; PC POP BC - CALL PC_COLON + CALL PC_LBKT PUSH BC PUSH AF POP BC @@ -383,7 +383,7 @@ _REGDMP: POP BC CALL PRTHEXWORD ; HL CALL PC_COLON - LD BC,(UTSTKSAV) + LD BC,(REGDMP_SP) CALL PRTHEXWORD ; SP CALL PC_RBKT @@ -394,12 +394,17 @@ _REGDMP: POP BC POP AF - LD SP,(UTSTKSAV) ; BACK TO ORIGINAL STACK FRAME + ;LD SP,(RD_STKSAV) ; BACK TO ORIGINAL STACK FRAME JP $FFFF ; RETURN, $FFFF IS DYNAMICALLY UPDATED REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE ; REGDMP_PC .DW 0 +REGDMP_SP .DW 0 +; +;RD_STKSAV .DW 0 +; .FILL $FF,16*2 ; 16 LEVEL PRIVATE STACK +;RD_STACK .EQU $ ; ; ; @@ -876,9 +881,3 @@ ST32: LD (BC),A POP AF RET -; -; PRIVATE STACK -; -UTSTKSAV .DW 0 - .FILL $FF,64 ; 32 LEVEL PRIVATE STACK SPACE -UTPRVSTK .EQU $