Browse Source

API Revisions / Cleanup

- Improved banked copy size and performance
- Revised API for SETCPY, BNKCPY, SETBNK, and GETBNK
pull/3/head
Wayne Warthen 10 years ago
parent
commit
8fe3526ecd
  1. 1
      Source/Apps/OSLdr.asm
  2. 85
      Source/CBIOS/cbios.asm
  3. 27
      Source/CBIOS/util.asm
  4. 6
      Source/CBIOS/ver.inc
  5. 76
      Source/HBIOS/API.txt
  6. 4
      Source/HBIOS/Config/mk4_cvdu.asm
  7. 4
      Source/HBIOS/Config/mk4_diskio3.asm
  8. 4
      Source/HBIOS/Config/mk4_dsd.asm
  9. 4
      Source/HBIOS/Config/mk4_propio.asm
  10. 4
      Source/HBIOS/Config/mk4_std.asm
  11. 4
      Source/HBIOS/Config/n8_2312.asm
  12. 4
      Source/HBIOS/Config/n8_2511.asm
  13. 5
      Source/HBIOS/Config/sbc_ci.asm
  14. 4
      Source/HBIOS/Config/sbc_cvdu.asm
  15. 4
      Source/HBIOS/Config/sbc_dide.asm
  16. 4
      Source/HBIOS/Config/sbc_diskio.asm
  17. 4
      Source/HBIOS/Config/sbc_diskio3+cvdu.asm
  18. 4
      Source/HBIOS/Config/sbc_diskio3.asm
  19. 4
      Source/HBIOS/Config/sbc_dsd.asm
  20. 4
      Source/HBIOS/Config/sbc_mfpic.asm
  21. 4
      Source/HBIOS/Config/sbc_ppide.asm
  22. 4
      Source/HBIOS/Config/sbc_ppisd.asm
  23. 4
      Source/HBIOS/Config/sbc_propio.asm
  24. 4
      Source/HBIOS/Config/sbc_rf.asm
  25. 4
      Source/HBIOS/Config/sbc_simh.asm
  26. 4
      Source/HBIOS/Config/sbc_std.asm
  27. 4
      Source/HBIOS/Config/sbc_vdu.asm
  28. 4
      Source/HBIOS/Config/zeta2_ppide.asm
  29. 4
      Source/HBIOS/Config/zeta2_ppisd.asm
  30. 4
      Source/HBIOS/Config/zeta2_ppp.asm
  31. 4
      Source/HBIOS/Config/zeta2_std.asm
  32. 4
      Source/HBIOS/Config/zeta_ppide.asm
  33. 4
      Source/HBIOS/Config/zeta_ppisd.asm
  34. 4
      Source/HBIOS/Config/zeta_ppp.asm
  35. 4
      Source/HBIOS/Config/zeta_std.asm
  36. 14
      Source/HBIOS/ansi.asm
  37. 6
      Source/HBIOS/asci.asm
  38. 2
      Source/HBIOS/cvdu_font.asm
  39. 11
      Source/HBIOS/fd.asm
  40. 316
      Source/HBIOS/hbios.asm
  41. 24
      Source/HBIOS/hbios.inc
  42. 10
      Source/HBIOS/ide.asm
  43. 10
      Source/HBIOS/ppide.asm
  44. 500
      Source/HBIOS/tms.asm
  45. 4
      Source/HBIOS/tms_font.inc
  46. 14
      Source/HBIOS/tty.asm
  47. 6
      Source/HBIOS/uart.asm
  48. 27
      Source/HBIOS/util.asm

1
Source/Apps/OSLdr.asm

@ -247,6 +247,7 @@ init1:
ld (biover),hl ; save version ld (biover),hl ; save version
ld b,bfgbnk ; HBIOS func: get current bank ld b,bfgbnk ; HBIOS func: get current bank
rst 08 ; do it rst 08 ; do it
ld a,c ; move to A
ld (tpabnk),a ; save it ld (tpabnk),a ; save it
init2: init2:

85
Source/CBIOS/cbios.asm

@ -313,13 +313,16 @@ WBOOT:
RST 08 ; DO IT RST 08 ; DO IT
#ELSE #ELSE
; RESTORE COMMAND PROCESSOR FROM CACHE IN HB BANK ; 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) 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 HL,(CCPBUF) ; COPY FROM FIXED LOCATION IN HB BANK
LD DE,CCP_LOC ; TO CCP LOCATION IN USR 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 RST 08 ; DO IT
#ENDIF #ENDIF
; ;
@ -1056,19 +1059,22 @@ BLK_BLOCK:
LDIR LDIR
RET RET
#ELSE #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 A,(BNKUSER) ; GET USER BANK
LD E,A ; E = SOURCE (USER BANK) LD E,A ; E = SOURCE (USER BANK)
LD A,(BNKBIOS) ; GET DEST BANK LD A,(BNKBIOS) ; GET DEST BANK
LD D,A ; D = DEST (BIOS 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 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 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 RST 08 ; DO IT
POP IX ; RESTORE IX
;POP IX ; RESTORE IX
RET RET
#ENDIF #ENDIF
; ;
@ -1083,15 +1089,18 @@ BLK_DEBLOCK:
LDIR LDIR
RET RET
#ELSE #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 DE,(BNKBIOS) ; E = SOURCE (BIOS BANK), D = DEST (USER BANK)
LD HL,128 ; HL = COPY LEN = DMA BUFFER SIZE
RST 08 ; DO IT RST 08 ; DO IT
CALL BLK_SETUP ; SETUP SOURCE AND DESTINATION 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 RST 08 ; DO IT
POP IX ; RESTORE IX
;POP IX ; RESTORE IX
RET RET
#ENDIF #ENDIF
; ;
@ -1259,14 +1268,13 @@ DSK_WRITE:
#IFDEF PLTUNA #IFDEF PLTUNA
DSK_IO: DSK_IO:
DSK_IO1:
PUSH BC PUSH BC
LD DE,(HSTTRK) ; GET TRACK INTO HL LD DE,(HSTTRK) ; GET TRACK INTO HL
LD B,4 ; PREPARE TO LEFT SHIFT BY 4 BITS LD B,4 ; PREPARE TO LEFT SHIFT BY 4 BITS
DSK_IO2:
DSK_IO1:
SLA E ; SHIFT DE LEFT BY 4 BITS SLA E ; SHIFT DE LEFT BY 4 BITS
RL D 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 LD A,(HSTSEC) ; GET THE SECTOR INTO A
AND $0F ; GET RID OF TOP NIBBLE AND $0F ; GET RID OF TOP NIBBLE
OR E ; COMBINE WITH E OR E ; COMBINE WITH E
@ -1319,13 +1327,16 @@ CHS:
CP DIODEV_FD ; FLOPPY? CP DIODEV_FD ; FLOPPY?
JR NZ,CHSHD ; IF NOT, DO HD CHS XLAT 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 JR CHS2
; ;
; HARD DISK SPECIFIC TRANSLATION ; HARD DISK SPECIFIC TRANSLATION
@ -1811,16 +1822,19 @@ INIT:
LD (9),HL ; STORE AT 0x0009 LD (9),HL ; STORE AT 0x0009
; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) ; 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) 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 HL,HCB_LOC ; COPY FROM FIXED LOCATION IN HB BANK
LD DE,HCB ; TO TEMP LOCATION IN USR 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 RST 08 ; DO IT
; CAPTURE RAM DRIVE STARTING BANK ; CAPTURE RAM DRIVE STARTING BANK
LD A,(HCB + HCB_BIDRAMD0) LD A,(HCB + HCB_BIDRAMD0)
LD (BNKRAMD),A LD (BNKRAMD),A
@ -1861,22 +1875,25 @@ INIT:
POP DE ; RECOVER OPERATING BANK POP DE ; RECOVER OPERATING BANK
RST 08 ; DO IT RST 08 ; DO IT
#ELSE #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 B,BF_SYSALLOC ; HBIOS FUNC: ALLOCATE HEAP MEMORY
LD HL,CCP_SIZ ; SIZE TO ALLOC (SIZE OF CCP) LD HL,CCP_SIZ ; SIZE TO ALLOC (SIZE OF CCP)
RST 08 ; DO IT RST 08 ; DO IT
CALL NZ,PANIC ; BIG PROBLEM CALL NZ,PANIC ; BIG PROBLEM
LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) 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 A,(BNKUSER) ; GET USER BANK
LD E,A ; E = SOURCE (USER BANK) LD E,A ; E = SOURCE (USER BANK)
LD A,(BNKBIOS) ; GET BIOS BANK LD A,(BNKBIOS) ; GET BIOS BANK
LD D,A ; D = DEST (BIOS BANK) LD D,A ; D = DEST (BIOS BANK)
LD HL,CCP_SIZ ; HL = COPY LEN = SIZE OF COMMAND PROCESSOR
RST 08 ; DO IT 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 HL,CCP_LOC ; COPY FROM CCP LOCATION IN USR BANK
LD DE,(CCPBUF) ; TO ALLOCATED LOCATION IN HB 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 RST 08 ; DO IT
#ENDIF #ENDIF

