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