From b4fc05acfb54a7af2cacdbbc5f6524b7d12e9f31 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Mon, 21 Mar 2016 17:05:57 -0700 Subject: [PATCH] Incorporate FDISK80 --- Source/Apps/Assign.asm | 200 +- Source/CBIOS/cbios.asm | 33 +- Source/HBIOS/API.txt | 18 +- Source/HBIOS/Config/mk4_cvdu.asm | 9 +- Source/HBIOS/Config/mk4_diskio3.asm | 9 +- Source/HBIOS/Config/mk4_dsd.asm | 9 +- Source/HBIOS/Config/mk4_propio.asm | 9 +- Source/HBIOS/Config/mk4_std.asm | 9 +- Source/HBIOS/Config/n8_2312.asm | 9 +- Source/HBIOS/Config/n8_2511.asm | 9 +- Source/HBIOS/Config/sbc_ci.asm | 13 +- Source/HBIOS/Config/sbc_cvdu.asm | 13 +- Source/HBIOS/Config/sbc_dide.asm | 13 +- Source/HBIOS/Config/sbc_diskio.asm | 13 +- Source/HBIOS/Config/sbc_diskio3+cvdu.asm | 13 +- Source/HBIOS/Config/sbc_diskio3.asm | 13 +- Source/HBIOS/Config/sbc_dsd.asm | 13 +- Source/HBIOS/Config/sbc_mfpic.asm | 15 +- Source/HBIOS/Config/sbc_ppide.asm | 13 +- Source/HBIOS/Config/sbc_ppisd.asm | 13 +- Source/HBIOS/Config/sbc_propio.asm | 13 +- Source/HBIOS/Config/sbc_rf.asm | 11 +- Source/HBIOS/Config/sbc_simh.asm | 11 +- Source/HBIOS/Config/sbc_std.asm | 13 +- Source/HBIOS/Config/sbc_vdu.asm | 13 +- Source/HBIOS/Config/zeta2_ppide.asm | 11 +- Source/HBIOS/Config/zeta2_ppisd.asm | 11 +- Source/HBIOS/Config/zeta2_ppp.asm | 11 +- Source/HBIOS/Config/zeta2_std.asm | 11 +- Source/HBIOS/Config/zeta_ppide.asm | 11 +- Source/HBIOS/Config/zeta_ppisd.asm | 11 +- Source/HBIOS/Config/zeta_ppp.asm | 11 +- Source/HBIOS/Config/zeta_std.asm | 11 +- Source/HBIOS/ansi.asm | 75 +- Source/HBIOS/cvdu.asm | 12 +- Source/HBIOS/cvdu_font.asm | 2050 +++++++++---------- Source/HBIOS/dbgmon.asm | 79 + Source/HBIOS/fd.asm | 19 - Source/HBIOS/hbios.asm | 283 ++- Source/HBIOS/hbios.inc | 47 +- Source/HBIOS/md.asm | 8 +- Source/HBIOS/romldr.asm | 86 +- Source/HBIOS/{n8v.asm => scg.asm} | 500 ++--- Source/HBIOS/{n8v_font.inc => scg_font.inc} | 0 Source/HBIOS/std.asm | 4 +- Source/HBIOS/tty.asm | 41 +- Source/HBIOS/util.asm | 20 +- Source/HBIOS/vdu.asm | 10 +- Source/HBIOS/ver.inc | 6 +- Source/RomDsk/ROM_1024KB/FDISK80.COM | Bin 0 -> 20480 bytes Source/RomDsk/ROM_512KB/FDISK80.COM | Bin 0 -> 20480 bytes Source/RomDsk/ROM_512KB/LBREXT.COM | Bin 8576 -> 0 bytes Source/RomDsk/ROM_512KB/ZDENST.COM | Bin 10624 -> 0 bytes Source/RomDsk/sbc_ci/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_cvdu/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_dide/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_diskio/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_diskio3+cvdu/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_diskio3/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_dsd/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_mfpic/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_ppide/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_ppisd/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_propio/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_rf/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_std/T5.COM | Bin 96 -> 0 bytes Source/RomDsk/sbc_vdu/T5.COM | Bin 96 -> 0 bytes Source/{HBIOS => UBIOS}/ubios.inc | 0 68 files changed, 2005 insertions(+), 1830 deletions(-) rename Source/HBIOS/{n8v.asm => scg.asm} (59%) rename Source/HBIOS/{n8v_font.inc => scg_font.inc} (100%) create mode 100644 Source/RomDsk/ROM_1024KB/FDISK80.COM create mode 100644 Source/RomDsk/ROM_512KB/FDISK80.COM delete mode 100644 Source/RomDsk/ROM_512KB/LBREXT.COM delete mode 100644 Source/RomDsk/ROM_512KB/ZDENST.COM delete mode 100644 Source/RomDsk/sbc_ci/T5.COM delete mode 100644 Source/RomDsk/sbc_cvdu/T5.COM delete mode 100644 Source/RomDsk/sbc_dide/T5.COM delete mode 100644 Source/RomDsk/sbc_diskio/T5.COM delete mode 100644 Source/RomDsk/sbc_diskio3+cvdu/T5.COM delete mode 100644 Source/RomDsk/sbc_diskio3/T5.COM delete mode 100644 Source/RomDsk/sbc_dsd/T5.COM delete mode 100644 Source/RomDsk/sbc_mfpic/T5.COM delete mode 100644 Source/RomDsk/sbc_ppide/T5.COM delete mode 100644 Source/RomDsk/sbc_ppisd/T5.COM delete mode 100644 Source/RomDsk/sbc_propio/T5.COM delete mode 100644 Source/RomDsk/sbc_rf/T5.COM delete mode 100644 Source/RomDsk/sbc_std/T5.COM delete mode 100644 Source/RomDsk/sbc_vdu/T5.COM rename Source/{HBIOS => UBIOS}/ubios.inc (100%) diff --git a/Source/Apps/Assign.asm b/Source/Apps/Assign.asm index 3ccdf17e..e00a6b18 100644 --- a/Source/Apps/Assign.asm +++ b/Source/Apps/Assign.asm @@ -18,6 +18,7 @@ ;_______________________________________________________________________________ ; ; Change Log: +; 2016-03-21 [WBW] Updated for HBIOS 2.8 ;_______________________________________________________________________________ ; ; ToDo: @@ -37,7 +38,7 @@ bdos .equ $0005 ; BDOS invocation vector stamp .equ $40 ; loc of RomWBW CBIOS zero page stamp ; rmj .equ 2 ; CBIOS version - major -rmn .equ 7 ; CBIOS version - minor +rmn .equ 8 ; CBIOS version - minor ; ;=============================================================================== ; Code Section @@ -283,22 +284,18 @@ devlist: or a ; set flags jr nz,devlstu ; do UNA mode dev list ; - ld b,$1a ; hbios func: diodevcnt - rst 08 ; call hbios, device count to B + ld b,$f7 ; hbios func: sysget + ld c,$10 ; sysget subfunc: diocnt + rst 08 ; call hbios, E := device count + ld b,e ; use device count for loop count ld c,0 ; use C for device index devlist1: call crlf ; formatting ld de,indent ; indent call prtstr ; ... to look nice push bc ; preserve loop control - ld b,$1b ; hbios func: diodevinf - rst 08 ; call hbios, return device/unit in C - ld a,c ; device/unit to A - push af ; save it + ld c,a ; device to A call prtdev ; print device mnemonic - pop af ; get device/unit back - and $0f ; isolate unit num - call prtdecb ; append unit num ld a,':' ; colon for device/unit format call prtchr ; print it pop bc ; restore loop control @@ -426,7 +423,7 @@ dph_init2: push bc ; save DPH location push bc ; move DPH location pop de ; ... to DE - ld a,(hl) ; device/unit to A + ld a,(hl) ; unit to A call makdph ; make the DPH pop de ; restore DPH pointer to DE pop hl ; restore drive map pointer to HL @@ -644,11 +641,11 @@ valid2: ; setup for inner loop ; valid3: ; inner loop ; bypass unassigned drives (only need to test 1) - ld a,(hl) ; get first drive device/unit in A + ld a,(hl) ; get first drive unit in A cp $ff ; unassigned? jr z,valid4 ; yes, skip ; - ; compare device/unit/slice values + ; compare unit/slice values ld a,(de) ; first byte to A cp (hl) ; compare jr nz,valid4 ; if not equal, continue loop @@ -768,7 +765,7 @@ drvswap: xor a ; signal success ret ; exit ; -; Assign drive to specified device/unit/slice +; Assign drive to specified unit/slice ; drvmap: ; check for UNA mode @@ -801,32 +798,46 @@ drvmap1: ; loop through device table looking for a match djnz drvmap1 ; and loop jp errdev ; -drvmap2: ; verify the unit is eligible for assignment (hard disk unit only!) - ld a,c ; get the specified device number -; call chktyp ; check it -; jp nz,errtyp ; abort with bad unit error -; - ; construct the requested dph table entry - ld a,c ; C has device num +drvmap2: + ; convert index to device type id + ld a,c ; index to accum rlca ; move it to upper nibble rlca ; ... rlca ; ... rlca ; ... - ld c,a ; stash it back in C - ld a,(unit) ; get the unit number - or c ; combine device and unit - ld c,a ; and save in C - ld a,(slice) ; get the slice - ld b,a ; and save in B -; - ; check for valid device/unit (supported by BIOS) - push bc ; save device/unit/slice - ld a,c ; device/unit to A - call chkdev ; device/unit OK? - pop bc ; restore device/unit/slice -; jp nz,errdev ; invalid device specified - ret nz + ld (device),a ; save as device id ; + ; loop thru hbios units looking for device type/unit match + ld b,$f7 ; hbios func: sysget + ld c,$10 ; sysget subfunc: diocnt + rst 08 ; call hbios, E := device count + ld b,e ; use device count for loop count + ld c,0 ; use C for device index +drvmap3: + push bc ; preserve loop control + ld b,$17 ; hbios func: diodevice + rst 08 ; call hbios, D := device, E := unit + pop bc ; restore loop control + ld a,(device) + cp d + jr nz,drvmap4 + ld a,(unit) + cp e + jr z,drvmap5 ; match, continue, C = BIOS unit +drvmap4: + ; continue looping + inc c + djnz drvmap3 + jp errdev ; invalid device specified +; +drvmap5: + ; check for valid unit (supported by BIOS) + push bc ; save unit + ld a,c ; unit to A + call chkdev ; check validity + pop bc ; restore unit + ret nz ; bail out on error + ; resolve the CBIOS DPH table entry ld a,(dstdrv) ; dest drv num to A call chkdrv ; valid drive? @@ -837,10 +848,11 @@ drvmap2: ; verify the unit is eligible for assignment (hard disk unit only!) call addhl ; adjust HL to point to entry ld (dstptr),hl ; save it ; - ; shove updated device/unit/slice into the entry - ld (hl),c ; save device/unit byte + ; shove updated unit/slice into the entry + ld (hl),c ; save unit byte inc hl ; bump to next byte - ld (hl),b ; save slice + ld a,(slice) + ld (hl),a ; save slice ; ; finish up ld a,(dstdrv) ; get the destination drive @@ -911,14 +923,7 @@ drvmapu1: call addhl ; adjust HL to point to entry ld (dstptr),hl ; save it ; -; ; verify the drive letter being assigned is a hard disk -; ld a,(hl) ; get the device/unit byte -; push hl ; save pointer -; call chktypu ; check it -; pop hl ; recover pointer -; jp nz,errtyp ; abort with bad device type error -; - ; shove updated device/unit/slice into the entry + ; shove updated unit/slice into the entry ld a,(unit) ; get specified unit ld (hl),a ; save it inc hl ; next byte is slice @@ -945,7 +950,9 @@ showall: ; showall1: ; loop ld a,c ; + push bc ; save loop control call showass + pop bc ; restore loop control inc c djnz showall1 or $ff @@ -962,7 +969,7 @@ showass: rlca rlca call addhl ; HL = address of drive map table entry - ld a,(hl) ; get device/unit value + ld a,(hl) ; get unit value cp $ff ; compare to unassigned value ld a,c ; recover original drive num ret z ; bail out if unassigned drive @@ -997,16 +1004,13 @@ showone: call prtchr ; print it ; ; render the map entry - ld a,(hl) ; load device/unit + ld a,(hl) ; load unit cp $FF ; empty? ret z ; yes, bypass call prtdev ; print device mnemonic - ld a,(hl) ; load device/unit again - and $0f ; isolate unit num - call prtdecb ; print it - inc hl ; point to slice num - ld a,':' ; colon to separate slice + ld a,':' ; colon for device/unit format call prtchr ; print it + inc hl ; point to slice num ld a,(hl) ; load slice num call prtdecb ; print it ; @@ -1033,6 +1037,11 @@ prtdev: or a ; set flags ld a,e ; put device num back jr nz,prtdevu ; print device in UNA mode + ld b,$17 ; hbios func: diodevice + ld c,a ; unit to C + rst 08 ; call hbios, D := device, E := unit + push de ; save results + ld a,d ; device to A rrca ; isolate high nibble (device) rrca ; ... rrca ; ... @@ -1048,54 +1057,63 @@ prtdev: ld e,a ; ... call prtstr ; print the device nmemonic pop hl ; restore HL + pop de ; get device/unit data back + ld a,e ; device id to a + call prtdecb ; print it ret ; done ; prtdevu: - ld e,a ; save unit num in E push bc push de push hl +; ; UNA mode version of print device ld b,a ; B := unit num + push bc ; save for later ld c,$48 ; UNA func: get disk type rst 08 ; call UNA ld a,d ; disk type to A - pop hl - pop de - pop bc + pop bc ; get unit num back in C ; + ; pick string based on disk type cp $40 ; RAM/ROM? jr z,prtdevu1 ; if so, handle it cp $41 ; IDE? ld de,udevide ; load string - jp z,prtstr ; if IDE, print and return + jr z,prtdevu2 ; if IDE, print and return cp $42 ; PPIDE? ld de,udevppide ; load string - jp z,prtstr ; if PPIDE, print and return + jr z,prtdevu2 ; if PPIDE, print and return cp $43 ; SD? ld de,udevsd ; load string - jp z,prtstr ; if SD, print and return + jr z,prtdevu2 ; if SD, print and return cp $44 ; DSD? ld de,udevdsd ; load string - jp z,prtstr ; if DSD, print and return + jr z,prtdevu2 ; if DSD, print and return ld de,udevunk ; load string for unknown - jp prtstr ; and print it + jr prtdevu2 ; and print it ; prtdevu1: ; handle RAM/ROM - push bc - push hl - ld b,e ; unit num to B + push bc ; save unit num ld c,$45 ; UNA func: get disk info ld de,$9000 ; 512 byte buffer *** FIX!!! *** rst 08 ; call UNA bit 7,b ; test RAM drive bit - pop hl - pop bc + pop bc ; restore unit num ld de,udevrom ; load string - jp z,prtstr ; print and return + jr z,prtdevu2 ; print and return ld de,udevram ; load string - jp prtstr ; print and return + jr prtdevu2 ; print and return +; +prtdevu2: + call prtstr ; print the device nmemonic + ld a,b ; get the unit num back + call prtdecb ; append it + pop hl + pop de + pop bc + ret ; ; Check that specified drive num is valid ; @@ -1105,36 +1123,32 @@ chkdrv: cp a ; set Z to signal good ret ; and return ; -; Check that the device/unit value in A is valid +; Check that the unit value in A is valid ; according to active BIOS support. ; ; chkdev: ; HBIOS variant - push af ; save incoming device/unit - ld b,$1a ; hbios func: diodevcnt - rst 08 ; call hbios, device count to B - ld c,0 ; use C for device index - pop af ; restore incoming device/unit -chkdev1: - push bc ; preserve loop control - push af ; save incoming device/unit - ld b,$1b ; hbios func: diodevinf - rst 08 ; call hbios, return device/unit in C - pop af ; restore incoming device/unit - cp c ; match to device/unit from BIOS list? - pop bc ; restore loop control - jr z,chkdev2 ; yes, match - inc c ; next device list entry - djnz chkdev1 ; loop as needed - jp errdev ; no match, handle error -; -chkdev2: ; check slice support + push af ; save incoming unit + ld b,$f7 ; hbios func: sysget + ld c,$10 ; sysget subfunc: diocnt + rst 08 ; call hbios, E := device count + pop af ; restore incoming unit + cp e ; compare to unit count + jp nc,errdev ; if too high, error +; + ; get device/unit info + ld b,$17 ; hbios func: diodevice + ld c,a ; unit to C + rst 08 ; call hbios, D := device, E := unit + ld a,d ; device to A +; + ; check slice support cp $30 ; A has device/unit, in hard disk range? - jr c,chkdev3 ; if not hard disk, check slice val + jr c,chkdev1 ; if not hard disk, check slice val xor a ; otherwise, signal OK ret ; -chkdev3: ; not a hard disk, make sure slice == 0 +chkdev1: ; not a hard disk, make sure slice == 0 ld a,(slice) ; get specified slice or a ; set flags jp nz,errslc ; invalid slice error @@ -1615,10 +1629,10 @@ stack .equ $ ; stack top ; Messages ; indent .db " ",0 -msgban1 .db "ASSIGN v1.0a for RomWBW CP/M 2.2, 25-Oct-2014",0 +msgban1 .db "ASSIGN v1.0b for RomWBW CP/M 2.2, 20-Mar-2016",0 msghb .db " (HBIOS Mode)",0 msgub .db " (UBIOS Mode)",0 -msgban2 .db "Copyright 2014, Wayne Warthen, GNU GPL v3",0 +msgban2 .db "Copyright 2016, Wayne Warthen, GNU GPL v3",0 msguse .db "Usage: ASSIGN D:[=[{D:|[]:[]}]][,...]",13,10 .db " ex. ASSIGN (display all active assignments)",13,10 .db " ASSIGN /? (display version and usage)",13,10 diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index e9828812..babc9dc6 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -59,7 +59,7 @@ MEMTOP .EQU $10000 #ENDIF ; #IFDEF PLTUNA -#INCLUDE "../HBIOS/ubios.inc" +#INCLUDE "../UBIOS/ubios.inc" #ENDIF ; .ORG CBIOS_LOC ; DEFINED IN STD.ASM @@ -1790,19 +1790,14 @@ INIT: LD HL,($FFFE) ; UNA ENTRY VECTOR LD (9),HL ; STORE AT 0x0009 #ELSE - ; ASK HBIOS FOR CRITICAL BANK ID'S (BIOS AND USER BANKS) - ; SAVE THESE VALUES FOR LATER USE - LD B,BF_SYSHCBGETB ; HB FUNC: GET HCB BYTE - LD C,HCB_BIDBIOS ; BIOS BANK ID - CALL $FFF0 ; RST 8 IS NOT YET INSTALLED - LD A,E ; PUT IN A - LD (BNKBIOS),A ; SAVE IT - LD B,BF_SYSHCBGETB ; HB FUNC: GET HCB BYTE - LD C,HCB_BIDUSR ; USER BANK ID - CALL $FFF0 ; RST 8 IS NOT YET INSTALLED - LD A,E ; PUT IN A - LD (BNKUSER),A ; SAVE IT - + LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO + LD C,BF_SYSGET_BNKINFO ; HBIOS SUBFUNC=GET BANK ASSIGNMENTS + CALL $FFF0 ; CALL HBIOS, RST 08 NOT YET INSTALLED + LD A,D ; GET HBIOS BANK RETURNED IN D + LD (BNKBIOS),A ; ... AND SAVE IT + LD A,E ; GET USER BANK RETURNED IN E + LD (BNKUSER),A ; ... AND SAVE IT + ; MAKE SURE USER BANK IS ACTIVE LD B,BF_SYSSETBNK ; HB FUNC: SET BANK LD A,(BNKUSER) ; SELECT USER BANK @@ -1831,11 +1826,6 @@ INIT: LD (BNKRAMD),A #ENDIF - ; CBIOS BANNER - CALL NEWLINE ; FORMATTING - LD DE,STR_BANNER ; POINT TO BANNER - CALL WRITESTR ; DISPLAY IT - ; PARAMETER INITIALIZATION XOR A ; LOAD DEFAULT IOBYTE LD (IOBYTE),A ; STORE IT @@ -1844,6 +1834,11 @@ INIT: XOR A ; ZERO LD (DEFDRIVE),A ; STORE IT + ; CBIOS BANNER + CALL NEWLINE ; FORMATTING + LD DE,STR_BANNER ; POINT TO BANNER + CALL WRITESTR ; DISPLAY IT + #IFDEF PLTUNA ; SAVE COMMAND PROCESSOR IMAGE TO MALLOCED CACHE IN UNA BIOS PAGE LD C,$F7 ; UNA MALLOC diff --git a/Source/HBIOS/API.txt b/Source/HBIOS/API.txt index 1687f0f2..d6a6c589 100644 --- a/Source/HBIOS/API.txt +++ b/Source/HBIOS/API.txt @@ -243,20 +243,22 @@ CP/M 2.2 Copyright 1979 (c) by Digital Research _INI: - CALL _RES - - INITIALIZE EMULATION BY CALLING EMU_INIT (PASS IN C=EMU_TYPE & DE=VDA_DISPATCH ADDRESS) - - EMU_INIT RETURNS ADDRESS OF CIO DISPATCHER ADDRESS FOR SUBSEQUENT FORWARDING - - RECORD EMULATORS CIO DISPATCHER ADDRESS IN _CIODISPATCH + - INITIALIZE EMULATION BY CALLING EMU_INIT (PASS IN B=EMU_TYPE, C=VDA CIO UNIT NUM, DE=VDA DISPATCH ADR) + - RECORD DE (EMULATOR CIO DISPATCH ADR) _CIODISPADR TO FORWARD SUBSEQUENT CIO FUNCTION CALLS + - RETURN (A=STATUS) _RES: - RESET HARDWARE + - RETURN (A=STATUS) -EMU_INIT: - - CALL _INIT BASED ON VALUE IN C +EMU_INIT: (B=EMU TYPE, C=VDA CIO UNIT #, DE=VDA DISPATCH ADR) ==> (DE=EMULATOR CIO DISPATCH ADR) + - GOTO TO _INIT BASED ON VALUE IN B -_INIT: - - RECORD DE IN VDA_DISPADR +_INIT: (C=VDA CIO UNIT #, DE=VDA DISPATCH ADR) ==> (DE=EMULATOR CIO DISPATCH ADR) + - RECORD C (VDA CIO UNIT) IN _VDACIOUNIT SO _DEVICE FUNCTION CAN RETURN IT + - RECORD DE IN _VDADISPADR FOR LATER USE IN CALLING PARENT VDA DRIVER - INITIALIZE/RESET EMULATION ENGINE - - RETURN EMULATOR CIO DISPATCH ADDRESS IN DE + - RETURN (A=STATUS, DE=EMULATOR CIO DISPATCH) diff --git a/Source/HBIOS/Config/mk4_cvdu.asm b/Source/HBIOS/Config/mk4_cvdu.asm index a9762072..b332d2e4 100644 --- a/Source/HBIOS/Config/mk4_cvdu.asm +++ b/Source/HBIOS/Config/mk4_cvdu.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_CVDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -67,9 +64,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU TRUE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/mk4_diskio3.asm b/Source/HBIOS/Config/mk4_diskio3.asm index 8b18c62a..8c0a16eb 100644 --- a/Source/HBIOS/Config/mk4_diskio3.asm +++ b/Source/HBIOS/Config/mk4_diskio3.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -67,9 +64,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/mk4_dsd.asm b/Source/HBIOS/Config/mk4_dsd.asm index d0f13127..d6e9ae76 100644 --- a/Source/HBIOS/Config/mk4_dsd.asm +++ b/Source/HBIOS/Config/mk4_dsd.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_CVDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -64,9 +61,9 @@ SDMODE .EQU SDMODE_DSD ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDM SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) SDCSIOFAST .EQU TRUE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) ; diff --git a/Source/HBIOS/Config/mk4_propio.asm b/Source/HBIOS/Config/mk4_propio.asm index f8871538..e162519c 100644 --- a/Source/HBIOS/Config/mk4_propio.asm +++ b/Source/HBIOS/Config/mk4_propio.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_PRPCON ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -67,9 +64,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/mk4_std.asm b/Source/HBIOS/Config/mk4_std.asm index 3af06228..2bdffa69 100644 --- a/Source/HBIOS/Config/mk4_std.asm +++ b/Source/HBIOS/Config/mk4_std.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_CVDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -64,9 +61,9 @@ SDMODE .EQU SDMODE_MK4 ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDM SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) SDCSIOFAST .EQU TRUE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) ; diff --git a/Source/HBIOS/Config/n8_2312.asm b/Source/HBIOS/Config/n8_2312.asm index 5bbce2cf..5bab0803 100644 --- a/Source/HBIOS/Config/n8_2312.asm +++ b/Source/HBIOS/Config/n8_2312.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_N8V ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -67,9 +64,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU TRUE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/n8_2511.asm b/Source/HBIOS/Config/n8_2511.asm index 63f921d0..84a9991a 100644 --- a/Source/HBIOS/Config/n8_2511.asm +++ b/Source/HBIOS/Config/n8_2511.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_ASCI ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_N8V ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -31,7 +28,7 @@ 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 -N8VENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -67,9 +64,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_ci.asm b/Source/HBIOS/Config/sbc_ci.asm index 1a8369b3..d0aaff44 100644 --- a/Source/HBIOS/Config/sbc_ci.asm +++ b/Source/HBIOS/Config/sbc_ci.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ CASSETTE INTERFACE +; ROMWBW 2.X CONFIGURATION FOR SBC W/ CASSETTE INTERFACE ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 2 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) UART1IOB .EQU $80 ; UART1 IOBASE IS $80 FOR CASSETTE INTERFACE UART1OSC .EQU 1843200 ; UART1 OSC FREQUENCY @@ -41,7 +38,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -77,9 +74,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_cvdu.asm b/Source/HBIOS/Config/sbc_cvdu.asm index a9da99c3..e7ad49ed 100644 --- a/Source/HBIOS/Config/sbc_cvdu.asm +++ b/Source/HBIOS/Config/sbc_cvdu.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ COLOR VDU +; ROMWBW 2.X CONFIGURATION FOR SBC W/ COLOR VDU ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_CVDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU TRUE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_dide.asm b/Source/HBIOS/Config/sbc_dide.asm index a2951714..9946042a 100644 --- a/Source/HBIOS/Config/sbc_dide.asm +++ b/Source/HBIOS/Config/sbc_dide.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DUAL IDE + FLOPPY +; ROMWBW 2.X CONFIGURATION FOR SBC W/ DUAL IDE + FLOPPY ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_diskio.asm b/Source/HBIOS/Config/sbc_diskio.asm index f11dcf2f..51fd4711 100644 --- a/Source/HBIOS/Config/sbc_diskio.asm +++ b/Source/HBIOS/Config/sbc_diskio.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM W/ DISKIO (ORIGINAL V1) +; ROMWBW 2.X CONFIGURATION FOR SBC W/ DISKIO (ORIGINAL V1) ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_diskio3+cvdu.asm b/Source/HBIOS/Config/sbc_diskio3+cvdu.asm index 1cb14068..3fe489eb 100644 --- a/Source/HBIOS/Config/sbc_diskio3+cvdu.asm +++ b/Source/HBIOS/Config/sbc_diskio3+cvdu.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ COLOR VDU +; ROMWBW 2.X CONFIGURATION FOR SBC W/ COLOR VDU ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_VDA ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU TRUE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_CVDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_diskio3.asm b/Source/HBIOS/Config/sbc_diskio3.asm index 83281aec..17f14447 100644 --- a/Source/HBIOS/Config/sbc_diskio3.asm +++ b/Source/HBIOS/Config/sbc_diskio3.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DISKIO V3 +; ROMWBW 2.X CONFIGURATION FOR SBC W/ DISKIO V3 ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_dsd.asm b/Source/HBIOS/Config/sbc_dsd.asm index 4eb10cd8..c2774326 100644 --- a/Source/HBIOS/Config/sbc_dsd.asm +++ b/Source/HBIOS/Config/sbc_dsd.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ DUAL SD +; ROMWBW 2.X CONFIGURATION FOR SBC W/ DUAL SD ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_mfpic.asm b/Source/HBIOS/Config/sbc_mfpic.asm index be937ace..36834ed2 100644 --- a/Source/HBIOS/Config/sbc_mfpic.asm +++ b/Source/HBIOS/Config/sbc_mfpic.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ MF/PIC +; ROMWBW 2.X CONFIGURATION FOR SBC W/ MF/PIC ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,12 +23,12 @@ UARTCNT .EQU 2 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) UART1IOB .EQU $48 ; UART1 IOBASE AT $48 FOR MFPIC UART1OSC .EQU 1843200 ; UART1 OSC FREQUENCY UART1BAUD .EQU CONBAUD ; UART1 BAUDRATE -UART1FIFO .EQU TRUE ; UART1 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART1FIFO .EQU TRUE ; UART1 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART1AFC .EQU FALSE ; UART1 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -41,7 +38,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -77,9 +74,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_ppide.asm b/Source/HBIOS/Config/sbc_ppide.asm index f0f93715..f7760347 100644 --- a/Source/HBIOS/Config/sbc_ppide.asm +++ b/Source/HBIOS/Config/sbc_ppide.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PPIDE +; ROMWBW 2.X CONFIGURATION FOR SBC W/ PPIDE ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_ppisd.asm b/Source/HBIOS/Config/sbc_ppisd.asm index 8243fdf5..4a14ac25 100644 --- a/Source/HBIOS/Config/sbc_ppisd.asm +++ b/Source/HBIOS/Config/sbc_ppisd.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PPISD +; ROMWBW 2.X CONFIGURATION FOR SBC W/ PPISD ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_propio.asm b/Source/HBIOS/Config/sbc_propio.asm index 4f129aa9..17db2724 100644 --- a/Source/HBIOS/Config/sbc_propio.asm +++ b/Source/HBIOS/Config/sbc_propio.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ PROP IO +; ROMWBW 2.X CONFIGURATION FOR SBC W/ PROP IO ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_PRPCON ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU TRUE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_rf.asm b/Source/HBIOS/Config/sbc_rf.asm index a24a8c22..cbe92bd4 100644 --- a/Source/HBIOS/Config/sbc_rf.asm +++ b/Source/HBIOS/Config/sbc_rf.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_simh.asm b/Source/HBIOS/Config/sbc_simh.asm index 3c8ba5a5..5caa2a26 100644 --- a/Source/HBIOS/Config/sbc_simh.asm +++ b/Source/HBIOS/Config/sbc_simh.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 115200 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU FALSE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU FALSE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_std.asm b/Source/HBIOS/Config/sbc_std.asm index dec07ba2..4f48786b 100644 --- a/Source/HBIOS/Config/sbc_std.asm +++ b/Source/HBIOS/Config/sbc_std.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC +; ROMWBW 2.X CONFIGURATION FOR SBC ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/sbc_vdu.asm b/Source/HBIOS/Config/sbc_vdu.asm index 9d958ec5..722ce80d 100644 --- a/Source/HBIOS/Config/sbc_vdu.asm +++ b/Source/HBIOS/Config/sbc_vdu.asm @@ -1,6 +1,6 @@ ; ;================================================================================================== -; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC W/ VDU +; ROMWBW 2.X CONFIGURATION FOR SBC W/ VDU ;================================================================================================== ; ; BUILD CONFIGURATION OPTIONS @@ -9,10 +9,7 @@ CPUOSC .EQU 8000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU TRUE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_VDU ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta2_ppide.asm b/Source/HBIOS/Config/zeta2_ppide.asm index 42d686d5..5239c583 100644 --- a/Source/HBIOS/Config/zeta2_ppide.asm +++ b/Source/HBIOS/Config/zeta2_ppide.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta2_ppisd.asm b/Source/HBIOS/Config/zeta2_ppisd.asm index 6cb2be98..afa10291 100644 --- a/Source/HBIOS/Config/zeta2_ppisd.asm +++ b/Source/HBIOS/Config/zeta2_ppisd.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta2_ppp.asm b/Source/HBIOS/Config/zeta2_ppp.asm index 1e6a7b9c..e4a00493 100644 --- a/Source/HBIOS/Config/zeta2_ppp.asm +++ b/Source/HBIOS/Config/zeta2_ppp.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_PPPCON ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU TRUE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta2_std.asm b/Source/HBIOS/Config/zeta2_std.asm index b4c9e957..1f84c68f 100644 --- a/Source/HBIOS/Config/zeta2_std.asm +++ b/Source/HBIOS/Config/zeta2_std.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta_ppide.asm b/Source/HBIOS/Config/zeta_ppide.asm index c1309233..666bba53 100644 --- a/Source/HBIOS/Config/zeta_ppide.asm +++ b/Source/HBIOS/Config/zeta_ppide.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta_ppisd.asm b/Source/HBIOS/Config/zeta_ppisd.asm index 5532ce26..92094346 100644 --- a/Source/HBIOS/Config/zeta_ppisd.asm +++ b/Source/HBIOS/Config/zeta_ppisd.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta_ppp.asm b/Source/HBIOS/Config/zeta_ppp.asm index 7d1cae51..b8a7ddd9 100644 --- a/Source/HBIOS/Config/zeta_ppp.asm +++ b/Source/HBIOS/Config/zeta_ppp.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_PPPCON ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU TRUE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/Config/zeta_std.asm b/Source/HBIOS/Config/zeta_std.asm index e421703a..644f3bec 100644 --- a/Source/HBIOS/Config/zeta_std.asm +++ b/Source/HBIOS/Config/zeta_std.asm @@ -9,10 +9,7 @@ CPUOSC .EQU 20000000 ; CPU OSC FREQ RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW ; -SERDEV .EQU CIODEV_UART ; PRIMARY SERIAL DEVICE FOR BOOT/DEBUG/MONITOR (TYPICALLY CIODEV_UART OR CIODEV_ASCI) -CRTDEV .EQU CIODEV_NUL ; CRT DEVICE (CIODEV_PRPCON, CIODEV_PPPCON, CIODEV_VDA), USE CIODEV_NUL IF NO CRT CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP -VDADEV .EQU VDADEV_NONE ; CRT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) VDAEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) @@ -26,7 +23,7 @@ UARTCNT .EQU 1 ; NUMBER OF UARTS UART0IOB .EQU $68 ; UART0 IOBASE UART0OSC .EQU 1843200 ; UART0 OSC FREQUENCY UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE -UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, SBC AND ZETA ONLY) UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) ; ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT @@ -36,7 +33,7 @@ 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 -N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +SCGENABLE .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) @@ -72,9 +69,9 @@ SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER ; -PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT PRPIOB .EQU $A8 ; PORT IO ADDRESS BASE -PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index 9c214d2b..875e8f07 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -18,17 +18,23 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK ; ANSI EMULATION MODULE ;================================================================================================== ; +; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER +; ON ENTRY: +; C: CIO UNIT NUMBER OF CALLING VDA DRIVER +; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER +; RETURNS: +; DE: OUR CIO DISPATCH ADDRESS +; ANSI_INIT: ; SAVE INCOMING VDA DISPATCH ADDRESS - CALL TSTPT ; *DEBUG* - LD (EMU_VDADISPADR),DE ; RECORD NEW VDA DISPATCH ADDRESS + LD C,A ; VDA DRIVER'S CIO UNIT NUMBER + LD (ANSI_CIOUNIT),A ; ... SAVED LOCALLY + LD (ANSI_VDADISPADR),DE ; RECORD NEW VDA DISPATCH ADDRESS ; ; QUERY THE VIDEO DRIVER FOR SCREEN DIMENSIONS LD B,BF_VDAQRY ; FUNCTION IS QUERY LD HL,0 ; WE DO NOT WANT A COPY OF THE CHARACTER BITMAP DATA - CALL TSTPT ; *DEBUG* - CALL EMU_VDADISP ; PERFORM THE QUERY FUNCTION - CALL TSTPT ; *DEBUG* + CALL ANSI_VDADISP ; PERFORM THE QUERY FUNCTION LD (ANSI_DIM),DE ; SAVE THE SCREEN DIMENSIONS RETURNED ; ; INITIALIZE ALL WORKING VARIABLES @@ -60,14 +66,18 @@ ANSI_INIT2: ; LOOP TO RESET TAB STOPS DJNZ ANSI_INIT2 ; LOOP TILL ALL BYTES DONE ; LD DE,ANSI_DISPATCH ; RETURN OUR DISPATCH ADDRESS - CALL TSTPT ; *DEBUG* XOR A RET ; ; ; +ANSI_VDADISP: + JP PANIC +ANSI_VDADISPADR .EQU $ - 2 +; +; +; ANSI_DISPATCH: - LD (ANSI_CIODEV),A ; *DEBUG* LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION JR Z,ANSI_IN ; $30 @@ -109,7 +119,7 @@ ANSI_IN: ; HANDLE INPUT REQUEST ; ANSI_IN1: ; PERFORM ACTUAL KEYBOARD INPUT LD B,BF_VDAKRD ; SET FUNCTION TO KEYBOARD READ - CALL EMU_VDADISP ; CALL VDA DISPATCHER + CALL ANSI_VDADISP ; CALL VDA DISPATCHER LD A,E ; CHARACTER READ INTO A BIT 7,A ; TEST HIGH BIT JR NZ,ANSI_IN2 ; HANDLE $80 OR HIGHER AS SPECIAL CHAR @@ -151,13 +161,13 @@ ANSI_IST: ; CHECK QUEUE FIRST ; ; QUEUE WAS EMPTY, CHECK HARDWARE STATUS LD B,BF_VDAKST ; SET FUNCTION TO KEYBOARD STATUS - CALL EMU_VDADISP ; CHECK STATUS + CALL ANSI_VDADISP ; CHECK STATUS OR A ; SET FLAGS RET Z ; NO KEYS WAITING, RETURN NO JOY ; ; KEY WAITING, GET IT AND HANDLE IT LD B,BF_VDAKRD ; SET FUNCTION TO KEYBOARD READ - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT LD A,E ; CHARACTER READ TO A BIT 7,A ; TEST HIGH BIT JR NZ,ANSI_IST1 ; HANDLE $80 OR HIGHER AS SPECIAL CHAR @@ -198,9 +208,8 @@ ANSI_QUERY: ; REPORT DEVICE ; ANSI_DEVICE: - ;LD D,CIODEV_VDA ; D := DEVICE TYPE - LD A,(ANSI_CIODEV) ; GET THE CURRENT CIO DEVICE *DEBUG* - LD D,A ; AND PASS BACK IN D *DEBUG* + LD A,(ANSI_CIOUNIT) ; GET THE CURRENT CIO DEVICE + LD D,A ; AND PASS BACK IN D LD E,C ; E := PHYSICAL UNIT XOR A ; SIGNAL SUCCESS RET @@ -554,7 +563,7 @@ ANSI_RENDER: ANSI_RENDER1: ; WRITE THE CHARACTER POP DE ; RECOVER THE CHAR TO RENDER LD B,BF_VDAWRC ; FUNC := WRITE CHARACTER - CALL EMU_VDADISP ; SPIT OUT THE RAW CHARACTER + CALL ANSI_VDADISP ; SPIT OUT THE RAW CHARACTER ; ; END OF LINE HANDLING (CHECK FOR RIGHT MARGIN EXCEEDED) LD A,(ANSI_COLS) ; GET SCREEN COLUMNS @@ -582,7 +591,7 @@ ANSI_FF: CALL MULT8 ; HL := H * E TO GET TOTAL SCREEN POSITIONS LD E,' ' ; FILL SCREEN WITH BLANKS LD B,BF_VDAFIL ; SET FUNCTION TO FILL - CALL EMU_VDADISP ; PERFORM FILL + CALL ANSI_VDADISP ; PERFORM FILL JP ANSI_XY ; HOME CURSOR AND RETURN ; ANSI_BS: @@ -610,7 +619,7 @@ ANSI_LF: ; LINEFEED (FORWARD INDEX) ANSI_LF1: ; SCROLL LD E,1 ; SCROLL FORWARD 1 LINE LD B,BF_VDASCR ; SET FUNCTION TO SCROLL - JP EMU_VDADISP ; DO THE SCROLLING AND RETURN + JP ANSI_VDADISP ; DO THE SCROLLING AND RETURN ; ANSI_RI: ; REVERSE INDEX (REVERSE LINEFEED) LD A,(ANSI_ROW) ; GET CURRENT ROW @@ -653,7 +662,7 @@ ANSI_HT2: ; COMMIT THE NEW COLUMN VALUE ANSI_RI1: ; REVERSE SCROLL LD E,-1 ; SCROLL -1 LINES (REVERSE SCROLL 1 LINE) LD B,BF_VDASCR ; SET FUNCTION TO SCROLL - JP EMU_VDADISP ; DO THE SCROLLING AND RETURN + JP ANSI_VDADISP ; DO THE SCROLLING AND RETURN ; ; ; @@ -915,7 +924,7 @@ ANSI_ED1: ; ERASE CURSOR THRU EOS ANSI_ED2: ; ERASE START THRU CURSOR LD DE,0 ; CURSOR TO 0,0 FOR NOW LD B,BF_VDASCP ; SET FUNCTION TO SET CURSOR POSITION - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT LD DE,(ANSI_POS) ; GET ORIGINAL CURSOR POSITION CALL ANSI_XY2IDX ; HL NOW HAS INDEX INC HL ; ADD 1 POSITION TO ERASE THRU CURSOR POSITION @@ -924,14 +933,14 @@ ANSI_ED2: ; ERASE START THRU CURSOR ANSI_ED3: ; ERASE FULL DISPLAY LD DE,0 ; CURSOR POS 0,0 LD B,BF_VDASCP ; FUNCTION = SET CURSOR POS - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT LD DE,(ANSI_DIM) ; DE := SCREEN ROWS/COLS CALL ANSI_XY2IDX ; HL := CHARS ON SCREEN ; ANSI_ED4: ; COMMON FILL PROCESS COMPLETION LD E,' ' ; FILL WITH BLANK LD B,BF_VDAFIL ; FUNCTION = FILL - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT JP ANSI_XY ; RESTORE CURSOR POS AND RETURN ; ; @@ -963,7 +972,7 @@ ANSI_EL2: ; ERASE START THRU CURSOR LD DE,(ANSI_POS) ; GET CURSOR POS LD E,0 ; COL := 0, START OF ROW LD B,BF_VDASCP ; SET FUNCTION TO SET CURSOR POSITION - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT LD HL,(ANSI_POS) ; GET ORIGINAL CURSOR POSITION LD H,0 ; ONLY ERASE COLUMNS INC HL ; ADD 1 POSITION TO ERASE THRU CURSOR POSITION @@ -973,7 +982,7 @@ ANSI_EL3: ; ERASE FULL LINE LD DE,(ANSI_POS) ; GET CURSOR POSITION LD E,0 ; COL := 0 (START OF ROW) LD B,BF_VDASCP ; FUNC = SET CURSOR POS - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT LD HL,(ANSI_DIM) ; GET SCREEN DIM IN HL LD H,0 ; H := 0, HL IS NOW CHARS IN A LINE JR ANSI_EL4 ; COMPLETE THE FILL @@ -1009,7 +1018,7 @@ ANSI_IL3: ; SET CURSOR POSITION TO DEST PUSH DE ; PRESERVE DE LD B,BF_VDASCP ; FUNC = SET CURSOR POS - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT POP DE ; RECOVER DE ; SET HL TO LENGTH LD HL,(ANSI_DIM) ; GET DIMENSIONS @@ -1023,14 +1032,14 @@ ANSI_IL3: ; DO THE COPY PUSH DE ; PRESERVE DE LD B,BF_VDACPY ; FUNCTION = COPY - CALL EMU_VDADISP ; COPY THE LINE + CALL ANSI_VDADISP ; COPY THE LINE POP DE ; RECOVER DE JR ANSI_IL3 ; LOOP ; ANSI_IL4: ;CLEAR INSERTED LINE LD E,' ' ; FILL WITH BLANK LD B,BF_VDAFIL ; FUNCTION = FILL - JP EMU_VDADISP ; DO IT + JP ANSI_VDADISP ; DO IT ; ; ; @@ -1060,7 +1069,7 @@ ANSI_DL3: ; SET CURSOR TO START OF DEST ROW PUSH DE ; PRESERVE DE LD B,BF_VDASCP ; FUNC = SET CURSOR POS - CALL EMU_VDADISP ; DO IT + CALL ANSI_VDADISP ; DO IT POP DE ; RECOVER DE ; SET DE TO SOURCE POS INC D ; NEXT ROW, DE NOW HAS SOURCE @@ -1074,14 +1083,14 @@ ANSI_DL3: ; DO THE COPY PUSH DE ; PRESERVE DE LD B,BF_VDACPY ; FUNCTION = COPY - CALL EMU_VDADISP ; COPY THE LINE + CALL ANSI_VDADISP ; COPY THE LINE POP DE ; RECOVER DE JR ANSI_DL3 ; LOOP ; ANSI_DL4: ;CLEAR BOTTOM LINE LD E,' ' ; FILL WITH BLANK LD B,BF_VDAFIL ; FUNCTION = FILL - JP EMU_VDADISP ; DO IT + JP ANSI_VDADISP ; DO IT ; ; ; @@ -1105,11 +1114,11 @@ ANSI_SGR1: ; PROCESSING LOOP LD A,(ANSI_ATTR) ; GET THE ATTRIBUTE VALUE LD E,A ; MOVE TO E LD B,BF_VDASAT ; SET ATTRIBUTE FUNCTION - CALL EMU_VDADISP ; CALL THE FUNCTION + CALL ANSI_VDADISP ; CALL THE FUNCTION LD A,(ANSI_COLOR) ; GET THE COLOR VALUE LD E,A ; MOVE TO E LD B,BF_VDASCO ; SET ATTRIBUTE FUNCTION - CALL EMU_VDADISP ; CALL THE FUNCTION + CALL ANSI_VDADISP ; CALL THE FUNCTION RET ; RETURN ; ANSI_SGR2: ; HANDLE THE REQUEST CODE @@ -1197,7 +1206,7 @@ ANSI_DECALN: ; DEC SCREEN ALIGNMENT TEST CALL MULT8 ; HL := H * E TO GET TOTAL SCREEN POSITIONS LD E,'E' ; FILL SCREEN WITH BLANKS LD B,BF_VDAFIL ; SET FUNCTION TO FILL - CALL EMU_VDADISP ; PERFORM FILL + CALL ANSI_VDADISP ; PERFORM FILL JP ANSI_XY ; HOME CURSOR AND RETURN ; ;================================================================================================== @@ -1318,7 +1327,7 @@ ANSI_XY: LD (ANSI_WRAP),A ; CLEAR THE WRAP FLAG LD DE,(ANSI_POS) ; GET THE DESIRED CURSOR POSITION LD B,BF_VDASCP ; SET FUNCTION TO SET CURSOR POSITION - JP EMU_VDADISP ; REPOSITION CURSOR + JP ANSI_VDADISP ; REPOSITION CURSOR ; ; CONVERT XY COORDINATES IN DE INTO LINEAR INDEX IN HL ; D=ROW, E=COL @@ -1367,4 +1376,4 @@ ANSI_PARIDX .DB 0 ; NUMBER OF PARAMETERS RECORDED ANSI_PARLST .FILL 16,0 ; PARAMETER VALUE LIST (UP TO 16 BYTE VALUES) ANSI_VARLEN .EQU $ - ANSI_VARS ; -ANSI_CIODEV .DB 0 ; *DEBUG* +ANSI_CIOUNIT .DB $FF ; CIO UNIT NUMBER OF PARENT VDA diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index ae6ded25..19df96fb 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -42,13 +42,13 @@ CVDU_INIT: LD C,CIODEV_CVDU ; DEVICE TYPE LD DE,0 ; UNIT DATA BLOB ADDRESS CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED + LD (CVDU_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE - CALL TSTPT ; *DEBUG* LD D,VDAEMU ; DEFAULT EMULATION LD E,0 ; VIDEO MODE = 0 JP CVDU_VDAINI -; +; ;====================================================================== ; CVDU DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS ;====================================================================== @@ -101,12 +101,12 @@ CVDU_VDAINI: POP DE ; RECOVER EMULATION TYPE ; INITIALIZE EMULATION - LD C,D ; EMULATION MODE TO C + LD B,D ; EMULATION TYPE TO B + LD A,(CVDU_CIOUNIT) ; CIO UNIT NUMBER + LD C,A ; ... IS PASSED IN C LD DE,CVDU_DISPATCH ; DISPATCH ADDRESS TO DE - CALL TSTPT ; *DEBUG* CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER LD (CVDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS - CALL TSTPT ; *DEBUG* XOR A ; SIGNAL SUCCESS RET @@ -649,6 +649,8 @@ CVDU_BLKCPY1: ; CVDU DRIVER - DATA ;================================================================================================== ; +CVDU_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +; CVDU_ATTR .DB 0 ; CURRENT COLOR CVDU_POS .DW 0 ; CURRENT DISPLAY POSITION ; diff --git a/Source/HBIOS/cvdu_font.asm b/Source/HBIOS/cvdu_font.asm index 07d8e7c6..dbe80ba0 100644 --- a/Source/HBIOS/cvdu_font.asm +++ b/Source/HBIOS/cvdu_font.asm @@ -1,1027 +1,1025 @@ CVDU_FONTDATA: - .DB $18,$18,$18,$FF,$FF,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$30,$30,$C0,$C0,$30,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$18,$18,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $33,$99,$CC,$66,$33,$99,$CC,$66 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$03,$03,$03,$03,$03,$03,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$CC,$CC,$33,$33 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CC,$99,$33,$66,$CC,$99,$33,$66 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$03,$03,$03,$03,$03,$03,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$1F,$1F,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$1F,$1F,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$F8,$F8,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$1F,$1F,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$F8,$F8,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $07,$07,$07,$07,$07,$07,$07,$07 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $01,$03,$06,$6C,$78,$70,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$18,$00,$00,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$FF,$66,$FF,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$3E,$60,$3C,$06,$7C,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $62,$66,$0C,$18,$30,$66,$46,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$3C,$38,$67,$66,$3F,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $06,$0C,$18,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0C,$18,$30,$30,$30,$18,$0C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $30,$18,$0C,$0C,$0C,$18,$30,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$66,$3C,$FF,$3C,$66,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$18,$7E,$18,$18,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$18,$18,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$7E,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$03,$06,$0C,$18,$30,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$6E,$76,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$38,$18,$18,$18,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$0C,$30,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$1C,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $06,$0E,$1E,$66,$7F,$06,$06,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$7C,$06,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$7C,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$66,$0C,$18,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$3C,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$3E,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$18,$00,$00,$18,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$18,$00,$00,$18,$18,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0E,$18,$30,$60,$30,$18,$0E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7E,$00,$7E,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $70,$18,$0C,$06,$0C,$18,$70,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$0C,$18,$00,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$6E,$6E,$60,$62,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$3C,$66,$7E,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$66,$66,$7C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$60,$60,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $78,$6C,$66,$66,$66,$6C,$78,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$60,$78,$60,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$60,$78,$60,$60,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$6E,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$7E,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$18,$18,$18,$18,$18,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $1E,$0C,$0C,$0C,$0C,$6C,$38,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$6C,$78,$70,$78,$6C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $60,$60,$60,$60,$60,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $63,$77,$7F,$6B,$63,$63,$63,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$76,$7E,$7E,$6E,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$66,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$60,$60,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$66,$66,$3C,$0E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$78,$6C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$3C,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$18,$18,$18,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$66,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$66,$66,$3C,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $63,$63,$63,$6B,$7F,$77,$63,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$3C,$18,$3C,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$3C,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$06,$0C,$18,$30,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$30,$30,$30,$30,$30,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $40,$60,$30,$18,$0C,$06,$02,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$0C,$0C,$0C,$0C,$0C,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$24,$42,$42,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$30,$18,$0C,$04,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3C,$06,$3E,$66,$3E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$60,$60,$7C,$66,$66,$7C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3C,$60,$60,$60,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$06,$06,$3E,$66,$66,$3E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3C,$66,$7E,$60,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$0E,$18,$3E,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3E,$66,$66,$3E,$06,$7C - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$60,$60,$7C,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$00,$38,$18,$18,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$06,$00,$06,$06,$06,$06,$3C - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$60,$60,$6C,$78,$6C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$38,$18,$18,$18,$18,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$66,$7F,$7F,$6B,$63,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7C,$66,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3C,$66,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7C,$66,$66,$7C,$60,$60 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3E,$66,$66,$3E,$06,$06 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7C,$66,$60,$60,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3E,$60,$3C,$06,$7C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$7E,$18,$18,$18,$0E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$66,$66,$66,$66,$3E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$66,$66,$66,$3C,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$63,$6B,$7F,$3E,$36,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$66,$3C,$18,$3C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$66,$66,$66,$3E,$0C,$78 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7E,$0C,$18,$30,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$0C,$10,$10,$20,$10,$10,$0C - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$18,$18,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$04,$04,$02,$04,$04,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$32,$4C,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$81,$81,$81,$81,$81,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$91,$91,$9F,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C3,$F9,$C1,$99,$C1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$9F,$9F,$83,$99,$99,$83,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C3,$9F,$9F,$9F,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$F9,$F9,$C1,$99,$99,$C1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C3,$99,$81,$9F,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$F1,$E7,$C1,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C1,$99,$99,$C1,$F9,$83 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$9F,$9F,$83,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$FF,$C7,$E7,$E7,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$F9,$FF,$F9,$F9,$F9,$F9,$C3 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$9F,$9F,$93,$87,$93,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$C7,$E7,$E7,$E7,$E7,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$99,$80,$80,$94,$9C,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$83,$99,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C3,$99,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$83,$99,$99,$83,$9F,$9F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C1,$99,$99,$C1,$F9,$F9 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$83,$99,$9F,$9F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C1,$9F,$C3,$F9,$83,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$81,$E7,$E7,$E7,$F1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$99,$99,$99,$99,$C1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$99,$99,$99,$C3,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$9C,$94,$80,$C1,$C9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$99,$C3,$E7,$C3,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$99,$99,$99,$C1,$F3,$87 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$81,$F3,$E7,$CF,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$CF,$CF,$CF,$CF,$CF,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F3,$ED,$CF,$83,$CF,$9D,$03,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$F3,$F3,$F3,$F3,$F3,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$C3,$81,$E7,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$EF,$CF,$80,$80,$CF,$EF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E7,$FF,$FF,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$00,$99,$00,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$C1,$9F,$C3,$F9,$83,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9D,$99,$F3,$E7,$CF,$99,$B9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$C3,$C7,$98,$99,$C0,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F9,$F3,$E7,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F3,$E7,$CF,$CF,$CF,$E7,$F3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CF,$E7,$F3,$F3,$F3,$E7,$CF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$99,$C3,$00,$C3,$99,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$E7,$81,$E7,$E7,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$81,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FC,$F9,$F3,$E7,$CF,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$91,$89,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$C7,$E7,$E7,$E7,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$F3,$CF,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$E3,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F9,$F1,$E1,$99,$80,$F9,$F9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$83,$F9,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$83,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$99,$F3,$E7,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$C3,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$C1,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$E7,$FF,$FF,$E7,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$E7,$FF,$FF,$E7,$E7,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F1,$E7,$CF,$9F,$CF,$E7,$F1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$81,$FF,$81,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $8F,$E7,$F3,$F9,$F3,$E7,$8F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$F3,$E7,$FF,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$C3,$99,$81,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$99,$99,$83,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$9F,$9F,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $87,$93,$99,$99,$99,$93,$87,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$9F,$87,$9F,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$9F,$87,$9F,$9F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$91,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$81,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$E7,$E7,$E7,$E7,$E7,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E1,$F3,$F3,$F3,$F3,$93,$C7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$93,$87,$8F,$87,$93,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9F,$9F,$9F,$9F,$9F,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9C,$88,$80,$94,$9C,$9C,$9C,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$89,$81,$81,$91,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$99,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$9F,$9F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$99,$99,$C3,$F1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$87,$93,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$C3,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$E7,$E7,$E7,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$99,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$99,$99,$C3,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9C,$9C,$9C,$94,$80,$88,$9C,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$C3,$E7,$C3,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$C3,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$F9,$F3,$E7,$CF,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$00,$00,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$CF,$CF,$3F,$3F,$CF,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CC,$66,$33,$99,$CC,$66,$33,$99 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$33,$33,$CC,$CC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $33,$66,$CC,$99,$33,$66,$CC,$99 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E0,$E0,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E0,$E0,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$07,$07,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$E0,$E0,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$07,$07,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F8,$F8,$F8,$F8,$F8,$F8,$F8,$F8 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FE,$FC,$F9,$93,$87,$8F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$07,$07,$FF,$FF,$FF - .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 0 ; *DEBUG* - .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 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$3C,$66,$7E,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$66,$66,$7C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$60,$60,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $78,$6C,$66,$66,$66,$6C,$78,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$60,$78,$60,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$60,$78,$60,$60,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$6E,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$7E,$66,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$18,$18,$18,$18,$18,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $1E,$0C,$0C,$0C,$0C,$6C,$38,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$6C,$78,$70,$78,$6C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $60,$60,$60,$60,$60,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $63,$77,$7F,$6B,$63,$63,$63,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$76,$7E,$7E,$6E,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$66,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$60,$60,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$66,$66,$3C,$0E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7C,$66,$66,$7C,$78,$6C,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$3C,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$18,$18,$18,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$66,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$66,$66,$3C,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $63,$63,$63,$6B,$7F,$77,$63,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$3C,$18,$3C,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$3C,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$06,$0C,$18,$30,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$30,$30,$30,$30,$30,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0C,$12,$30,$7C,$30,$62,$FC,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$0C,$0C,$0C,$0C,$0C,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$3C,$7E,$18,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$10,$30,$7F,$7F,$30,$10,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$18,$00,$00,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$66,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $66,$66,$FF,$66,$FF,$66,$66,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$3E,$60,$3C,$06,$7C,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $62,$66,$0C,$18,$30,$66,$46,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$3C,$38,$67,$66,$3F,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $06,$0C,$18,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0C,$18,$30,$30,$30,$18,$0C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $30,$18,$0C,$0C,$0C,$18,$30,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$66,$3C,$FF,$3C,$66,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$18,$18,$7E,$18,$18,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$18,$18,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$7E,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$03,$06,$0C,$18,$30,$60,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$6E,$76,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$38,$18,$18,$18,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$0C,$30,$60,$7E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$1C,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $06,$0E,$1E,$66,$7F,$06,$06,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$60,$7C,$06,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$60,$7C,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $7E,$66,$0C,$18,$18,$18,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$3C,$66,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$66,$3E,$06,$66,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$18,$00,$00,$18,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$18,$00,$00,$18,$18,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0E,$18,$30,$60,$30,$18,$0E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$7E,$00,$7E,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $70,$18,$0C,$06,$0C,$18,$70,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$66,$06,$0C,$18,$00,$18,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $08,$1C,$3E,$7F,$7F,$1C,$3E,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$18,$18,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$FF,$FF,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$FF,$FF,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$FF,$FF,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $30,$30,$30,$30,$30,$30,$30,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$E0,$F0,$38,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$1C,$0F,$07,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$38,$F0,$E0,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$C0,$C0,$C0,$C0,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$E0,$70,$38,$1C,$0E,$07,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$07,$0E,$1C,$38,$70,$E0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$C0,$C0,$C0,$C0,$C0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$03,$03,$03,$03,$03,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$FF,$FF,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $36,$7F,$7F,$7F,$3E,$1C,$08,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $60,$60,$60,$60,$60,$60,$60,$60 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$07,$0F,$1C,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$E7,$7E,$3C,$3C,$7E,$E7,$C3 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$3C,$7E,$66,$66,$7E,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$66,$66,$18,$18,$3C,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $06,$06,$06,$06,$06,$06,$06,$06 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $08,$1C,$3E,$7F,$3E,$1C,$08,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$FF,$FF,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$30,$30,$C0,$C0,$30,$30 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$18,$18,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$03,$3E,$76,$36,$36,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$7F,$3F,$1F,$0F,$07,$03,$01 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$03,$03,$03,$03,$03,$03,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$CC,$CC,$33,$33 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FE,$FC,$F8,$F0,$E0,$C0,$80 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$03,$03,$03,$03,$03,$03,$03 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$1F,$1F,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$1F,$1F,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$F8,$F8,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$1F,$1F,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$F8,$F8,$18,$18,$18 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $07,$07,$07,$07,$07,$07,$07,$07 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $03,$03,$03,$03,$03,$03,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$F0,$F0,$F0,$F0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0F,$0F,$0F,$0F,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $18,$18,$18,$F8,$F8,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$91,$91,$9F,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$C3,$99,$81,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$99,$99,$83,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$9F,$9F,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $87,$93,$99,$99,$99,$93,$87,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$9F,$87,$9F,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$9F,$87,$9F,$9F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$91,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$81,$99,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$E7,$E7,$E7,$E7,$E7,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E1,$F3,$F3,$F3,$F3,$93,$C7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$93,$87,$8F,$87,$93,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9F,$9F,$9F,$9F,$9F,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9C,$88,$80,$94,$9C,$9C,$9C,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$89,$81,$81,$91,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$99,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$9F,$9F,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$99,$99,$C3,$F1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $83,$99,$99,$83,$87,$93,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$C3,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$E7,$E7,$E7,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$99,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$99,$99,$C3,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9C,$9C,$9C,$94,$80,$88,$9C,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$C3,$E7,$C3,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$C3,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$F9,$F3,$E7,$CF,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$CF,$CF,$CF,$CF,$CF,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F3,$ED,$CF,$83,$CF,$9D,$03,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$F3,$F3,$F3,$F3,$F3,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$C3,$81,$E7,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$EF,$CF,$80,$80,$CF,$EF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E7,$FF,$FF,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$99,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $99,$99,$00,$99,$00,$99,$99,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$C1,$9F,$C3,$F9,$83,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9D,$99,$F3,$E7,$CF,$99,$B9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$C3,$C7,$98,$99,$C0,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F9,$F3,$E7,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F3,$E7,$CF,$CF,$CF,$E7,$F3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CF,$E7,$F3,$F3,$F3,$E7,$CF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$99,$C3,$00,$C3,$99,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$E7,$E7,$81,$E7,$E7,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$81,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FC,$F9,$F3,$E7,$CF,$9F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$91,$89,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$C7,$E7,$E7,$E7,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$F3,$CF,$9F,$81,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$E3,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F9,$F1,$E1,$99,$80,$F9,$F9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$9F,$83,$F9,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$9F,$83,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $81,$99,$F3,$E7,$E7,$E7,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$C3,$99,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$99,$C1,$F9,$99,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$E7,$FF,$FF,$E7,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$E7,$FF,$FF,$E7,$E7,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F1,$E7,$CF,$9F,$CF,$E7,$F1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$81,$FF,$81,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $8F,$E7,$F3,$F9,$F3,$E7,$8F,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C3,$99,$F9,$F3,$E7,$FF,$E7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F7,$E3,$C1,$80,$80,$E3,$C1,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$00,$00,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$00,$00,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$00,$00,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F3,$F3,$F3,$F3,$F3,$F3,$F3,$F3 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$1F,$0F,$C7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E3,$F0,$F8,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$C7,$0F,$1F,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$3F,$3F,$3F,$3F,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$1F,$8F,$C7,$E3,$F1,$F8,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$F8,$F1,$E3,$C7,$8F,$1F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$3F,$3F,$3F,$3F,$3F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$FC,$FC,$FC,$FC,$FC,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$C3,$81,$81,$81,$81,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $C9,$80,$80,$80,$C1,$E3,$F7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$F8,$F0,$E3,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3C,$18,$81,$C3,$C3,$81,$18,$3C - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$C3,$81,$99,$99,$81,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$99,$99,$E7,$E7,$C3,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F9,$F9,$F9,$F9,$F9,$F9,$F9,$F9 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F7,$E3,$C1,$80,$C1,$E3,$F7,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$00,$00,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$CF,$CF,$3F,$3F,$CF,$CF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FC,$C1,$89,$C9,$C9,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$80,$C0,$E0,$F0,$F8,$FC,$FE - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$00,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$33,$33,$CC,$CC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$01,$03,$07,$0F,$1F,$3F,$7F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E0,$E0,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$E0,$E0,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$07,$07,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$E0,$E0,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$00,$00,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$00,$00,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$07,$07,$E7,$E7,$E7 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F8,$F8,$F8,$F8,$F8,$F8,$F8,$F8 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$FF,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $00,$00,$00,$FF,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FC,$FC,$FC,$FC,$FC,$FC,$00,$00 - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $E7,$E7,$E7,$07,$07,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 - .DB $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF - .DB $00,$00,$00,$00,$00,$00,$00,$00 -#ENDIF \ No newline at end of file + .DB $18,$18,$18,$FF,$FF,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$30,$30,$C0,$C0,$30,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $33,$99,$CC,$66,$33,$99,$CC,$66 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$03,$03,$03,$03,$03,$03,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$CC,$CC,$33,$33 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CC,$99,$33,$66,$CC,$99,$33,$66 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$03,$03,$03,$03,$03,$03,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$1F,$1F,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$1F,$1F,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$F8,$F8,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$1F,$1F,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$F8,$F8,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $07,$07,$07,$07,$07,$07,$07,$07 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $01,$03,$06,$6C,$78,$70,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$00,$00,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$FF,$66,$FF,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$3E,$60,$3C,$06,$7C,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $62,$66,$0C,$18,$30,$66,$46,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$3C,$38,$67,$66,$3F,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $06,$0C,$18,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0C,$18,$30,$30,$30,$18,$0C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $30,$18,$0C,$0C,$0C,$18,$30,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$66,$3C,$FF,$3C,$66,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$18,$7E,$18,$18,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$18,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$7E,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$03,$06,$0C,$18,$30,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$6E,$76,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$38,$18,$18,$18,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$0C,$30,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$1C,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $06,$0E,$1E,$66,$7F,$06,$06,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$7C,$06,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$7C,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$66,$0C,$18,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$3C,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$3E,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$18,$00,$00,$18,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$18,$00,$00,$18,$18,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0E,$18,$30,$60,$30,$18,$0E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7E,$00,$7E,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $70,$18,$0C,$06,$0C,$18,$70,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$0C,$18,$00,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$6E,$6E,$60,$62,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$3C,$66,$7E,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$66,$66,$7C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$60,$60,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $78,$6C,$66,$66,$66,$6C,$78,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$60,$78,$60,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$60,$78,$60,$60,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$6E,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$7E,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$18,$18,$18,$18,$18,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $1E,$0C,$0C,$0C,$0C,$6C,$38,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$6C,$78,$70,$78,$6C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $60,$60,$60,$60,$60,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $63,$77,$7F,$6B,$63,$63,$63,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$76,$7E,$7E,$6E,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$66,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$60,$60,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$66,$66,$3C,$0E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$78,$6C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$3C,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$18,$18,$18,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$66,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$66,$66,$3C,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $63,$63,$63,$6B,$7F,$77,$63,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$3C,$18,$3C,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$3C,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$06,$0C,$18,$30,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$30,$30,$30,$30,$30,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $40,$60,$30,$18,$0C,$06,$02,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$0C,$0C,$0C,$0C,$0C,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$24,$42,$42,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$30,$18,$0C,$04,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3C,$06,$3E,$66,$3E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$60,$60,$7C,$66,$66,$7C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3C,$60,$60,$60,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$06,$06,$3E,$66,$66,$3E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3C,$66,$7E,$60,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$0E,$18,$3E,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3E,$66,$66,$3E,$06,$7C + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$60,$60,$7C,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$00,$38,$18,$18,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$06,$00,$06,$06,$06,$06,$3C + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$60,$60,$6C,$78,$6C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$38,$18,$18,$18,$18,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$66,$7F,$7F,$6B,$63,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7C,$66,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3C,$66,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7C,$66,$66,$7C,$60,$60 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3E,$66,$66,$3E,$06,$06 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7C,$66,$60,$60,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3E,$60,$3C,$06,$7C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$7E,$18,$18,$18,$0E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$66,$66,$66,$66,$3E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$66,$66,$66,$3C,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$63,$6B,$7F,$3E,$36,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$66,$3C,$18,$3C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$66,$66,$66,$3E,$0C,$78 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7E,$0C,$18,$30,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$0C,$10,$10,$20,$10,$10,$0C + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$18,$18,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$04,$04,$02,$04,$04,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$32,$4C,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$81,$81,$81,$81,$81,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$91,$91,$9F,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C3,$F9,$C1,$99,$C1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$9F,$9F,$83,$99,$99,$83,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C3,$9F,$9F,$9F,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$F9,$F9,$C1,$99,$99,$C1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C3,$99,$81,$9F,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$F1,$E7,$C1,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C1,$99,$99,$C1,$F9,$83 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$9F,$9F,$83,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$FF,$C7,$E7,$E7,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$F9,$FF,$F9,$F9,$F9,$F9,$C3 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$9F,$9F,$93,$87,$93,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$C7,$E7,$E7,$E7,$E7,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$99,$80,$80,$94,$9C,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$83,$99,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C3,$99,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$83,$99,$99,$83,$9F,$9F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C1,$99,$99,$C1,$F9,$F9 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$83,$99,$9F,$9F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C1,$9F,$C3,$F9,$83,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$81,$E7,$E7,$E7,$F1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$99,$99,$99,$99,$C1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$99,$99,$99,$C3,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$9C,$94,$80,$C1,$C9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$99,$C3,$E7,$C3,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$99,$99,$99,$C1,$F3,$87 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$81,$F3,$E7,$CF,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$CF,$CF,$CF,$CF,$CF,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F3,$ED,$CF,$83,$CF,$9D,$03,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$F3,$F3,$F3,$F3,$F3,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$C3,$81,$E7,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$EF,$CF,$80,$80,$CF,$EF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E7,$FF,$FF,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$00,$99,$00,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$C1,$9F,$C3,$F9,$83,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9D,$99,$F3,$E7,$CF,$99,$B9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$C3,$C7,$98,$99,$C0,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F9,$F3,$E7,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F3,$E7,$CF,$CF,$CF,$E7,$F3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CF,$E7,$F3,$F3,$F3,$E7,$CF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$99,$C3,$00,$C3,$99,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$E7,$81,$E7,$E7,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$81,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FC,$F9,$F3,$E7,$CF,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$91,$89,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$C7,$E7,$E7,$E7,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$F3,$CF,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$E3,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F9,$F1,$E1,$99,$80,$F9,$F9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$83,$F9,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$83,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$99,$F3,$E7,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$C3,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$C1,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$E7,$FF,$FF,$E7,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$E7,$FF,$FF,$E7,$E7,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F1,$E7,$CF,$9F,$CF,$E7,$F1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$81,$FF,$81,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $8F,$E7,$F3,$F9,$F3,$E7,$8F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$F3,$E7,$FF,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$C3,$99,$81,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$99,$99,$83,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$9F,$9F,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $87,$93,$99,$99,$99,$93,$87,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$9F,$87,$9F,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$9F,$87,$9F,$9F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$91,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$81,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$E7,$E7,$E7,$E7,$E7,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E1,$F3,$F3,$F3,$F3,$93,$C7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$93,$87,$8F,$87,$93,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9F,$9F,$9F,$9F,$9F,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9C,$88,$80,$94,$9C,$9C,$9C,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$89,$81,$81,$91,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$99,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$9F,$9F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$99,$99,$C3,$F1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$87,$93,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$C3,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$E7,$E7,$E7,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$99,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$99,$99,$C3,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9C,$9C,$9C,$94,$80,$88,$9C,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$C3,$E7,$C3,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$C3,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$F9,$F3,$E7,$CF,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$00,$00,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$CF,$CF,$3F,$3F,$CF,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CC,$66,$33,$99,$CC,$66,$33,$99 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$33,$33,$CC,$CC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $33,$66,$CC,$99,$33,$66,$CC,$99 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E0,$E0,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E0,$E0,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$07,$07,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$E0,$E0,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$07,$07,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F8,$F8,$F8,$F8,$F8,$F8,$F8,$F8 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FE,$FC,$F9,$93,$87,$8F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$07,$07,$FF,$FF,$FF + .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 + .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 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$3C,$66,$7E,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$66,$66,$7C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$60,$60,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $78,$6C,$66,$66,$66,$6C,$78,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$60,$78,$60,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$60,$78,$60,$60,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$6E,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$7E,$66,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$18,$18,$18,$18,$18,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $1E,$0C,$0C,$0C,$0C,$6C,$38,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$6C,$78,$70,$78,$6C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $60,$60,$60,$60,$60,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $63,$77,$7F,$6B,$63,$63,$63,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$76,$7E,$7E,$6E,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$66,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$60,$60,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$66,$66,$3C,$0E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7C,$66,$66,$7C,$78,$6C,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$3C,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$18,$18,$18,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$66,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$66,$66,$3C,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $63,$63,$63,$6B,$7F,$77,$63,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$3C,$18,$3C,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$3C,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$06,$0C,$18,$30,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$30,$30,$30,$30,$30,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0C,$12,$30,$7C,$30,$62,$FC,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$0C,$0C,$0C,$0C,$0C,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$3C,$7E,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$10,$30,$7F,$7F,$30,$10,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$00,$00,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$66,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $66,$66,$FF,$66,$FF,$66,$66,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$3E,$60,$3C,$06,$7C,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $62,$66,$0C,$18,$30,$66,$46,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$3C,$38,$67,$66,$3F,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $06,$0C,$18,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0C,$18,$30,$30,$30,$18,$0C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $30,$18,$0C,$0C,$0C,$18,$30,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$66,$3C,$FF,$3C,$66,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$18,$18,$7E,$18,$18,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$18,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$7E,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$03,$06,$0C,$18,$30,$60,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$6E,$76,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$38,$18,$18,$18,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$0C,$30,$60,$7E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$1C,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $06,$0E,$1E,$66,$7F,$06,$06,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$60,$7C,$06,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$60,$7C,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $7E,$66,$0C,$18,$18,$18,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$3C,$66,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$66,$3E,$06,$66,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$18,$00,$00,$18,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$18,$00,$00,$18,$18,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0E,$18,$30,$60,$30,$18,$0E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7E,$00,$7E,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $70,$18,$0C,$06,$0C,$18,$70,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$66,$06,$0C,$18,$00,$18,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $08,$1C,$3E,$7F,$7F,$1C,$3E,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$FF,$FF,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$FF,$FF,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$FF,$FF,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $30,$30,$30,$30,$30,$30,$30,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$E0,$F0,$38,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$1C,$0F,$07,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$38,$F0,$E0,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$C0,$C0,$C0,$C0,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$E0,$70,$38,$1C,$0E,$07,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$07,$0E,$1C,$38,$70,$E0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$C0,$C0,$C0,$C0,$C0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$03,$03,$03,$03,$03,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$3C,$7E,$7E,$7E,$7E,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FF,$FF,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $36,$7F,$7F,$7F,$3E,$1C,$08,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $60,$60,$60,$60,$60,$60,$60,$60 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$07,$0F,$1C,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$E7,$7E,$3C,$3C,$7E,$E7,$C3 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$3C,$7E,$66,$66,$7E,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$66,$66,$18,$18,$3C,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $06,$06,$06,$06,$06,$06,$06,$06 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $08,$1C,$3E,$7F,$3E,$1C,$08,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$FF,$FF,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$30,$30,$C0,$C0,$30,$30 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$03,$3E,$76,$36,$36,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$7F,$3F,$1F,$0F,$07,$03,$01 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CC,$CC,$33,$33,$CC,$CC,$33,$33 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$03,$03,$03,$03,$03,$03,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$CC,$CC,$33,$33 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FE,$FC,$F8,$F0,$E0,$C0,$80 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$03,$03,$03,$03,$03,$03,$03 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$1F,$1F,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$1F,$1F,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$F8,$F8,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$1F,$1F,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$F8,$F8,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $07,$07,$07,$07,$07,$07,$07,$07 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $03,$03,$03,$03,$03,$03,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$F0,$F0,$F0,$F0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0F,$0F,$0F,$0F,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$F8,$F8,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$91,$91,$9F,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$C3,$99,$81,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$99,$99,$83,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$9F,$9F,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $87,$93,$99,$99,$99,$93,$87,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$9F,$87,$9F,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$9F,$87,$9F,$9F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$91,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$81,$99,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$E7,$E7,$E7,$E7,$E7,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E1,$F3,$F3,$F3,$F3,$93,$C7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$93,$87,$8F,$87,$93,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9F,$9F,$9F,$9F,$9F,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9C,$88,$80,$94,$9C,$9C,$9C,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$89,$81,$81,$91,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$99,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$9F,$9F,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$99,$99,$C3,$F1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $83,$99,$99,$83,$87,$93,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$C3,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$E7,$E7,$E7,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$99,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$99,$99,$C3,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9C,$9C,$9C,$94,$80,$88,$9C,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$C3,$E7,$C3,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$C3,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$F9,$F3,$E7,$CF,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$CF,$CF,$CF,$CF,$CF,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F3,$ED,$CF,$83,$CF,$9D,$03,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$F3,$F3,$F3,$F3,$F3,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$C3,$81,$E7,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$EF,$CF,$80,$80,$CF,$EF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E7,$FF,$FF,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$99,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $99,$99,$00,$99,$00,$99,$99,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$C1,$9F,$C3,$F9,$83,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9D,$99,$F3,$E7,$CF,$99,$B9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$C3,$C7,$98,$99,$C0,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F9,$F3,$E7,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F3,$E7,$CF,$CF,$CF,$E7,$F3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CF,$E7,$F3,$F3,$F3,$E7,$CF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$99,$C3,$00,$C3,$99,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$E7,$E7,$81,$E7,$E7,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$81,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FC,$F9,$F3,$E7,$CF,$9F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$91,$89,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$C7,$E7,$E7,$E7,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$F3,$CF,$9F,$81,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$E3,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F9,$F1,$E1,$99,$80,$F9,$F9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$9F,$83,$F9,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$9F,$83,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $81,$99,$F3,$E7,$E7,$E7,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$C3,$99,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$99,$C1,$F9,$99,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$E7,$FF,$FF,$E7,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$E7,$FF,$FF,$E7,$E7,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F1,$E7,$CF,$9F,$CF,$E7,$F1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$81,$FF,$81,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $8F,$E7,$F3,$F9,$F3,$E7,$8F,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C3,$99,$F9,$F3,$E7,$FF,$E7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F7,$E3,$C1,$80,$80,$E3,$C1,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$00,$00,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$00,$00,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$00,$00,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F3,$F3,$F3,$F3,$F3,$F3,$F3,$F3 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$1F,$0F,$C7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E3,$F0,$F8,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$C7,$0F,$1F,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$3F,$3F,$3F,$3F,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$1F,$8F,$C7,$E3,$F1,$F8,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$F8,$F1,$E3,$C7,$8F,$1F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$3F,$3F,$3F,$3F,$3F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$FC,$FC,$FC,$FC,$FC,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$C3,$81,$81,$81,$81,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $C9,$80,$80,$80,$C1,$E3,$F7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$F8,$F0,$E3,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3C,$18,$81,$C3,$C3,$81,$18,$3C + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$C3,$81,$99,$99,$81,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$99,$99,$E7,$E7,$C3,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F9,$F9,$F9,$F9,$F9,$F9,$F9,$F9 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F7,$E3,$C1,$80,$C1,$E3,$F7,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$00,$00,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$CF,$CF,$3F,$3F,$CF,$CF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E7,$E7,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FC,$C1,$89,$C9,$C9,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$80,$C0,$E0,$F0,$F8,$FC,$FE + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $33,$33,$CC,$CC,$33,$33,$CC,$CC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$33,$33,$CC,$CC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$01,$03,$07,$0F,$1F,$3F,$7F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E0,$E0,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$E0,$E0,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$07,$07,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$E0,$E0,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$00,$00,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$00,$00,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$07,$07,$E7,$E7,$E7 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F8,$F8,$F8,$F8,$F8,$F8,$F8,$F8 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FC,$FC,$FC,$FC,$FC,$FC,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00 + .DB $E7,$E7,$E7,$07,$07,$FF,$FF,$FF + .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 diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index 60e2ea1b..7bdc605d 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -687,6 +687,83 @@ GETLNDONE: LD (HL),00H ; STORE NULL IN BUFFER POP DE ; RESTORE DE RET ; + +#IF (PLATFORM == PLT_UNA) + +; +;__COUT_______________________________________________________________________ +; +; OUTPUT CHARACTER FROM A +;_____________________________________________________________________________ +; +COUT: + ; SAVE ALL INCOMING REGISTERS + PUSH AF + PUSH BC + PUSH DE + PUSH HL +; + ; OUTPUT CHARACTER TO CONSOLE VIA UBIOS + LD E,A + LD BC,$12 + RST 08 +; + ; RESTORE ALL REGISTERS + POP HL + POP DE + POP BC + POP AF + RET + RET +; +;__CIN________________________________________________________________________ +; +; INPUT CHARACTER TO A +;_____________________________________________________________________________ +; +CIN: + ; SAVE INCOMING REGISTERS (AF IS OUTPUT) + PUSH BC + PUSH DE + PUSH HL +; + ; INPUT CHARACTER FROM CONSOLE VIA UBIOS + LD BC,$11 + RST 08 + LD A,E +; + ; RESTORE REGISTERS (AF IS OUTPUT) + POP HL + POP DE + POP BC + RET + RET +; +;__CST________________________________________________________________________ +; +; RETURN INPUT STATUS IN A (0 = NO CHAR, !=0 CHAR WAITING) +;_____________________________________________________________________________ +; +CST: + ; SAVE INCOMING REGISTERS (AF IS OUTPUT) + PUSH BC + PUSH DE + PUSH HL +; + ; GET CONSOLE INPUT STATUS VIA UBIOS + LD BC,$13 + RST 08 + LD A,E +; + ; RESTORE REGISTERS (AF IS OUTPUT) + POP HL + POP DE + POP BC + RET + RET + +#ELSE + ; ;__COUT_______________________________________________________________________ ; @@ -757,6 +834,8 @@ CST: POP DE POP BC RET + +#ENDIF ; ;__KIN________________________________________________________________________ ; diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 7ae53245..3538d1a0 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -764,18 +764,6 @@ FD_SELECTUNIT: ; ; FD_SEEK: - ;CALL TSTPT ; *DEBUG* - ;PUSH BC ; *DEBUG* - ;CALL PC_COLON - ;PUSH HL - ;POP BC - ;CALL PRTHEXWORD - ;PUSH DE - ;POP BC - ;CALL PRTHEXWORD - ;CALL PC_SPACE - ;POP BC ; *DEBUG* - LD (HSTSEC),DE ; RECORD HEAD/SECTOR LD (HSTTRK),HL ; RECORD TRACK XOR A ; SIGNAL SUCCESS @@ -784,7 +772,6 @@ FD_SEEK: ; ; FD_READ: - ;CALL TSTPT ; *DEBUG* LD (FD_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS LD A,DOP_READ JR FD_RUN @@ -826,12 +813,10 @@ FD_RETRY: PUSH BC CALL FD_START POP BC - ;CALL TSTPT ; *DEBUG* LD A,(FST_RC) ; CHECK RESULT OR A RET Z ; SUCCESS - ;CALL TSTPT ; *DEBUG* DJNZ FD_RETRY ; RETRY TILL COUNTER EXHAUSTED @@ -1297,10 +1282,6 @@ FOP_CMD2: ; START OF LOOP TO SEND NEXT BYTE FOP_CMD4: ; START OF STATUS LOOP, WAIT FOR FDC TO BE READY FOR BYTE CALL DELAY ; FDC MAY TAKE UP TO 12us TO UPDATE MSR IN A,(FDC_MSR) ; READ MAIN STATUS REGISTER -; PUSH AF ; *DEBUG* -; CALL PC_SPACE ; *DEBUG* -; CALL PRTHEXBYTE ; *DEBUG* -; POP AF ; *DEBUG* AND 0C0H ; ISOLATE RQM/DIO CP 080H ; LOOKING FOR RQM=1, DIO=0 (FDC READY FOR A BYTE) JR Z,FOP_CMD6 ; GOOD, GO TO SEND BYTE diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index f4dec2f4..69e775cf 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -617,8 +617,8 @@ HB_INITTBL: #IF (UPD7220ENABLE) .DW UPD7220_INIT #ENDIF -#IF (N8VENABLE) - .DW N8V_INIT +#IF (SCGENABLE) + .DW SCG_INIT #ENDIF #IF (DSKYENABLE) .DW DSKY_INIT @@ -751,10 +751,6 @@ CIO_DISPATCH: CALL PANIC ; PANIC OR $FF ; SIGNAL ERROR RET ; AND RETURN -; -CIO_DISPATCH_CON: - LD A,(HCB + HCB_CONDEV) ; PUT CONSOLE UNIT NUMBER IN A - JR CIO_DISPATCH1 ; AND CONTINUE ;; ;CIO_DISPATCH_VDA: ; LD A,B ; FUNCTION NUMBER TO A @@ -763,6 +759,10 @@ CIO_DISPATCH_CON: ; POP HL ; RESTORE HL/STACK ; JP EMU_DISPATCH ; CHAIN TO EMULATOR DISPATCH ; +CIO_DISPATCH_CON: + LD A,(HCB + HCB_CONDEV) ; PUT CONSOLE UNIT NUMBER IN A + ; FALL THRU +; CIO_DISPATCH1: ; INC HL ; BUMP PAST COUNT PREFIX TO START OF TABLE @@ -804,9 +804,9 @@ CIO_DISPATCH1: CP CIODEV_UPD7220 JP Z,UPD7220_DISPCIO #ENDIF -#IF (N8VENABLE) - CP CIODEV_N8V - JP Z,N8V_DISPCIO +#IF (SCGENABLE) + CP CIODEV_SCG + JP Z,SCG_DISPCIO #ENDIF CALL PANIC RET @@ -1069,10 +1069,13 @@ RTC_DISPATCH: ; THE VDA DRIVER CALLS EMU_INIT TO DISPATCH THE INITIALIZATION REQUEST ; TO THE CORRRECT EMULATION MODULE. ; -; C: EMULATION TYPE +; B: EMULATION TYPE ID (1=TTY, 2=ANSI, ETC.) +; C: VDA DRIVER'S CIO UNIT NUMBER +; DE: VDA DRIVER'S DISPATCH ADDRESS +; ; EMU_INIT: - LD A,C ; GET REQUESTED EMULATION + LD A,B ; GET REQUESTED EMULATION ; DEC A ; 1 = TTY #IF (TTYENABLE) @@ -1088,26 +1091,9 @@ EMU_INIT: RET ; EMU_INIT1: - CALL TSTPT ; *DEBUG* JP (HL) ; DO THE EMULATOR INIT, DE := CIO DISPATCH ADR ; ;================================================================================================== -; VDA DISPATCHING FOR EMULATION HANDLERS -;================================================================================================== -; -; BELOW IS THE DYNAMICALLY MANAGED EMULATION VDA DISPATCH. -; EMULATION HANDLERS CAN CALL EMU_VDADISP TO INVOKE A VDA -; FUNCTION. EMU_VDADISPADR IS USED TO MARK THE LOCATION -; OF THE VDA DISPATCH ADDRESS. THIS ALLOWS US TO MODIFY -; THE CODE DYNAMICALLY WHEN EMULATION IS INITIALIZED AND -; A NEW VDA TARGET IS SPECIFIED. -; -EMU_VDADISP: - JP PANIC ; JP TGT IS UPDATED DYNAMICALLY -; -EMU_VDADISPADR .EQU $ - 2 ; ADDRESS PORTION OF JP INSTRUCTION ABOVE -; -;================================================================================================== ; VIDEO DISPLAY ADAPTER DEVICE DISPATCHER ;================================================================================================== ; @@ -1130,9 +1116,9 @@ VDA_DISPATCH: CP VDADEV_7220 JP Z,UPD7220_DISPATCH #ENDIF -#IF (N8VENABLE) - CP VDADEV_N8V - JP Z,N8V_DISPATCH +#IF (SCGENABLE) + CP VDADEV_SCG + JP Z,SCG_DISPATCH #ENDIF CALL PANIC ; @@ -1145,29 +1131,27 @@ VDA_DISPATCH: SYS_DISPATCH: LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION - JR Z,SYS_SETBNK ; $F0 + JP Z,SYS_SETBNK ; $F0 DEC A - JR Z,SYS_GETBNK ; $F1 + JP Z,SYS_GETBNK ; $F1 DEC A JP Z,SYS_COPY ; $F2 DEC A JP Z,SYS_XCOPY ; $F3 DEC A - JR Z,SYS_ALLOC ; $F4 - DEC A - JR Z,SYS_GET ; $F5 + JP Z,SYS_ALLOC ; $F4 DEC A - JR Z,SYS_SET ; $F6 + JP Z,SYS_FREE ; $F5 DEC A - ;JR Z,SYS_??? ; $F7 + JP Z,SYS_VER ; $F6 DEC A - JR Z,SYS_HCBGETB ; $F8 + JP Z,SYS_GET ; $F7 DEC A - JR Z,SYS_HCBPUTB ; $F9 + JP Z,SYS_SET ; $F8 DEC A - JR Z,SYS_HCBGETW ; $FA + JP Z,SYS_PEEK ; $F9 DEC A - JR Z,SYS_HCBPUTW ; $FB + JP Z,SYS_POKE ; $FA CALL PANIC ; INVALID ; ; SET ACTIVE MEMORY BANK AND RETURN PREVIOUSLY ACTIVE MEMORY BANK @@ -1256,30 +1240,97 @@ SYS_XCOPY: SYS_ALLOC: JP HB_ALLOC ; +; FREE HEAP MEMORY BY SIMPLY RELEASING ALL +; MEMORY BEYOND POINTER IN HL. +; ON SUCCESS RETURN A == 0, AND Z SET +; ON FAILURE A <> 0 AND NZ SET AND HL TRASHED +; ALL OTHER REGISTERS PRESERVED +; +SYS_FREE: + CALL PANIC ; NOT YET IMPLEMENTED + OR $FF + RET +; +; GET THE CURRENT HBIOS VERSION +; ON INPUT, C=0 +; RETURNS VERSION IN DE AS BCD +; D: MAJOR VERION IN TOP 4 BITS, MINOR VERSION IN LOW 4 BITS +; E: UPDATE VERION IN TOP 4 BITS, PATCH VERSION IN LOW 4 BITS +; L: PLATFORM ID +; +SYS_VER: + LD DE,0 | (RMJ << 12) | (RMN << 8) | (RUP << 4) | RTP + LD L,PLATFORM + XOR A + RET +; ; GET SYSTEM INFORMATION ; ITEM TO RETURN INDICATED IN C ; SYS_GET: LD A,C ; GET REQUESTED SUB-FUNCTION - CP BF_SYSGET_VER - JR Z,SYS_GETVER CP BF_SYSGET_CIOCNT JR Z,SYS_GETCIOCNT CP BF_SYSGET_DIOCNT JR Z,SYS_GETDIOCNT + CP BF_SYSGET_BOOTINFO + JR Z,SYS_GETBOOTINFO + CP BF_SYSGET_CPUINFO + JR Z,SYS_GETCPUINFO + CP BF_SYSGET_MEMINFO + JR Z,SYS_GETMEMINFO + CP BF_SYSGET_BNKINFO + JR Z,SYS_GETBNKINFO OR $FF ; SIGNAL ERROR RET - ; -; GET THE CURRENT HBIOS VERSION -; RETURNS VERSION IN DE AS BCD -; D: MAJOR VERION IN TOP 4 BITS, MINOR VERSION IN LOW 4 BITS -; E: UPDATE VERION IN TOP 4 BITS, PATCH VERSION IN LOW 4 BITS -; L: PLATFORM ID +; GET BOOT INFORMATION +; RETURNS: +; L: BOOT BANK ID +; DE: BOOT DISK VOLUME (UNIT/SLICE) ; -SYS_GETVER: - LD DE,0 | (RMJ << 12) | (RMN << 8) | (RUP << 4) | RTP - LD L,PLATFORM +SYS_GETBOOTINFO: + LD A,(HCB + HCB_BOOTBID) + LD L,A + LD DE,(HCB + HCB_BOOTVOL) + XOR A + RET +; +; GET CPU INFORMATION +; RETURNS: +; H: Z80 CPU VARIANT +; L: CPU SPEED IN MHZ +; DE: CPU SPEED IN KHZ +; +SYS_GETCPUINFO: + LD H,0 ; NOT YET DEFINED + LD A,(HCB + HCB_CPUMHZ) + LD L,A + LD DE,(HCB + HCB_CPUKHZ) + XOR A + RET +; +; GET MEMORY INFORMATION +; RETURNS: +; D: COUNT OF ROM BANKS +; E: COUNT OF RAM BANKS +; +SYS_GETMEMINFO: + LD D,ROMSIZE / 32 + LD D,RAMSIZE / 32 + XOR A + RET +; +; GET SERIAL UNIT COUNT +; RETURNS: +; D: HBIOS BANK ID +; E: USER BANK ID +; +SYS_GETBNKINFO: + LD A,(HCB + HCB_BIDBIOS) + LD D,A + LD A,(HCB + HCB_BIDUSR) + LD E,A XOR A RET ; @@ -1298,63 +1349,93 @@ SYS_GETDIOCNT: LD E,A ; PUT IT IN E XOR A ; SIGNALS SUCCESS RET - - ; ; SET SYSTEM PARAMETERS ; PARAMETER(S) TO SET INDICATED IN C ; SYS_SET: + LD A,C ; GET REQUESTED SUB-FUNCTION + CP BF_SYSSET_BOOTINFO + JR Z,SYS_SETBOOTINFO OR $FF ; SIGNAL ERROR RET - -; -; GET HCB VALUE BYTE -; C: HCB INDEX (OFFSET INTO HCB) -; RETURN BYTE VALUE IN E ; -SYS_HCBGETB: - CALL SYS_HCBPTR ; LOAD HL WITH PTR - LD E,(HL) ; GET BYTE VALUE - RET ; DONE +; SET BOOT INFORMATION +; ON ENTRY: +; L: BOOT BANK ID +; DE: BOOT DISK VOLUME (UNIT/SLICE) ; -; PUT HCB VALUE BYTE -; C: HCB INDEX (OFFSET INTO HCB) -; E: VALUE TO WRITE -; -SYS_HCBPUTB: - CALL SYS_HCBPTR ; LOAD HL WITH PTR - LD (HL),E ; PUT BYTE VALUE +SYS_SETBOOTINFO: + LD A,L + LD (HCB + HCB_BOOTBID),A + LD (HCB + HCB_BOOTVOL),DE + XOR A RET ; -; GET HCB VALUE WORD -; C: HCB INDEX (OFFSET INTO HCB) -; RETURN WORD VALUE IN DE -; -SYS_HCBGETW: - CALL SYS_HCBPTR ; LOAD HL WITH PTR - LD E,(HL) ; GET BYTE VALUE - INC HL - LD D,(HL) ; GET BYTE VALUE - RET ; DONE -; -; PUT HCB VALUE WORD -; C: HCB INDEX (OFFSET INTO HCB) -; DE: VALUE TO WRITE +; RETURN A BYTE OF MEMORY FROM HBIOS BANK +; ENTRY: HL=ADDRESS IN HBIOS BANK (0H-7FFFH) +; RETURN: C=BYTE VALUE ; -SYS_HCBPUTW: - CALL SYS_HCBPTR ; LOAD HL WITH PTR - LD (HL),E ; PUT BYTE VALUE - INC HL - LD (HL),D ; PUT BYTE VALUE +SYS_PEEK: + LD C,(HL) + XOR A RET ; -; CALCULATE REAL ADDRESS OF HCB VALUE FROM HCB OFFSET +; WRITE A BYTE OF MEMORY TO HBIOS BANK +; ENTRY: HL=ADDRESS IN HBIOS BANK (0H-7FFFH) +; RETURN: C=BYTE VALUE ; -SYS_HCBPTR: - LD A,C ; LOAD INDEX (HCB OFFSET) - LD HL,HCB ; GET HCB ADDRESS - JP ADDHLA ; CALC REAL ADDRESS AND RET +SYS_POKE: + LD (HL),C + XOR A + RET +;; +;; GET HCB VALUE BYTE +;; C: HCB INDEX (OFFSET INTO HCB) +;; RETURN BYTE VALUE IN E +;; +;SYS_HCBGETB: +; CALL SYS_HCBPTR ; LOAD HL WITH PTR +; LD E,(HL) ; GET BYTE VALUE +; RET ; DONE +;; +;; PUT HCB VALUE BYTE +;; C: HCB INDEX (OFFSET INTO HCB) +;; E: VALUE TO WRITE +;; +;SYS_HCBPUTB: +; CALL SYS_HCBPTR ; LOAD HL WITH PTR +; LD (HL),E ; PUT BYTE VALUE +; RET +;; +;; GET HCB VALUE WORD +;; C: HCB INDEX (OFFSET INTO HCB) +;; RETURN WORD VALUE IN DE +;; +;SYS_HCBGETW: +; CALL SYS_HCBPTR ; LOAD HL WITH PTR +; LD E,(HL) ; GET BYTE VALUE +; INC HL +; LD D,(HL) ; GET BYTE VALUE +; RET ; DONE +;; +;; PUT HCB VALUE WORD +;; C: HCB INDEX (OFFSET INTO HCB) +;; DE: VALUE TO WRITE +;; +;SYS_HCBPUTW: +; CALL SYS_HCBPTR ; LOAD HL WITH PTR +; LD (HL),E ; PUT BYTE VALUE +; INC HL +; LD (HL),D ; PUT BYTE VALUE +; RET +; +;; CALCULATE REAL ADDRESS OF HCB VALUE FROM HCB OFFSET +;; +;SYS_HCBPTR: +; LD A,C ; LOAD INDEX (HCB OFFSET) +; LD HL,HCB ; GET HCB ADDRESS +; JP ADDHLA ; CALC REAL ADDRESS AND RET ; ;================================================================================================== ; GLOBAL HBIOS FUNCTIONS @@ -1544,12 +1625,12 @@ SIZ_UPD7220 .EQU $ - ORG_UPD7220 .ECHO " bytes.\n" #ENDIF ; -#IF (N8VENABLE) -ORG_N8V .EQU $ - #INCLUDE "n8v.asm" -SIZ_N8V .EQU $ - ORG_N8V - .ECHO "N8V occupies " - .ECHO SIZ_N8V +#IF (SCGENABLE) +ORG_SCG .EQU $ + #INCLUDE "scg.asm" +SIZ_SCG .EQU $ - ORG_SCG + .ECHO "SCG occupies " + .ECHO SIZ_SCG .ECHO " bytes.\n" #ENDIF ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 9cd488fd..aba6f6d0 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -57,32 +57,37 @@ 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_SYSALLOC .EQU BF_SYS + 4 ; ALLOC HBIOS HEAP MEMORY -BF_SYSGET .EQU BF_SYS + 5 ; GET HBIOS INFO -BF_SYSSET .EQU BF_SYS + 6 ; SET HBIOS PARMS -BF_SYSHCBGETB .EQU BF_SYS + 8 ; GET HCB BYTE VALUE -BF_SYSHCBPUTB .EQU BF_SYS + 9 ; PUT HCB BYTE VALUE -BF_SYSHCBGETW .EQU BF_SYS + 10 ; GET HCB WORD VALUE -BF_SYSHCBPUTW .EQU BF_SYS + 11 ; PUT HCB BYTE VALUE -; -BF_SYSGET_CIOCNT .EQU $00 ; GET SERIAL UNIT COUNT +BF_SYSFREE .EQU BF_SYS + 5 ; FREE HBIOS HEAP MEMORY +BF_SYSVER .EQU BF_SYS + 6 ; GET HBIOS VERSION +BF_SYSGET .EQU BF_SYS + 7 ; GET HBIOS INFO +BF_SYSSET .EQU BF_SYS + 8 ; SET HBIOS PARAMETERS +BF_PEEK .EQU BF_SYS + 9 ; GET A BYTE FROM HBIOS BANK +BF_POKE .EQU BF_SYS + 10 ; PUT A BYTE TO HBIOS BANK +; +BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT -BF_SYSGET_VER .EQU $F0 ; GET HBIOS VERSION INFO +BF_SYSGET_BOOTINFO .EQU $E0 ; GET BOOT INFORMATION +BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION +BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO +BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO ; -; CHARACTER DEVICES +BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION +; +; CHARACTER DEVICE IDS ; CIODEV_UART .EQU $00 CIODEV_ASCI .EQU $10 CIODEV_VDU .EQU $20 CIODEV_CVDU .EQU $30 CIODEV_UPD7220 .EQU $40 -CIODEV_N8V .EQU $50 +CIODEV_SCG .EQU $50 CIODEV_PRPCON .EQU $60 CIODEV_PPPCON .EQU $70 CIODEV_CONSOLE .EQU $D0 -CIODEV_VDA .EQU $E0 -CIODEV_NUL .EQU $F0 +;CIODEV_VDA .EQU $E0 ; DEPRECATED +;CIODEV_NUL .EQU $F0 ; DEPRECATED ; -; DISK DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT) +; DISK DEVICE IDS ; DIODEV_MD .EQU $00 DIODEV_FD .EQU $10 @@ -95,13 +100,13 @@ DIODEV_PRPSD .EQU $70 DIODEV_PPPSD .EQU $80 DIODEV_HDSK .EQU $90 ; -; VDA DEVICES (VIDEO DISPLAY ADAPTER) +; VDA DEVICE IDS ; VDADEV_NONE .EQU $00 ; NO VDA DEVICE VDADEV_VDU .EQU $10 ; ECB VDU - 6545 CHIP VDADEV_CVDU .EQU $20 ; ECB COLOR VDU - 8563 CHIP (NOT IMP) VDADEV_UPD7220 .EQU $30 ; ECB uP7220 (NOT IMPLEMENTED) -VDADEV_N8V .EQU $40 ; N8 ONBOARD VDA SUBSYSTEM +VDADEV_SCG .EQU $40 ; N8 ONBOARD VDA SUBSYSTEM ; ; EMULATION TYPES ; @@ -141,11 +146,11 @@ 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) +;; 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 diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 4ae495e5..c1056944 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -103,12 +103,13 @@ MD_CAP: JR Z,MD_CAP1 ; UNIT 1 CALL PANIC ; PANIC ON INVALID UNIT MD_CAP0: - LD HL,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT + LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT JR MD_CAP2 MD_CAP1: - LD HL,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT + LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT MD_CAP2: - LD H,(HL) ; H := # BANKS + SUB 4 ; SUBTRACT OUT RESERVED BANKS + LD H,A ; H := # BANKS LD E,64 ; # 512 BYTE BLOCKS / BANK CALL MULT8 ; HL := TOTAL # 512 BYTE BLOCKS LD DE,0 ; NEVER EXCEEDS 64K, ZERO HIGH WORD @@ -121,7 +122,6 @@ MD_GEOM: ; RAM/ROM DISKS ALLOW CHS STYLE ACCESS BY EMULATING ; A DISK DEVICE WITH 1 HEAD AND 16 SECTORS / TRACK. CALL MD_CAP ; HL := CAPACITY IN BLOCKS - EX DE,HL ; SWAP LD D,1 | $80 ; HEADS / CYL := 1 BY DEFINITION, SET LBA CAPABILITY BIT LD E,16 ; SECTORS / TRACK := 16 BY DEFINTION LD B,4 ; PREPARE TO DIVIDE BY 16 diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 2b38b6f2..9e6179de 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -219,9 +219,14 @@ GOCPM2: LD BC,$01FC ; UNA FUNC: SET BOOTSTRAP HISTORY RST 08 ; CALL UNA #ELSE - LD B,BF_SYSHCBPUTW ; HB FUNC: PUT HCB WORD - LD C,HCB_BOOTVOL ; BOOT VOLUME (UNIT, SLICE) - LD DE,$0100 + ;LD B,BF_SYSHCBPUTW ; HB FUNC: PUT HCB WORD + ;LD C,HCB_BOOTVOL ; BOOT VOLUME (UNIT, SLICE) + ;LD DE,$0100 + LD B,BF_SYSSET ; HB FUNC: SET HBIOS PARAMETER + LD C,BF_SYSSET_BOOTINFO ; HB SUBFUNC: SET BOOT INFO + LD A,(HB_CURBNK) ; GET CURRENT BANK ID FROM PROXY DATA + LD L,A ; ... AND SAVE AND BOOT BANK + LD DE,$0100 ; BOOT VOLUME (UNIT, SLICE) RST 08 #ENDIF JP CPM_ENT @@ -571,8 +576,12 @@ DB_LOOP: CALL NEWLINE ; FORMATTING ; PASS BOOT DEVICE/UNIT/LU TO CBIOS COLD BOOT - LD B,BF_SYSHCBPUTW ; HB FUNC: PUT HCB WORD - LD C,HCB_BOOTVOL ; BOOT VOLUME (DEV/UNIT, SLICE) + ;LD B,BF_SYSHCBPUTW ; HB FUNC: PUT HCB WORD + ;LD C,HCB_BOOTVOL ; BOOT VOLUME (DEV/UNIT, SLICE) + LD B,BF_SYSSET ; HB FUNC: SET HBIOS PARAMETER + LD C,BF_SYSSET_BOOTINFO ; HB SUBFUNC: SET BOOT INFO + LD A,(HB_CURBNK) ; GET CURRENT BANK ID FROM PROXY DATA + LD L,A ; ... AND SAVE AND BOOT BANK LD A,(BL_DEVICE) ; LOAD BOOT DEVICE/UNIT LD D,A ; SAVE IN D LD A,(BL_LU) ; LOAD BOOT LU @@ -887,6 +896,8 @@ BOOT: ; CONSOLE CHARACTER I/O HELPER ROUTINES (REGISTERS PRESERVED) ;================================================================================================== ; +#IF (PLATFORM != PLT_UNA) +; ; OUTPUT CHARACTER FROM A ; COUT: @@ -948,6 +959,71 @@ CST: POP BC RET ; +#ENDIF +; +#IF (PLATFORM == PLT_UNA) +; +; OUTPUT CHARACTER FROM A +; +COUT: + ; SAVE ALL INCOMING REGISTERS + PUSH AF + PUSH BC + PUSH DE + PUSH HL +; + ; OUTPUT CHARACTER TO CONSOLE VIA UBIOS + LD E,A + LD BC,$12 + RST 08 +; + ; RESTORE ALL REGISTERS + POP HL + POP DE + POP BC + POP AF + RET +; +; INPUT CHARACTER TO A +; +CIN: + ; SAVE INCOMING REGISTERS (AF IS OUTPUT) + PUSH BC + PUSH DE + PUSH HL +; + ; INPUT CHARACTER FROM CONSOLE VIA UBIOS + LD BC,$11 + RST 08 + LD A,E +; + ; RESTORE REGISTERS (AF IS OUTPUT) + POP HL + POP DE + POP BC + RET +; +; RETURN INPUT STATUS IN A (0 = NO CHAR, !=0 CHAR WAITING) +; +CST: + ; SAVE INCOMING REGISTERS (AF IS OUTPUT) + PUSH BC + PUSH DE + PUSH HL +; + ; GET CONSOLE INPUT STATUS VIA UBIOS + LD BC,$13 + RST 08 + LD A,E +; + ; RESTORE REGISTERS (AF IS OUTPUT) + POP HL + POP DE + POP BC + RET +; +#ENDIF +; ; READ A CONSOLE CHARACTER AND CONVERT TO UPPER CASE ; CINUC: diff --git a/Source/HBIOS/n8v.asm b/Source/HBIOS/scg.asm similarity index 59% rename from Source/HBIOS/n8v.asm rename to Source/HBIOS/scg.asm index d2f12cfa..d18957c4 100644 --- a/Source/HBIOS/n8v.asm +++ b/Source/HBIOS/scg.asm @@ -11,82 +11,82 @@ ; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA? ; ;====================================================================== -; N8V DRIVER - CONSTANTS +; SCG DRIVER - CONSTANTS ;====================================================================== ; -N8V_CMDREG .EQU N8_BASE + $19 ; READ STATUS / WRITE REG SEL -N8V_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA +SCG_CMDREG .EQU N8_BASE + $19 ; READ STATUS / WRITE REG SEL +SCG_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA ; -N8V_ROWS .EQU 24 -N8V_COLS .EQU 40 +SCG_ROWS .EQU 24 +SCG_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 N8V_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP +#DEFINE SCG_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; ;====================================================================== -; N8V DRIVER - INITIALIZATION +; SCG DRIVER - INITIALIZATION ;====================================================================== ; -N8V_INIT: - PRTS("N8V: IO=0x$") - LD A,N8V_DATREG +SCG_INIT: + PRTS("SCG: IO=0x$") + LD A,SCG_DATREG CALL PRTHEXBYTE ; - CALL N8V_CRTINIT ; SETUP THE N8V CHIP REGISTERS - CALL N8V_LOADFONT ; LOAD FONT DATA FROM ROM TO N8V STRORAGE + CALL SCG_CRTINIT ; SETUP THE SCG CHIP REGISTERS + CALL SCG_LOADFONT ; LOAD FONT DATA FROM ROM TO SCG STRORAGE ; ; ADD OURSELVES TO CIO DISPATCH TABLE LD B,0 ; PHYSICAL UNIT IS ZERO - LD C,CIODEV_N8V ; DEVICE TYPE + LD C,CIODEV_SCG ; DEVICE TYPE LD DE,0 ; UNIT DATA BLOB ADDRESS CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED + LD (SCG_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE - CALL TSTPT ; *DEBUG* LD D,VDAEMU ; DEFAULT EMULATION LD E,0 ; VIDEO MODE = 0 - JP N8V_VDAINI + JP SCG_VDAINI ; ;====================================================================== -; N8V DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS +; SCG DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS ;====================================================================== ; -N8V_DISPCIO: +SCG_DISPCIO: JP PANIC -N8V_CIODISPADR .EQU $ - 2 +SCG_CIODISPADR .EQU $ - 2 ; ;====================================================================== -; N8V DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS +; SCG DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS ;====================================================================== ; -N8V_DISPATCH: +SCG_DISPATCH: LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION - JP Z,N8V_VDAINI ; $40 + JP Z,SCG_VDAINI ; $40 DEC A - JP Z,N8V_VDAQRY ; $41 + JP Z,SCG_VDAQRY ; $41 DEC A - JP Z,N8V_VDARES ; $42 + JP Z,SCG_VDARES ; $42 DEC A - JP Z,N8V_VDASCS ; $43 + JP Z,SCG_VDASCS ; $43 DEC A - JP Z,N8V_VDASCP ; $44 + JP Z,SCG_VDASCP ; $44 DEC A - JP Z,N8V_VDASAT ; $45 + JP Z,SCG_VDASAT ; $45 DEC A - JP Z,N8V_VDASCO ; $46 + JP Z,SCG_VDASCO ; $46 DEC A - JP Z,N8V_VDAWRC ; $47 + JP Z,SCG_VDAWRC ; $47 DEC A - JP Z,N8V_VDAFIL ; $48 + JP Z,SCG_VDAFIL ; $48 DEC A - JP Z,N8V_VDACPY ; $49 + JP Z,SCG_VDACPY ; $49 DEC A - JP Z,N8V_VDASCR ; $4A + JP Z,SCG_VDASCR ; $4A DEC A JP Z,PPK_STAT ; $4B DEC A @@ -95,302 +95,302 @@ N8V_DISPATCH: JP Z,PPK_READ ; $4D CALL PANIC -N8V_VDAINI: +SCG_VDAINI: ; RESET VDA PUSH DE ; SAVE EMULATION TYPE (IN D) - CALL N8V_VDARES ; RESET VDA + CALL SCG_VDARES ; RESET VDA POP DE ; RECOVER EMULATION TYPE ; INITIALIZE EMULATION - LD C,D ; EMULATION MODE TO C - LD DE,N8V_DISPATCH ; DISPATCH ADDRESS TO DE - CALL TSTPT ; *DEBUG* + LD B,D ; EMULATION TYPE TO B + LD A,(SCG_CIOUNIT) ; CIO UNIT NUMBER + LD C,A ; ... IS PASSED IN C + LD DE,SCG_DISPATCH ; DISPATCH ADDRESS TO DE CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER - LD (N8V_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS - CALL TSTPT ; *DEBUG* + LD (SCG_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS XOR A ; SIGNAL SUCCESS RET -N8V_VDAQRY: +SCG_VDAQRY: LD C,$00 ; MODE ZERO IS ALL WE KNOW - LD D,N8V_ROWS ; ROWS - LD E,N8V_COLS ; COLS + LD D,SCG_ROWS ; ROWS + LD E,SCG_COLS ; COLS LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET XOR A ; SIGNAL SUCCESS RET -N8V_VDARES: +SCG_VDARES: LD DE,0 ; ROW = 0, COL = 0 - CALL N8V_XY ; SEND CURSOR TO TOP LEFT + CALL SCG_XY ; SEND CURSOR TO TOP LEFT LD A,' ' ; BLANK THE SCREEN - LD DE,N8V_ROWS * N8V_COLS ; FILL ENTIRE BUFFER - CALL N8V_FILL ; DO IT + LD DE,SCG_ROWS * SCG_COLS ; FILL ENTIRE BUFFER + CALL SCG_FILL ; DO IT LD DE,0 ; ROW = 0, COL = 0 - CALL N8V_XY ; SEND CURSOR TO TOP LEFT + CALL SCG_XY ; SEND CURSOR TO TOP LEFT XOR A DEC A - LD (N8V_CURSAV),A - CALL N8V_SETCUR ; SET CURSOR + LD (SCG_CURSAV),A + CALL SCG_SETCUR ; SET CURSOR XOR A ; SIGNAL SUCCESS RET -N8V_VDASCS: +SCG_VDASCS: CALL PANIC ; NOT IMPLEMENTED (YET) -N8V_VDASCP: - CALL N8V_CLRCUR - CALL N8V_XY ; SET CURSOR POSITION - CALL N8V_SETCUR +SCG_VDASCP: + CALL SCG_CLRCUR + CALL SCG_XY ; SET CURSOR POSITION + CALL SCG_SETCUR XOR A ; SIGNAL SUCCESS RET -N8V_VDASAT: +SCG_VDASAT: XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS RET -N8V_VDASCO: +SCG_VDASCO: XOR A ; NOT POSSIBLE, JUST SIGNAL SUCCESS RET -N8V_VDAWRC: - CALL N8V_CLRCUR ; CURSOR OFF +SCG_VDAWRC: + CALL SCG_CLRCUR ; CURSOR OFF LD A,E ; CHARACTER TO WRITE GOES IN A - CALL N8V_PUTCHAR ; PUT IT ON THE SCREEN - CALL N8V_SETCUR + CALL SCG_PUTCHAR ; PUT IT ON THE SCREEN + CALL SCG_SETCUR XOR A ; SIGNAL SUCCESS RET -N8V_VDAFIL: - CALL N8V_CLRCUR +SCG_VDAFIL: + CALL SCG_CLRCUR LD A,E ; FILL CHARACTER GOES IN A EX DE,HL ; FILL LENGTH GOES IN DE - CALL N8V_FILL ; DO THE FILL - CALL N8V_SETCUR + CALL SCG_FILL ; DO THE FILL + CALL SCG_SETCUR XOR A ; SIGNAL SUCCESS RET -N8V_VDACPY: - CALL N8V_CLRCUR - ; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS N8V_POS +SCG_VDACPY: + CALL SCG_CLRCUR + ; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS SCG_POS ; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT PUSH HL ; SAVE LENGTH - CALL N8V_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL + CALL SCG_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL POP BC ; RECOVER LENGTH IN BC - LD DE,(N8V_POS) ; PUT DEST IN DE - CALL N8V_BLKCPY ; DO A BLOCK COPY - CALL N8V_SETCUR + LD DE,(SCG_POS) ; PUT DEST IN DE + CALL SCG_BLKCPY ; DO A BLOCK COPY + CALL SCG_SETCUR XOR A RET -N8V_VDASCR: - CALL N8V_CLRCUR -N8V_VDASCR0: +SCG_VDASCR: + CALL SCG_CLRCUR +SCG_VDASCR0: LD A,E ; LOAD E INTO A OR A ; SET FLAGS - JR Z,N8V_VDASCR2 ; IF ZERO, WE ARE DONE + JR Z,SCG_VDASCR2 ; IF ZERO, WE ARE DONE PUSH DE ; SAVE E - JP M,N8V_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL - CALL N8V_SCROLL ; SCROLL FORWARD ONE LINE + JP M,SCG_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL + CALL SCG_SCROLL ; SCROLL FORWARD ONE LINE POP DE ; RECOVER E DEC E ; DECREMENT IT - JR N8V_VDASCR0 ; LOOP -N8V_VDASCR1: - CALL N8V_RSCROLL ; SCROLL REVERSE ONE LINE + JR SCG_VDASCR0 ; LOOP +SCG_VDASCR1: + CALL SCG_RSCROLL ; SCROLL REVERSE ONE LINE POP DE ; RECOVER E INC E ; INCREMENT IT - JR N8V_VDASCR0 ; LOOP -N8V_VDASCR2: - CALL N8V_SETCUR + JR SCG_VDASCR0 ; LOOP +SCG_VDASCR2: + CALL SCG_SETCUR XOR A RET ; ;====================================================================== -; N8V DRIVER - PRIVATE DRIVER FUNCTIONS +; SCG DRIVER - PRIVATE DRIVER FUNCTIONS ;====================================================================== ; ;---------------------------------------------------------------------- ; SET TMS9918 REGISTER VALUE -; N8V_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C +; SCG_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C ;---------------------------------------------------------------------- ; -N8V_SET: - OUT (N8V_CMDREG),A ; WRITE IT - N8V_IODELAY +SCG_SET: + OUT (SCG_CMDREG),A ; WRITE IT + SCG_IODELAY LD A,C ; GET THE DESIRED REGISTER OR $80 ; SET BIT 7 - OUT (N8V_CMDREG),A ; SELECT THE DESIRED REGISTER - N8V_IODELAY + OUT (SCG_CMDREG),A ; SELECT THE DESIRED REGISTER + SCG_IODELAY RET ; ;---------------------------------------------------------------------- ; SET TMS9918 READ/WRITE ADDRESS -; N8V_WR SETS TMS9918 TO BEGIN WRITING TO ADDRESS SPECIFIED IN HL -; N8V_RD SETS TMS9918 TO BEGIN READING TO ADDRESS SPECIFIED IN HL +; SCG_WR SETS TMS9918 TO BEGIN WRITING TO ADDRESS SPECIFIED IN HL +; SCG_RD SETS TMS9918 TO BEGIN READING TO ADDRESS SPECIFIED IN HL ;---------------------------------------------------------------------- ; -N8V_WR: +SCG_WR: PUSH HL SET 6,H ; SET WRITE BIT - CALL N8V_RD + CALL SCG_RD POP HL RET ; -N8V_RD: +SCG_RD: LD A,L - OUT (N8V_CMDREG),A - N8V_IODELAY + OUT (SCG_CMDREG),A + SCG_IODELAY LD A,H - OUT (N8V_CMDREG),A - N8V_IODELAY + OUT (SCG_CMDREG),A + SCG_IODELAY RET ; ;---------------------------------------------------------------------- ; MOS 8563 DISPLAY CONTROLLER CHIP INITIALIZATION ;---------------------------------------------------------------------- ; -N8V_CRTINIT: +SCG_CRTINIT: ; SET WRITE ADDRESS TO $0 LD HL,0 - CALL N8V_WR + CALL SCG_WR ; ; FILL ENTIRE RAM CONTENTS LD DE,$4000 -N8V_CRTINIT1: +SCG_CRTINIT1: XOR A - OUT (N8V_DATREG),A + OUT (SCG_DATREG),A DEC DE LD A,D OR E - JR NZ,N8V_CRTINIT1 + JR NZ,SCG_CRTINIT1 ; ; INITIALIZE VDU REGISTERS LD C,0 ; START WITH REGISTER 0 - LD B,N8V_INIT9918LEN ; NUMBER OF REGISTERS TO INIT - LD HL,N8V_INIT9918 ; HL = POINTER TO THE DEFAULT VALUES -N8V_CRTINIT2: + LD B,SCG_INIT9918LEN ; NUMBER OF REGISTERS TO INIT + LD HL,SCG_INIT9918 ; HL = POINTER TO THE DEFAULT VALUES +SCG_CRTINIT2: LD A,(HL) ; GET VALUE - CALL N8V_SET ; WRITE IT + CALL SCG_SET ; WRITE IT INC HL ; POINT TO NEXT VALUE INC C ; POINT TO NEXT REGISTER - DJNZ N8V_CRTINIT2 ; LOOP + DJNZ SCG_CRTINIT2 ; LOOP RET ; ;---------------------------------------------------------------------- ; LOAD FONT DATA ;---------------------------------------------------------------------- ; -N8V_LOADFONT: +SCG_LOADFONT: ; SET WRITE ADDRESS TO $800 LD HL,$800 - CALL N8V_WR + CALL SCG_WR ; ; FILL $800 BYTES FROM FONTDATA - LD HL,N8V_FONTDATA + LD HL,SCG_FONTDATA LD DE,$100 * 8 -N8V_LOADFONT1: +SCG_LOADFONT1: LD B,8 -N8V_LOADFONT2: +SCG_LOADFONT2: LD A,(HL) PUSH AF INC HL - DJNZ N8V_LOADFONT2 + DJNZ SCG_LOADFONT2 ; LD B,8 -N8V_LOADFONT3: +SCG_LOADFONT3: POP AF - OUT (N8V_DATREG),A + OUT (SCG_DATREG),A DEC DE - DJNZ N8V_LOADFONT3 + DJNZ SCG_LOADFONT3 ; LD A,D OR E - JR NZ,N8V_LOADFONT1 + JR NZ,SCG_LOADFONT1 ; RET ; ;---------------------------------------------------------------------- ; VIRTUAL CURSOR MANAGEMENT -; N8V_SETCUR CONFIGURES AND DISPLAYS CURSOR AT CURRENT CURSOR LOCATION -; N8V_CLRCUR REMOVES THE CURSOR +; SCG_SETCUR CONFIGURES AND DISPLAYS CURSOR AT CURRENT CURSOR LOCATION +; SCG_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 N8V_CLRCUR PRIOR TO -; CHANGES AND N8V_SETCUR AFTER CHANGES. +; ALL DISPLAY CHANGES BE BRACKETED WITH CALLS TO SCG_CLRCUR PRIOR TO +; CHANGES AND SCG_SETCUR AFTER CHANGES. ;---------------------------------------------------------------------- ; -N8V_SETCUR: +SCG_SETCUR: PUSH HL ; PRESERVE HL PUSH DE ; PRESERVE DE - LD HL,(N8V_POS) ; GET CURSOR POSITION - CALL N8V_RD ; SETUP TO READ VDU BUF - IN A,(N8V_DATREG) ; GET REAL CHAR UNDER CURSOR - N8V_IODELAY ; DELAY + 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 PUSH AF ; SAVE THE CHARACTER - CALL N8V_WR ; SETUP TO WRITE TO THE SAME PLACE + CALL SCG_WR ; SETUP TO WRITE TO THE SAME PLACE LD A,$FF ; REPLACE REAL CHAR WITH 255 - OUT (N8V_DATREG),A ; DO IT - N8V_IODELAY ; DELAY + OUT (SCG_DATREG),A ; DO IT + SCG_IODELAY ; DELAY POP AF ; RECOVER THE REAL CHARACTER LD B,A ; PUT IT IN B - LD A,(N8V_CURSAV) ; GET THE CURRENTLY SAVED CHAR + LD A,(SCG_CURSAV) ; GET THE CURRENTLY SAVED CHAR CP B ; COMPARE TO CURRENT - JR Z,N8V_SETCUR3 ; IF EQUAL, BYPASS EXTRA WORK + JR Z,SCG_SETCUR3 ; IF EQUAL, BYPASS EXTRA WORK LD A,B ; GET REAL CHAR BACK TO A - LD (N8V_CURSAV),A ; SAVE IT + LD (SCG_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 -N8V_SETCUR0: ; MULT BY 8 FOR FONT INDEX +SCG_SETCUR0: ; MULT BY 8 FOR FONT INDEX SLA L ; SHIFT LSB INTO CARRY RL H ; SHFT MSB FROM CARRY - DJNZ N8V_SETCUR0 ; LOOP 3 TIMES + DJNZ SCG_SETCUR0 ; LOOP 3 TIMES LD DE,$800 ; OFFSET TO START OF FONT TABLE ADD HL,DE ; ADD TO FONT INDEX - CALL N8V_RD ; SETUP TO READ GLYPH + CALL SCG_RD ; SETUP TO READ GLYPH LD B,8 ; 8 BYTES - LD HL,N8V_BUF ; INTO BUFFER -N8V_SETCUR1: ; READ GLYPH LOOP - IN A,(N8V_DATREG) ; GET NEXT BYTE - N8V_IODELAY ; IO DELAY + LD HL,SCG_BUF ; INTO BUFFER +SCG_SETCUR1: ; READ GLYPH LOOP + IN A,(SCG_DATREG) ; GET NEXT BYTE + SCG_IODELAY ; IO DELAY LD (HL),A ; SAVE VALUE IN BUF INC HL ; BUMP BUF POINTER - DJNZ N8V_SETCUR1 ; LOOP FOR 8 BYTES + DJNZ SCG_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 N8V_WR ; SETUP TO WRITE THE INVERTED GLYPH + CALL SCG_WR ; SETUP TO WRITE THE INVERTED GLYPH LD B,8 ; 8 BYTES PER GLYPH - LD HL,N8V_BUF ; POINT TO BUFFER -N8V_SETCUR2: ; WRITE INVERTED GLYPH LOOP + LD HL,SCG_BUF ; POINT TO BUFFER +SCG_SETCUR2: ; WRITE INVERTED GLYPH LOOP LD A,(HL) ; GET THE BYTE INC HL ; BUMP THE BUF POINTER XOR $FF ; INVERT THE VALUE - OUT (N8V_DATREG),A ; WRITE IT TO VDU - N8V_IODELAY ; IO DELAY - DJNZ N8V_SETCUR2 ; LOOP FOR ALL 8 BYTES OF GLYPH + OUT (SCG_DATREG),A ; WRITE IT TO VDU + SCG_IODELAY ; IO DELAY + DJNZ SCG_SETCUR2 ; LOOP FOR ALL 8 BYTES OF GLYPH ; -N8V_SETCUR3: ; RESTORE REGISTERS AND RETURN +SCG_SETCUR3: ; RESTORE REGISTERS AND RETURN POP DE ; RECOVER DE POP HL ; RECOVER HL RET ; RETURN ; ; ; -N8V_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN +SCG_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN PUSH HL ; SAVE HL - LD HL,(N8V_POS) ; POINT TO CURRENT CURSOR POS - CALL N8V_WR ; SET UP TO WRITE TO VDU - LD A,(N8V_CURSAV) ; GET THE REAL CHARACTER - OUT (N8V_DATREG),A ; WRITE IT - N8V_IODELAY ; IO DELAY + 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 POP HL ; RECOVER HL RET ; RETURN ; @@ -398,9 +398,9 @@ N8V_CLRCUR: ; REMOVE VIRTUAL CURSOR FROM SCREEN ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E ;---------------------------------------------------------------------- ; -N8V_XY: - CALL N8V_XY2IDX ; CONVERT ROW/COL TO BUF IDX - LD (N8V_POS),HL ; SAVE THE RESULT (DISPLAY POSITION) +SCG_XY: + CALL SCG_XY2IDX ; CONVERT ROW/COL TO BUF IDX + LD (SCG_POS),HL ; SAVE THE RESULT (DISPLAY POSITION) RET ; ;---------------------------------------------------------------------- @@ -408,10 +408,10 @@ N8V_XY: ; D=ROW, E=COL ;---------------------------------------------------------------------- ; -N8V_XY2IDX: +SCG_XY2IDX: LD A,E ; SAVE COLUMN NUMBER IN A LD H,D ; SET H TO ROW NUMBER - LD E,N8V_COLS ; SET E TO ROW LENGTH + LD E,SCG_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 @@ -421,15 +421,15 @@ N8V_XY2IDX: ; WRITE VALUE IN A TO CURRENT VDU BUFFER POSTION, ADVANCE CURSOR ;---------------------------------------------------------------------- ; -N8V_PUTCHAR: +SCG_PUTCHAR: PUSH AF ; SAVE CHARACTER - LD HL,(N8V_POS) ; LOAD CURRENT POSITION INTO HL - CALL N8V_WR ; SET THE WRITE ADDRESS + LD HL,(SCG_POS) ; LOAD CURRENT POSITION INTO HL + CALL SCG_WR ; SET THE WRITE ADDRESS POP AF ; RECOVER CHARACTER TO WRITE - OUT (N8V_DATREG),A ; WRITE THE CHARACTER - LD HL,(N8V_POS) ; LOAD CURRENT POSITION INTO HL + OUT (SCG_DATREG),A ; WRITE THE CHARACTER + LD HL,(SCG_POS) ; LOAD CURRENT POSITION INTO HL INC HL - LD (N8V_POS),HL + LD (SCG_POS),HL RET ; ;---------------------------------------------------------------------- @@ -439,19 +439,19 @@ N8V_PUTCHAR: ; DE: NUMBER OF CHARACTERS TO FILL ;---------------------------------------------------------------------- ; -N8V_FILL: +SCG_FILL: LD C,A ; SAVE THE CHARACTER TO WRITE - LD HL,(N8V_POS) ; SET STARTING POSITION - CALL N8V_WR ; SET UP FOR WRITE + LD HL,(SCG_POS) ; SET STARTING POSITION + CALL SCG_WR ; SET UP FOR WRITE ; -N8V_FILL1: +SCG_FILL1: LD A,C ; RECOVER CHARACTER TO WRITE - OUT (N8V_DATREG),A - N8V_IODELAY + OUT (SCG_DATREG),A + SCG_IODELAY DEC DE LD A,D OR E - JR NZ,N8V_FILL1 + JR NZ,SCG_FILL1 ; RET ; @@ -459,50 +459,50 @@ N8V_FILL1: ; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED) ;---------------------------------------------------------------------- ; -N8V_SCROLL: +SCG_SCROLL: LD HL,0 ; SOURCE ADDRESS OF CHARACER BUFFER - LD C,N8V_ROWS - 1 ; SET UP LOOP COUNTER FOR ROWS - 1 + LD C,SCG_ROWS - 1 ; SET UP LOOP COUNTER FOR ROWS - 1 ; -N8V_SCROLL0: ; READ LINE THAT IS ONE PAST CURRENT DESTINATION +SCG_SCROLL0: ; READ LINE THAT IS ONE PAST CURRENT DESTINATION PUSH HL ; SAVE CURRENT DESTINATION - LD DE,N8V_COLS + LD DE,SCG_COLS ADD HL,DE ; POINT TO NEXT ROW SOURCE - CALL N8V_RD ; SET UP TO READ - LD DE,N8V_BUF - LD B,N8V_COLS -N8V_SCROLL1: - IN A,(N8V_DATREG) - N8V_IODELAY + CALL SCG_RD ; SET UP TO READ + LD DE,SCG_BUF + LD B,SCG_COLS +SCG_SCROLL1: + IN A,(SCG_DATREG) + SCG_IODELAY LD (DE),A INC DE - DJNZ N8V_SCROLL1 + DJNZ SCG_SCROLL1 POP HL ; RECOVER THE DESTINATION ; ; WRITE THE BUFFERED LINE TO CURRENT DESTINATION - CALL N8V_WR ; SET UP TO WRITE - LD DE,N8V_BUF - LD B,N8V_COLS -N8V_SCROLL2: + CALL SCG_WR ; SET UP TO WRITE + LD DE,SCG_BUF + LD B,SCG_COLS +SCG_SCROLL2: LD A,(DE) - OUT (N8V_DATREG),A - N8V_IODELAY + OUT (SCG_DATREG),A + SCG_IODELAY INC DE - DJNZ N8V_SCROLL2 + DJNZ SCG_SCROLL2 ; ; BUMP TO NEXT LINE - LD DE,N8V_COLS + LD DE,SCG_COLS ADD HL,DE DEC C ; DECREMENT ROW COUNTER - JR NZ,N8V_SCROLL0 ; LOOP THRU ALL ROWS + JR NZ,SCG_SCROLL0 ; LOOP THRU ALL ROWS ; ; FILL THE NEWLY EXPOSED BOTTOM LINE - CALL N8V_WR + CALL SCG_WR LD A,' ' - LD B,N8V_COLS -N8V_SCROLL3: - OUT (N8V_DATREG),A - N8V_IODELAY - DJNZ N8V_SCROLL3 + LD B,SCG_COLS +SCG_SCROLL3: + OUT (SCG_DATREG),A + SCG_IODELAY + DJNZ SCG_SCROLL3 ; RET ; @@ -510,50 +510,50 @@ N8V_SCROLL3: ; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED) ;---------------------------------------------------------------------- ; -N8V_RSCROLL: - LD HL,N8V_COLS * (N8V_ROWS - 1) - LD C,N8V_ROWS - 1 +SCG_RSCROLL: + LD HL,SCG_COLS * (SCG_ROWS - 1) + LD C,SCG_ROWS - 1 ; -N8V_RSCROLL0: ; READ THE LINE THAT IS ONE PRIOR TO CURRENT DESTINATION +SCG_RSCROLL0: ; READ THE LINE THAT IS ONE PRIOR TO CURRENT DESTINATION PUSH HL ; SAVE THE DESTINATION ADDRESS - LD DE,-N8V_COLS + LD DE,-SCG_COLS ADD HL,DE ; SET SOURCE ADDRESS - CALL N8V_RD ; SET UP TO READ - LD DE,N8V_BUF ; POINT TO BUFFER - LD B,N8V_COLS ; LOOP FOR EACH COLUMN -N8V_RSCROLL1: - IN A,(N8V_DATREG) ; GET THE CHAR - N8V_IODELAY ; RECOVER + 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 LD (DE),A ; SAVE IN BUFFER INC DE ; BUMP BUFFER POINTER - DJNZ N8V_RSCROLL1 ; LOOP THRU ALL COLS + DJNZ SCG_RSCROLL1 ; LOOP THRU ALL COLS POP HL ; RECOVER THE DESTINATION ADDRESS ; ; WRITE THE BUFFERED LINE TO CURRENT DESTINATION - CALL N8V_WR ; SET THE WRITE ADDRESS - LD DE,N8V_BUF ; POINT TO BUFFER - LD B,N8V_COLS ; INIT LOOP COUNTER -N8V_RSCROLL2: + CALL SCG_WR ; SET THE WRITE ADDRESS + LD DE,SCG_BUF ; POINT TO BUFFER + LD B,SCG_COLS ; INIT LOOP COUNTER +SCG_RSCROLL2: LD A,(DE) ; LOAD THE CHAR - OUT (N8V_DATREG),A ; WRITE TO SCREEN - N8V_IODELAY ; DELAY + OUT (SCG_DATREG),A ; WRITE TO SCREEN + SCG_IODELAY ; DELAY INC DE ; BUMP BUF POINTER - DJNZ N8V_RSCROLL2 ; LOOP THRU ALL COLS + DJNZ SCG_RSCROLL2 ; LOOP THRU ALL COLS ; ; BUMP TO THE PRIOR LINE - LD DE,-N8V_COLS ; LOAD COLS (NEGATIVE) + LD DE,-SCG_COLS ; LOAD COLS (NEGATIVE) ADD HL,DE ; BACK UP THE ADDRESS DEC C ; DECREMENT ROW COUNTER - JR NZ,N8V_RSCROLL0 ; LOOP THRU ALL ROWS + JR NZ,SCG_RSCROLL0 ; LOOP THRU ALL ROWS ; ; FILL THE NEWLY EXPOSED BOTTOM LINE - CALL N8V_WR + CALL SCG_WR LD A,' ' - LD B,N8V_COLS -N8V_RSCROLL3: - OUT (N8V_DATREG),A - N8V_IODELAY - DJNZ N8V_RSCROLL3 + LD B,SCG_COLS +SCG_RSCROLL3: + OUT (SCG_DATREG),A + SCG_IODELAY + DJNZ SCG_RSCROLL3 ; RET ; @@ -561,48 +561,50 @@ N8V_RSCROLL3: ; BLOCK COPY BC BYTES FROM HL TO DE ;---------------------------------------------------------------------- ; -N8V_BLKCPY: +SCG_BLKCPY: ; SAVE DESTINATION AND LENGTH PUSH BC ; LENGTH PUSH DE ; DEST ; ; READ FROM THE SOURCE LOCATION -N8V_BLKCPY1: - CALL N8V_RD ; SET UP TO READ FROM ADDRESS IN HL - LD DE,N8V_BUF ; POINT TO BUFFER +SCG_BLKCPY1: + CALL SCG_RD ; SET UP TO READ FROM ADDRESS IN HL + LD DE,SCG_BUF ; POINT TO BUFFER LD B,C -N8V_BLKCPY2: - IN A,(N8V_DATREG) ; GET THE NEXT BYTE - N8V_IODELAY ; DELAY +SCG_BLKCPY2: + IN A,(SCG_DATREG) ; GET THE NEXT BYTE + SCG_IODELAY ; DELAY LD (DE),A ; SAVE IN BUFFER INC DE ; BUMP BUF PTR - DJNZ N8V_BLKCPY2 ; LOOP AS NEEDED + DJNZ SCG_BLKCPY2 ; LOOP AS NEEDED ; ; WRITE TO THE DESTINATION LOCATION POP HL ; RECOVER DESTINATION INTO HL - CALL N8V_WR ; SET UP TO WRITE - LD DE,N8V_BUF ; POINT TO BUFFER + CALL SCG_WR ; SET UP TO WRITE + LD DE,SCG_BUF ; POINT TO BUFFER POP BC ; GET LOOP COUNTER BACK LD B,C -N8V_BLKCPY3: +SCG_BLKCPY3: LD A,(DE) ; GET THE CHAR FROM BUFFER - OUT (N8V_DATREG),A ; WRITE TO VDU - N8V_IODELAY ; DELAY + OUT (SCG_DATREG),A ; WRITE TO VDU + SCG_IODELAY ; DELAY INC DE ; BUMP BUF PTR - DJNZ N8V_BLKCPY3 ; LOOP AS NEEDED + DJNZ SCG_BLKCPY3 ; LOOP AS NEEDED ; RET ; ;================================================================================================== -; N8V DRIVER - DATA +; SCG DRIVER - DATA ;================================================================================================== ; -N8V_POS .DW 0 ; CURRENT DISPLAY POSITION -N8V_CURSAV .DB 0 ; SAVES ORIGINAL CHARACTER UNDER CURSOR -N8V_BUF .FILL 256,0 ; COPY BUFFER +SCG_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +; +SCG_POS .DW 0 ; CURRENT DISPLAY POSITION +SCG_CURSAV .DB 0 ; SAVES ORIGINAL CHARACTER UNDER CURSOR +SCG_BUF .FILL 256,0 ; COPY BUFFER ; ;================================================================================================== -; N8V DRIVER - TMS9918 REGISTER INITIALIZATION +; SCG DRIVER - TMS9918 REGISTER INITIALIZATION ;================================================================================================== ; ; Control Registers (write CMDREG): @@ -643,7 +645,7 @@ N8V_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. ; -N8V_INIT9918: +SCG_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 @@ -653,11 +655,11 @@ N8V_INIT9918: .DB $00 ; REG 6 - NO SPRITE GENERATOR TABLE .DB $F0 ; REG 7 - WHITE ON BLACK ; -N8V_INIT9918LEN .EQU $ - N8V_INIT9918 +SCG_INIT9918LEN .EQU $ - SCG_INIT9918 ; ;================================================================================================== -; N8V DRIVER - FONT DATA +; SCG DRIVER - FONT DATA ;================================================================================================== ; -N8V_FONTDATA: -#INCLUDE "n8v_font.inc" \ No newline at end of file +SCG_FONTDATA: +#INCLUDE "scg_font.inc" \ No newline at end of file diff --git a/Source/HBIOS/n8v_font.inc b/Source/HBIOS/scg_font.inc similarity index 100% rename from Source/HBIOS/n8v_font.inc rename to Source/HBIOS/scg_font.inc diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 3bc4f887..c10d7f3c 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -33,9 +33,9 @@ PLT_N8 .EQU 4 ; N8 (HOME COMPUTER) Z180 SBC PLT_MK4 .EQU 5 ; MARK IV PLT_UNA .EQU 6 ; UNA BIOS ; -;#IFDEF PLTWBW +#IF (PLATFORM != PLT_UNA) #INCLUDE "hbios.inc" -;#ENDIF +#ENDIF ; ; BOOT STYLE ; diff --git a/Source/HBIOS/tty.asm b/Source/HBIOS/tty.asm index 21ccd28a..b947b6f8 100644 --- a/Source/HBIOS/tty.asm +++ b/Source/HBIOS/tty.asm @@ -6,14 +6,23 @@ ; TODO: ; - SOME FUNCTIONS ARE NOT IMPLEMENTED!!! ; +; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER +; ON ENTRY: +; C: CIO UNIT NUMBER OF CALLING VDA DRIVER +; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER +; RETURNS: +; DE: OUR CIO DISPATCH ADDRESS +; TTY_INIT: - ; SAVE INCOMING VDA DISPATCH ADDRESS - LD (EMU_VDADISPADR),DE ; RECORD NEW VDA DISPATCH ADDRESS + ; SAVE CALLING VDA DRIVER'S CIO UNIT NUMBER AND VDA DISPATCH ADDRESS + LD C,A ; VDA DRIVER'S CIO UNIT NUMBER + LD (TTY_CIOUNIT),A ; ... SAVED LOCALLY + LD (TTY_VDADISPADR),DE ; ALSO SAVE VDA DRIVER'S DISPATCH ADDRESS ; ; QUERY THE VIDEO DRIVER FOR SCREEN DIMENSIONS LD B,BF_VDAQRY ; FUNCTION IS QUERY LD HL,0 ; WE DO NOT WANT A COPY OF THE CHARACTER BITMAP DATA - CALL EMU_VDADISP ; PERFORM THE QUERY FUNCTION + CALL TTY_VDADISP ; PERFORM THE QUERY FUNCTION LD (TTY_DIM),DE ; SAVE THE SCREEN DIMENSIONS RETURNED ; LD DE,0 ; DE := 0, CURSOR TO HOME POSITION 0,0 @@ -25,8 +34,13 @@ TTY_INIT: ; ; ; +TTY_VDADISP: + JP PANIC +TTY_VDADISPADR .EQU $ - 2 +; +; +; TTY_DISPATCH: - LD (TTY_CIODEV),A ; *DEBUG* LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION JR Z,TTY_IN ; $30 @@ -48,7 +62,7 @@ TTY_DISPATCH: ; TTY_IN: LD B,BF_VDAKRD ; SET FUNCTION TO KEYBOARD READ - JP EMU_VDADISP ; CHAIN TO VDA DISPATCHER + JP TTY_VDADISP ; CHAIN TO VDA DISPATCHER ; ; ; @@ -61,7 +75,7 @@ TTY_OUT: ; TTY_IST: LD B,BF_VDAKST ; SET FUNCTION TO KEYBOARD STATUS - JP EMU_VDADISP ; CHAIN TO VDA DISPATCHER + JP TTY_VDADISP ; CHAIN TO VDA DISPATCHER ; ; ; @@ -85,9 +99,8 @@ TTY_QUERY: ; ; TTY_DEVICE: - ;LD D,CIODEV_VDA ; D := DEVICE TYPE - LD A,(TTY_CIODEV) ; GET THE CURRENT CIO DEVICE *DEBUG* - LD D,A ; AND PASS BACK IN D *DEBUG* + LD A,(TTY_CIOUNIT) ; PARENT VDA CIO UNIT + LD D,A ; AND PASS BACK IN D LD E,C ; E := PHYSICAL UNIT XOR A ; SIGNAL SUCCESS RET @@ -107,7 +120,7 @@ TTY_DOCHAR: CP 32 ; COMPARE TO SPACE (FIRST PRINTABLE CHARACTER) RET C ; SWALLOW OTHER CONTROL CHARACTERS LD B,BF_VDAWRC - CALL EMU_VDADISP ; SPIT OUT THE RAW CHARACTER + CALL TTY_VDADISP ; SPIT OUT THE RAW CHARACTER LD A,(TTY_COL) ; GET CUR COL INC A ; INCREMENT LD (TTY_COL),A ; SAVE IT @@ -126,7 +139,7 @@ TTY_FF: CALL MULT8 ; HL := H * E TO GET TOTAL SCREEN POSITIONS LD E,' ' ; FILL SCREEN WITH BLANKS LD B,BF_VDAFIL ; SET FUNCTION TO FILL - CALL EMU_VDADISP ; PERFORM FILL + CALL TTY_VDADISP ; PERFORM FILL JR TTY_XY ; HOME CURSOR AND RETURN ; TTY_BS: @@ -154,12 +167,12 @@ TTY_LF: ; LINEFEED (FORWARD INDEX) TTY_LF1: ; SCROLL LD E,1 ; SCROLL FORWARD 1 LINE LD B,BF_VDASCR ; SET FUNCTION TO SCROLL - JP EMU_VDADISP ; DO THE SCROLLING AND RETURN + JP TTY_VDADISP ; DO THE SCROLLING AND RETURN ; TTY_XY: LD DE,(TTY_POS) ; GET THE DESIRED CURSOR POSITION LD B,BF_VDASCP ; SET FUNCTIONT TO SET CURSOR POSITION - JP EMU_VDADISP ; REPOSITION CURSOR + JP TTY_VDADISP ; REPOSITION CURSOR ; ; ; @@ -171,4 +184,4 @@ TTY_DIM: TTY_COLS .DB 80 ; NUMBER OF COLUMNS ON SCREEN TTY_ROWS .DB 24 ; NUMBER OF ROWS ON SCREEN ; -TTY_CIODEV .DB 0 ; *DEBUG* +TTY_CIOUNIT .DB $FF ; CIO UNIT NUMBER OF PARENT VDA diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index f084743d..83691705 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -501,7 +501,8 @@ BYTE2BCD1: POP BC RET -;#IFDEF PLTWBW +#IF (PLATFORM != PLT_UNA) + #IFDEF USEDELAY ; @@ -593,10 +594,14 @@ LDELAY: ; CPU SCALER := MAX(1, (PHIMHZ - 2)) ; DELAY_INIT: - LD B,BF_SYSHCBGETB ; HB FUNC: GET HCB BYTE - LD C,HCB_CPUMHZ ; CPU SPEED IN MHZ - RST 08 ; DO IT - LD A,E ; VALUE TO ACCUM + ;LD B,BF_SYSHCBGETB ; HB FUNC: GET HCB BYTE + ;LD C,HCB_CPUMHZ ; CPU SPEED IN MHZ + ;RST 08 ; DO IT + ;LD A,E ; VALUE TO ACCUM + LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO + LD C,BF_SYSGET_CPUINFO ; HBIOS SUBFUNC=GET CPU INFO + RST 08 ; CALL HBIOS, RST 08 NOT YET INSTALLED + LD A,L ; PUT SPEED IN MHZ IN ACCUM SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS LD (CPUSCL),A ; UPDATE CPU SCALER VALUE CP 1 ; CHECK FOR MINIMUM VALUE ALLOWED @@ -604,7 +609,7 @@ DELAY_INIT: LD A,1 ; OTHERWISE, SET MIN VALUE LD (CPUSCL),A ; AND SAVE IT RET -; + #IF (CPUMHZ < 3) CPUSCL .DB 1 ; CPU SCALER MUST BE > 0 #ELSE @@ -612,7 +617,8 @@ CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ #ENDIF ; #ENDIF -;#ENDIF +; +#ENDIF ; ; SHORT DELAY FUNCTIONS. NO CLOCK SPEED COMPENSATION, SO THEY ; WILL RUN LONGER ON SLOWER SYSTEMS. THE NUMBER INDICATES THE diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index ad41d8c5..fa9ad785 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -39,9 +39,9 @@ VDU_INIT: LD C,CIODEV_VDU ; DEVICE TYPE LD DE,0 ; UNIT DATA BLOB ADDRESS CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED + LD (VDU_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE - CALL TSTPT ; *DEBUG* LD D,VDAEMU ; DEFAULT EMULATION LD E,0 ; VIDEO MODE = 0 JP VDU_VDAINI @@ -98,12 +98,12 @@ VDU_VDAINI: POP DE ; RECOVER EMULATION TYPE ; INITIALIZE EMULATION - LD C,D ; EMULATION MODE TO C + LD B,D ; EMULATION TYPE TO B + LD A,(VDU_CIOUNIT) ; CIO UNIT NUMBER + LD C,A ; ... IS PASSED IN C LD DE,VDU_DISPATCH ; DISPATCH ADDRESS TO DE - CALL TSTPT ; *DEBUG* CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER LD (VDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS - CALL TSTPT ; *DEBUG* XOR A ; SIGNAL SUCCESS RET @@ -468,6 +468,8 @@ VDU_RSCROLL: ; VDU DRIVER - DATA ;================================================================================================== ; +VDU_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +; VDU_POS .DW 0 ; CURRENT DISPLAY POSITION VDU_OFFSET .DW 0 ; CURRENT DISPLAY POSITION VDU_BUF .FILL 256,0 ; COPY BUFFER diff --git a/Source/HBIOS/ver.inc b/Source/HBIOS/ver.inc index 912f5ba4..7ae71b71 100644 --- a/Source/HBIOS/ver.inc +++ b/Source/HBIOS/ver.inc @@ -1,5 +1,5 @@ #DEFINE RMJ 2 -#DEFINE RMN 7 -#DEFINE RUP 2 +#DEFINE RMN 8 +#DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "2.7.2-alpha.7" +#DEFINE BIOSVER "2.8.0-alpha.0" diff --git a/Source/RomDsk/ROM_1024KB/FDISK80.COM b/Source/RomDsk/ROM_1024KB/FDISK80.COM new file mode 100644 index 0000000000000000000000000000000000000000..dfe3f66846114e7734bcd77447edc69785a7c5c9 GIT binary patch literal 20480 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 diff --git a/Source/RomDsk/sbc_cvdu/T5.COM b/Source/RomDsk/sbc_cvdu/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_dide/T5.COM b/Source/RomDsk/sbc_dide/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_diskio/T5.COM b/Source/RomDsk/sbc_diskio/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_diskio3+cvdu/T5.COM b/Source/RomDsk/sbc_diskio3+cvdu/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_diskio3/T5.COM b/Source/RomDsk/sbc_diskio3/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_dsd/T5.COM b/Source/RomDsk/sbc_dsd/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_mfpic/T5.COM b/Source/RomDsk/sbc_mfpic/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_ppide/T5.COM b/Source/RomDsk/sbc_ppide/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_ppisd/T5.COM b/Source/RomDsk/sbc_ppisd/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_propio/T5.COM b/Source/RomDsk/sbc_propio/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_rf/T5.COM b/Source/RomDsk/sbc_rf/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_std/T5.COM b/Source/RomDsk/sbc_std/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/RomDsk/sbc_vdu/T5.COM b/Source/RomDsk/sbc_vdu/T5.COM deleted file mode 100644 index ab55d7594228814e098f59f869ebdc0853077c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmdO5WKdRC7L;aW0w2Eg0 mD$|N()UMg8@Y^Z@D9ddN6j5LWYqd&b{HLdI3aIypwFm$o4;Rw_ diff --git a/Source/HBIOS/ubios.inc b/Source/UBIOS/ubios.inc similarity index 100% rename from Source/HBIOS/ubios.inc rename to Source/UBIOS/ubios.inc