27
Source/CBIOS/util.asm

@ -140,16 +140,16 @@ _REGDMP:
LD (REGDMP_PC),HL ; SAVE PC VALUE LD (REGDMP_PC),HL ; SAVE PC VALUE
EX (SP),HL ; BACK THE WAY IT WAS 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 AF
PUSH BC PUSH BC
PUSH DE PUSH DE
PUSH HL PUSH HL
CALL PC_LBKT
PUSH AF PUSH AF
LD A,'@' LD A,'@'
CALL COUT CALL COUT
@ -157,9 +157,9 @@ _REGDMP:
PUSH BC PUSH BC
LD BC,(REGDMP_PC) LD BC,(REGDMP_PC)
CALL PRTHEXWORD
CALL PRTHEXWORD ; PC
POP BC POP BC
CALL PC_COLON
CALL PC_LBKT
PUSH BC PUSH BC
PUSH AF PUSH AF
POP BC POP BC
@ -176,7 +176,7 @@ _REGDMP:
POP BC POP BC
CALL PRTHEXWORD ; HL CALL PRTHEXWORD ; HL
CALL PC_COLON CALL PC_COLON
LD BC,(UTSTKSAV)
LD BC,(REGDMP_SP)
CALL PRTHEXWORD ; SP CALL PRTHEXWORD ; SP
CALL PC_RBKT CALL PC_RBKT
@ -187,12 +187,17 @@ _REGDMP:
POP BC POP BC
POP AF 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 JP $FFFF ; RETURN, $FFFF IS DYNAMICALLY UPDATED
REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE
; ;
REGDMP_PC .DW 0 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 INC DE
DJNZ PRTHEXBUF1 DJNZ PRTHEXBUF1
RET RET
;
; PRIVATE STACK
;
UTSTKSAV .DW 0
.FILL $FF,64 ; 32 LEVEL PRIVATE STACK SPACE
UTPRVSTK .EQU $

6
Source/CBIOS/ver.inc

@ -1,5 +1,5 @@
#DEFINE RMJ 2 #DEFINE RMJ 2
#DEFINE RMN 7
#DEFINE RUP 1
#DEFINE RMN 8
#DEFINE RUP 0
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "2.7.1"
#DEFINE BIOSVER "2.8.0-pre.1"

76
Source/HBIOS/API.txt

@ -2,7 +2,39 @@
HBIOS Management Functions 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 BC=Function/Subfunction A=Result
Subfunctions: Subfunctions:
@ -40,7 +72,7 @@ GET ($07):
D=BIOS Bank Id D=BIOS Bank Id
E=User Bank Id E=User Bank Id
SET ($08):
SET ($F8):
BC=Function/Subfunction A=Result BC=Function/Subfunction A=Result
BOOTINFO ($E0): BOOTINFO ($E0):
@ -48,6 +80,17 @@ SET ($08):
L=Boot Bank Id L=Boot Bank Id
DE=Boot Volume (Disk Unit/Slice) 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 Serial Functions
================ ================
@ -76,18 +119,22 @@ OST ($03):
INIT ($04): INIT ($04):
BC=Function/Unit A=Result BC=Function/Unit A=Result
DE=Line Characteristics DE=Line Characteristics
L=Terminal Type
L=Terminal Type?
QUERY ($05) QUERY ($05)
BC=Function/Unit A=Result BC=Function/Unit A=Result
DE=Line Characteristics (Baud, Flow Control, etc.) 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): DEVICE ($06):
BC=Function/Unit A=Result BC=Function/Unit A=Result
D=Device Type D=Device Type
E=Device Number 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.) H=Media Type (RS-232, Terminal, etc.)
L=Video Unit Id (if Media Type == VDA) L=Video Unit Id (if Media Type == VDA)
@ -141,13 +188,13 @@ DEVICE ($17)
BC=Function/Unit A=Result BC=Function/Unit A=Result
D=Device Type (MD, FD, IDE, etc.) D=Device Type (MD, FD, IDE, etc.)
E=Device Number (0..n) E=Device Number (0..n)
C=Disk Attributes
C=Device Attributes
Report the Device Type (Floppy, IDE, SD, etc.) and Device Number. Call 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. does not perform any I/O and succeeds even if the device is in an error state.
It does not reset the unit status. 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) 7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM)
If Floppy: If Floppy:
@ -182,7 +229,7 @@ CAPACITY ($1A):
BC=Block Size BC=Block Size
A=Result A=Result
Return device capacity information.
Report current media capacity information.
If media is unknown, return error (no media) If media is unknown, return error (no media)
GEOMETRY ($1B): GEOMETRY ($1B):
@ -193,16 +240,9 @@ GEOMETRY ($1B):
BC=Block Size BC=Block Size
A=Result A=Result
Return device geometry information.
Report current media geometry information.
If media is unknown, return error (no media) 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 Video Functions
=============== ===============
@ -227,11 +267,11 @@ Serial 0 UART0: RS-232 38400,8N1,HFC
Serial 1 PRPCON0: Direct -- Serial 1 PRPCON0: Direct --
Serial 2 CVDU0: Direct -- Serial 2 CVDU0: Direct --
Serial 2 VDU0: Direct -- Serial 2 VDU0: Direct --
Serial 2 SCG0: Direct --
Serial 2 TMS0: Direct --
Video 0 PRPCON0: VDA Text 80x25, ANSI Video 0 PRPCON0: VDA Text 80x25, ANSI
Video 1 CVDU0: VDA Text 80x25, ANSI Video 1 CVDU0: VDA Text 80x25, ANSI
Video 2 VDU0: 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 Unit: Function Group & Unit Index
Device: <driver>_DEVICE Device Type & Device Num Device: <driver>_DEVICE Device Type & Device Num

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU TRUE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

5
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU TRUE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU TRUE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU TRUE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

4
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 VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU 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) 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) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)

14
Source/HBIOS/ansi.asm

