From 8aedfbb7f3272e92d2609e1a65ab841aa970c654 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 25 Mar 2016 21:20:05 -0700 Subject: [PATCH] Add Device Summary Display --- Source/HBIOS/API.txt | 282 +++++++++++++++++------------ Source/HBIOS/ansi.asm | 99 ++++++----- Source/HBIOS/asci.asm | 18 +- Source/HBIOS/cvdu.asm | 9 +- Source/HBIOS/fd.asm | 15 ++ Source/HBIOS/hbios.asm | 395 ++++++++++++++++++++++++++++++++++++++++- Source/HBIOS/hbios.inc | 5 +- Source/HBIOS/hdsk.asm | 1 + Source/HBIOS/ide.asm | 28 ++- Source/HBIOS/md.asm | 6 + Source/HBIOS/ppide.asm | 29 ++- Source/HBIOS/ppp.asm | 10 +- Source/HBIOS/prp.asm | 10 +- Source/HBIOS/rf.asm | 1 + Source/HBIOS/scg.asm | 9 +- Source/HBIOS/sd.asm | 1 + Source/HBIOS/tty.asm | 60 ++++--- Source/HBIOS/uart.asm | 18 +- Source/HBIOS/util.asm | 32 ++-- Source/HBIOS/vdu.asm | 9 +- Source/HBIOS/ver.inc | 2 +- 21 files changed, 809 insertions(+), 230 deletions(-) diff --git a/Source/HBIOS/API.txt b/Source/HBIOS/API.txt index d6a6c589..40881410 100644 --- a/Source/HBIOS/API.txt +++ b/Source/HBIOS/API.txt @@ -2,88 +2,114 @@ HBIOS Management Functions ========================== -GET ($05): - BC=Function/Subfunction A=Result +GET ($07): + BC=Function/Subfunction A=Result Subfunctions: CIOCNT ($00): - BC=Function/Subfunction A=Result - E=Serial Unit Count + BC=Function/Subfunction A=Result + E=Serial Unit Count DIOCNT ($10): - BC=Function/Subfunction A=Result - E=Disk Unit Count - - BIOSVER ($F0): - BC=Function/Subfunction A=Result - DE=BIOS Version - L=Platform - -SET ($06): - BC=Function/Subfunction A=Result - - - - + BC=Function/Subfunction A=Result + E=Disk Unit Count + + VDACNT ($40): + BC=Function/Subfunction A=Result + E=Video Unit Count + + BOOTINFO ($E0): + BC=Function/Subfunction A=Result + L=Boot Bank Id + DE=Boot Volume (Disk Unit/Slice) + + CPUINFO ($F0): + BC=Function/Subfunction A=Result + H=Z80 CPU Variant + L=CPU Speed in MHz + DE=CPU Speed in KHz + + MEMINFO ($F1): + BC=Function/Subfunction A=Result + D=# ROM Banks + E=# RAM Banks + + BNKINFO ($F2): + BC=Function/Subfunction A=Result + D=BIOS Bank Id + E=User Bank Id + +SET ($08): + BC=Function/Subfunction A=Result + + BOOTINFO ($E0): + BC=Function/Subfunction A=Result + L=Boot Bank Id + DE=Boot Volume (Disk Unit/Slice) ================ Serial Functions ================ IN ($00): - BC=Function/Unit A=Result - E=Byte Input + BC=Function/Unit A=Result + E=Byte Input Wait for a single character to be available at the specified device and return the character in E. Function will wait indefinitely for a character to be available. OUT ($01): - BC=Function/Unit A=Result + BC=Function/Unit A=Result E=Character to Output - Wait for device/unit to be ready to send a character, then send the character specified in E. + Wait for device to be ready to send a character, then send the character specified in E. IST ($02): - BC=Function/Unit A=Result - *E=# Bytes Pending + BC=Function/Unit A=Result + *E=# Bytes Pending OST ($03): - BC=Function/Unit A=Result - *E=# Buffer Bytes Available + BC=Function/Unit A=Result + *E=# Buffer Bytes Available INIT ($04): - BC=Function/Unit A=Result + BC=Function/Unit A=Result DE=Line Characteristics + L=Terminal Type QUERY ($05) - BC=Function/Unit A=Result - DE=Line Characteristics + BC=Function/Unit A=Result + DE=Line Characteristics (Baud, Flow Control, etc.) + H=Device Type (RS-232, Terminal, etc.) + L=Terminal Type (TTY, VT-102, etc.) DEVICE ($06): - BC=Function/Unit A=Result - D=Device Type - E=Physical Unit + BC=Function/Unit A=Result + D=Device Type + E=Device Number + H=Media Type (RS-232, Terminal, etc.) + L=Video Unit Id (if Media Type == VDA) ============== Disk Functions ============== STATUS ($10): - BC=Function/Unit A=Result + BC=Function/Unit A=Result Return current status result code of specified unit. Does not clear the status. RESET ($11): - BC=Function/Unit A=Result - + BC=Function/Unit A=Result + Reset the physical interface associated with the specified unit. Flag all units associated with the interface for unit initialization at next I/O call. Clear media identified unless locked. Reset result code of all associated units. SEEK ($12): - BC=Function/Unit A=Result + BC=Function/Unit A=Result D:7=Address Type (0=CHS, 1=LBA) CHS: D:0-6=Head,E=Sector,HL=Track LBA: DE:HL @@ -92,7 +118,7 @@ SEEK ($12): Physical seek is typically deferred until subsequent I/O operation. READ ($13) / WRITE ($14) / VERIFY ($15): - BC=Function/Unit A=Result + BC=Function/Unit A=Result HL=Buffer Address E=Block Count @@ -101,7 +127,7 @@ READ ($13) / WRITE ($14) / VERIFY ($15): target sector is sector where error occurred. FORMAT ($16): - BC=Function/Unit A=Result + BC=Function/Unit A=Result CHS: D=Head, HL=Cylinder E=Fill Byte @@ -112,87 +138,151 @@ FORMAT ($16): *** Need to specify interleave/sector id's somehow. DEVICE ($17) - BC=Function/Unit A=Result - D=Device Type - E=Physical Unit + BC=Function/Unit A=Result + D=Device Type (MD, FD, IDE, etc.) + E=Device Number (0..n) + C=Disk Attributes - Report the device type (Floppy, IDE, SD, etc.) and physical unit number. Call + Report the Device Type (Floppy, IDE, SD, etc.) and Device Number. Call does not perform any I/O and succeeds even if the device is in an error state. It does not reset the unit status. + Disk Device Attribute Byte: + 7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM) + + If Floppy: + 6-5: Form Factor (0=8", 1=5.25", 2=3.5", 3=Other) + 4: Sides (0=SS, 1=DS) + 3-2: Density (0=SD, 1=DD, 2=HD, 3=ED) + 1-0: Reserved + + If Hard Disk: + 6: Removable + 5-3: Type (0=Hard, 1=CF, 2=SD, 3=USB, 4=ROM, 5=RAM, 6=RAMF, 7=?) + 2-0: Reserved + + Note: IDE value 848Ah in IDENTIFY DEVICE data word 0 indicates CF Card + MEDIA ($18): - BC=Function/Unit A=Result - E0:=Enable Media Discovery E=Media ID (legacy) + BC=Function/Unit A=Result + E:0=Enable Media Discovery E=Media ID (legacy) Report the media definition for media in specified unit. If bit 0 of E is set, then perform media discovery or verification. If no media in device, return no media error. DEFMED ($19): - BC=Function/Unit A=Result - E=Media ID (legacy) + BC=Function/Unit A=Result + E=Media ID (legacy) Define media in unit. CAPACITY ($1A): - BC=Function/Unit DE:HL=Blocks on Device - BC=Block Size - A=Result + BC=Function/Unit DE:HL=Blocks on Device + BC=Block Size + A=Result Return device capacity information. If media is unknown, return error (no media) GEOMETRY ($1B): - BC=Function/Unit HL=Cylinders - D:0-6=Heads - D:7=LBA Capable - E=Sectors - BC=Block Size - A=Result + BC=Function/Unit HL=Cylinders + D:0-6=Heads + D:7=LBA Capable + E=Sectors + BC=Block Size + A=Result Return device geometry information. If media is unknown, return error (no media) INFO ($1F): - BC=Function/Sub-function A=Result + BC=Function/Sub-function A=Result C=0: Report total unit count in system: - BC=Function/Sub-function A=Result - B=Count + BC=Function/Sub-function A=Result + B=Count +=============== +Video Functions +=============== -A: RAM0 B: ROM0 C: +----------------------------------------------------------------------------------- -Unit Device Board Part Slice Cap -------- ------- ------- ------- ------- ------- -#0 RAM MK4 384K -#1 ROM MK4 384K -#2 FD0 DIO3 3.5" DS/HD -#3 IDE0 DIO3 0 8M +Unit Device Type Capacity/Mode +---------- ---------- ---------------- -------------------- +Disk 0 MD0: ROM Disk 384K, LBA +Disk 1 MD1: RAM Disk 384K, LBA +Disk 2 FD0: Floppy Disk 3.5", DS/HD, CHS +Disk 3 FD1: Floppy Disk 5.25", DS/HD, CHS +Disk 4 PPIDE0: Hard Disk 2345M, LBA +Disk 5 IDE0: Compact Flash 2048M, LBA +Disk 6 SD0: SD Card 4096M, LBA +Disk 7 PRPSD0: SD Card 2048M, LBA +Disk 8 RF0: RAM Floppy 4M, LBA +Serial 0 UART0: RS-232 38400,8N1,HFC +Serial 1 PRPCON0: Direct -- +Serial 2 CVDU0: Direct -- +Serial 2 VDU0: Direct -- +Serial 2 SCG0: Direct -- +Video 0 PRPCON0: VDA Text 80x25, ANSI +Video 1 CVDU0: VDA Text 80x25, ANSI +Video 2 VDU0: VDA Text 80x25, ANSI +Video 3 SCG0: VDA Text 40x25, TTY +Unit: Function Group & Unit Index +Device: _DEVICE Device Type & Device Num +Type: _DEVICE Type & Attributes +Capacity/Mode: + Disk: _DEVICE Attributes & _CAPACITY + Serial: _QUERY + Video: _QUERY -Unit 0: RAMDISK on MK4 (384K) -Unit 1: ROMDISK on MK4 (384K) -Unit 2: FD0 on DISKIO3 (3.5") -Unit 3: FD1 on DISKIO3 (5.25") -Unit 4: IDE0 on DISKIO3 (4096M) -A: RAM0 MK4 RAM Disk, 384K -B: ROM0 MK4 ROM Disk, 384K -C: FD0 DiskIO3 Floppy Disk 0, 3.5" DS/HD -D: FD1 DiskIO3 Floppy Disk 1, 5.25" DS/DD -E: IDE0:0 MK4 IDE Hard Disk 0, Slice 0, 8M -F: IDE0:1 MK4 IDE Hard Disk 0, Slice 1, 8M -G: PRPSD0:0 PropIO SD Card, Slice 0 +----------------------------------------------------------------------------------- + +_INIT: + - INIT HARDWARE + - ADD OURSELVES TO VDA_TBL + - ADD OURSELVES TO CIO_TBL + - GOTO _VDAINIT +_VDAINIT: (BC=FUNCTION/DEVID, HL=BITMAP ADR, D=TERMTYPE, E=VIDEO MODE) + - CALL _VDARESET + - INITIALIZE EMULATION BY CALLING EMU_INIT (B=TERMTYPE, C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR) + - SAVE DE TO _CIODISPADR TO FORWARD SUBSEQUENT CIO FUNCTION CALLS + - RETURN (A=STATUS) +_VDARESET: + - RESET HARDWARE + - RETURN (A=STATUS) +EMU_INIT: (B=TERMTYPE, C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR) + - GOTO TO _INIT BASED ON VALUE IN B +_INIT: (C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR) + - RECORD C TO _DEVTYPE SO _DEVICE FUNCTION CAN RETURN IT + - RECORD DE IN _VDADISPADR FOR LATER USE IN CALLING PARENT VDA DRIVER + - INITIALIZE/RESET EMULATION ENGINE + - RETURN (A=STATUS, DE=CIODISPADR) +-------------------------- + +md +hdsk +rf +ide +sd +ppide +fd +prp +ppp + +-------------------------- 0: RAM- RAMdrive on the Z180 SBC Mark IV board LBASupported UserAddressableSectors 832 @@ -235,42 +325,4 @@ CP/M 2.2 Copyright 1979 (c) by Digital Research --- -_INIT: - - ADD OURSELVES TO VDA_TBL - - ADD OURSELVES TO CIO_TBL & RECORD _CIOUNIT - - INIT HARDWARE - - GOTO _INI - -_INI: - - CALL _RES - - 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: (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: (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 (A=STATUS, DE=EMULATOR CIO DISPATCH) - - - - - --------------------------- -md -hdsk -rf -ide -sd -ppide -fd -prp -ppp diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index 875e8f07..720926d1 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -27,10 +27,15 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK ; ANSI_INIT: ; SAVE INCOMING VDA DISPATCH ADDRESS - LD C,A ; VDA DRIVER'S CIO UNIT NUMBER - LD (ANSI_CIOUNIT),A ; ... SAVED LOCALLY + LD C,A ; VDA DRIVER'S DEVICE TYPE + LD (ANSI_DEVTYPE),A ; ... SAVED LOCALLY LD (ANSI_VDADISPADR),DE ; RECORD NEW VDA DISPATCH ADDRESS + CALL ANSI_RESET ; FULL RESET OF EMULATOR INTERNAL STATE + LD DE,ANSI_DISPATCH ; RETURN OUR DISPATCH ADDRESS + XOR A ; SIGNAL SUCCESS + RET ; RETURN ; +ANSI_RESET: ; 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 @@ -65,8 +70,6 @@ ANSI_INIT2: ; LOOP TO RESET TAB STOPS INC HL ; POINT TO NEXT BYTE DJNZ ANSI_INIT2 ; LOOP TILL ALL BYTES DONE ; - LD DE,ANSI_DISPATCH ; RETURN OUR DISPATCH ADDRESS - XOR A RET ; ; @@ -78,21 +81,21 @@ ANSI_VDADISPADR .EQU $ - 2 ; ; ANSI_DISPATCH: - LD A,B ; GET REQUESTED FUNCTION - AND $0F ; ISOLATE SUB-FUNCTION - JR Z,ANSI_IN ; $30 - DEC A - JR Z,ANSI_OUT ; $31 - DEC A - JR Z,ANSI_IST ; $32 - DEC A - JR Z,ANSI_OST ; $33 - DEC A - JR Z,ANSI_INITDEV ; $34 - DEC A - JP Z,ANSI_QUERY ; $35 + LD A,B ; GET REQUESTED FUNCTION + AND $0F ; ISOLATE SUB-FUNCTION + JR Z,ANSI_CIOIN ; $30 + DEC A + JR Z,ANSI_CIOOUT ; $31 + DEC A + JR Z,ANSI_CIOIST ; $32 DEC A - JP Z,ANSI_DEVICE ; $36 + JR Z,ANSI_CIOOST ; $33 + DEC A + JR Z,ANSI_CIOINIT ; $34 + DEC A + JP Z,ANSI_CIOQUERY ; $35 + DEC A + JP Z,ANSI_CIODEVICE ; $36 CALL PANIC ; ;================================================================================================== @@ -101,12 +104,12 @@ ANSI_DISPATCH: ; ; READ A CHARACTER ; -ANSI_IN: ; HANDLE INPUT REQUEST +ANSI_CIOIN: ; HANDLE INPUT REQUEST ; ; RETURN QUEUED DATA IF WE HAVE ANY LD A,(ANSI_QLEN) ; GET THE CURRENT QUEUE LENGTH OR A ; SET FLAGS - JR Z,ANSI_IN1 ; NOTHING THERE, GO TO KEYBOARD READ + JR Z,ANSI_CIOIN1 ; NOTHING THERE, GO TO KEYBOARD READ DEC A ; DECREMENT THE QUEUE LENGTH LD (ANSI_QLEN),A ; AND SAVE IT LD HL,(ANSI_QPTR) ; GET THE QUEUE POINTER @@ -117,44 +120,44 @@ ANSI_IN: ; HANDLE INPUT REQUEST XOR A ; SIGNAL SUCCESS RET ; DONE ; -ANSI_IN1: ; PERFORM ACTUAL KEYBOARD INPUT +ANSI_CIOIN1: ; PERFORM ACTUAL KEYBOARD INPUT LD B,BF_VDAKRD ; SET FUNCTION TO KEYBOARD READ 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 + JR NZ,ANSI_CIOIN2 ; HANDLE $80 OR HIGHER AS SPECIAL CHAR XOR A ; OTHERWISE, SIGNAL SUCCESS RET ; AND RETURN THE KEY ; -ANSI_IN2: ; HANDLE SPECIAL KEY +ANSI_CIOIN2: ; HANDLE SPECIAL KEY CALL ANSI_KDISP ; IF $80 OR HIGHER, DISPATCH - JR ANSI_IN ; AND LOOP + JR ANSI_CIOIN ; AND LOOP ; ; WRITE A CHARACTER W/ EMULATION ; -ANSI_OUT: - LD HL,ANSI_OUT2 ; RETURN ADDRESS +ANSI_CIOOUT: + LD HL,ANSI_CIOOUT2 ; RETURN ADDRESS PUSH HL ; PUT IT ON STACK LD A,E ; GET THE INCOMING CHARACTER CP $20 ; $00-$1F IS C0 JP C,ANSI_C0DISP ; IF C0, DO C0 DISPATCH CP $80 ; $20-$7F - JR C,ANSI_OUT1 ; HANDLE VIA STATE MACHINE + JR C,ANSI_CIOOUT1 ; HANDLE VIA STATE MACHINE CP $A0 ; $80-$9F IS C1 JP C,ANSI_C1DISP ; IF C1, DO C1 DISPATCH ; -ANSI_OUT1: ; PROCESS OTHER CHARS VIA STATE MACHINE +ANSI_CIOOUT1: ; PROCESS OTHER CHARS VIA STATE MACHINE LD HL,(ANSI_STATE) ; LOAD THE CURRENT STATE JP (HL) ; DO IT ; CALL JPHL ; DO IT ; -ANSI_OUT2: ; SET RESULT AND RETURN +ANSI_CIOOUT2: ; SET RESULT AND RETURN XOR A ; SIGNAL SUCCESS RET ; ; CHECK INPUT STATUS ; -ANSI_IST: ; CHECK QUEUE FIRST +ANSI_CIOIST: ; CHECK QUEUE FIRST LD A,(ANSI_QLEN) ; GET CURRENT QUEUE LENGTH OR A ; SET FLAGS RET NZ ; RETURN IF CHAR(S) WAITING @@ -170,7 +173,7 @@ ANSI_IST: ; CHECK QUEUE FIRST 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 + JR NZ,ANSI_CIOIST1 ; HANDLE $80 OR HIGHER AS SPECIAL CHAR ; ; REGULAR CHARACTER RECEIVED, QUEUE IT AND RETURN CHARS WAITING STATUS LD HL,ANSI_QUEUE ; SET HL TO START OF QUEUE @@ -180,35 +183,43 @@ ANSI_IST: ; CHECK QUEUE FIRST XOR A ; ZERO ACCUM INC A ; ASSUM := 1 (NUM CHARS IN QUEUE) LD (ANSI_QLEN),A ; SAVE NEW QUEUE LEN - JR ANSI_IST ; REPEAT + JR ANSI_CIOIST ; REPEAT ; -ANSI_IST1: ; HANDLE SPECIAL KEY +ANSI_CIOIST1: ; HANDLE SPECIAL KEY CALL ANSI_KDISP ; DO SPECIAL KEY HANDLING - JR ANSI_IST ; REPEAT + JR ANSI_CIOIST ; REPEAT ; ; CHECK OUTPUT STATUS ; -ANSI_OST: ; VIDEO OUTPUT IS *ALWAYS* READY +ANSI_CIOOST: ; VIDEO OUTPUT IS *ALWAYS* READY XOR A ; ZERO ACCUM INC A ; A := $FF TO SIGNAL OUTPUT BUFFER READY RET ; ; INITIALIZE ; -ANSI_INITDEV: - XOR A ; SIGNAL SUCCESS - RET ; AND RETURN +ANSI_CIOINIT: + ; SETUP AND FORWARD CALL TO PARENT VDA DRIVER'S VDAINIT FUNCTION + LD B,BF_VDAINI ; WE ARE FORWARDING TO VDAINIT FUNCTION + LD A,(ANSI_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR + LD C,A ; AND PUT IT IN C + LD D,L ; TERMTYPE TO D + LD E,0 ; VIDEO MODE = 0 + LD HL,0 ; NO BITMAP, LEAVE IT ALONG + JP ANSI_VDADISP ; LET VDA DRIVER HANDLE IT FROM HERE ; ; QUERY STATUS ; -ANSI_QUERY: - CALL PANIC ; NOT IMPLEMENTED +ANSI_CIOQUERY: + LD DE,0 + LD HL,0 + XOR A RET ; ; REPORT DEVICE ; -ANSI_DEVICE: - LD A,(ANSI_CIOUNIT) ; GET THE CURRENT CIO DEVICE +ANSI_CIODEVICE: + LD A,(ANSI_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR LD D,A ; AND PASS BACK IN D LD E,C ; E := PHYSICAL UNIT XOR A ; SIGNAL SUCCESS @@ -338,7 +349,7 @@ ANSI_ESCDISP1: ; NORMAL ESCAPE DISPATCHING, NO INT CHARACTER ; ANSI_ESCDISP1A: ; CONTINUE NORMAL ESCAPE SEQ DISPATCHING CP 'c' ; RIS: RESET TO INITIAL STATE - JP Z,ANSI_INITDEV ; DO A FULL RESET + JP Z,ANSI_RESET ; DO A FULL RESET JP ANSI_UNK ; UNKNOWN, ABORT ; ANSI_ESCDISP2: ; ESC DISPATCHING FOR '#' INT CHAR @@ -1376,4 +1387,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_CIOUNIT .DB $FF ; CIO UNIT NUMBER OF PARENT VDA +ANSI_DEVTYPE .DB $FF ; DEVICE TYPE OF PARENT VDA'S CIO DEVICE diff --git a/Source/HBIOS/asci.asm b/Source/HBIOS/asci.asm index 37b8b1d4..6cd65f4a 100644 --- a/Source/HBIOS/asci.asm +++ b/Source/HBIOS/asci.asm @@ -229,11 +229,18 @@ ASCI0_OST: ; ; ASCI0_INITDEV: -ASCI0_QUERY: CALL PANIC ; ; ; +ASCI0_QUERY: + LD DE,ASCI0BAUD >> 16 + LD HL,ASCI0BAUD & $FFFF + XOR A + RET +; +; +; ASCI0_DEVICE: LD D,CIODEV_ASCI ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT @@ -313,11 +320,18 @@ ASCI1_OST: ; ; ASCI1_INITDEV: -ASCI1_QUERY: CALL PANIC ; ; ; +ASCI1_QUERY: + LD DE,ASCI1BAUD >> 16 + LD HL,ASCI1BAUD & $FFFF + XOR A + RET +; +; +; ASCI1_DEVICE: LD D,CIODEV_ASCI ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 19df96fb..82a0fd1b 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -42,7 +42,7 @@ 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 (CVDU_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE LD D,VDAEMU ; DEFAULT EMULATION @@ -102,8 +102,9 @@ CVDU_VDAINI: ; INITIALIZE EMULATION LD B,D ; EMULATION TYPE TO B - LD A,(CVDU_CIOUNIT) ; CIO UNIT NUMBER - LD C,A ; ... IS PASSED IN C + ;LD A,(CVDU_CIOUNIT) ; CIO UNIT NUMBER + ;LD C,A ; ... IS PASSED IN C + LD C,CIODEV_CVDU ; PASS OUR DEVICE TYPE IN C LD DE,CVDU_DISPATCH ; DISPATCH ADDRESS TO DE CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER LD (CVDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS @@ -649,7 +650,7 @@ CVDU_BLKCPY1: ; CVDU DRIVER - DATA ;================================================================================================== ; -CVDU_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +;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/fd.asm b/Source/HBIOS/fd.asm index 3538d1a0..807a18a1 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -410,6 +410,21 @@ FD_DEFMED: FD_DEVICE: LD D,DIODEV_FD ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT +#IF (FDMEDIA == FDM720) + LD C,%11010100 ; 3.5" DS/DD +#ENDIF +#IF (FDMEDIA == FDM144) + LD C,%11011000 ; 3.5" DS/HD +#ENDIF +#IF (FDMEDIA == FDM360) + LD C,%10110100 ; 5.25" DS/DD +#ENDIF +#IF (FDMEDIA == FDM120) + LD C,%10111000 ; 5.25" DS/HD +#ENDIF +#IF (FDMEDIA == FDM111) + LD C,%10010100 ; 8" DS/DD +#ENDIF XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 69e775cf..daeca3e1 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -589,6 +589,9 @@ INITSYS1: #ENDIF ; INITSYS2: +; + CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE +; RET ; ;================================================================================================== @@ -1070,7 +1073,7 @@ RTC_DISPATCH: ; TO THE CORRRECT EMULATION MODULE. ; ; B: EMULATION TYPE ID (1=TTY, 2=ANSI, ETC.) -; C: VDA DRIVER'S CIO UNIT NUMBER +; C: VDA DRIVER'S VDA DEVICE TYPE ; DE: VDA DRIVER'S DISPATCH ADDRESS ; ; @@ -1317,7 +1320,7 @@ SYS_GETCPUINFO: ; SYS_GETMEMINFO: LD D,ROMSIZE / 32 - LD D,RAMSIZE / 32 + LD E,RAMSIZE / 32 XOR A RET ; @@ -1981,6 +1984,391 @@ PRTD3M3: RET ; ;================================================================================================== +; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES +;================================================================================================== +; +PRTSUM: + CALL NEWLINE2 ; SKIP A LINE + LD DE,PS_STRHDR ; POINT TO HEADER + CALL WRITESTR ; PRINT IT +; + ; PRINT DISK DEVICES + LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET + LD C,BF_SYSGET_DIOCNT ; SUBFUNC: DISK UNIT COUNT + RST 08 ; E := DISK UNIT COUNT + LD B,E ; MOVE TO B FOR LOOP COUNT + LD C,0 ; D WILL BE UNIT INDEX +PRTSUM1: + PUSH BC ; SAVE LOOP CONTROL + CALL PS_DISK ; PRINT DISK INFO + POP BC ; RESTORE LOOP CONTROL + INC C ; BUMP DISK UNIT INDEX + DJNZ PRTSUM1 ; LOOP THRU ALL DISK DEVICES +; + ; PRINT SERIAL DEVICES + LD B,BF_SYSGET ; FUNC: SYSTEM INFO GET + LD C,BF_SYSGET_CIOCNT ; SUBFUNC: DISK UNIT COUNT + RST 08 ; E := DISK UNIT COUNT + LD B,E ; MOVE TO B FOR LOOP COUNT + LD C,0 ; D WILL BE UNIT INDEX +PRTSUM2: + PUSH BC ; SAVE LOOP CONTROL + CALL PS_SERIAL ; PRINT SERIAL INFO + POP BC ; RESTORE LOOP CONTROL + INC C ; BUMP DISK UNIT INDEX + DJNZ PRTSUM2 ; LOOP THRU ALL DISK DEVICES +; + RET ; DONE +; +; PRINT ONE LINE DISK UNIT/DEVICE INFO, DISK UNIT INDEX IN C +; +PS_DISK: + PUSH BC ; SAVE UNIT INDEX FOR LATER +; + ; UNIT COLUMN + PRTS("Disk $") + LD A,C ; MOVE UNIT NUM TO A + CALL PRTDECB ; PRINT IT, ASSUME SINGLE DIGIT + PRTS(" $") ; PAD TO NEXT COLUMN +; + ; DEVICE COLUMN + LD B,BF_DIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C + RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES + PUSH BC ; SAVE ATTRIBUTES + LD HL,PS_DDSTRREF ; POINT TO DISK DEVICE TYPE NAME TABLE + CALL PS_PRTDEV ; PRINT DISK DEVICE NMEMONIC PADDED TO FIELD WIDTH + POP DE ; RECOVER ATTRIBUTES TO DE + PUSH DE ; SAVE ATTRIBUTES AGAIN + CALL PS_PRTDT ; PRINT DISK TYPE + POP DE ; RESTORE ATTRIBUTES + POP BC ; RESTORE UNIT NUM + CALL PS_PRTDC ; PRINT DISK CAPACITY +; + CALL NEWLINE + RET +; +; PRINT DISK TYPE (DISK ATTRIBUTE IN E) +; +PS_PRTDT: + LD A,E ; ATTRIBUTES TO A + BIT 7,A ; FLOPPY BIT SET? + LD HL,PS_DTFLOP ; ASSUME FLOPPY + JR NZ,PS_PRTDT1 ; IF FLOPPY, JUMP AHEAD + RRCA ; SHIFT TYPE BITS + RRCA + RRCA + AND $07 ; AND ISOLATE THEM + RLCA ; X2 FOR WORD OFFSET IN STRING TABLE + LD HL,PS_DTSTRREF + 2 ; POINT TO STR REF TABLE (SKIP FLOPPY STRING) + CALL ADDHLA + LD A,(HL) + INC HL + LD H,(HL) + LD L,A +; +PS_PRTDT1: + CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + LD A,18 ; 18 CHAR FIELD + SUB C + CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) + RET + + + ;LD A,D + ;RRCA ; TYPE IS IN UPPER NIBBLE, MOVE TO LOWER NIBBLE + ;RRCA + ;RRCA + ;RRCA + ;RLCA ; X2 FOR WORD OFFSET IN STRING TABLE + ;CALL ADDHLA + ;LD A,(HL) + ;INC HL + ;LD H,(HL) + ;LD L,A + + ;CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + ;LD A,E ; NUM + ;CALL PRTDECB ; PRINT NUM, ASSUME 1 CHAR + ;CALL PC_COLON ; PRINT COLON + ;LD A,12 - 2 ; 12 CHAR FIELD - 1 POS FOR UNIT NUM AND 1 POS FOR COLON + ;SUB C + ;CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) + ;RET +; +; PRINT DISK CAPACITY (UNIT IN C, ATTRIBUTE IN E) +; +PS_PRTDC: +; + LD A,E ; ATTRIBUTE TO ACCUM + BIT 7,A ; TEST FOR FLOPPY + JR NZ,PS_PRTDC2 ; HANDLE FLOPPY + RRCA ; ISOLATE TYPE BITS + RRCA + RRCA + AND $07 + CP 4 ; ROM DISK? + JR Z,PS_PRTDC1 ; PRINT CAPACITY IN KB + CP 5 ; RAM DISK? + JR Z,PS_PRTDC1 ; PRINT CAPACITY IN KB +; + ; PRINT HARD DISK STORAGE SIZE IN MB + LD B,BF_DIOCAP ; HBIOS FUNC: GET CAPACTIY + RST 08 ; DE:HL := BLOCKS + RES 7,D ; CLEAR LBA BIT + LD B,11 ; 11 BIT SHIFT TO CONVERT BLOCKS --> MB + CALL SRL32 ; RIGHT SHIFT + CALL PRTDEC ; PRINT LOW WORD IN DECIMAL (HIGH WORD DISCARDED) + PRTS("MB$") ; PRINT SUFFIX + CALL PC_COMMA + PRTS(" LBA$") ; FOR NOW, WE ASSUME HARD DISK DOES LBA + RET ; DONE +; +PS_PRTDC1: + ; PRINT ROM/ROM DISK CAPACITY IN KB + LD B,BF_DIOCAP ; HBIOS FUNC: GET CAPACTIY + RST 08 ; DE:HL := BLOCKS + RES 7,D ; CLEAR LBA BIT + LD B,1 ; 11 BIT SHIFT TO CONVERT BLOCKS --> MB + CALL SRL32 ; RIGHT SHIFT + CALL PRTDEC ; PRINT LOW WORD IN DECIMAL (HIGH WORD DISCARDED) + PRTS("KB$") ; PRINT SUFFIX + CALL PC_COMMA + PRTS(" LBA$") ; FOR NOW, WE ASSUME HARD DISK DOES LBA + RET ; DONE +; +PS_PRTDC2: + LD C,E ; ATTRIBUTE TO C FOR SAFE KEEPING + ; PRINT FLOPPY TYPE + LD A,C ; ATTRIBUTE TO ACCUM + RLCA ; ISOLATE FORM FACTOR BITS + RLCA + RLCA + AND $03 + LD DE,PS_FLP8 ; ASSUME 8" + CP 0 + JR Z,PS_PRTDC2A + LD DE,PS_FLP5 ; ASSUME 5.25" + CP 1 + JR Z,PS_PRTDC2A + LD DE,PS_FLP3 ; ASSUME 3.5" + CP 2 + JR Z,PS_PRTDC2A + LD DE,PS_FLPN ; ASSUME OTHER" +PS_PRTDC2A: + CALL WRITESTR + ; PRINT FLOPPY SIDES + LD A,C ; ATTRIBUTE TO ACCUM + LD DE,PS_FLPSS ; ASSUME SINGLE SIDED + BIT 4,A ; DS? + JR Z,PS_PRTDC2B + LD DE,PS_FLPDS ; DOUBLE SIDED +PS_PRTDC2B: + CALL WRITESTR + ; PRINT FLOPPY DENSITY + LD A,C ; ATTRIBUTE TO ACCUM + RRCA ; ISOLATE DENSITY BITS + RRCA + AND $03 + LD DE,PS_FLPSD ; SINGLE DENSITY + CP 0 + JR Z,PS_PRTDC2C + LD DE,PS_FLPDD ; DOUBLE DENSITY + CP 1 + JR Z,PS_PRTDC2C + LD DE,PS_FLPHD ; HIGH DENSITY + CP 2 + JR Z,PS_PRTDC2C + LD DE,PS_FLPED ; EXTENDED DENSITY + CP 3 + JR Z,PS_PRTDC2C +PS_PRTDC2C: + CALL WRITESTR + CALL PC_COMMA + PRTS(" CHS$") ; FOR NOW, WE ASSUME HARD DISK DOES LBA +; + RET ; DONE +; +; FLOPPY ATTRIBUTE STRINGS +; +PS_FLP8 .TEXT "8\", $" +PS_FLP5 .TEXT "5.25\", $" +PS_FLP3 .TEXT "3.5\", $" +PS_FLPN .TEXT "???\", $" +; +PS_FLPSS .TEXT "SS/$" +PS_FLPDS .TEXT "SS/$" +; +PS_FLPSD .TEXT "SD$" +PS_FLPDD .TEXT "DD$" +PS_FLPHD .TEXT "HD$" +PS_FLPED .TEXT "ED$" +; +; PRINT ONE LINE SERIAL UNIT/DEVICE INFO, DISK UNIT INDEX IN C +; +PS_SERIAL: + PUSH BC ; SAVE UNIT INDEX FOR LATER +; + ; UNIT COLUMN + PRTS("Serial $") + LD A,C ; MOVE UNIT NUM TO A + CALL PRTDECB ; PRINT IT, ASSUME SINGLE DIGIT + PRTS(" $") ; PAD TO NEXT COLUMN +; + ; DEVICE COLUMN + LD B,BF_CIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C + RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES + PUSH BC ; SAVE ATTRIBUTES + LD HL,PS_SDSTRREF ; POINT TO SERIAL DEVICE TYPE NAME TABLE + CALL PS_PRTDEV ; PRINT SERIAL DEVICE NMEMONIC PADDED TO FIELD WIDTH + POP DE ; RECOVER ATTRIBUTES + PUSH DE ; SAVE ATTRIBUTES AGAIN + CALL PS_PRTST ; PRINT SERIAL TYPE + POP DE ; RESTORE ATTRIBUTES + POP BC ; RESTORE UNIT NUM + CALL PS_PRTSC ; PRINT SERIAL CONFIG +; + CALL NEWLINE + RET +; +; PRINT SERIAL TYPE (SERIAL ATTRIBUTE IN E) +; +PS_PRTST: + LD HL,PS_STDUMMY + CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + LD A,18 ; 18 CHAR FIELD + SUB C + CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) + RET +; +; PRINT SERIAL CONFIG (UNIT IN C, ATTRIBUTE IN E) +; +PS_PRTSC: + LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG + RST 08 ; DE:HL := BAUD RATE + PUSH DE ; DE:HL ==> HL:BC + PUSH HL + POP BC + POP HL + LD DE,PS_BCDTMP ; DE POINTS TO BCD TEMP + CALL BIN2BCD ; CONVERT HL:BC TO BCD AT (DE) + LD HL,PS_BCDTMP ; POINT TO TEMP BCD + CALL PRTBCD ; AND PRINT IT + CALL PC_COMMA + PRTS(" 8N1$") + RET + +; +; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE +; +PS_PRTDEV: + LD A,D + RRCA ; TYPE IS IN UPPER NIBBLE, MOVE TO LOWER NIBBLE + RRCA + RRCA + RRCA + RLCA ; X2 FOR WORD OFFSET IN STRING TABLE + CALL ADDHLA + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED + LD A,E ; NUM + CALL PRTDECB ; PRINT NUM, ASSUME 1 CHAR + CALL PC_COLON ; PRINT COLON + LD A,12 - 2 ; 12 CHAR FIELD - 1 POS FOR UNIT NUM AND 1 POS FOR COLON + SUB C + CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A) + RET +; +; +; +PS_PRT: + ; PRINT STRING AT (HL), $ TERM, RETURN CHARS PRINTED IN C + LD C,0 ; INIT CHAR COUNT +PS_PRT1: + LD A,(HL) ; GET CHAR + INC HL ; BUMP INDEX + CP '$' ; TERM? + RET Z ; IF SO, DONE + CALL COUT ; PRINT IT + INC C ; BUMP COUNTER + JR PS_PRT1 ; AND LOOP +; +; +; +PS_PAD: + ; PAD N SPACES SPECIFIED IN A + LD B,A + LD A,' ' +PS_PAD1: + CALL COUT + DJNZ PS_PAD1 + RET +; +; +; +PS_BCDTMP .FILL 5,0 ; TEMPORARY BCD NUMBER STORAGE +; +; DISK DEVICE STRINGS +; +PS_DDSTRREF: + .DW PS_DDMD, PS_DDFD, PS_DDRF, PS_DDIDE, PS_DDATAPI, PS_DDPPIDE + .DW PS_DDSD, PS_DDPRPSD, PS_DDPPPSD, PS_DDHDSK +; +PS_DDMD .TEXT "MD$" +PS_DDFD .TEXT "FD$" +PS_DDRF .TEXT "RF$" +PS_DDIDE .TEXT "IDE$" +PS_DDATAPI .TEXT "ATAPI$" +PS_DDPPIDE .TEXT "PPIDE$" +PS_DDSD .TEXT "SD$" +PS_DDPRPSD .TEXT "PRPSD$" +PS_DDPPPSD .TEXT "PPPSD$" +PS_DDHDSK .TEXT "HDSK$" +; +; DISK TYPE STRINGS +; +PS_DTSTRREF: + .DW PS_DTFLOP, PS_DTHARD, PS_DTCF, PS_DTSD + .DW PS_DTUSB, PS_DTROM, PS_DTRAM, PS_DTRF +; +PS_DTFLOP .TEXT "Floppy Disk$" +PS_DTHARD .TEXT "Hard Disk$" +PS_DTCF .TEXT "CompactFlash$" +PS_DTSD .TEXT "SD Card$" +PS_DTUSB .TEXT "USB Drive$" +PS_DTROM .TEXT "ROM Disk$" +PS_DTRAM .TEXT "RAM Disk$" +PS_DTRF .TEXT "RAM Floppy$" +PS_DTOTHER .TEXT "???$" +; +; SERIAL DEVICE STRINGS +; +PS_SDSTRREF: + .DW PS_SDUART, PS_SDASCI, PS_SDVDU, PS_SDCVDU + .DW PS_SDUPD7220, PS_SDSCG, PS_SDPRPCON, PS_SDPPPCON +; +PS_SDUART .TEXT "UART$" +PS_SDASCI .TEXT "ASCI$" +PS_SDVDU .TEXT "VDU$" +PS_SDCVDU .TEXT "CVDU$" +PS_SDUPD7220 .TEXT "UPD7220$" +PS_SDSCG .TEXT "SCG$" +PS_SDPRPCON .TEXT "PRPCON$" +PS_SDPPPCON .TEXT "PPPCON$" +; +; SERIAL TYPE STRINGS +; +PS_STDUMMY .TEXT "--$" +; +; +; 0 1 2 3 4 5 6 7 +; 01234567890123456789012345678901234567890123456789012345678901234567890123456789 +PS_STRHDR .TEXT "Unit Device Type Capacity/Mode\r\n" + .TEXT "---------- ---------- ---------------- --------------------\r\n$" +; +;================================================================================================== ; CONSOLE CHARACTER I/O HELPER ROUTINES (REGISTERS PRESERVED) ;================================================================================================== ; @@ -2096,8 +2484,6 @@ IDLECOUNT .DB 0 ; .DW 0 ; LBA LOW WORD ; .DW 0 ; LBA HIGH WORD ; -; DISK DEVICE/UNIT ID -;HSTDSK .DB 0 ; DISK DEVICE/UNIT ID ; FULL 32 BIT LBA HSTLBA .EQU $ ; REFERS TO START OF 32-BIT LBA ; LBA LOW WORD -OR- TRACK @@ -2109,7 +2495,6 @@ HSTSEC .DB 0 ; SECTOR (0-255) HSTHEAD .DB 0 ; HEAD (0-255) ; DIOBUF .DW 0 ; PTR TO CURRENT DISK XFR BUFFER -;DIOBUFDEF .DW 0 ; PTR TO DEFAULT PREALLOCATED DISK XFR BUFFER ; HB_INTSTKSAV .DW 0 ; SAVED STACK POINTER DURING INT PROCESSING .FILL $40,$FF ; 32 ENTRY STACK FOR INTERRUPT PROCESSING diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index aba6f6d0..b6958533 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -61,11 +61,12 @@ 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_PEEK .EQU BF_SYS + 9 ; GET A BYTE FROM ALT BANK +BF_POKE .EQU BF_SYS + 10 ; PUT A BYTE TO ALT BANK ; BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT +BF_SYSGET_VDACNT .EQU $10 ; GET VDA UNIT COUNT 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 diff --git a/Source/HBIOS/hdsk.asm b/Source/HBIOS/hdsk.asm index 234afa29..9a605227 100644 --- a/Source/HBIOS/hdsk.asm +++ b/Source/HBIOS/hdsk.asm @@ -129,6 +129,7 @@ HDSK_GEOM: HDSK_DEVICE: LD D,DIODEV_HDSK ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD C,%00000000 ; C := ATTRIBUTES, NON-REMOVABLE HARD DISK XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index ae064b17..fa59fbdc 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -194,6 +194,7 @@ IDE_DRVSLAVE .DB %11110000 ; LBA, SLAVE DEVICE IDE_STAT .EQU 0 ; LAST STATUS (1 BYTE) IDE_TYPE .EQU 1 ; DEVICE TYPE (1 BYTE) IDE_CAPACITY .EQU 2 ; DEVICE CAPACITY (1 DWORD/4 BYTES) +IDE_CFFLAG .EQU 6 ; CF FLAG (1 BYTE), NON-ZERO=CF ; ; THE IDE_WAITXXX FUNCTIONS ARE BUILT TO TIMEOUT AS NEEDED SO DRIVER WILL ; NOT HANG IF DEVICE IS UNRESPONSIVE. DIFFERENT TIMEOUTS ARE USED DEPENDING @@ -395,9 +396,16 @@ IDE_STATUS: ; ; IDE_DEVICE: - LD D,DIODEV_IDE ; D := DEVICE TYPE - LD E,C ; E := PHYSICAL UNIT - XOR A ; SIGNAL SUCCESS + LD D,DIODEV_IDE ; D := DEVICE TYPE + LD E,C ; E := PHYSICAL UNIT + IDE_DPTR(IDE_CFFLAG) ; POINT TO CF FLAG + LD A,(HL) ; GET FLAG + OR A ; SET ACCUM FLAGS + LD C,%00000000 ; ASSUME NON-REMOVABLE HARD DISK + JR Z,IDE_DEVICE1 ; IF Z, WE ARE DONE + LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH +IDE_DEVICE1: + XOR A ; SIGNAL SUCCESS RET ; ; IDE_GETMED @@ -906,6 +914,20 @@ IDE_INITDEV: LD DE,HB_TMPBUF ; POINT TO BUFFER DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING ; + ; DETERMINE IF CF DEVICE + LD HL,HB_TMPBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG + LD A,$8A ; FIRST BYTE OF MARKER IS $8A + CP (HL) ; COMPARE + JR NZ,IDE_INITDEV1 ; IF NO MATCH, NOT CF + INC HL + LD A,$84 ; SECOND BYTE OF MARKER IS $84 + CP (HL) ; COMPARE + JR NZ,IDE_INITDEV1 ; IF NOT MATCH, NOT CF + IDE_DPTR(IDE_CFFLAG) ; POINT HL TO CF FLAG FIELD + LD A,$FF ; SET FLAG VALUE TO NON-ZERO (TRUE) + LD (HL),A ; SAVE IT +; +IDE_INITDEV1: ; GET DEVICE CAPACITY AND SAVE IT IDE_DPTR(IDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD PUSH HL ; SAVE POINTER diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index c1056944..d7dc13cd 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -137,6 +137,12 @@ MD_GEOM1: MD_DEVICE: LD D,DIODEV_MD ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD A,C ; PHYSICAL UNIT TO A + OR A ; SET FLAGS + LD C,%00100000 ; ASSUME ROM DISK ATTRIBUTES + JR Z,MD_DEVICE1 ; IF ZERO, IT IS ROM DISK, DONE + LD C,%00101000 ; USE RAM DISK ATTRIBUTES +MD_DEVICE1: XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 04780218..62ababb8 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -197,6 +197,8 @@ PPIDE_DRVSLAVE .DB %11110000 ; LBA, SLAVE DEVICE PPIDE_STAT .EQU 0 ; LAST STATUS (1 BYTE) PPIDE_TYPE .EQU 1 ; DEVICE TYPE (1 BYTE) PPIDE_CAPACITY .EQU 2 ; DEVICE CAPACITY (1 DWORD/4 BYTES) +PPIDE_CFFLAG .EQU 6 ; CF FLAG (1 BYTE), NON-ZERO=CF + ; ; THE IDE_WAITXXX FUNCTIONS ARE BUILT TO TIMEOUT AS NEEDED SO DRIVER WILL ; NOT HANG IF DEVICE IS UNRESPONSIVE. DIFFERENT TIMEOUTS ARE USED DEPENDING @@ -410,9 +412,16 @@ PPIDE_SENSE: ; ; PPIDE_DEVICE: - LD D,DIODEV_PPIDE ; D := DEVICE TYPE - LD E,C ; E := PHYSICAL UNIT - XOR A ; SIGNAL SUCCESS + LD D,DIODEV_PPIDE ; D := DEVICE TYPE + LD E,C ; E := PHYSICAL UNIT + PPIDE_DPTR(PPIDE_CFFLAG) ; POINT TO CF FLAG + LD A,(HL) ; GET FLAG + OR A ; SET ACCUM FLAGS + LD C,%00000000 ; ASSUME NON-REMOVABLE HARD DISK + JR Z,PPIDE_DEVICE1 ; IF Z, WE ARE DONE + LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH +PPIDE_DEVICE1: + XOR A ; SIGNAL SUCCESS RET ; ; IDE_GETMED @@ -985,6 +994,20 @@ PPIDE_INITDEV: LD DE,HB_TMPBUF ; POINT TO BUFFER DCALL DUMP_BUFFER ; DUMP IT IF DEBUGGING ; + ; DETERMINE IF CF DEVICE + LD HL,HB_TMPBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG + LD A,$8A ; FIRST BYTE OF MARKER IS $8A + CP (HL) ; COMPARE + JR NZ,PPIDE_INITDEV1 ; IF NO MATCH, NOT CF + INC HL + LD A,$84 ; SECOND BYTE OF MARKER IS $84 + CP (HL) ; COMPARE + JR NZ,PPIDE_INITDEV1 ; IF NOT MATCH, NOT CF + PPIDE_DPTR(PPIDE_CFFLAG) ; POINT HL TO CF FLAG FIELD + LD A,$FF ; SET FLAG VALUE TO NON-ZERO (TRUE) + LD (HL),A ; SAVE IT +; +PPIDE_INITDEV1: ; GET DEVICE CAPACITY AND SAVE IT PPIDE_DPTR(PPIDE_CAPACITY) ; POINT HL TO UNIT CAPACITY FIELD PUSH HL ; SAVE POINTER diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index 6d8442c7..1412e713 100644 --- a/Source/HBIOS/ppp.asm +++ b/Source/HBIOS/ppp.asm @@ -323,11 +323,18 @@ PPPCON_OST: ; ; PPPCON_INITDEV: -PPPCON_QUERY: CALL PANIC ; ; ; +PPPCON_QUERY: + LD DE,0 + LD HL,0 + XOR A + RET +; +; +; PPPCON_DEVICE: LD D,CIODEV_PPPCON ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT @@ -583,6 +590,7 @@ PPPSD_RESET: PPPSD_DEVICE: LD D,DIODEV_PPPSD ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index 53e658e5..88402ba6 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -198,11 +198,18 @@ PRPCON_OST1: ; ; PRPCON_INITDEV: -PRPCON_QUERY: CALL PANIC ; ; ; +PRPCON_QUERY: + LD DE,0 + LD HL,0 + XOR A + RET +; +; +; PRPCON_DEVICE: LD D,CIODEV_PRPCON ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT @@ -445,6 +452,7 @@ PRPSD_RESET: PRPSD_DEVICE: LD D,DIODEV_PRPSD ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 8f9ac91f..34d59791 100644 --- a/Source/HBIOS/rf.asm +++ b/Source/HBIOS/rf.asm @@ -127,6 +127,7 @@ RF_GEOM: RF_DEVICE: LD D,DIODEV_RF ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD C,%00110000 ; C := ATTRIBUTES, NON-REMOVALBE RAM FLOPPY XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/scg.asm b/Source/HBIOS/scg.asm index d18957c4..398dcbb5 100644 --- a/Source/HBIOS/scg.asm +++ b/Source/HBIOS/scg.asm @@ -43,7 +43,7 @@ SCG_INIT: 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 (SCG_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE LD D,VDAEMU ; DEFAULT EMULATION @@ -103,8 +103,9 @@ SCG_VDAINI: ; INITIALIZE EMULATION LD B,D ; EMULATION TYPE TO B - LD A,(SCG_CIOUNIT) ; CIO UNIT NUMBER - LD C,A ; ... IS PASSED IN C + ;LD A,(SCG_CIOUNIT) ; CIO UNIT NUMBER + ;LD C,A ; ... IS PASSED IN C + LD C,CIODEV_SCG ; PASS OUR DEVICE TYPE IN C LD DE,SCG_DISPATCH ; DISPATCH ADDRESS TO DE CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER LD (SCG_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS @@ -597,7 +598,7 @@ SCG_BLKCPY3: ; SCG DRIVER - DATA ;================================================================================================== ; -SCG_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +;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 diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index e0637040..8e6fdf85 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -511,6 +511,7 @@ SD_RESET: SD_DEVICE: LD D,DIODEV_SD ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT + LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/tty.asm b/Source/HBIOS/tty.asm index b947b6f8..1141d59f 100644 --- a/Source/HBIOS/tty.asm +++ b/Source/HBIOS/tty.asm @@ -15,10 +15,14 @@ ; TTY_INIT: ; 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 C,A ; VDA DRIVER'S DEVICE TYPE + LD (TTY_DEVTYPE),A ; ... SAVED LOCALLY LD (TTY_VDADISPADR),DE ; ALSO SAVE VDA DRIVER'S DISPATCH ADDRESS + LD DE,TTY_DISPATCH ; RETURN OUR DISPATCH ADDRESS + XOR A ; SIGNAL SUCCESS + RET ; RETURN ; +TTY_RESET: ; 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 @@ -28,9 +32,7 @@ TTY_INIT: LD DE,0 ; DE := 0, CURSOR TO HOME POSITION 0,0 LD (TTY_POS),DE ; SAVE CURSOR POSITION ; - LD DE,TTY_DISPATCH ; RETURN OUR DISPATCH ADDRESS - XOR A - RET + RET ; DONE ; ; ; @@ -43,65 +45,73 @@ TTY_VDADISPADR .EQU $ - 2 TTY_DISPATCH: LD A,B ; GET REQUESTED FUNCTION AND $0F ; ISOLATE SUB-FUNCTION - JR Z,TTY_IN ; $30 + JR Z,TTY_CIOIN ; $30 DEC A - JR Z,TTY_OUT ; $31 + JR Z,TTY_CIOOUT ; $31 DEC A - JR Z,TTY_IST ; $32 + JR Z,TTY_CIOIST ; $32 DEC A - JR Z,TTY_OST ; $33 + JR Z,TTY_CIOOST ; $33 DEC A - JR Z,TTY_INITDEV ; $34 + JR Z,TTY_CIOINIT ; $34 DEC A - JR Z,TTY_QUERY ; $35 + JR Z,TTY_CIOQUERY ; $35 DEC A - JR Z,TTY_DEVICE ; $36 + JR Z,TTY_CIODEVICE ; $36 CALL PANIC ; ; ; -TTY_IN: +TTY_CIOIN: LD B,BF_VDAKRD ; SET FUNCTION TO KEYBOARD READ JP TTY_VDADISP ; CHAIN TO VDA DISPATCHER ; ; ; -TTY_OUT: +TTY_CIOOUT: CALL TTY_DOCHAR ; HANDLE THE CHARACTER (EMULATION ENGINE) XOR A ; SIGNAL SUCCESS RET ; ; ; -TTY_IST: +TTY_CIOIST: LD B,BF_VDAKST ; SET FUNCTION TO KEYBOARD STATUS JP TTY_VDADISP ; CHAIN TO VDA DISPATCHER ; ; ; -TTY_OST: +TTY_CIOOST: XOR A ; ZERO ACCUM INC A ; A := $FF TO SIGNAL OUTPUT BUFFER READY RET ; ; ; -TTY_INITDEV: - XOR A ; SIGNAL SUCCESS - RET ; AND RETURN +TTY_CIOINIT: + ; SETUP AND FORWARD CALL TO PARENT VDA DRIVER'S VDAINIT FUNCTION + LD B,BF_VDAINI ; WE ARE FORWARDING TO VDAINIT FUNCTION + LD A,(TTY_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR + LD C,A ; AND PUT IT IN C + LD D,L ; TERMTYPE TO D + LD E,0 ; VIDEO MODE = 0 + LD HL,0 ; NO BITMAP, LEAVE IT ALONG + JP TTY_VDADISP ; LET VDA DRIVER HANDLE IT FROM HERE ; ; ; -TTY_QUERY: - CALL PANIC ; NOT IMPLEMENTED +TTY_CIOQUERY: + LD DE,0 + LD HL,0 + XOR A RET ; ; ; -TTY_DEVICE: - LD A,(TTY_CIOUNIT) ; PARENT VDA CIO UNIT +TTY_CIODEVICE: + LD A,(TTY_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR LD D,A ; AND PASS BACK IN D - LD E,C ; E := PHYSICAL UNIT + LD E,C ; E := DEVICE NUMBER XOR A ; SIGNAL SUCCESS RET ; @@ -184,4 +194,4 @@ TTY_DIM: TTY_COLS .DB 80 ; NUMBER OF COLUMNS ON SCREEN TTY_ROWS .DB 24 ; NUMBER OF ROWS ON SCREEN ; -TTY_CIOUNIT .DB $FF ; CIO UNIT NUMBER OF PARENT VDA +TTY_DEVTYPE .DB $FF ; DEVICE TYPE OF PARENT VDA'S CIO DEVICE diff --git a/Source/HBIOS/uart.asm b/Source/HBIOS/uart.asm index 7453b6b6..1bb7cdd3 100644 --- a/Source/HBIOS/uart.asm +++ b/Source/HBIOS/uart.asm @@ -250,11 +250,18 @@ UART0_OST: RET ; UART0_INITDEV: -UART0_QUERY: CALL PANIC ; ; ; +UART0_QUERY: + LD DE,UART0BAUD >> 16 + LD HL,UART0BAUD & $FFFF + XOR A + RET +; +; +; UART0_DEVICE: LD D,CIODEV_UART ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT @@ -355,11 +362,18 @@ UART1_OST: RET ; UART1_INITDEV: -UART1_QUERY: CALL PANIC ; ; ; +UART1_QUERY: + LD DE,UART1BAUD >> 16 + LD HL,UART1BAUD & $FFFF + XOR A + RET +; +; +; UART1_DEVICE: LD D,CIODEV_UART ; D := DEVICE TYPE LD E,C ; E := PHYSICAL UNIT diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index 83691705..0d33f053 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -83,6 +83,8 @@ PC_PRTCHR: POP AF RET +NEWLINE2: + CALL NEWLINE NEWLINE: CALL PC_CR CALL PC_LF @@ -524,7 +526,7 @@ BYTE2BCD1: DELAY: ; 17TS (FROM INVOKING CALL) | LD A,(CPUSCL) ; 13TS | ; | -DELAY1: ; | +DELAY1: ; | ; --- LOOP = ((CPUSCL * 16) - 5) TS ------------+ | DEC A ; 4TS | | #IFDEF CPU_Z180 ; | | @@ -543,7 +545,7 @@ DELAY1: ; | ; IMPACT OF OVERHEAD DIMINISHES AS DE AND/OR CPU SPEED INCREASES ; ; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US OUTER LOOP COST -; NOTE: CPUSCL MUST BE >= 3! +; NOTE: CPUSCL MUST BE > 0! ; ; EXAMPLE: 8MHZ CPU, DE=6250 (DELAY GOAL IS .1 SEC OR 100,000US) ; INNER LOOP = ((16 * 6) - 5) = 91TS @@ -594,26 +596,28 @@ 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 +#IF (PLATFORM == PLT_UNA) + LD C,$F9 ; UBIOS FUNC=GET CPU INFO + RST 08 ; E := CPU MHZ + LD E,A ; PUT SPEED IN MHZ IN ACCUM +#ELSE 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 - RET NC ; IF >= 1, WE ARE ALL DONE, RETURN - LD A,1 ; OTHERWISE, SET MIN VALUE - LD (CPUSCL),A ; AND SAVE IT +#ENDIF + SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS + LD (CPUSCL),A ; UPDATE CPU SCALER VALUE + CP 1 ; CHECK FOR MINIMUM VALUE ALLOWED + RET NC ; IF >= 1, WE ARE ALL DONE, RETURN + 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 +CPUSCL .DB 1 ; CPU SCALER MUST BE > 0 #ELSE -CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ +CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ #ENDIF ; #ENDIF diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index fa9ad785..4120e2d5 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -39,7 +39,7 @@ 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 (VDU_CIOUNIT),A ; SAVE IT LOCALLY LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE LD D,VDAEMU ; DEFAULT EMULATION @@ -99,8 +99,9 @@ VDU_VDAINI: ; INITIALIZE EMULATION LD B,D ; EMULATION TYPE TO B - LD A,(VDU_CIOUNIT) ; CIO UNIT NUMBER - LD C,A ; ... IS PASSED IN C + ;LD A,(VDU_CIOUNIT) ; CIO UNIT NUMBER + ;LD C,A ; ... IS PASSED IN C + LD C,CIODEV_VDU ; PASS OUR DEVICE TYPE IN C LD DE,VDU_DISPATCH ; DISPATCH ADDRESS TO DE CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER LD (VDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS @@ -468,7 +469,7 @@ VDU_RSCROLL: ; VDU DRIVER - DATA ;================================================================================================== ; -VDU_CIOUNIT .DB $FF ; LOCAL COPY OF OUR CIO UNIT NUMBER +;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 diff --git a/Source/HBIOS/ver.inc b/Source/HBIOS/ver.inc index 7ae71b71..89ffed7b 100644 --- a/Source/HBIOS/ver.inc +++ b/Source/HBIOS/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 8 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "2.8.0-alpha.0" +#DEFINE BIOSVER "2.8.0-pre.1"