@@ -106,7 +106,7 @@ ARCH_5150 EQU 'P' ; 5150
106
106
ARCH_5160 EQU 'X' ; 5160 v1
107
107
ARCH_5160v2 EQU 'Y' ; 5160 v2/3
108
108
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 )
110
110
ARCH_FE2010 EQU 'F' ; Faraday FE2010A
111
111
ARCH_EHB EQU 'H' ; EMM Computers/Homebrew8088
112
112
ARCH_EMU EQU 'E' ; 86Box/Emulator
@@ -135,10 +135,10 @@ TURBO_REV EQU 2 ; reversed PPI B (bit 3)
135
135
;
136
136
VER_NAME EQU 'GLaBIOS'
137
137
IFNDEF VER_NUM
138
- VER_NUM EQU '0.2.0 ' ; (max 6 chars)
138
+ VER_NUM EQU '0.2.1 ' ; (max 6 chars)
139
139
ENDIF
140
140
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
142
142
ENDIF
143
143
IFNDEF COPY_YEAR
144
144
COPY_YEAR EQU '2022' ; can be set at build time
@@ -160,7 +160,7 @@ VER_BLD EQU '0000'
160
160
;ARCH_TYPE EQU ARCH_5160 ; PC 5160 (recommended for non-Turbo)
161
161
;ARCH_TYPE EQU ARCH_5160v2 ; PC 5160v2 (not recommended)
162
162
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)
164
164
;ARCH_TYPE EQU ARCH_FE2010 ; Faraday FE2010A
165
165
;ARCH_TYPE EQU ARCH_EHB ; EMM Computers/Homebrew 8088
166
166
;ARCH_TYPE EQU ARCH_EMU ; 86Box/Emulator (will not work
@@ -252,6 +252,7 @@ FD_AUTO_DETECT = 0 ; Auto-detect number of floppy drives
252
252
; use only for DIP switch-less PCs!
253
253
POST_ERR_WAIT = 1 ; Wait for Any Key press to continue if
254
254
; there is a POST error
255
+ INT_19_BOOT_HD = 0 ; Try IPL to floppy then hard drive (80h)
255
256
256
257
;----------------------------------------------------------------------------;
257
258
; END Configurable Build Options
@@ -290,9 +291,9 @@ TURBO_TYPE = TURBO_NONE ; disable Turbo features
290
291
TURBO_TYPE = TURBO_NONE ; disable Turbo features
291
292
ENDIF
292
293
293
- IF ARCH_TYPE EQ ARCH_ST12
294
+ IF ARCH_TYPE EQ ARCH_TD3300
294
295
;----------------------------------------------------------------------------;
295
- ; Configuration for ST-xx/ 90h board
296
+ ; Configuration for TD3300A ( 90h register)
296
297
;
297
298
BASIC_ROM = 0 ; disable to free code space
298
299
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
346
347
TURBO_TYPE = TURBO_NONE ; disable Turbo features
347
348
POST_ERR_WAIT = 0 ; only warn POST errors (since DMA
348
349
; and FDC are optional)
350
+ INT_19_BOOT_HD = 1 ; Try IPL to floppy then HD
349
351
ENDIF
350
352
351
353
IF ARCH_TYPE EQ ARCH_EMU
@@ -581,7 +583,7 @@ ATKB_CMD EQU 64H ; 8042 Keyboard command/status register
581
583
; POST TEST card I/O
582
584
POST_CARD_PORT EQU 80H ; can be 60H, 80H, 300H, 313H
583
585
584
- ; TD3300A/ ST-xx/UNIQUE Control Registers
586
+ ; TD3300A ( ST-xx/UNIQUE/Auva) Control Registers (90h)
585
587
TD_WS EQU 70H ; RAM, I/O wait state control
586
588
TD_TURBO EQU 90H ; Write 2 for Turbo, 3 for Normal
587
589
@@ -2341,7 +2343,7 @@ RESET_PPI:
2341
2343
MOV AL , PPI_B_BOOT ; KB hold low+disable, NMI on, spkr off
2342
2344
OUT PPI_B , AL ; send to 8255 Port B
2343
2345
2344
- IF ARCH_TYPE EQ ARCH_ST12
2346
+ IF ARCH_TYPE EQ ARCH_TD3300
2345
2347
;----------------------------------------------------------------------------;
2346
2348
; Set up Turbo mode for ST-xx
2347
2349
;
@@ -2352,7 +2354,7 @@ RESET_PPI:
2352
2354
MOV AL , 0011B
2353
2355
ENDIF
2354
2356
OUT TD_TURBO , AL ; write new register
2355
- ENDIF ; ENDIF ARCH_ST12
2357
+ ENDIF ; ENDIF ARCH_TD3300
2356
2358
2357
2359
IF POST_TEST_CHK_ROM EQ 1
2358
2360
;----------------------------------------------------------------------------;
@@ -2912,7 +2914,7 @@ SETTINGS_FE2010:
2912
2914
OUT PPI_B , AL ; port 61H Control Register
2913
2915
AND AL , MASK PBTB ; Turbo bit set?
2914
2916
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
2916
2918
SETTINGS_FE2010_1:
2917
2919
OUT PPI_C , AL ; write 0 to port 62H Switch Register
2918
2920
IN AL , PPI_C ; port 62H Switch Register
@@ -3098,7 +3100,7 @@ TOGGLE_TURBO PROC
3098
3100
ASSUME DS :_BDA
3099
3101
CLI ; interrupts off
3100
3102
3101
- IF ARCH_TYPE EQ ARCH_ST12
3103
+ IF ARCH_TYPE EQ ARCH_TD3300
3102
3104
;----------------------------------------------------------------------------;
3103
3105
; ST-xx Port 90h Turbo switch
3104
3106
; If port 90 == 1, send 2 (0010b) Normal -> Turbo
@@ -3129,10 +3131,10 @@ TOGGLE_TURBO PROC
3129
3131
CALL FE2010_SETUP_SAVE ; write to memory and register
3130
3132
XCHG AX , CX ; restore AX
3131
3133
ENDIF ; ARCH_FE2010
3132
- ENDIF ; ARCH_ST12
3134
+ ENDIF ; ARCH_TD3300
3133
3135
3134
3136
MOV CX , CURSOR_DEFAULT ; original power-on cursor
3135
- IF ARCH_TYPE EQ ARCH_ST12
3137
+ IF ARCH_TYPE EQ ARCH_TD3300
3136
3138
CMP AL , 0011B ; turbo on?
3137
3139
ELSE
3138
3140
TEST AL , MASK PBTB ; turbo bit set?
@@ -3208,6 +3210,7 @@ V40_REG_LOOP:
3208
3210
MOV AL , 0AAH ; Test Controller
3209
3211
OUT ATKB_CMD , AL ; OUT Command Port (64h)
3210
3212
IO_DELAY
3213
+ IN AL , ATKB_IO ; Read Data Port and discard (60h)
3211
3214
3212
3215
MOV AL , 01100000B ; Write Command Byte to Keyboard Controller
3213
3216
OUT ATKB_CMD , AL ; OUT Command Port (64h)
@@ -3764,16 +3767,29 @@ CLEAR_POST_SCREEN:
3764
3767
;----------------------------------------------------------------------------;
3765
3768
3766
3769
;----------------------------------------------------------------------------;
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:)
3768
3772
;
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
3771
3776
BOOT_RETRY:
3772
3777
PUSH CX ; save retry counter
3778
+ IF INT_19_BOOT_HD EQ 1
3779
+ PUSH DX ; save drive number
3780
+ ENDIF
3773
3781
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
3775
3786
POP CX ; restore retry counter
3776
3787
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
+
3777
3793
TRY_INT_18:
3778
3794
INT 18H ; Try vectored ROM BASIC or boot failure
3779
3795
; INT 18h should never return...
0 commit comments