@ -199,20 +199,14 @@ ANSI_CIOOST: ; VIDEO OUTPUT IS *ALWAYS* READY
; INITIALIZE ; INITIALIZE
; ;
ANSI_CIOINIT: 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 ; QUERY STATUS
; ;
ANSI_CIOQUERY: ANSI_CIOQUERY:
LD DE,0
LD HL,0
LD DE,$FFFF
LD HL,$FFFF
XOR A XOR A
RET RET
; ;

6
Source/HBIOS/asci.asm

@ -229,7 +229,8 @@ ASCI0_OST:
; ;
; ;
ASCI0_INITDEV: ASCI0_INITDEV:
CALL PANIC
XOR A ; NOT IMPLEMENTED!!!
RET
; ;
; ;
; ;
@ -320,7 +321,8 @@ ASCI1_OST:
; ;
; ;
ASCI1_INITDEV: ASCI1_INITDEV:
CALL PANIC
XOR A ; NOT IMPLEMENTED!!!
RET
; ;
; ;
; ;

2
Source/HBIOS/cvdu_font.asm

@ -511,6 +511,7 @@ CVDU_FONTDATA:
.DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $00,$00,$00,$00,$00,$00,$00,$00
.DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF .DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF
.DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $00,$00,$00,$00,$00,$00,$00,$00
#IF 1
.DB $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0 .DB $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
.DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $00,$00,$00,$00,$00,$00,$00,$00
.DB $3C,$66,$6E,$6E,$60,$62,$3C,$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 $00,$00,$00,$00,$00,$00,$00,$00
.DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF .DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF
.DB $00,$00,$00,$00,$00,$00,$00,$00 .DB $00,$00,$00,$00,$00,$00,$00,$00
#ENDIF

11
Source/HBIOS/fd.asm

@ -808,13 +808,10 @@ FD_RUN:
;CALL FD_SELECTUNIT ;CALL FD_SELECTUNIT
; MAP HSTTRK TO FCD_H, FCD_C ; 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 ; MAP HSTSEC TO FCD_R
LD BC,(HSTSEC) LD BC,(HSTSEC)

316
Source/HBIOS/hbios.asm

