Skip to content

Commit bd142d6

Browse files
committed
v0.2.1 update
1 parent 39fcfef commit bd142d6

File tree

1 file changed

+33
-17
lines changed

1 file changed

+33
-17
lines changed

src/GLABIOS.ASM

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ ARCH_5150 EQU 'P' ; 5150
106106
ARCH_5160 EQU 'X' ; 5160 v1
107107
ARCH_5160v2 EQU 'Y' ; 5160 v2/3
108108
ARCH_TURBO EQU 'T' ; Standard Turbo or clone
109-
ARCH_ST12 EQU 'S' ; ST-xx/UNIQUE (TD3300A)
109+
ARCH_TD3300 EQU 'S' ; TD3300A (ST-xx/UNIQUE/Auva)
110110
ARCH_FE2010 EQU 'F' ; Faraday FE2010A
111111
ARCH_EHB EQU 'H' ; EMM Computers/Homebrew8088
112112
ARCH_EMU EQU 'E' ; 86Box/Emulator
@@ -135,10 +135,10 @@ TURBO_REV EQU 2 ; reversed PPI B (bit 3)
135135
;
136136
VER_NAME EQU 'GLaBIOS'
137137
IFNDEF VER_NUM
138-
VER_NUM EQU '0.2.0' ; (max 6 chars)
138+
VER_NUM EQU '0.2.1' ; (max 6 chars)
139139
ENDIF
140140
IFNDEF VER_DATE
141-
VER_DATE EQU '12/02/22' ; must be MM/DD/YY format
141+
VER_DATE EQU '12/05/22' ; must be MM/DD/YY format
142142
ENDIF
143143
IFNDEF COPY_YEAR
144144
COPY_YEAR EQU '2022' ; can be set at build time
@@ -160,7 +160,7 @@ VER_BLD EQU '0000'
160160
;ARCH_TYPE EQU ARCH_5160 ; PC 5160 (recommended for non-Turbo)
161161
;ARCH_TYPE EQU ARCH_5160v2 ; PC 5160v2 (not recommended)
162162
ARCH_TYPE EQU ARCH_TURBO ; Standard Turbo
163-
;ARCH_TYPE EQU ARCH_ST12 ; ST-xx/UNIQUE Port 90h
163+
;ARCH_TYPE EQU ARCH_TD3300 ; TD3300A (ST-xx/UNIQUE/Auva)
164164
;ARCH_TYPE EQU ARCH_FE2010 ; Faraday FE2010A
165165
;ARCH_TYPE EQU ARCH_EHB ; EMM Computers/Homebrew 8088
166166
;ARCH_TYPE EQU ARCH_EMU ; 86Box/Emulator (will not work
@@ -252,6 +252,7 @@ FD_AUTO_DETECT = 0 ; Auto-detect number of floppy drives
252252
; use only for DIP switch-less PCs!
253253
POST_ERR_WAIT = 1 ; Wait for Any Key press to continue if
254254
; there is a POST error
255+
INT_19_BOOT_HD = 0 ; Try IPL to floppy then hard drive (80h)
255256

256257
;----------------------------------------------------------------------------;
257258
; END Configurable Build Options
@@ -290,9 +291,9 @@ TURBO_TYPE = TURBO_NONE ; disable Turbo features
290291
TURBO_TYPE = TURBO_NONE ; disable Turbo features
291292
ENDIF
292293

293-
IF ARCH_TYPE EQ ARCH_ST12
294+
IF ARCH_TYPE EQ ARCH_TD3300
294295
;----------------------------------------------------------------------------;
295-
; Configuration for ST-xx/90h board
296+
; Configuration for TD3300A (90h register)
296297
;
297298
BASIC_ROM = 0 ; disable to free code space
298299
FDC_HLT_WAIT = 0 ; seems to cause issues on ST-xx
@@ -346,6 +347,7 @@ FD_AUTO_DETECT = 1 ; auto-detect number of floppy drives
346347
TURBO_TYPE = TURBO_NONE ; disable Turbo features
347348
POST_ERR_WAIT = 0 ; only warn POST errors (since DMA
348349
; and FDC are optional)
350+
INT_19_BOOT_HD = 1 ; Try IPL to floppy then HD
349351
ENDIF
350352

351353
IF ARCH_TYPE EQ ARCH_EMU
@@ -581,7 +583,7 @@ ATKB_CMD EQU 64H ; 8042 Keyboard command/status register
581583
; POST TEST card I/O
582584
POST_CARD_PORT EQU 80H ; can be 60H, 80H, 300H, 313H
583585

584-
; TD3300A/ST-xx/UNIQUE Control Registers
586+
; TD3300A (ST-xx/UNIQUE/Auva) Control Registers (90h)
585587
TD_WS EQU 70H ; RAM, I/O wait state control
586588
TD_TURBO EQU 90H ; Write 2 for Turbo, 3 for Normal
587589

@@ -2341,7 +2343,7 @@ RESET_PPI:
23412343
MOV AL, PPI_B_BOOT ; KB hold low+disable, NMI on, spkr off
23422344
OUT PPI_B, AL ; send to 8255 Port B
23432345

2344-
IF ARCH_TYPE EQ ARCH_ST12
2346+
IF ARCH_TYPE EQ ARCH_TD3300
23452347
;----------------------------------------------------------------------------;
23462348
; Set up Turbo mode for ST-xx
23472349
;
@@ -2352,7 +2354,7 @@ RESET_PPI:
23522354
MOV AL, 0011B
23532355
ENDIF
23542356
OUT TD_TURBO, AL ; write new register
2355-
ENDIF ; ENDIF ARCH_ST12
2357+
ENDIF ; ENDIF ARCH_TD3300
23562358

23572359
IF POST_TEST_CHK_ROM EQ 1
23582360
;----------------------------------------------------------------------------;
@@ -2912,7 +2914,7 @@ SETTINGS_FE2010:
29122914
OUT PPI_B, AL ; port 61H Control Register
29132915
AND AL, MASK PBTB ; Turbo bit set?
29142916
JZ SETTINGS_FE2010_1 ; jump if not turbo (AH already 0)
2915-
MOV AX, DBW <FE_CR <,,,,1,>> ; set default with FPU bit, clear AL
2917+
MOV AX, DBW <FE_CR <,,,,1,>> ; set AH default with FPU bit, clear AL
29162918
SETTINGS_FE2010_1:
29172919
OUT PPI_C, AL ; write 0 to port 62H Switch Register
29182920
IN AL, PPI_C ; port 62H Switch Register
@@ -3098,7 +3100,7 @@ TOGGLE_TURBO PROC
30983100
ASSUME DS:_BDA
30993101
CLI ; interrupts off
31003102

3101-
IF ARCH_TYPE EQ ARCH_ST12
3103+
IF ARCH_TYPE EQ ARCH_TD3300
31023104
;----------------------------------------------------------------------------;
31033105
; ST-xx Port 90h Turbo switch
31043106
; If port 90 == 1, send 2 (0010b) Normal -> Turbo
@@ -3129,10 +3131,10 @@ TOGGLE_TURBO PROC
31293131
CALL FE2010_SETUP_SAVE ; write to memory and register
31303132
XCHG AX, CX ; restore AX
31313133
ENDIF ; ARCH_FE2010
3132-
ENDIF ; ARCH_ST12
3134+
ENDIF ; ARCH_TD3300
31333135

31343136
MOV CX, CURSOR_DEFAULT ; original power-on cursor
3135-
IF ARCH_TYPE EQ ARCH_ST12
3137+
IF ARCH_TYPE EQ ARCH_TD3300
31363138
CMP AL, 0011B ; turbo on?
31373139
ELSE
31383140
TEST AL, MASK PBTB ; turbo bit set?
@@ -3208,6 +3210,7 @@ V40_REG_LOOP:
32083210
MOV AL, 0AAH ; Test Controller
32093211
OUT ATKB_CMD, AL ; OUT Command Port (64h)
32103212
IO_DELAY
3213+
IN AL, ATKB_IO ; Read Data Port and discard (60h)
32113214

32123215
MOV AL, 01100000B ; Write Command Byte to Keyboard Controller
32133216
OUT ATKB_CMD, AL ; OUT Command Port (64h)
@@ -3764,16 +3767,29 @@ CLEAR_POST_SCREEN:
37643767
;----------------------------------------------------------------------------;
37653768

37663769
;----------------------------------------------------------------------------;
3767-
; Attempt to IPL three times from drive 0h. If failure, call INT 18h / ROM BASIC.
3770+
; Attempt to IPL three times. If failure, call INT 18h / ROM BASIC.
3771+
; If INT_19_BOOT_HD is 1, BIOS will also attempt to IPL from 80h (C:)
37683772
;
3769-
CWD ; IPL from drive 0 A: (DL = 0h)
3770-
MOV CX, 3 ; retry IPL 3 times
3773+
CWD ; start IPL from drive 0 (A:)
3774+
BOOT_DEVICE:
3775+
MOV CX, 3 ; retry three times
37713776
BOOT_RETRY:
37723777
PUSH CX ; save retry counter
3778+
IF INT_19_BOOT_HD EQ 1
3779+
PUSH DX ; save drive number
3780+
ENDIF
37733781
INT 19H
3774-
IO_DELAY_LONG
3782+
IO_DELAY_LONG ; delay between attempts
3783+
IF INT_19_BOOT_HD EQ 1
3784+
POP DX ; restore drive number
3785+
ENDIF
37753786
POP CX ; restore retry counter
37763787
LOOP BOOT_RETRY
3788+
IF INT_19_BOOT_HD EQ 1
3789+
XOR DL, 80H ; flip to HD
3790+
JNZ BOOT_DEVICE ; retry if HD, otherwise INT 18
3791+
ENDIF
3792+
37773793
TRY_INT_18:
37783794
INT 18H ; Try vectored ROM BASIC or boot failure
37793795
; INT 18h should never return...

0 commit comments

Comments
 (0)