@ -174,6 +174,7 @@ HBX_BNKSEL1:
; Copy Data - Possibly between banks. This resembles CP/M 3, but ; Copy Data - Possibly between banks. This resembles CP/M 3, but
; usage of the HL and DE registers is reversed. ; usage of the HL and DE registers is reversed.
; Caller MUST ensure stack is already in high memory. ; Caller MUST ensure stack is already in high memory.
; Caller MUST preset HBX_SRCBNK and HBX_DSTBNK.
; Enter: ; Enter:
; HL = Source Address ; HL = Source Address
; DE = Destination Address ; DE = Destination Address
@ -184,61 +185,48 @@ HBX_BNKSEL1:
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; ;
HBX_BNKCPY: 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. ; Call a routine in another bank saving and restoring the original bank.
; Caller MUST ensure stack is already in high memory. ; Caller MUST ensure stack is already in high memory.
@ -374,6 +362,27 @@ HBX_INT1:
; DONE ; DONE
RETI ; IMPLICITLY REENABLES INTERRUPTS! 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 ; FILLER FOR UNUSED HBIOS PROXY CODE SPACE
; PAD TO START OF INTERRUPT VECTOR TABLE ; PAD TO START OF INTERRUPT VECTOR TABLE
; ;
@ -420,12 +429,13 @@ HBX_STACK .EQU $
.DB BID_USR ; BNKCPY SOURCE BANK ID .DB BID_USR ; BNKCPY SOURCE BANK ID
.DW 0 ; BNKCPY DESTINATION ADDRESS .DW 0 ; BNKCPY DESTINATION ADDRESS
.DB BID_USR ; BNKCPY DESTINATION BANK ID .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_INVOKE ; FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08)
JP HBX_BNKSEL ; FIXED ADR ENTRY FOR HBX_BNKSEL JP HBX_BNKSEL ; FIXED ADR ENTRY FOR HBX_BNKSEL
JP HBX_BNKCPY ; FIXED ADR ENTRY FOR HBX_BNKCPY JP HBX_BNKCPY ; FIXED ADR ENTRY FOR HBX_BNKCPY
JP HBX_BNKCALL ; FIXED ADR ENTRY FOR HBX_BNKCALL 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 .DW HBX_IDENT ; ADDRESS OF HBIOS IDENT INFO DATA BLOCK
; ;
.FILL $MEMTOP - $ ; FILL TO END OF MEMORY (AS NEEDED) .FILL $MEMTOP - $ ; FILL TO END OF MEMORY (AS NEEDED)
@ -617,11 +627,11 @@ HB_INITTBL:
#IF (CVDUENABLE) #IF (CVDUENABLE)
.DW CVDU_INIT .DW CVDU_INIT
#ENDIF #ENDIF
#IF (UPD7220ENABLE)
.DW UPD7220_INIT
#IF (NECENABLE)
.DW NEC_INIT
#ENDIF #ENDIF
#IF (SCGENABLE)
.DW SCG_INIT
#IF (TMSENABLE)
.DW TMS_INIT
#ENDIF #ENDIF
#IF (DSKYENABLE) #IF (DSKYENABLE)
.DW DSKY_INIT .DW DSKY_INIT
@ -692,7 +702,7 @@ IDLE:
; ;
HB_DISPATCH: HB_DISPATCH:
; ;
#IF 1 ; *DEBUG* START
#IF 0 ; *DEBUG* START
; ;
CALL HB_DISPCALL ; DO THE WORK CALL HB_DISPCALL ; DO THE WORK
; ;
@ -701,6 +711,8 @@ HB_DISPATCH:
LD A,(HBX_STACK - HBX_STKSIZ + $08) LD A,(HBX_STACK - HBX_STKSIZ + $08)
CP $FF CP $FF
CALL NZ,PANIC CALL NZ,PANIC
LD A,$FF
LD (HBX_STACK - HBX_STKSIZ + $08),A
POP AF POP AF
RET RET
HB_DISPCALL: HB_DISPCALL:
@ -803,13 +815,13 @@ CIO_DISPATCH1:
CP CIODEV_CVDU CP CIODEV_CVDU
JP Z,CVDU_DISPCIO JP Z,CVDU_DISPCIO
#ENDIF #ENDIF
#IF (UPD7220ENABLE)
CP CIODEV_UPD7220
JP Z,UPD7220_DISPCIO
#IF (NECENABLE)
CP CIODEV_NEC
JP Z,NEC_DISPCIO
#ENDIF #ENDIF
#IF (SCGENABLE)
CP CIODEV_SCG
JP Z,SCG_DISPCIO
#IF (TMSENABLE)
CP CIODEV_TMS
JP Z,TMS_DISPCIO
#ENDIF #ENDIF
CALL PANIC CALL PANIC
RET RET
@ -879,7 +891,7 @@ CIO_ADDENT:
; RET ; AND RETURN ; RET ; AND RETURN
DIO_DISPATCH: DIO_DISPATCH:
;
;
#IF 0 ; *DEBUG* START #IF 0 ; *DEBUG* START
; ;
; DUMP INCOMING CALL ; DUMP INCOMING CALL
@ -966,7 +978,6 @@ DIO_DISPATCH1:
#ENDIF #ENDIF
CALL PANIC CALL PANIC
RET RET
; ;
; CONVERT AN HBIOS STANDARD HARD DISK CHS ADDRESS TO ; CONVERT AN HBIOS STANDARD HARD DISK CHS ADDRESS TO
; AN LBA ADDRESS. A STANDARD HBIOS HARD DISK IS ASSUMED ; AN LBA ADDRESS. A STANDARD HBIOS HARD DISK IS ASSUMED
@ -1146,13 +1157,13 @@ VDA_DISPATCH1:
CP VDADEV_CVDU CP VDADEV_CVDU
JP Z,CVDU_DISPATCH JP Z,CVDU_DISPATCH
#ENDIF #ENDIF
#IF (UPD7220ENABLE)
#IF (NECENABLE)
CP VDADEV_7220 CP VDADEV_7220
JP Z,UPD7220_DISPATCH
JP Z,NEC_DISPATCH
#ENDIF #ENDIF
#IF (SCGENABLE)
CP VDADEV_SCG
JP Z,SCG_DISPATCH
#IF (TMSENABLE)
CP VDADEV_TMS
JP Z,TMS_DISPATCH
#ENDIF #ENDIF
CALL PANIC CALL PANIC
; ;
@ -1193,9 +1204,9 @@ SYS_DISPATCH:
DEC A DEC A
JP Z,SYS_GETBNK ; $F1 JP Z,SYS_GETBNK ; $F1
DEC A DEC A
JP Z,SYS_COPY ; $F2
JP Z,SYS_SETCPY ; $F2
DEC A DEC A
JP Z,SYS_XCOPY ; $F3
JP Z,SYS_BNKCPY ; $F3
DEC A DEC A
JP Z,SYS_ALLOC ; $F4 JP Z,SYS_ALLOC ; $F4
DEC A DEC A
@ -1213,31 +1224,52 @@ SYS_DISPATCH:
CALL PANIC ; INVALID CALL PANIC ; INVALID
; ;
; SET ACTIVE MEMORY BANK AND RETURN PREVIOUSLY ACTIVE MEMORY BANK ; 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 ; HERE, WE JUST SET THE CURRENT BANK
; CALLER MUST EXTABLISH UPPER MEMORY STACK BEFORE INVOKING THIS FUNCTION! ; CALLER MUST EXTABLISH UPPER MEMORY STACK BEFORE INVOKING THIS FUNCTION!
; ;
SYS_SETBNK: 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 ; GET ACTIVE MEMORY BANK
; ;
SYS_GETBNK: SYS_GETBNK:
LD A,(HBX_INVBNK) ; GET THE ACTIVE MEMORY BANK LD A,(HBX_INVBNK) ; GET THE ACTIVE MEMORY BANK
OR A
LD C,A ; MOVE TO C
XOR A ; SIGNAL SUCCESS
RET 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 ;; *DEBUG* START
;PUSH AF ;PUSH AF
@ -1279,16 +1311,6 @@ SYS_COPY:
XOR A XOR A
RET 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 ; ALLOCATE HL BYTES OF MEMORY FROM HBIOS HEAP
; RETURNS POINTER TO ALLOCATED MEMORY IN HL ; RETURNS POINTER TO ALLOCATED MEMORY IN HL
; ON SUCCESS RETURN A == 0, AND Z SET ; ON SUCCESS RETURN A == 0, AND Z SET
@ -1381,7 +1403,7 @@ SYS_GETMEMINFO:
XOR A XOR A
RET RET
; ;
; GET SERIAL UNIT COUNT
; GET BANK CONFIGURATION INFORMATION
; RETURNS: ; RETURNS:
; D: HBIOS BANK ID ; D: HBIOS BANK ID
; E: USER BANK ID ; E: USER BANK ID
@ -1440,21 +1462,20 @@ SYS_SETBOOTINFO:
XOR A XOR A
RET 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: SYS_PEEK:
LD C,(HL)
CALL HBX_PEEK ; IMPLEMENTED IN PROXY
XOR A XOR A
RET 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: SYS_POKE:
LD (HL),C
CALL HBX_POKE ; IMPLEMENTED IN PROXY
XOR A XOR A
RET RET
;; ;;
@ -1684,21 +1705,21 @@ SIZ_CVDU .EQU $ - ORG_CVDU
.ECHO " bytes.\n" .ECHO " bytes.\n"
#ENDIF #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" .ECHO " bytes.\n"
#ENDIF #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" .ECHO " bytes.\n"
#ENDIF #ENDIF
; ;
@ -2286,8 +2307,7 @@ PS_SERIAL:
; PRINT SERIAL TYPE (SERIAL ATTRIBUTE IN E) ; PRINT SERIAL TYPE (SERIAL ATTRIBUTE IN E)
; ;
PS_PRTST: 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 LD A,18 ; 18 CHAR FIELD
SUB C SUB C
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
@ -2298,6 +2318,10 @@ PS_PRTST:
PS_PRTSC: PS_PRTSC:
LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG
RST 08 ; DE:HL := BAUD RATE 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 DE ; DE:HL ==> HL:BC
PUSH HL PUSH HL
POP BC POP BC
@ -2341,8 +2365,7 @@ PS_VIDEO:
; PRINT VIDEO TYPE (VIDEO ATTRIBUTE IN E) ; PRINT VIDEO TYPE (VIDEO ATTRIBUTE IN E)
; ;
PS_PRTVT: 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 LD A,18 ; 18 CHAR FIELD
SUB C SUB C
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
@ -2351,8 +2374,16 @@ PS_PRTVT:
; PRINT VIDEO CONFIG (UNIT IN C, ATTRIBUTE IN E) ; PRINT VIDEO CONFIG (UNIT IN C, ATTRIBUTE IN E)
; ;
PS_PRTVC: 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 RET
; ;
; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE ; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE
@ -2378,6 +2409,12 @@ PS_PRTDEV:
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
RET RET
; ;
; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE
;
PS_PRTNUL:
LD HL,PS_STRNUL
; FALL THRU TO PS_PRT
;
; ;
; ;
PS_PRT: PS_PRT:
@ -2407,6 +2444,8 @@ PS_PAD1:
; ;
PS_BCDTMP .FILL 5,0 ; TEMPORARY BCD NUMBER STORAGE PS_BCDTMP .FILL 5,0 ; TEMPORARY BCD NUMBER STORAGE
; ;
PS_STRNUL .TEXT "--$" ; DISPLAY STRING FOR NUL VALUE
;
; DISK DEVICE STRINGS ; DISK DEVICE STRINGS
; ;
PS_DDSTRREF: PS_DDSTRREF:
@ -2448,7 +2487,7 @@ PS_FLP3 .TEXT "3.5\", $"
PS_FLPN .TEXT "???\", $" PS_FLPN .TEXT "???\", $"
; ;
PS_FLPSS .TEXT "SS/$" PS_FLPSS .TEXT "SS/$"
PS_FLPDS .TEXT "SS/$"
PS_FLPDS .TEXT "DS/$"
; ;
PS_FLPSD .TEXT "SD$" PS_FLPSD .TEXT "SD$"
PS_FLPDD .TEXT "DD$" PS_FLPDD .TEXT "DD$"
@ -2459,38 +2498,35 @@ PS_FLPED .TEXT "ED$"
; ;
PS_SDSTRREF: PS_SDSTRREF:
.DW PS_SDUART, PS_SDASCI, PS_SDVDU, PS_SDCVDU .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_SDUART .TEXT "UART$"
PS_SDASCI .TEXT "ASCI$" PS_SDASCI .TEXT "ASCI$"
PS_SDVDU .TEXT "VDU$" PS_SDVDU .TEXT "VDU$"
PS_SDCVDU .TEXT "CVDU$" 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_SDPRPCON .TEXT "PRPCON$"
PS_SDPPPCON .TEXT "PPPCON$" PS_SDPPPCON .TEXT "PPPCON$"
; ;
; SERIAL TYPE STRINGS ; SERIAL TYPE STRINGS
; ;
PS_STDUMMY .TEXT "--$"
; ;
; VIDEO DEVICE STRINGS ; VIDEO DEVICE STRINGS
; ;
PS_VDSTRREF: 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_VDVDU .TEXT "VDU$"
PS_VDCVDU .TEXT "CVDU$" PS_VDCVDU .TEXT "CVDU$"
PS_VDUPD7220 .TEXT "UPD7220$"
PS_VDSCG .TEXT "SCG$"
PS_VDNEC .TEXT "NEC$"
PS_VDTMS .TEXT "TMS$"
; ;
; SERIAL TYPE STRINGS ; SERIAL TYPE STRINGS
; ;
PS_VTDUMMY .TEXT "--$"
; ;
; VIDEO CONFIG STRINGS ; VIDEO CONFIG STRINGS
; ;
PS_VCDUMMY .TEXT "--$"
; ;
; ;
; 0 1 2 3 4 5 6 7 ; 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) HSTSEC .DB 0 ; SECTOR (0-255)
HSTHEAD .DB 0 ; HEAD (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 HB_INTSTKSAV .DW 0 ; SAVED STACK POINTER DURING INT PROCESSING
.FILL $40,$FF ; 32 ENTRY STACK FOR INTERRUPT PROCESSING .FILL $40,$FF ; 32 ENTRY STACK FOR INTERRUPT PROCESSING
HB_INTSTK .EQU $ ; TOP OF INTERRUPT PROCESSING STACK 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_PLATFORM .DB PLATFORM_NAME, "$"
STR_SWITCH .DB "*** Activating CRT Console ***$" 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 HB_END .EXPORT HB_END ; EXPORT ENDING ADDRESS
; ;

24
Source/HBIOS/hbios.inc

@ -55,8 +55,8 @@ BF_VDAKRD .EQU BF_VDA + 14 ; READ KEYBOARD
BF_SYS .EQU $F0 BF_SYS .EQU $F0
BF_SYSSETBNK .EQU BF_SYS + 0 ; SET CURRENT BANK BF_SYSSETBNK .EQU BF_SYS + 0 ; SET CURRENT BANK
BF_SYSGETBNK .EQU BF_SYS + 1 ; GET 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_SYSALLOC .EQU BF_SYS + 4 ; ALLOC HBIOS HEAP MEMORY
BF_SYSFREE .EQU BF_SYS + 5 ; FREE HBIOS HEAP MEMORY BF_SYSFREE .EQU BF_SYS + 5 ; FREE HBIOS HEAP MEMORY
BF_SYSVER .EQU BF_SYS + 6 ; GET HBIOS VERSION BF_SYSVER .EQU BF_SYS + 6 ; GET HBIOS VERSION
@ -81,8 +81,8 @@ CIODEV_UART .EQU $00
CIODEV_ASCI .EQU $10 CIODEV_ASCI .EQU $10
CIODEV_VDU .EQU $20 CIODEV_VDU .EQU $20
CIODEV_CVDU .EQU $30 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_PRPCON .EQU $60
CIODEV_PPPCON .EQU $70 CIODEV_PPPCON .EQU $70
CIODEV_CONSOLE .EQU $D0 CIODEV_CONSOLE .EQU $D0
@ -105,10 +105,10 @@ DIODEV_HDSK .EQU $90
; VDA DEVICE IDS ; VDA DEVICE IDS
; ;
;VDADEV_NONE .EQU $00 ; NO VDA DEVICE ;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 ; 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_BIDRAMDN .EQU $DD ; LAST BANK OF RAM DRIVE
HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE
HCB_BIDROMDN .EQU $DF ; LAST 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 ; HBIOS PROXY COMMON DATA BLOCK
; EXACTLY 32 BYTES AT $FFE0-$FFFF ; 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_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID
HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS
HB_DSTBNK .EQU HBX_XFCDAT + 7 ; BNKCPY: SOURCE 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 HBX_XFCFNS .EQU HBX_XFC + $10 ; JUMP TABLE PORTION OF HBIOS PROXY INTERFACE AREA
HB_INVOKE .EQU HBX_XFCFNS + (0 * 3) ; INVOKE HBIOS FUNCTION HB_INVOKE .EQU HBX_XFCFNS + (0 * 3) ; INVOKE HBIOS FUNCTION

10
Source/HBIOS/ide.asm

@ -293,7 +293,7 @@ IDE_INIT2:
; ;
; PRINT LBA/NOLBA ; PRINT LBA/NOLBA
CALL PC_SPACE ; FORMATTING 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 LD DE,98+1 ; OFFSET OF BYTE CONTAINING LBA FLAG
ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS
LD A,(HL) ; GET THE BYTE LD A,(HL) ; GET THE BYTE
@ -512,7 +512,7 @@ IDE_IDENTIFY:
LD (IDE_CMD),A LD (IDE_CMD),A
CALL IDE_RUNCMD CALL IDE_RUNCMD
RET NZ RET NZ
LD HL,HB_TMPBUF
LD HL,HB_WRKBUF
JP IDE_GETBUF ; EXIT THRU BUFRD JP IDE_GETBUF ; EXIT THRU BUFRD
; ;
; ;
@ -911,11 +911,11 @@ IDE_INITDEV:
CALL IDE_IDENTIFY ; EXECUTE IDENTIFY COMMAND CALL IDE_IDENTIFY ; EXECUTE IDENTIFY COMMAND
RET NZ ; BAIL OUT ON ERROR 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 DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
; ;
; DETERMINE IF CF DEVICE ; 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 LD A,$8A ; FIRST BYTE OF MARKER IS $8A
CP (HL) ; COMPARE CP (HL) ; COMPARE
JR NZ,IDE_INITDEV1 ; IF NO MATCH, NOT CF JR NZ,IDE_INITDEV1 ; IF NO MATCH, NOT CF
@ -931,7 +931,7 @@ IDE_INITDEV1:
; GET DEVICE CAPACITY AND SAVE IT ; GET DEVICE CAPACITY AND SAVE IT
IDE_DPTR(IDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD IDE_DPTR(IDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD
PUSH HL ; SAVE POINTER 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 LD A,120 ; OFFSET OF SECTOR COUNT
CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT
CALL LD32 ; LOAD IT TO DE:HL CALL LD32 ; LOAD IT TO DE:HL

10
Source/HBIOS/ppide.asm

@ -289,7 +289,7 @@ PPIDE_INIT2:
; ;
; PRINT LBA/NOLBA ; PRINT LBA/NOLBA
CALL PC_SPACE ; FORMATTING 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 LD DE,98+1 ; OFFSET OF BYTE CONTAINING LBA FLAG
ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS ADD HL,DE ; POINT TO FINAL BUFFER ADDRESS
LD A,(HL) ; GET THE BYTE LD A,(HL) ; GET THE BYTE
@ -536,7 +536,7 @@ PPIDE_IDENTIFY:
LD (PPIDE_CMD),A LD (PPIDE_CMD),A
CALL PPIDE_RUNCMD CALL PPIDE_RUNCMD
RET NZ RET NZ
LD HL,HB_TMPBUF
LD HL,HB_WRKBUF
JP PPIDE_GETBUF ; EXIT THRU BUFRD JP PPIDE_GETBUF ; EXIT THRU BUFRD
; ;
; ;
@ -991,11 +991,11 @@ PPIDE_INITDEV:
CALL PPIDE_IDENTIFY ; EXECUTE PPIDENTIFY COMMAND CALL PPIDE_IDENTIFY ; EXECUTE PPIDENTIFY COMMAND
RET NZ ; BAIL OUT ON ERROR 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 DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING
; ;
; DETERMINE IF CF DEVICE ; 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 LD A,$8A ; FIRST BYTE OF MARKER IS $8A
CP (HL) ; COMPARE CP (HL) ; COMPARE
JR NZ,PPIDE_INITDEV1 ; IF NO MATCH, NOT CF JR NZ,PPIDE_INITDEV1 ; IF NO MATCH, NOT CF
@ -1011,7 +1011,7 @@ PPIDE_INITDEV1:
; GET DEVICE CAPACITY AND SAVE IT ; GET DEVICE CAPACITY AND SAVE IT
PPIDE_DPTR(PPIDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD PPIDE_DPTR(PPIDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD
PUSH HL ; SAVE POINTER 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 LD A,120 ; OFFSET OF SECTOR COUNT
CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT CALL ADDHLA ; POINT TO ADDRESS OF SECTOR COUNT
CALL LD32 ; LOAD IT TO DE:HL CALL LD32 ; LOAD IT TO DE:HL

500
Source/HBIOS/scg.asm → Source/HBIOS/tms.asm

@ -11,89 +11,89 @@
; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA? ; - 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 ; BELOW WAS TUNED FOR N8 AT 18MHZ WITH 3 IO WAIT STATES
; WILL NEED TO BE MODIFIED FOR DIFFERENT ACCESS SPEEDS ; WILL NEED TO BE MODIFIED FOR DIFFERENT ACCESS SPEEDS
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!! ; 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 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 ; ADD OURSELVES TO VDA DISPATCH TABLE
LD B,0 ; PHYSICAL UNIT IS ZERO 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 LD DE,0 ; UNIT DATA BLOB ADDRESS
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
; ;
; ADD OURSELVES TO CIO DISPATCH TABLE ; ADD OURSELVES TO CIO DISPATCH TABLE
LD B,0 ; PHYSICAL UNIT IS ZERO 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 LD DE,0 ; UNIT DATA BLOB ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
LD D,VDAEMU ; DEFAULT EMULATION LD D,VDAEMU ; DEFAULT EMULATION
LD E,0 ; VIDEO MODE = 0 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 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 LD A,B ; GET REQUESTED FUNCTION
AND $0F ; ISOLATE SUB-FUNCTION AND $0F ; ISOLATE SUB-FUNCTION
JP Z,SCG_VDAINI ; $40
JP Z,TMS_VDAINI ; $40
DEC A DEC A
JP Z,SCG_VDAQRY ; $41
JP Z,TMS_VDAQRY ; $41
DEC A DEC A
JP Z,SCG_VDARES ; $42
JP Z,TMS_VDARES ; $42
DEC A DEC A
JP Z,SCG_VDADEV ; $43
JP Z,TMS_VDADEV ; $43
DEC A DEC A
JP Z,SCG_VDASCS ; $44
JP Z,TMS_VDASCS ; $44
DEC A DEC A
JP Z,SCG_VDASCP ; $45
JP Z,TMS_VDASCP ; $45
DEC A DEC A
JP Z,SCG_VDASAT ; $46
JP Z,TMS_VDASAT ; $46
DEC A DEC A
JP Z,SCG_VDASCO ; $47
JP Z,TMS_VDASCO ; $47
DEC A DEC A
JP Z,SCG_VDAWRC ; $48
JP Z,TMS_VDAWRC ; $48
DEC A DEC A
JP Z,SCG_VDAFIL ; $49
JP Z,TMS_VDAFIL ; $49
DEC A DEC A
JP Z,SCG_VDACPY ; $4A
JP Z,TMS_VDACPY ; $4A
DEC A DEC A
JP Z,SCG_VDASCR ; $4B
JP Z,TMS_VDASCR ; $4B
DEC A DEC A
JP Z,PPK_STAT ; $4C JP Z,PPK_STAT ; $4C
DEC A DEC A
@ -102,307 +102,307 @@ SCG_DISPATCH:
JP Z,PPK_READ ; $4E JP Z,PPK_READ ; $4E
CALL PANIC CALL PANIC
SCG_VDAINI:
TMS_VDAINI:
; RESET VDA ; RESET VDA
PUSH DE ; SAVE EMULATION TYPE (IN D) PUSH DE ; SAVE EMULATION TYPE (IN D)
CALL SCG_VDARES ; RESET VDA
CALL TMS_VDARES ; RESET VDA
POP DE ; RECOVER EMULATION TYPE POP DE ; RECOVER EMULATION TYPE
; INITIALIZE EMULATION ; INITIALIZE EMULATION
LD B,D ; EMULATION TYPE TO B 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 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 XOR A ; SIGNAL SUCCESS
RET RET
SCG_VDAQRY:
TMS_VDAQRY:
LD C,$00 ; MODE ZERO IS ALL WE KNOW 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 LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET 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 LD E,C ; E := PHYSICAL UNIT
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
SCG_VDARES:
TMS_VDARES:
LD DE,0 ; ROW = 0, COL = 0 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 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 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 XOR A
DEC 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 XOR A ; SIGNAL SUCCESS
RET RET
SCG_VDASCS:
TMS_VDASCS:
CALL PANIC ; NOT IMPLEMENTED (YET) 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 XOR A ; SIGNAL SUCCESS
RET RET
SCG_VDASAT:
TMS_VDASAT:
XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS
RET RET
SCG_VDASCO:
TMS_VDASCO:
XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS
RET RET
SCG_VDAWRC:
CALL SCG_CLRCUR ; CURSOR OFF
TMS_VDAWRC:
CALL TMS_CLRCUR ; CURSOR OFF
LD A,E ; CHARACTER TO WRITE GOES IN A 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 XOR A ; SIGNAL SUCCESS
RET RET
SCG_VDAFIL:
CALL SCG_CLRCUR
TMS_VDAFIL:
CALL TMS_CLRCUR
LD A,E ; FILL CHARACTER GOES IN A LD A,E ; FILL CHARACTER GOES IN A
EX DE,HL ; FILL LENGTH GOES IN DE 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 XOR A ; SIGNAL SUCCESS
RET 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 ; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
PUSH HL ; SAVE LENGTH 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 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 XOR A
RET RET
SCG_VDASCR:
CALL SCG_CLRCUR
SCG_VDASCR0:
TMS_VDASCR:
CALL TMS_CLRCUR
TMS_VDASCR0:
LD A,E ; LOAD E INTO A LD A,E ; LOAD E INTO A
OR A ; SET FLAGS 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 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 POP DE ; RECOVER E
DEC E ; DECREMENT IT 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 POP DE ; RECOVER E
INC E ; INCREMENT IT INC E ; INCREMENT IT
JR SCG_VDASCR0 ; LOOP
SCG_VDASCR2:
CALL SCG_SETCUR
JR TMS_VDASCR0 ; LOOP
TMS_VDASCR2:
CALL TMS_SETCUR
XOR A XOR A
RET RET
; ;
;====================================================================== ;======================================================================
; SCG DRIVER - PRIVATE DRIVER FUNCTIONS
; TMS DRIVER - PRIVATE DRIVER FUNCTIONS
;====================================================================== ;======================================================================
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; SET TMS9918 REGISTER VALUE ; 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 LD A,C ; GET THE DESIRED REGISTER
OR $80 ; SET BIT 7 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 RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; SET TMS9918 READ/WRITE ADDRESS ; 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 PUSH HL
SET 6,H ; SET WRITE BIT SET 6,H ; SET WRITE BIT
CALL SCG_RD
CALL TMS_RD
POP HL POP HL
RET RET
; ;
SCG_RD:
TMS_RD:
LD A,L LD A,L
OUT (SCG_CMDREG),A
SCG_IODELAY
OUT (TMS_CMDREG),A
TMS_IODELAY
LD A,H LD A,H
OUT (SCG_CMDREG),A
SCG_IODELAY
OUT (TMS_CMDREG),A
TMS_IODELAY
RET RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; MOS 8563 DISPLAY CONTROLLER CHIP INITIALIZATION ; MOS 8563 DISPLAY CONTROLLER CHIP INITIALIZATION
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_CRTINIT:
TMS_CRTINIT:
; SET WRITE ADDRESS TO $0 ; SET WRITE ADDRESS TO $0
LD HL,0 LD HL,0
CALL SCG_WR
CALL TMS_WR
; ;
; FILL ENTIRE RAM CONTENTS ; FILL ENTIRE RAM CONTENTS
LD DE,$4000 LD DE,$4000
SCG_CRTINIT1:
TMS_CRTINIT1:
XOR A XOR A
OUT (SCG_DATREG),A
OUT (TMS_DATREG),A
DEC DE DEC DE
LD A,D LD A,D
OR E OR E
JR NZ,SCG_CRTINIT1
JR NZ,TMS_CRTINIT1
; ;
; INITIALIZE VDU REGISTERS ; INITIALIZE VDU REGISTERS
LD C,0 ; START WITH REGISTER 0 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 LD A,(HL) ; GET VALUE
CALL SCG_SET ; WRITE IT
CALL TMS_SET ; WRITE IT
INC HL ; POINT TO NEXT VALUE INC HL ; POINT TO NEXT VALUE
INC C ; POINT TO NEXT REGISTER INC C ; POINT TO NEXT REGISTER
DJNZ SCG_CRTINIT2 ; LOOP
DJNZ TMS_CRTINIT2 ; LOOP
RET RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; LOAD FONT DATA ; LOAD FONT DATA
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_LOADFONT:
TMS_LOADFONT:
; SET WRITE ADDRESS TO $800 ; SET WRITE ADDRESS TO $800
LD HL,$800 LD HL,$800
CALL SCG_WR
CALL TMS_WR
; ;
; FILL $800 BYTES FROM FONTDATA ; FILL $800 BYTES FROM FONTDATA
LD HL,SCG_FONTDATA
LD HL,TMS_FONTDATA
LD DE,$100 * 8 LD DE,$100 * 8
SCG_LOADFONT1:
TMS_LOADFONT1:
LD B,8 LD B,8
SCG_LOADFONT2:
TMS_LOADFONT2:
LD A,(HL) LD A,(HL)
PUSH AF PUSH AF
INC HL INC HL
DJNZ SCG_LOADFONT2
DJNZ TMS_LOADFONT2
; ;
LD B,8 LD B,8
SCG_LOADFONT3:
TMS_LOADFONT3:
POP AF POP AF
OUT (SCG_DATREG),A
OUT (TMS_DATREG),A
DEC DE DEC DE
DJNZ SCG_LOADFONT3
DJNZ TMS_LOADFONT3
; ;
LD A,D LD A,D
OR E OR E
JR NZ,SCG_LOADFONT1
JR NZ,TMS_LOADFONT1
; ;
RET RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; VIRTUAL CURSOR MANAGEMENT ; 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 ; VIRTUAL CURSOR IS GENERATED BY DYNAMICALLY CHANGING FONT GLYPH
; FOR CHAR 255 TO BE THE INVERSE OF THE GLYPH OF THE CHARACTER UNDER ; 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 CURRENT CURSOR POSITION. THE CHARACTER CODE IS THEN SWITCH TO
; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY ; THE VALUE 255 AND THE ORIGINAL VALUE IS SAVED. WHEN THE DISPLAY
; NEEDS TO BE CHANGED THE PROCESS IS UNDONE. IT IS ESSENTIAL THAT ; 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 HL ; PRESERVE HL
PUSH DE ; PRESERVE DE 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 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 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 POP AF ; RECOVER THE REAL CHARACTER
LD B,A ; PUT IT IN B 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 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 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 ; GET THE GLYPH DATA FOR REAL CHARACTER
LD HL,0 ; ZERO HL LD HL,0 ; ZERO HL
LD L,A ; HL IS NOW RAW CHAR INDEX LD L,A ; HL IS NOW RAW CHAR INDEX
LD B,3 ; LEFT SHIFT BY 3 BITS 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 SLA L ; SHIFT LSB INTO CARRY
RL H ; SHFT MSB FROM 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 LD DE,$800 ; OFFSET TO START OF FONT TABLE
ADD HL,DE ; ADD TO FONT INDEX 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 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 LD (HL),A ; SAVE VALUE IN BUF
INC HL ; BUMP BUF POINTER 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 ; NOW WRITE INVERTED GLYPH INTO FONT INDEX 255
LD HL,$800 + (255 * 8) ; LOC OF GLPYPH DATA FOR CHAR 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 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 LD A,(HL) ; GET THE BYTE
INC HL ; BUMP THE BUF POINTER INC HL ; BUMP THE BUF POINTER
XOR $FF ; INVERT THE VALUE 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 DE ; RECOVER DE
POP HL ; RECOVER HL POP HL ; RECOVER HL
RET ; RETURN RET ; RETURN
; ;
; ;
; ;
SCG_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN
TMS_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN
PUSH HL ; SAVE HL 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 POP HL ; RECOVER HL
RET ; RETURN RET ; RETURN
; ;
@ -410,9 +410,9 @@ SCG_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E ; 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 RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
@ -420,10 +420,10 @@ SCG_XY:
; D=ROW, E=COL ; D=ROW, E=COL
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_XY2IDX:
TMS_XY2IDX:
LD A,E ; SAVE COLUMN NUMBER IN A LD A,E ; SAVE COLUMN NUMBER IN A
LD H,D ; SET H TO ROW NUMBER 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 CALL MULT8 ; MULTIPLY TO GET ROW OFFSET
LD E,A ; GET COLUMN BACK LD E,A ; GET COLUMN BACK
ADD HL,DE ; ADD IT IN ADD HL,DE ; ADD IT IN
@ -433,15 +433,15 @@ SCG_XY2IDX:
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR ; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_PUTCHAR:
TMS_PUTCHAR:
PUSH AF ; SAVE CHARACTER 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 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 INC HL
LD (SCG_POS),HL
LD (TMS_POS),HL
RET RET
; ;
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
@ -451,19 +451,19 @@ SCG_PUTCHAR:
; DE: NUMBER OF CHARACTERS TO FILL ; DE: NUMBER OF CHARACTERS TO FILL
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_FILL:
TMS_FILL:
LD C,A ; SAVE THE CHARACTER TO WRITE 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 LD A,C ; RECOVER CHARACTER TO WRITE
OUT (SCG_DATREG),A
SCG_IODELAY
OUT (TMS_DATREG),A
TMS_IODELAY
DEC DE DEC DE
LD A,D LD A,D
OR E OR E
JR NZ,SCG_FILL1
JR NZ,TMS_FILL1
; ;
RET RET
; ;
@ -471,50 +471,50 @@ SCG_FILL1:
; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED) ; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED)
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_SCROLL:
TMS_SCROLL:
LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER 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 PUSH HL ; SAVE CURRENT DESTINATION
LD DE,SCG_COLS
LD DE,TMS_COLS
ADD HL,DE ; POINT TO NEXT ROW SOURCE 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 LD (DE),A
INC DE INC DE
DJNZ SCG_SCROLL1
DJNZ TMS_SCROLL1
POP HL ; RECOVER THE DESTINATION POP HL ; RECOVER THE DESTINATION
; ;
; WRITE THE BUFFERED LINE TO CURRENT 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) LD A,(DE)
OUT (SCG_DATREG),A
SCG_IODELAY
OUT (TMS_DATREG),A
TMS_IODELAY
INC DE INC DE
DJNZ SCG_SCROLL2
DJNZ TMS_SCROLL2
; ;
; BUMP TO NEXT LINE ; BUMP TO NEXT LINE
LD DE,SCG_COLS
LD DE,TMS_COLS
ADD HL,DE ADD HL,DE
DEC C ; DECREMENT ROW COUNTER 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 ; FILL THE NEWLY EXPOSED BOTTOM LINE
CALL SCG_WR
CALL TMS_WR
LD A,' ' 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 RET
; ;
@ -522,50 +522,50 @@ SCG_SCROLL3:
; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED) ; 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 PUSH HL ; SAVE THE DESTINATION ADDRESS
LD DE,-SCG_COLS
LD DE,-TMS_COLS
ADD HL,DE ; SET SOURCE ADDRESS 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 LD (DE),A ; SAVE IN BUFFER
INC DE ; BUMP BUFFER POINTER 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 POP HL ; RECOVER THE DESTINATION ADDRESS
; ;
; WRITE THE BUFFERED LINE TO CURRENT DESTINATION ; 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 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 INC DE ; BUMP BUF POINTER
DJNZ SCG_RSCROLL2 ; LOOP THRU ALL COLS
DJNZ TMS_RSCROLL2 ; LOOP THRU ALL COLS
; ;
; BUMP TO THE PRIOR LINE ; 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 ADD HL,DE ; BACK UP THE ADDRESS
DEC C ; DECREMENT ROW COUNTER 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 ; FILL THE NEWLY EXPOSED BOTTOM LINE
CALL SCG_WR
CALL TMS_WR
LD A,' ' 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 RET
; ;
@ -573,48 +573,48 @@ SCG_RSCROLL3:
; BLOCK COPY BC BYTES FROM HL TO DE ; BLOCK COPY BC BYTES FROM HL TO DE
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
; ;
SCG_BLKCPY:
TMS_BLKCPY:
; SAVE DESTINATION AND LENGTH ; SAVE DESTINATION AND LENGTH
PUSH BC ; LENGTH PUSH BC ; LENGTH
PUSH DE ; DEST PUSH DE ; DEST
; ;
; READ FROM THE SOURCE LOCATION ; 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 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 LD (DE),A ; SAVE IN BUFFER
INC DE ; BUMP BUF PTR INC DE ; BUMP BUF PTR
DJNZ SCG_BLKCPY2 ; LOOP AS NEEDED
DJNZ TMS_BLKCPY2 ; LOOP AS NEEDED
; ;
; WRITE TO THE DESTINATION LOCATION ; WRITE TO THE DESTINATION LOCATION
POP HL ; RECOVER DESTINATION INTO HL 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 POP BC ; GET LOOP COUNTER BACK
LD B,C LD B,C
SCG_BLKCPY3:
TMS_BLKCPY3:
LD A,(DE) ; GET THE CHAR FROM BUFFER 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 INC DE ; BUMP BUF PTR
DJNZ SCG_BLKCPY3 ; LOOP AS NEEDED
DJNZ TMS_BLKCPY3 ; LOOP AS NEEDED
; ;
RET 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): ; 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. ; 5S Fifth sprite (not displayed) detected. Value in FS* is valid.
; INT Set at each screen update, used for interrupts. ; INT Set at each screen update, used for interrupts.
; ;
SCG_INIT9918:
TMS_INIT9918:
.DB $00 ; REG 0 - NO EXTERNAL VID .DB $00 ; REG 0 - NO EXTERNAL VID
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 .DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1
.DB $00 ; REG 2 - PATTERN NAME TABLE := 0 .DB $00 ; REG 2 - PATTERN NAME TABLE := 0
@ -665,11 +665,11 @@ SCG_INIT9918:
.DB $00 ; REG 6 - NO SPRITE GENERATOR TABLE .DB $00 ; REG 6 - NO SPRITE GENERATOR TABLE
.DB $F0 ; REG 7 - WHITE ON BLACK .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"
TMS_FONTDATA:
#INCLUDE "TMS_font.inc"

4
Source/HBIOS/scg_font.inc → 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 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,03ch,03ch,000h,000h,000h ; 0x01(1)
.DB 030h,030h,030h,0f0h,0f0h,000h,000h,000h ; 0x02(2) .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 000h,0f8h,080h,040h,03ch,0f0h,000h,000h ; 0xfd(253)
.DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xfe(254) .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xfe(254)
.DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0xff(255) .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0xff(255)
; eof - n8v_font.inc
; eof - tms_font.inc

14
Source/HBIOS/tty.asm

@ -89,20 +89,14 @@ TTY_CIOOST:
; ;
; ;
TTY_CIOINIT: 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: TTY_CIOQUERY:
LD DE,0
LD HL,0
LD DE,$FFFF
LD HL,$FFFF
XOR A XOR A
RET RET
; ;

6
Source/HBIOS/uart.asm

@ -250,7 +250,8 @@ UART0_OST:
RET RET
; ;
UART0_INITDEV: UART0_INITDEV:
CALL PANIC
XOR A ; NOT IMPLEMENTED!!!
RET
; ;
; ;
; ;
@ -362,7 +363,8 @@ UART1_OST:
RET RET
; ;
UART1_INITDEV: UART1_INITDEV:
CALL PANIC
XOR A ; NOT IMPLEMENTED!!!
RET
; ;
; ;
; ;

27
Source/HBIOS/util.asm

@ -347,16 +347,16 @@ _REGDMP:
LD (REGDMP_PC),HL ; SAVE PC VALUE LD (REGDMP_PC),HL ; SAVE PC VALUE
EX (SP),HL ; BACK THE WAY IT WAS 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 AF
PUSH BC PUSH BC
PUSH DE PUSH DE
PUSH HL PUSH HL
CALL PC_LBKT
PUSH AF PUSH AF
LD A,'@' LD A,'@'
CALL COUT CALL COUT
@ -364,9 +364,9 @@ _REGDMP:
PUSH BC PUSH BC
LD BC,(REGDMP_PC) LD BC,(REGDMP_PC)
CALL PRTHEXWORD
CALL PRTHEXWORD ; PC
POP BC POP BC
CALL PC_COLON
CALL PC_LBKT
PUSH BC PUSH BC
PUSH AF PUSH AF
POP BC POP BC
@ -383,7 +383,7 @@ _REGDMP:
POP BC POP BC
CALL PRTHEXWORD ; HL CALL PRTHEXWORD ; HL
CALL PC_COLON CALL PC_COLON
LD BC,(UTSTKSAV)
LD BC,(REGDMP_SP)
CALL PRTHEXWORD ; SP CALL PRTHEXWORD ; SP
CALL PC_RBKT CALL PC_RBKT
@ -394,12 +394,17 @@ _REGDMP:
POP BC POP BC
POP AF 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 JP $FFFF ; RETURN, $FFFF IS DYNAMICALLY UPDATED
REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE REGDMP_RET .EQU $-2 ; RETURN ADDRESS GOES HERE
; ;
REGDMP_PC .DW 0 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 LD (BC),A
POP AF POP AF
RET RET
;
; PRIVATE STACK
;
UTSTKSAV .DW 0
.FILL $FF,64 ; 32 LEVEL PRIVATE STACK SPACE
UTPRVSTK .EQU $

Loading…
Cancel
Save