Category : Assembly Language Source Code
Archive   : BIOS386.ZIP
Filename : BIOS.LST

 
Output of file : BIOS.LST contained in archive : BIOS386.ZIP
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 1


PAGE 59,132

;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ ÛÛ
;ÛÛ BIOS ÛÛ
;ÛÛ ÛÛ
;ÛÛ Created: ÛÛ
;ÛÛ Version: ÛÛ
;ÛÛ Passes: 5 Analysis Options on: HQRS ÛÛ
;ÛÛ (C)1985-1990, American Megatrends Inc. All Rights ÛÛ
;ÛÛ ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

.386p

.387

= 0065 data_3e equ 65h ; (0000:0065=0)
= 0068 data_4e equ 68h ; (0000:0068=0FE6Eh)
= 006A data_5e equ 6Ah ; (0000:006A=0F000h)
= 0070 data_6e equ 70h ; (0000:0070=3C0h)
= 0072 data_7e equ 72h ; (0000:0072=0D3D1h)
= 0074 video_hdw_off equ 74h ; (0000:0074=0F0A4h)
= 0078 disk_parm_off equ 78h ; (0000:0078=522h)
= 007C graph_tbl_off equ 7Ch ; (0000:007C=4CF0h)
= 007E graph_tbl_seg equ 7Eh ; (0000:007E=0C80Eh)
= 01FE data_8e equ 1FEh ; (0000:01FE=0)
= 0280 data_9e equ 280h ; (0000:0280=0)
= 0282 data_10e equ 282h ; (0000:0282=0)
= 0284 data_11e equ 284h ; (0000:0284=0)
= 0286 data_12e equ 286h ; (0000:0286=0)
= 0288 data_13e equ 288h ; (0000:0288=0)
= 028A data_14e equ 28Ah ; (0000:028A=0)
= 028C data_15e equ 28Ch ; (0000:028C=0)
= 028E data_16e equ 28Eh ; (0000:028E=0)
= 0818 data_18e equ 818h ; (0000:0818=4EF0h)
= 081A data_19e equ 81Ah ; (0000:081A=7003h)
= 0820 data_20e equ 820h ; (0000:0820=3)
= 0822 data_21e equ 822h ; (0000:0822=1)
= 082C data_22e equ 82Ch ; (0000:082C=2212h)
= 0472 data_24e equ 472h ; (0040:0472=80h)
= 20FE data_25e equ 20FEh ; (0040:20FE=16h)
= 2032 data_26e equ 2032h ; (02F8:2032=26C1h)
= 3434 data_27e equ 3434h ; (02F8:3434=1703h)
= 2000 data_28e equ 2000h ; (B800:2000=720h)
= 0000 rom_chk_word equ 0 ; (C000:0000=0AA55h)
= 0002 rom_chk_size equ 2 ; (C000:0002=40h)
= 0010 data_29e equ 10h ; (C000:0010=20h)
= 0011 data_30e equ 11h ; (C000:0011=52h)
= 0012 data_31e equ 12h ; (C000:0012=45h)
= 0013 data_32e equ 13h ; (C000:0013=4553h)
= 0017 data_33e equ 17h ; (C000:0017=45h)
= 003E data_34e equ 3Eh ; (C000:003E=39h)
= 003F data_35e equ 3Fh ; (C000:003F=30h)
= 0040 data_36e equ 40h ; (C000:0040=0)
= 0041 data_37e equ 41h ; (C000:0041=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 2

= 0042 data_38e equ 42h ; (C000:0042=20h)
= 0043 data_39e equ 43h ; (C000:0043=43h)
= 0063 data_40e equ 63h ; (C000:0063=2030h)
= 0065 data_41e equ 65h ; (C000:0065=54h)
= 0067 data_42e equ 67h ; (C000:0067=4449h)
= 0069 data_43e equ 69h ; (C000:0069=4E45h)
= 006C data_44e equ 6Ch ; (C000:006C=4D20h)
= 006E data_45e equ 6Eh ; (C000:006E=4349h)
= 0070 data_46e equ 70h ; (C000:0070=52h)
= 0072 data_47e equ 72h ; (C000:0072=5953h)
= 0075 data_48e equ 75h ; (C000:0075=54h)
= 0078 data_49e equ 78h ; (C000:0078=2053h)
= 007A data_50e equ 7Ah ; (C000:007A=4E49h)
= 007C data_51e equ 7Ch ; (C000:007C=2E43h)
= 007E data_52e equ 7Eh ; (C000:007E=0A0Dh)
= 008B data_53e equ 8Bh ; (C000:008B=74h)
= 008F data_54e equ 8Fh ; (C000:008F=38h)
= 0090 data_55e equ 90h ; (C000:0090=2D37h)
= 0092 data_57e equ 92h ; (C000:0092=3931h)
= 0094 data_58e equ 94h ; (C000:0094=3039h)
= 0096 data_59e equ 96h ; (C000:0096=20h)
= 0097 data_60e equ 97h ; (C000:0097=51h)
= 0098 data_61e equ 98h ; (C000:0098=75h)
= 00A0 data_62e equ 0A0h ; (C000:00A0=6Fh)

;-------------------------------------------------------------- seg_a ----

seg_a segment at 0

0000:0000 B4AC vector_0h_off dw 0B4ACh ; Divide error
0000:0002 11FD vector_0h_seg dw 11FDh
0000:0004 06F4 vector_1h_off dw 6F4h ; Single Step
0000:0006 0070 vector_1h_seg dw 70h
0000:0008 0016 vector_2h_off dw 16h ; NMI
0000:000A 1033 vector_2h_seg dw 1033h
0000:000C 06F4 vector_3h_off dw 6F4h ; Debug
0000:000E 0070 vector_3h_seg dw 70h
0000:0010 06F4 vector_4h_off dw 6F4h ; Overflow
0000:0012 0070 vector_4h_seg dw 70h
0000:0014 FF54 vector_5h_off dw 0FF54h ; Print Screen
0000:0016 F000 vector_5h_seg dw 0F000h
0000:0018 EB29 vector_6h_off dw 0EB29h
0000:001A F000 vector_6h_seg dw 0F000h
0000:001C EA7D vector_7h_off dw 0EA7Dh
0000:001E F000 vector_7h_seg dw 0F000h
0000:0020 003C vector_8h_off dw 3Ch ; Timer Ticks
0000:0022 1033 vector_8h_seg dw 1033h
0000:0024 0452 vector_9h_off dw 452h ; Keyboard
; xref F000:E929
0000:0026 D3D1 vector_9h_seg dw 0D3D1h ; xref F000:E92F
0000:0028 0057 vector_Ah_off dw 57h
0000:002A 1033 vector_Ah_seg dw 1033h
0000:002C 006F vector_Bh_off dw 6Fh ; Serial
0000:002E 1033 vector_Bh_seg dw 1033h
0000:0030 1EC3 vector_Ch_off dw 1EC3h ; Serial
0000:0032 D00F vector_Ch_seg dw 0D00Fh
0000:0034 CAB5 vector_Dh_off dw 0CAB5h ; Disk
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 3

0000:0036 11FD vector_Dh_seg dw 11FDh
0000:0038 00B7 vector_Eh_off dw 0B7h ; Diskette
0000:003A 1033 vector_Eh_seg dw 1033h
0000:003C 06F4 vector_Fh_off dw 6F4h ; Bad Interrupt
0000:003E 0070 vector_Fh_seg dw 70h
0000:0040 02E7 vectr_10h_off dw 2E7h ; Video
; xref F000:D1AB, F000:D1FD
0000:0042 D3D1 vectr_10h_seg dw 0D3D1h ; Data table (indexed access)
; xref F000:BF3A, F000:D1B4
; F000:D203
0000:0044 F84D vectr_11h_off dw 0F84Dh ; Equipment
0000:0046 F000 vectr_11h_seg dw 0F000h
0000:0048 F841 vectr_12h_off dw 0F841h ; Memory Size
0000:004A F000 vectr_12h_seg dw 0F000h
0000:004C 0774 vectr_13h_off dw 774h ; Disk Services
0000:004E 0070 vectr_13h_seg dw 70h

org 400h

0000:0400 F8 03 F8 02 E8 02 db 0F8h, 3, 0F8h, 2, 0E8h, 2
0000:0406 00 00 78 03 00 00 db 0, 0, 78h, 3, 0, 0
0000:040C 00 00 00 00 61 46 db 0, 0, 0, 0, 61h, 46h
0000:0412 BF db 0BFh
0000:0413 0280 main_ram_size_ dw 280h
0000:0415 00 00 80 00 00 24 db 0, 0, 80h, 0, 0, 24h
0000:041B 00 24 00 0D 1C 79 db 0, 24h, 0, 0Dh, 1Ch, 79h
0000:0421 15 67 22 08 0E 08 db 15h, 67h, 22h, 8, 0Eh, 8
0000:0427 0E 08 0E 08 0E 08 db 0Eh, 8, 0Eh, 8, 0Eh, 8
0000:042D 0E 08 0E 75 16 6E db 0Eh, 8, 0Eh, 75h, 16h, 6Eh
0000:0433 31 62 30 69 17 6F db 31h, 62h, 30h, 69h, 17h, 6Fh
0000:0439 18 73 1F 70 19 00 db 18h, 73h, 1Fh, 70h, 19h, 0
0000:043F 00 27 00 C0 00 00 db 0, 27h, 0, 0C0h, 0, 0
0000:0445 00 00 00 00 03 50 db 0, 0, 0, 0, 3, 50h
0000:044B 00 A0 10 00 00 4F db 0, 0A0h, 10h, 0, 0, 4Fh
0000:0451 18 00 00 00 00 00 db 18h, 0, 0, 0, 0, 0
0000:0457 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:045D 00 00 00 00 20 00 db 0, 0, 0, 0, 20h, 0
0000:0463 D4 03 db 0D4h, 3
0000:0465 29 30 db 29h, 30h
0000:0467 0522 @gen_io_ptr_ dw 522h
0000:0469 87 90 FF db 87h, 90h, 0FFh
0000:046C BE78 timer_low_ dw 0BE78h
0000:046E 0F 00 00 00 db 0Fh, 0, 0, 0
0000:0472 1200 warm_boot_flag_ dw 1200h ; Data table (indexed access)
0000:0474 00 01 00 00 14 14 db 0, 1, 0, 0, 14h, 14h
0000:047A 14 34 01 01 01 01 db 14h, 34h, 1, 1, 1, 1
0000:0480 1E 00 3E 00 18 10 db 1Eh, 0, 3Eh, 0, 18h, 10h
0000:0486 00 60 09 11 0B 81 db 0, 60h, 9, 11h, 0Bh, 81h
0000:048C 50 00 00 db 50h, 0, 0
0000:048F 33 db 33h
0000:0490 02 hdsk0_media_st_ db 2
0000:0491 07 00 00 00 00 10 db 7, 0, 0, 0, 0, 10h
0000:0497 10 00 00 00 00 00 db 10h, 0, 0, 0, 0, 0
0000:049D 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:04A3 00 00 00 00 00 B8 db 0, 0, 0, 0, 0, 0B8h
0000:04A9 3C 0E C8 00 00 00 db 3Ch, 0Eh, 0C8h, 0, 0, 0
0000:04AF 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 4

0000:04B5 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:04BB 00 db 0
0000:04BC 0014[00] db 20 dup (0)

seg_a ends



;-------------------------------------------------------------- seg_b ----

seg_b segment at 40h


; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û PRIMARY BIOS DATA AREA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0000 03F8 @rs232_port_1 dw 3F8h ; RS-232 port addresses
; xref F000:AA6E, F000:AA75
; F000:AA89, F000:C5AF
0040:0002 02F8 @rs232_port_2 dw 2F8h
0040:0004 02E8 @rs232_port_3 dw 2E8h
0040:0006 0000 @rs232_port_4 dw 0
0040:0008 0378 @prn_port_1 dw 378h ; Printer port addresses
0040:000A 0000 @prn_port_2 dw 0
0040:000C 0000 @prn_port_3 dw 0
0040:000E 0000 BIOS_data_seg dw 0 ; Extended BIOS data (PS/2)or printer
; Printer 4 (PC,XT,AT & compatibles)
0040:0010 4661 equip_bits dw 4661h ; Equipment installed info bits
; 15 14 13 12 11 10 9 8
; \ / game \ /
; # of print port # of RS-232
; ports 0-3 used ports 0-4

; 7 6 5 4 3 2 1 0
; \ / \ / \ / Math |
; # of video mode RAM uP no
; disk- at boot up 00=16K dsk
; ettes 00=EGA 01=32K driv
; 1-4 01=CGA-40 10=48K if 0
; if bit 10=CGA-80 11=64K
; 0 = 1 11=MDA-80 (old PCs)

; Note: bit 13=modem on PC lap-tops
; bit 2=mouse on PS/2
;
; xref F000:8567, F000:9168
; F000:9176, F000:B1BB
; F000:F854
0040:0012 BF init_test_flag db 0BFh ; Initialization test
; xref F000:914A, F000:945A
; F000:ABA8, F000:ACEF
0040:0013 0280 main_ram_size dw 280h ; Base memory size 0-1Meg, 1K steps
; xref F000:AC5A, F000:ACD1
; F000:BD82, F000:E9A3
; F000:F846
0040:0015 0000 chan_io_size dw 0 ; Channel i/o size
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 5


; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û KEYBOARD DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0017 80 keybd_flags_1 db 80h ; Keyboard flag bits
; 7 6 5 4 3 2 1 0
; ins- cap num scrl alt ctl lef rig
; sert --toggles--- --shifts down--

; xref F000:9B70, F000:9BDF
; F000:9C0A, F000:9C4E
; F000:9C96, F000:9CAC
; F000:9D24, F000:9DE2
; F000:9E01, F000:9E25
; F000:9E3F, F000:9E9B
; F000:9ED3, F000:9F58
; F000:9F5F, F000:9FAC
; F000:A10E
0040:0018 00 keybd_flags_2 db 0 ; Keyboard flag bits
; 7 6 5 4
; insert caps num scroll
; ------now depressed------

; 3 2 1 0
; pause sys left right
; lock request -alt-down-
;
; xref F000:9BC3, F000:9BCD
; F000:9BFA, F000:9BFE
; F000:9C35, F000:9C67
; F000:9C79, F000:9C80
; F000:9CA2, F000:9D41
; F000:9D5D, F000:9E91
; F000:9E97, F000:9EA5
; F000:9EB0, F000:9EC7
; F000:9ECE, F000:A0FA
0040:0019 00 keybd_alt_num db 0 ; Alt & digit pad number buffr area
; xref F000:9C16, F000:9CD6
; F000:9CF7, F000:9D04
; F000:9D0A
0040:001A 0024 keybd_q_head dw 24h ; Head ptr of circular key queue
; empty if head ptr = tail ptr
; xref F000:941C, F000:9D79
; F000:9F84, F000:A05F
; F000:A0B7, F000:A144
; F000:A15C
0040:001C 0024 keybd_q_tail dw 24h ; Tail ptr of circular key queue
; empty if head ptr = tail ptr
; xref F000:941F, F000:9D7C
; F000:9F7C, F000:9F91
; F000:A063, F000:A0AF
; F000:A0BF, F000:A148
0040:001E 1C0D 1579 2267 keybd_queue dw 1C0Dh, 1579h, 2267h ; 15 key queue for keyboard
0040:0024 0E08 0E08 0E08 dw 0E08h, 0E08h, 0E08h
0040:002A 0E08 0E08 0E08 dw 0E08h, 0E08h, 0E08h
0040:0030 1675 316E 3062 dw 1675h, 316Eh, 3062h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 6

0040:0036 1769 186F 1F73 dw 1769h, 186Fh, 1F73h
0040:003C 1970 dw 1970h

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û DISK DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:003E 00 dsk_recal_stat db 0 ; Recalibrate floppy drive bits
; 3 2 1 0
; drive-3 drive-2 drive-1 drive-0

; bit 7 = interrupt flag
;
; xref F000:AECC, F000:B773
; F000:E837
0040:003F 00 dsk_motor_stat db 0 ; Motor running status & disk write
; bit 7=1 disk write in progress
; bits 6&5 = drive selected 0 to 3
; 3 2 1 0
; drive-3 drive-2 drive-1 drive-0
; --------- 1=motor on-----------

; xref F000:B950, F000:B95A
; F000:B960, F000:B970
; F000:B975, F000:B988
; F000:B9BA, F000:ED20
0040:0040 1D dsk_motor_tmr db 1Dh ; Motor timer, at 0, turn off motor
; xref F000:AEC2, F000:AFEF
; F000:B94B, F000:ED15
0040:0041 00 dsk_ret_code db 0 ; Controller return code
; 00h = ok
; 01h = bad command or parameter
; 02h = can't find address mark
; 03h = can't write, protected dsk
; 04h = sector not found
; 08h = DMA overrun
; 09h = DMA attempt over 64K bound
; 10h = bad CRC on disk read
; 20h = controller failure
; 40h = seek failure
; 80h = timeout, no response

; xref F000:AEA3, F000:AEAD
; F000:AEDE, F000:AEF1
; F000:AF23, F000:AF34
; F000:AF51, F000:AFDB
; F000:AFFE, F000:B0F5
; F000:B1AD, F000:B7C7
0040:0042 C0 dsk_status_1 db 0C0h ; Status bytes-disk controller chip
; Note: 7 info bytes returned from
; controller are saved here. Refer
; to the NEC uPD 765 chip manual
; for the specific info, depending
; on the previous command issued.
0040:0043 00 dsk_status_2 db 0
0040:0044 00 dsk_status_3 db 0
0040:0045 00 dsk_status_4 db 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 7

0040:0046 00 dsk_status_5 db 0
0040:0047 00 dsk_status_6 db 0
0040:0048 00 dsk_status_7 db 0

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û VIDEO DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0049 03 video_mode db 3 ; Present display mode(see int 10h)
; xref F000:85A7, F000:8720
; F000:872E, F000:874E
; F000:87C9, F000:8807
; F000:8919, F000:894A
; F000:8951, F000:899A
; F000:8A03, F000:8A36
; F000:8A3D, F000:8A79
; F000:8AAA, F000:8AB1
; F000:8B0D, F000:8C36
; F000:8CBD, F000:8CC4
; F000:8CFC, F000:9D4D
0040:004A 0050 video_columns dw 50h ; Number of columns
; xref F000:85D5, F000:869B
; F000:873B, F000:87F7
; F000:881D, F000:8833
; F000:8933, F000:898D
; F000:8A20, F000:8A94
; F000:8AFD, F000:8C39
; F000:8CAC, F000:8CD5
0040:004C 10A0 video_buf_siz dw 10A0h ; Video buffer size in bytes
; Note: size may be rounded up to
; the nearest 2K boundary. For
; example, 80x25 mode=4000 bytes,
; but value may be 4096.
; xref F000:85F0, F000:8797
; F000:8940, F000:8A2D
; F000:8AA1
0040:004E 0000 video_segment dw 0 ; Segment of active video memory
; MDA=0B000h, CGA=0B800h, etc.

; xref F000:85F5, F000:86A3
; F000:8719, F000:879B
; F000:8827
0040:0050 184F vid_curs_pos0 dw 184Fh ; Cursor position page 0
; bits 15-8=row, bits 7-0=column
; xref F000:8987, F000:8AF7
0040:0052 0000 vid_curs_pos1 dw 0 ; Cursor position page 1
; bits 15-8=row, bits 7-0=column
0040:0054 0000 vid_curs_pos2 dw 0 ; Cursor position page 2
; bits 15-8=row, bits 7-0=column
0040:0056 0000 vid_curs_pos3 dw 0 ; Cursor position page 3
; bits 15-8=row, bits 7-0=column
0040:0058 0000 vid_curs_pos4 dw 0 ; Cursor position page 4
; bits 15-8=row, bits 7-0=column
0040:005A 0000 vid_curs_pos5 dw 0 ; Cursor position page 5
; bits 15-8=row, bits 7-0=column
0040:005C 0000 vid_curs_pos6 dw 0 ; Cursor position page 6
; bits 15-8=row, bits 7-0=column
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 8

0040:005E 0000 vid_curs_pos7 dw 0 ; Cursor position page 7
; bits 15-8=row, bits 7-0=column

0040:0060 2000 vid_curs_mode dw 2000h ; Active cursor, start & end lines
; bits 12 to 8 for starting line
; bits 4 to 0 for ending line
; xref F000:863B, F000:866B
; F000:86D8
0040:0062 00 video_page db 0 ; Present page
; xref F000:85F8, F000:868A
; F000:8791, F000:8BFA
; F000:8C42
0040:0063 03D4 @video_port dw 3D4h ; Video controller base I/O address
; xref F000:85A3, F000:86AD
; F000:86E1, F000:8958
; F000:8A52, F000:8AC4
; F000:8BBC
0040:0065 29 video_mode_reg db 29h ; Hardware mode register bits
; xref F000:85BD, F000:865C
; F000:9D54
0040:0066 30 video_color db 30h ; Color set in CGA modes
; xref F000:85B2, F000:8665
; F000:8BA0, F000:8BB9

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û GENERAL DATA Û
; Û Note: next 5 bytes also used Û
; Û for cassette interface in Û
; Û older PCs. Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0067 0522 @gen_io_ptr dw 522h ; ROM initialization pointer
; xref F000:8FA3, F000:AB6A
; F000:AD07, F000:BD7F
; F000:BE54, F000:CACC
; F000:CB9B
0040:0069 9087 @gen_io_seg dw 9087h ; ROM i/o segment
; xref F000:AD45, F000:CAD2
; F000:CB96
0040:006B FF gen_int_occured db 0FFh ; Unused interrupt occurred
; xref F000:EAAC
0040:006C BE8B timer_low dw 0BE8Bh ; Timer, low word, cnts every 55 ms
; xref F000:D1E1, F000:ED49
; F000:ED56
0040:006E 000F timer_hi dw 0Fh ; Timer, high word
; xref F000:ED4D, F000:ED5A
0040:0070 00 timer_rolled db 0 ; Timer overflowed, non-zero when
; more than 24 hours have elapsed
; xref F000:ED45, F000:ED53
0040:0071 00 keybd_break db 0 ; Bit 7 set if break key depressed
; xref F000:9D7F
0040:0072 1200 warm_boot_flag dw 1200h ; Boot (reset) type
; 1234h=warm boot, no memory test
; 4321h=boot & save memory
; (PS/2 with MCA only)
; xref F000:9192, F000:9CB7
; F000:C082
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 9


; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û HARD DISK DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0074 00 hdsk_status_1 db 0 ; Hard disk status
; 00h = ok
; 01h = bad command or parameter
; 02h = can't find address mark
; 03h = can't write, protected dsk
; 04h = sector not found
; 05h = reset failure
; 07h = activity failure
; 08h = DMA overrun
; 09h = DMA attempt over 64K bound
; 0Ah = bad sector flag
; 0Bh = removed bad track
; 0Dh = wrong # of sectors, format
; 0Eh = removed control data addr
; mark
; 0Fh = out of limit DMA
; arbitration level
; 10h = bad CRC or ECC, disk read
; 11h = bad ECC corrected data
; 20h = controller failure
; 40h = seek failure
; 80h = timeout, no response
; AAh = not ready
; BBh = error occurred, undefined
; CCh = write error, selected dsk
; E0h = error register = 0
; FFh = disk sense failure
;
; xref F000:A1F5, F000:A238
; F000:A2AE, F000:A2B3
; F000:A2B8, F000:A3CB
; F000:A458, F000:A48C
; F000:A554, F000:A55E
; F000:A58C, F000:A5DD
; F000:A612, F000:A640
; F000:A6AB, F000:A6DB
; F000:A714, F000:A73F
; F000:A762, F000:A7C0
; F000:A823
0040:0075 01 hdsk_count db 1 ; Number of hard disk drives
; xref F000:A28C, F000:A2A0
; F000:A3C5, F000:A65B
0040:0076 00 hdsk_head_ctrl db 0 ; Head control (XT only)
; xref F000:A43A, F000:A4AA
; F000:A83B, F000:A842
0040:0077 00 hdsk_ctrl_port db 0 ; Hard disk control port (XT only)

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û I/O PORT TIMER, KEYBOARD DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0078 14 prn_timeout_1 db 14h ; Countdown timer waits for printer
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 10

; to respond (printer 1)
; xref F000:F88B
0040:0079 14 prn_timeout_2 db 14h ; Countdown timer waits for printer
; to respond
0040:007A 14 prn_timeout_3 db 14h
0040:007B 34 prn_timeout_4 db 34h
0040:007C 01 rs232_timeout_1 db 1 ; Countdown timer waits for RS-232
; port to respond (port 1)
; xref F000:F8EA
0040:007D 01 rs232_timeout_2 db 1 ; Countdown timer waits for RS-232
; port to respond
0040:007E 01 rs232_timeout_3 db 1
0040:007F 01 rs232_timeout_4 db 1
0040:0080 001E @keybd_begin dw 1Eh ; Ptr to beginning of keybd queue
; xref F000:9422, F000:9D76
; F000:A03F
0040:0082 003E @keybd_end dw 3Eh ; Ptr to end of keyboard queue
; xref F000:9428, F000:A039

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û ADVANCED VIDEO DATA, EGA/VGA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0084 18 video_rows db 18h ; Rows of characters on display - 1
; xref F000:858F, F000:9163
; F000:ECB4
0040:0085 0010 video_pixels dw 10h ; Number of pixels per charactr * 8
0040:0087 60 video_options db 60h ; Display adapter options
; bit 7 = clear RAM
; bits 6,5 = memory on adapter
; 00 - 64K
; 01 - 128K
; 10 - 192K
; 11 - 256K
; bit 4 = unused
; bit 3 = 0 if EGA/VGA active
; bit 2 = wait for display enable
; bit 1 = 1 - mono monitor
; = 0 - color monoitor
; bit 0 = 0 - handle cursor, CGA
0040:0088 09 video_switches db 9 ; Switch setting bits from adapter
; bits 7-4 = feature connector
; bits 3-0 = option switches
0040:0089 11 video_1_reservd db 11h ; Video reserved 1, EGA/VGA control
; bit 7 = 200 line mode
; bits 6,5 = unused
; bit 4 = 400 line mode
; bit 3 = no palette load
; bit 2 = mono monitor
; bit 1 = gray scale
; bit 0 = unused
0040:008A 0B video_2_reservd db 0Bh ; Video reserved 2

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û OTHER FLOPPY & HARD DISK DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 11

0040:008B 81 dsk_data_rate db 81h ; Last data rate for diskette
; bits 7 & 6 = 00 for 500K bit/sec
; = 01 for 300K bit/sec
; = 10 for 250K bit/sec
; bits 5 & 4 = step rate
0040:008C 50 hdsk_status_2 db 50h ; Hard disk status
; xref F000:A4FC, F000:A580
; F000:A6D5, F000:A711
; F000:A75C, F000:A772
0040:008D 00 hdsk_error db 0 ; Hard disk error
; xref F000:A277, F000:A5D1
; F000:A797
0040:008E 00 hdsk_int_flags db 0 ; Set for hard disk interrupt flag
; xref F000:A25A, F000:A745
; F000:A7D3, F000:E84B
0040:008F 33 hdsk_options db 33h ; Bit 0 = 1 when using 1 controller
; card for both hard disk & floppy
; xref F000:AE7D
0040:0090 02 hdsk0_media_st db 2 ; Media state for drive 0
; xref F000:BEAB
0040:0091 07 hdsk1_media_st db 7 ; Media state for drive 1
; 7 6 5 4
; data xfer rate two media
; 00=500K bit/s step known
; 01=300K bit/s
; 10=250K bit/s
; 3 2 1 0
; unused -----state of drive-----
; bits floppy drive state
; 000= 360K in 360K, ?
; 001= 360K in 1.2M, ?
; 010= 1.2M in 1.2M, ?
; 011= 360K in 360K, ok
; 100= 360K in 1.2M, ok
; 101= 1.2M in 1.2M, ok
; 111= state not defined

0040:0092 00 hdsk0_start_st db 0 ; Start state for drive 0
0040:0093 00 hdsk1_start_st db 0 ; Start state for drive 1
0040:0094 00 hdsk0_cylinder db 0 ; Track number for drive 0
0040:0095 00 hdsk1_cylinder db 0 ; Track number for drive 1

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û ADVANCED KEYBOARD DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0096 10 keybd_flags_3 db 10h ; Special keyboard type and mode
; bit 7 Reading ID of keyboard
; 6 last char is 1st ID char
; 5 force num lock
; 4 101/102 key keyboard
; 3 right alt key down
; 2 right ctrl key down
; 1 E0h hidden code last
; 0 E1h hidden code last
;
; xref F000:9B43, F000:9B4C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 12

; F000:9B55, F000:9B5C
; F000:9B69, F000:9B78
; F000:9B84, F000:9B8F
; F000:9BF1, F000:9C04
; F000:9C5E, F000:9DF4
; F000:9E79, F000:9FA4
; F000:A06A, F000:A070
; F000:A076, F000:A107
0040:0097 10 keybd_flags_4 db 10h ; Keyboard Flags (advanced keybd)
; 7 6 5 4 3 2 1 0
; xmit char Resend Ack \ /
; error was ID Rec'd Rec'd LEDs

; xref F000:9B18, F000:9B23
; F000:9FB6, F000:9FBF
; F000:9FC6, F000:9FDC
; F000:9FE1, F000:9FE5
; F000:9FEF, F000:9FFB
; F000:A045, F000:A04C

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û REAL-TIME CLOCK & LAN DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:0098 0000 @timer_wait_off dw 0 ; Ptr offset to wait done flag
; xref F000:CBFF
0040:009A 0000 @timer_wait_seg dw 0 ; Ptr segment to wait done flag
; xref F000:CC03
0040:009C 0000 timer_clk_low dw 0 ; Timer low word, 1 microsecond clk
; xref F000:CC07, F000:EA41
0040:009E 0000 timer_clk_hi dw 0 ; Timer high word
; xref F000:CC0B, F000:EA47
0040:00A0 00 timer_clk_flag db 0 ; Timer flag 00h = post acknowledgd
; 01h = busy
; 80h = posted
; xref F000:CBEF, F000:CBFA
0040:00A1 00 lan_1 db 0 ; Local area network bytes (7)
0040:00A2 00 lan_2 db 0
0040:00A3 00 lan_3 db 0
0040:00A4 00 lan_4 db 0
0040:00A5 00 lan_5 db 0
0040:00A6 00 lan_6 db 0
0040:00A7 00 lan_7 db 0

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û MORE ADVANCED VIDEO DATA Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

0040:00A8 C80E3CB8 @video_sav_tbls dd 0C80E3CB8h ; Pointer to a save table of more
; pointers for the video system
; SAVE TABLE
; offset type pointer to
; ÄÄÄÄÄÄ ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; 0 dd Video parameters
; 4 dd Parms save area
; 8 dd Alpha char set
; 0Ch dd Graphics char set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 13

; 10h dd 2nd save ptr table
; 14h dd reserved (0:0)
; 18h dd reserved (0:0)
;
; 2ND SAVE TABLE (from ptr above)
; offset type functions & pointers
; ÄÄÄÄÄÄ ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; 0 dw Bytes in this table
; 2 dd Combination code tbl
; 6 dd 2nd alpha char set
; 0Ah dd user palette tbl
; 0Eh dd reserved (0:0)
; 12h dd reserved (0:0)
; 16h dd reserved (0:0)

0040:00AC 0054[00] db 84 dup (0)
0040:0100 00 prn_scrn_stat_b db 0

seg_b ends



;-------------------------------------------------------------- seg_c ----

seg_c segment at 50h

0050:0000 00 prn_scrn_stat db 0 ; Print screen status
; 00h = Print screen ready
; 01h = Print screen in progress
; FFh = Error occurred
; xref F000:EC63, F000:ECCC
0050:0001 00 db 0

seg_c ends



;-------------------------------------------------------------- seg_d ----

seg_d segment para public use16
assume cs:seg_d , ds:seg_b


org 8000h

F000:8000 58 58 58 58 38 38 begin_text db 'XXXX88886666----0123AAAAMMMMIIII'
F000:8006 38 38 36 36 36 36
F000:800C 2D 2D 2D 2D 30 31
F000:8012 32 33 41 41 41 41
F000:8018 4D 4D 4D 4D 49 49
F000:801E 49 49
F000:8020 20 44 61 74 65 3A db ' Date:-06/13/90 '
F000:8026 2D 30 36 2F 31 33
F000:802C 2F 39 30 20
F000:8030 28 43 29 31 39 38 copyright db '(C)1985-1990, American Megatrend'
F000:8036 35 2D 31 39 39 30
F000:803C 2C 20 41 6D 65 72
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 14

F000:8042 69 63 61 6E 20 4D
F000:8048 65 67 61 74 72 65
F000:804E 6E 64
F000:8050 73 20 49 6E 63 2E db 's Inc. All Rights '
F000:8056 20 41 6C 6C 20 52
F000:805C 69 67 68 74 73 20
F000:8062 52 65 73 65 72 76 db 'Reserved. '
F000:8068 65 64 2E 20


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± System Reset ±±±±±
;
; SYSTEM RESET
;
; Reset the computer system. General operation includes a test of
; of the CPU, ROM checksum, and initialization of hardware including:
;
; Memory system
; Timer/Counter (which is also used for RAM refresh)
; Interrupt Controller(s)
; DMA Controller(s)
; Keyboard Controller
; Video Controller & Video RAM
; Floppy Controller
; Hard Disk Controller (if present)
;
; Portions of the hardware may also have specific tests made to
; insure reliable operation. Test failures may display error code
; on the screen if the video subsystem is operational, or generate
; beeps or LED blinks to signify the error.
;
; Note: A soft reset uses the warm_boot_flag to skip the memory
; tests. (i.e. from pressing Ctrl-Alt-Del).
;
; The system checks for installed ROMs by searching memory from
; C000h to the beginning of the BIOS, in 2K chunks. ROM memory is
; identified if it starts with the word AA55h. It is followed a one
; byte field length of the ROM (divided by 512). If ROM is found,
; the BIOS will call the ROM at an offset of 3 from the beginning.
; This feature was not supported in the earliest PC machines.
;
; The last task turns control over to the bootstrap loader (assuming
; the floppy controller is operational)

F000:806C system_reset proc near ; xref F000:E05B
F000:806C CC int 3 ; Debug breakpoint
F000:806D FC cld ; Clear direction
F000:806E E4 64 in al,64h ; port 64h, keyboard status
F000:8070 A8 04 test al,4
F000:8072 75 07 jnz short loc_2 ; Jump if not zero
F000:8074 B0 8D mov al,8Dh
F000:8076 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:8078 E9 00BB jmp loc_15 ; (8136)
F000:807B loc_2: ; xref F000:8072
F000:807B B0 8F mov al,8Fh
F000:807D E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 15

F000:807F EB 00 jmp short loc_3 ; (8081)
F000:8081 loc_3: ; xref F000:807F
F000:8081 EB 00 jmp short loc_4 ; (8083)
F000:8083 loc_4: ; xref F000:8081
F000:8083 E4 71 in al,71h ; port 71h, RTC clock/RAM data
F000:8085 B4 00 mov ah,0
F000:8087 8B F0 mov si,ax
F000:8089 B0 8F mov al,8Fh
F000:808B EB 00 jmp short loc_5 ; (808D)
F000:808D loc_5: ; xref F000:808B
F000:808D EB 00 jmp short loc_6 ; (808F)
F000:808F loc_6: ; xref F000:808D
F000:808F E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
F000:8091 B0 00 mov al,0
F000:8093 EB 00 jmp short loc_7 ; (8095)
F000:8095 loc_7: ; xref F000:8093
F000:8095 EB 00 jmp short loc_8 ; (8097)
F000:8097 loc_8: ; xref F000:8095
F000:8097 E6 71 out 71h,al ; port 71h, RTC clock/RAM data
F000:8099 8C C8 mov ax,cs
F000:809B 8E D0 mov ss,ax
F000:809D 8B C6 mov ax,si
F000:809F 3C 04 cmp al,4
F000:80A1 74 0B je short loc_9 ; Jump if equal
F000:80A3 3C 05 cmp al,5
F000:80A5 74 07 je short loc_9 ; Jump if equal
F000:80A7 3C 0A cmp al,0Ah
F000:80A9 76 0F jbe short loc_10 ; Jump if below or =
F000:80AB E9 00DB jmp loc_18 ; (8189)
F000:80AE loc_9: ; xref F000:80A1, 80A5
F000:80AE BB 0870 mov bx,870h
F000:80B1 90 nop ;
F000:80B2 BC 80B8 mov sp,80B8h
F000:80B5 E9 6E24 jmp loc_1331 ; (EEDC)
F000:80B8 BA 80 db 0BAh, 80h
F000:80BA loc_10: ; xref F000:80A9
F000:80BA 8B C6 mov ax,si
F000:80BC 3C 05 cmp al,5
F000:80BE 74 08 je short loc_11 ; Jump if equal
F000:80C0 3C 09 cmp al,9
F000:80C2 74 04 je short loc_11 ; Jump if equal
F000:80C4 3C 0A cmp al,0Ah
F000:80C6 75 20 jne short loc_12 ; Jump if not equal
F000:80C8 loc_11: ; xref F000:80BE, 80C2
F000:80C8 0F 01 E0 smsw ax ; Store machine stat
F000:80CB F6 C4 FF test ah,0FFh
F000:80CE 75 18 jnz short loc_12 ; Jump if not zero
F000:80D0 66| C1 C8 10 ror eax,10h ; Rotate
F000:80D4 8B C8 mov cx,ax
F000:80D6 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:80D9 66| 25 9FFFFFFF and eax,9FFFFFFFh
F000:80DF 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:80E2 8B C1 mov ax,cx
F000:80E4 66| C1 C8 10 ror eax,10h ; Rotate
F000:80E8 loc_12: ; xref F000:80C6, 80CE
F000:80E8 B8 0040 mov ax,seg_b
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 16

F000:80EB 8E D8 mov ds,ax
F000:80ED B0 00 mov al,0
F000:80EF 8E C0 mov es,ax
F000:80F1 B0 30 mov al,30h ; '0'
F000:80F3 8E D0 mov ss,ax
F000:80F5 BC 0100 mov sp,100h
F000:80F8 D1 E6 shl si,1 ; Shift w/zeros fill
F000:80FA 2E: FF A4 8100 jmp word ptr cs:data_63[si] ;*(F000:8100=8189h) 9 entries
F000:80FF 90 db 90h
F000:8100 8189 data_63 dw offset loc_18 ; Data table (indexed access)
; xref F000:80FB
F000:8102 AA50 data_64 dw offset loc_646 ; xref F000:80FB
F000:8104 8F86 data_65 dw offset loc_283 ; xref F000:80FB
F000:8106 AB66 data_66 dw offset loc_653 ; xref F000:80FB
F000:8108 8F8C data_67 dw offset loc_284 ; xref F000:80FB
F000:810A 8F9D data_68 dw offset loc_287 ; xref F000:80FB
F000:810C AD07 data_69 dw offset loc_683 ; xref F000:80FB
F000:810E 8189 data_70 dw offset loc_18 ; xref F000:80FB
F000:8110 8189 data_71 dw offset loc_18 ; xref F000:80FB
F000:8112 96 CB A3 8F db 96h, 0CBh, 0A3h, 8Fh
F000:8116 loc_13: ; xref F000:8141, 814A
F000:8116 BD 0005 mov bp,5
F000:8119 E9 0C3C jmp loc_218 ; (8D58)
F000:811C loc_14: ; xref F000:8152
F000:811C 8B D8 mov bx,ax
F000:811E 8B CB mov cx,bx
F000:8120 8B D1 mov dx,cx
F000:8122 8B F2 mov si,dx
F000:8124 8B FE mov di,si
F000:8126 8B EF mov bp,di
F000:8128 8E C5 mov es,bp
F000:812A 8C C0 mov ax,es
F000:812C 8E D8 mov ds,ax
F000:812E 8C D8 mov ax,ds
F000:8130 8E D0 mov ss,ax
F000:8132 8C D0 mov ax,ss
F000:8134 FF E4 jmp sp ;*Register jump
F000:8136 loc_15: ; xref F000:8078
F000:8136 B0 01 mov al,1
F000:8138 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:813A BC 5555 mov sp,5555h
F000:813D 81 FC 5555 cmp sp,5555h
F000:8141 75 D3 jne loc_13 ; Jump if not equal
F000:8143 BC AAAA mov sp,0AAAAh
F000:8146 81 FC AAAA cmp sp,0AAAAh
F000:814A 75 CA jne loc_13 ; Jump if not equal
F000:814C B8 5555 mov ax,5555h
F000:814F BC 8154 mov sp,8154h
F000:8152 EB C8 jmp short loc_14 ; (811C)
F000:8154 35 55 55 75 BD B8 db 35h, 55h, 55h, 75h, 0BDh, 0B8h
F000:815A AA AA BC 61 81 EB db 0AAh, 0AAh, 0BCh, 61h, 81h, 0EBh
F000:8160 BB 35 AA AA 75 B0 db 0BBh, 35h, 0AAh, 0AAh, 75h, 0B0h
F000:8166 B4 08 db 0B4h, 8
F000:8168 loc_16: ; xref F000:8169, 816D
F000:8168 49 dec cx
F000:8169 75 FD jnz loc_16 ; Jump if not zero
F000:816B FE CC dec ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 17

F000:816D 75 F9 jnz loc_16 ; Jump if not zero
F000:816F B0 02 mov al,2
F000:8171 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8173 33 DB xor bx,bx ; Zero register
F000:8175 B9 4000 mov cx,4000h
F000:8178 BE 8000 mov si,8000h

F000:817B locloop_17: ; xref F000:817F
F000:817B 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:817D 03 D8 add bx,ax
F000:817F E2 FA loop locloop_17 ; Loop if cx > 0

F000:8181 74 06 jz short loc_18 ; Jump if zero
F000:8183 BD 0009 mov bp,9
F000:8186 E9 0BCF jmp loc_218 ; (8D58)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:8189 loc_18: ; xref F000:80AB, 80FB, 8100, 810E
; 8110, 8181
F000:8189 B0 03 mov al,3
F000:818B E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:818D 33 ED xor bp,bp ; Zero register
F000:818F 8E DD mov ds,bp
F000:8191 8E C5 mov es,bp
F000:8193 8C C8 mov ax,cs
F000:8195 8E D0 mov ss,ax
F000:8197 E4 64 in al,64h ; port 64h, keyboard status
F000:8199 A8 04 test al,4
F000:819B 74 02 jz short loc_19 ; Jump if zero
F000:819D EB 17 jmp short loc_23 ; (81B6)
F000:819F loc_19: ; xref F000:819B
F000:819F EB 20 jmp short loc_24 ; (81C1)
F000:81A1 B4 06 33 C9 db 0B4h, 6, 33h, 0C9h

F000:81A5 locloop_20: ; xref F000:81AB, 81B1
F000:81A5 EB 00 jmp short loc_21 ; (81A7)
F000:81A7 loc_21: ; xref F000:81A5
F000:81A7 E4 64 in al,64h ; port 64h, keyboard status
F000:81A9 A8 01 test al,1
F000:81AB E1 F8 loopz locloop_20 ; Loop if zf=1, cx>0

F000:81AD 75 04 jnz short loc_22 ; Jump if not zero
F000:81AF FE CC dec ah
F000:81B1 75 F2 jnz locloop_20 ; Jump if not zero
F000:81B3 loc_22: ; xref F000:81AD
F000:81B3 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:81B5 C3 retn
system_reset endp

F000:81B6 loc_23: ; xref F000:819D
assume ds:seg_a
F000:81B6 81 3E 0472 1234 cmp warm_boot_flag_,1234h ; (0000:0472=1200h)
F000:81BC 75 03 jne short loc_24 ; Jump if not equal
F000:81BE BD 8000 mov bp,8000h
F000:81C1 loc_24: ; xref F000:819F, 81BC
F000:81C1 B7 02 mov bh,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 18

F000:81C3 33 C9 xor cx,cx ; Zero register

F000:81C5 locloop_25: ; xref F000:81D6
F000:81C5 EB 00 jmp short loc_26 ; (81C7)
F000:81C7 loc_26: ; xref F000:81C5
F000:81C7 E4 64 in al,64h ; port 64h, keyboard status
F000:81C9 8A E0 mov ah,al
F000:81CB A8 01 test al,1
F000:81CD 74 04 jz short loc_28 ; Jump if zero
F000:81CF EB 00 jmp short loc_27 ; (81D1)
F000:81D1 loc_27: ; xref F000:81CF
F000:81D1 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:81D3 loc_28: ; xref F000:81CD
F000:81D3 F6 C4 02 test ah,2
F000:81D6 E0 ED loopnz locloop_25 ; Loop if zf=0, cx>0

F000:81D8 B0 AA mov al,0AAh
F000:81DA E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0AAh, self test
F000:81DC BC 81E2 mov sp,81E2h
F000:81DF E9 0D00 jmp loc_271 ; (8EE2)
F000:81E2 E4 81 BC E9 81 EB db 0E4h, 81h, 0BCh, 0E9h, 81h, 0EBh
F000:81E8 B8 EB 81 B0 60 E6 db 0B8h, 0EBh, 81h, 0B0h, 60h, 0E6h
F000:81EE 64 90 BC F6 81 E9 db 64h, 90h, 0BCh, 0F6h, 81h, 0E9h
F000:81F4 EC 0C F8 81 2E F6 db 0ECh, 0Ch, 0F8h, 81h, 2Eh, 0F6h
F000:81FA 06 C0 E2 40 B0 55 db 6, 0C0h, 0E2h, 40h, 0B0h, 55h
F000:8200 74 02 B0 db 74h, 2, 0B0h
F000:8203 74 db 74h
F000:8204 loc_29:
F000:8204 E6 60 out 60h,al ; port 60h, keybd data write
F000:8206 BC 820C mov sp,820Ch
F000:8209 E9 0CD6 jmp loc_271 ; (8EE2)
F000:820C 0E 82 B0 AE E6 64 db 0Eh, 82h, 0B0h, 0AEh, 0E6h, 64h
F000:8212 BC 18 82 E9 CA 0C db 0BCh, 18h, 82h, 0E9h, 0CAh, 0Ch
F000:8218 1A 82 B7 00 B9 00 db 1Ah, 82h, 0B7h, 0, 0B9h, 0
F000:821E 40 db 40h

F000:821F locloop_30: ; xref F000:822D
F000:821F EB 00 jmp short loc_31 ; (8221)
F000:8221 loc_31: ; xref F000:821F
F000:8221 E4 64 in al,64h ; port 64h, keyboard status
F000:8223 24 01 and al,1
F000:8225 74 04 jz short loc_33 ; Jump if zero
F000:8227 EB 00 jmp short loc_32 ; (8229)
F000:8229 loc_32: ; xref F000:8227
F000:8229 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:822B loc_33: ; xref F000:8225
F000:822B 3C 52 cmp al,52h ; 'R'
F000:822D E0 F0 loopnz locloop_30 ; Loop if zf=0, cx>0

F000:822F 75 09 jnz short loc_34 ; Jump if not zero
F000:8231 0B ED or bp,bp ; Zero ?
F000:8233 78 05 js short loc_34 ; Jump if sign=1
F000:8235 B7 08 mov bh,8
F000:8237 83 CD 02 or bp,2
F000:823A loc_34: ; xref F000:822F, 8233
F000:823A B0 AD mov al,0ADh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 19

F000:823C E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0ADh, disable keyboard
F000:823E BC 8244 mov sp,8244h
F000:8241 E9 0C9E jmp loc_271 ; (8EE2)
F000:8244 46 82 B8 B8 B8 90 db 46h, 82h, 0B8h, 0B8h, 0B8h, 90h
F000:824A BC 50 82 E9 39 6C db 0BCh, 50h, 82h, 0E9h, 39h, 6Ch
F000:8250 52 82 24 F7 0A C7 db 52h, 82h, 24h, 0F7h, 0Ah, 0C7h
F000:8256 86 C4 BC 5E 82 E9 db 86h, 0C4h, 0BCh, 5Eh, 82h, 0E9h
F000:825C 34 6C 60 82 0B ED db 34h, 6Ch, 60h, 82h, 0Bh, 0EDh
F000:8262 78 18 B8 B7 B7 90 db 78h, 18h, 0B8h, 0B7h, 0B7h, 90h
F000:8268 BC 6E 82 E9 1B 6C db 0BCh, 6Eh, 82h, 0E9h, 1Bh, 6Ch
F000:826E 70 82 0C 0C 86 C4 db 70h, 82h, 0Ch, 0Ch, 86h, 0C4h
F000:8274 BC 7A 82 E9 18 6C db 0BCh, 7Ah, 82h, 0E9h, 18h, 6Ch
F000:827A 7C 82 B0 04 E6 80 db 7Ch, 82h, 0B0h, 4, 0E6h, 80h
F000:8280 B8 8F 55 90 BC 8A db 0B8h, 8Fh, 55h, 90h, 0BCh, 8Ah
F000:8286 82 E9 08 6C 8C 82 db 82h, 0E9h, 8, 6Ch, 8Ch, 82h
F000:828C BC 92 82 E9 F7 6B db 0BCh, 92h, 82h, 0E9h, 0F7h, 6Bh
F000:8292 94 82 32 C4 75 18 db 94h, 82h, 32h, 0C4h, 75h, 18h
F000:8298 B8 8F AA 90 BC A2 db 0B8h, 8Fh, 0AAh, 90h, 0BCh, 0A2h
F000:829E 82 E9 F0 6B A4 82 db 82h, 0E9h, 0F0h, 6Bh, 0A4h, 82h
F000:82A4 BC AA 82 E9 DF 6B db 0BCh, 0AAh, 82h, 0E9h, 0DFh, 6Bh
F000:82AA AC 82 32 C4 74 04 db 0ACh, 82h, 32h, 0C4h, 74h, 4
F000:82B0 81 CD 00 40 B0 8D db 81h, 0CDh, 0, 40h, 0B0h, 8Dh
F000:82B6 BC BC 82 E9 CD 6B db 0BCh, 0BCh, 82h, 0E9h, 0CDh, 6Bh
F000:82BC BE 82 0A C0 B8 8E db 0BEh, 82h, 0Ah, 0C0h, 0B8h, 8Eh
F000:82C2 8E 90 BC CA 82 E9 db 8Eh, 90h, 0BCh, 0CAh, 82h, 0E9h
F000:82C8 BF 6B CC 82 78 08 db 0BFh, 6Bh, 0CCh, 82h, 78h, 8
F000:82CE 83 CD 20 0C DC EB db 83h, 0CDh, 20h, 0Ch, 0DCh, 0EBh
F000:82D4 50 90 0A C0 78 44 db 50h, 90h, 0Ah, 0C0h, 78h, 44h
F000:82DA 8B D8 33 C9 33 D2 db 8Bh, 0D8h, 33h, 0C9h, 33h, 0D2h
F000:82E0 B8 90 90 90 BC EA db 0B8h, 90h, 90h, 90h, 0BCh, 0EAh
F000:82E6 82 E9 9F 6B EC 82 db 82h, 0E9h, 9Fh, 6Bh, 0ECh, 82h
F000:82EC 8A C8 03 D1 FE C4 db 8Ah, 0C8h, 3, 0D1h, 0FEh, 0C4h
F000:82F2 8A C4 3C AE 75 EB db 8Ah, 0C4h, 3Ch, 0AEh, 75h, 0EBh
F000:82F8 FE C4 BC 00 83 E9 db 0FEh, 0C4h, 0BCh, 0, 83h, 0E9h
F000:82FE 89 6B 02 83 86 C4 db 89h, 6Bh, 2, 83h, 86h, 0C4h
F000:8304 BC 0A 83 E9 7F 6B db 0BCh, 0Ah, 83h, 0E9h, 7Fh, 6Bh
F000:830A 0C 83 3B C2 8B C3 db 0Ch, 83h, 3Bh, 0C2h, 8Bh, 0C3h
F000:8310 75 04 0B D2 75 0D db 75h, 4, 0Bh, 0D2h, 75h, 0Dh
F000:8316 0C 5C 81 CD 80 00 db 0Ch, 5Ch, 81h, 0CDh, 80h, 0
F000:831C EB 07 83 CD 40 EB db 0EBh, 7, 83h, 0CDh, 40h, 0EBh
F000:8322 02 24 8B db 2, 24h, 8Bh
F000:8325 loc_35:
F000:8325 8B D8 mov bx,ax
F000:8327 B8 8B8B mov ax,8B8Bh
F000:832A BC 8330 mov sp,8330h
F000:832D E9 6B59 jmp loc_1321 ; (EE89)
F000:8330 32 83 24 07 86 C4 db 32h, 83h, 24h, 7, 86h, 0C4h
F000:8336 BC 3C 83 E9 56 6B db 0BCh, 3Ch, 83h, 0E9h, 56h, 6Bh
F000:833C 3E 83 B0 8C BC 46 db 3Eh, 83h, 0B0h, 8Ch, 0BCh, 46h
F000:8342 83 E9 43 6B 48 83 db 83h, 0E9h, 43h, 6Bh, 48h, 83h
F000:8348 B8 8A 8A 90 BC 52 db 0B8h, 8Ah, 8Ah, 90h, 0BCh, 52h
F000:834E 83 E9 37 6B 54 83 db 83h, 0E9h, 37h, 6Bh, 54h, 83h
F000:8354 24 0F 75 0C B0 26 db 24h, 0Fh, 75h, 0Ch, 0B0h, 26h
F000:835A 86 C4 BC 62 83 E9 db 86h, 0C4h, 0BCh, 62h, 83h, 0E9h
F000:8360 30 6B 64 83 B0 94 db 30h, 6Bh, 64h, 83h, 0B0h, 94h
F000:8366 BC 6C 83 E9 1D 6B db 0BCh, 6Ch, 83h, 0E9h, 1Dh, 6Bh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 20

F000:836C 6E 83 D0 E8 8B C3 db 6Eh, 83h, 0D0h, 0E8h, 8Bh, 0C3h
F000:8372 72 05 83 CD 40 0C db 72h, 5, 83h, 0CDh, 40h, 0Ch
F000:8378 20 86 C4 90 BC 82 db 20h, 86h, 0C4h, 90h, 0BCh, 82h
F000:837E 83 E9 10 6B 84 83 db 83h, 0E9h, 10h, 6Bh, 84h, 83h
F000:8384 0F 01 E0 F6 C4 FF db 0Fh, 1, 0E0h, 0F6h, 0C4h, 0FFh
F000:838A 75 0E 0F 20 C0 66 db 75h, 0Eh, 0Fh, 20h, 0C0h, 66h
F000:8390 0D 00 00 00 60 0F db 0Dh, 0, 0, 0, 60h, 0Fh
F000:8396 22 C0 0F 08 33 C0 db 22h, 0C0h, 0Fh, 8, 33h, 0C0h
F000:839C 8E C0 8E D8 E9 db 8Eh, 0C0h, 8Eh, 0D8h, 0E9h
F000:83A1 26 70 db 26h, 70h
F000:83A3 loc_36:
F000:83A3 B0 04 mov al,4
F000:83A5 E6 08 out 8,al ; port 8, DMA-1 command reg
F000:83A7 EB 00 jmp short loc_37 ; (83A9)
F000:83A9 loc_37: ; xref F000:83A7
F000:83A9 EB 00 jmp short loc_38 ; (83AB)
F000:83AB loc_38: ; xref F000:83A9
F000:83AB E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:83AD B0 00 mov al,0
F000:83AF EB 00 jmp short loc_39 ; (83B1)
F000:83B1 loc_39: ; xref F000:83AF
F000:83B1 EB 00 jmp short loc_40 ; (83B3)
F000:83B3 loc_40: ; xref F000:83B1
F000:83B3 E6 8F out 8Fh,al ; port 8Fh, DMA page reg ch 4
F000:83B5 BB 0870 mov bx,870h
F000:83B8 BC 83BE mov sp,83BEh
F000:83BB E9 6B22 jmp loc_1332 ; (EEE0)
F000:83BE C0 83 B0 05 E6 80 db 0C0h, 83h, 0B0h, 5, 0E6h, 80h
F000:83C4 33 C0 BA D8 03 EE db 33h, 0C0h, 0BAh, 0D8h, 3, 0EEh
F000:83CA EB 00 EB 00 db 0EBh, 0, 0EBh, 0
F000:83CE loc_41:
F000:83CE 40 inc ax
F000:83CF B2 B8 mov dl,0B8h
F000:83D1 EE out dx,al ; port 0B8h
F000:83D2 EB 00 jmp short loc_42 ; (83D4)
F000:83D4 loc_42: ; xref F000:83D2
F000:83D4 EB 00 jmp short loc_43 ; (83D6)
F000:83D6 loc_43: ; xref F000:83D4
F000:83D6 B2 BA mov dl,0BAh
F000:83D8 EC in al,dx ; port 0BAh
F000:83D9 EB 00 jmp short loc_44 ; (83DB)
F000:83DB loc_44: ; xref F000:83D9
F000:83DB EB 00 jmp short loc_45 ; (83DD)
F000:83DD loc_45: ; xref F000:83DB
F000:83DD B2 DA mov dl,0DAh
F000:83DF EC in al,dx ; port 0DAh, DMA-2 temp reg
F000:83E0 EB 00 jmp short loc_46 ; (83E2)
F000:83E2 loc_46: ; xref F000:83E0
F000:83E2 EB 00 jmp short loc_47 ; (83E4)
F000:83E4 loc_47: ; xref F000:83E2
F000:83E4 B2 C0 mov dl,0C0h
F000:83E6 B0 00 mov al,0
F000:83E8 EE out dx,al ; port 0C0h, DMA-2 bas&add ch 0
F000:83E9 B0 06 mov al,6
F000:83EB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:83ED B0 FC mov al,0FCh
F000:83EF E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 21

F000:83F1 EB 00 jmp short loc_48 ; (83F3)
F000:83F3 loc_48: ; xref F000:83F1
F000:83F3 EB 00 jmp short loc_49 ; (83F5)
F000:83F5 loc_49: ; xref F000:83F3
F000:83F5 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:83F7 A8 01 test al,1
F000:83F9 EB 03 jmp short loc_50 ; (83FE)
F000:83FB 83 CD 01 db 83h, 0CDh, 1
F000:83FE loc_50: ; xref F000:83F9
F000:83FE B0 B4 mov al,0B4h
F000:8400 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8402 B0 55 mov al,55h ; 'U'
F000:8404 EB 00 jmp short loc_51 ; (8406)
F000:8406 loc_51: ; xref F000:8404
F000:8406 EB 00 jmp short loc_52 ; (8408)
F000:8408 loc_52: ; xref F000:8406
F000:8408 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:840A B0 AA mov al,0AAh
F000:840C EB 00 jmp short loc_53 ; (840E)
F000:840E loc_53: ; xref F000:840C
F000:840E EB 00 jmp short loc_54 ; (8410)
F000:8410 loc_54: ; xref F000:840E
F000:8410 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8412 B0 80 mov al,80h
F000:8414 EB 00 jmp short loc_55 ; (8416)
F000:8416 loc_55: ; xref F000:8414
F000:8416 EB 00 jmp short loc_56 ; (8418)
F000:8418 loc_56: ; xref F000:8416
F000:8418 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 80h, timer 3 count mode
F000:841A EB 00 jmp short loc_57 ; (841C)
F000:841C loc_57: ; xref F000:841A
F000:841C EB 00 jmp short loc_58 ; (841E)
F000:841E loc_58: ; xref F000:841C
F000:841E E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
F000:8420 8A E0 mov ah,al
F000:8422 EB 00 jmp short loc_59 ; (8424)
F000:8424 loc_59: ; xref F000:8422
F000:8424 EB 00 jmp short loc_60 ; (8426)
F000:8426 loc_60: ; xref F000:8424
F000:8426 E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
F000:8428 3D 55AA cmp ax,55AAh
F000:842B EB 03 jmp short loc_61 ; (8430)
F000:842D 83 CD 01 db 83h, 0CDh, 1
F000:8430 loc_61: ; xref F000:842B
F000:8430 B0 07 mov al,7
F000:8432 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8434 B0 FD mov al,0FDh
F000:8436 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8438 BA 0042 mov dx,42h
F000:843B BC 8440 mov sp,8440h
F000:843E EB 25 jmp short loc_64 ; (8465)
F000:8440 EB 03 jmp short loc_62 ; (8445)
F000:8442 83 CD 01 db 83h, 0CDh, 1
F000:8445 loc_62: ; xref F000:8440
F000:8445 B0 08 mov al,8
F000:8447 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 22

F000:8449 B2 41 mov dl,41h ; 'A'
F000:844B BC 8450 mov sp,8450h
F000:844E EB 15 jmp short loc_64 ; (8465)
F000:8450 EB 00 jmp short loc_63 ; (8452)
F000:8452 loc_63: ; xref F000:8450
F000:8452 B0 09 mov al,9
F000:8454 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8456 B2 40 mov dl,40h ; '@'
F000:8458 BC 845D mov sp,845Dh
F000:845B EB 08 jmp short loc_64 ; (8465)
F000:845D EB 5F jmp short loc_78 ; (84BE)
F000:845F BD 04 00 E9 F3 08 db 0BDh, 4, 0, 0E9h, 0F3h, 8
F000:8465 loc_64: ; xref F000:843E, 844E, 845B
F000:8465 8A C2 mov al,dl
F000:8467 24 03 and al,3
F000:8469 C0 C8 02 ror al,2 ; Rotate
F000:846C 8A D8 mov bl,al
F000:846E 0C 14 or al,14h
F000:8470 8A F8 mov bh,al
F000:8472 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8474 B0 FF mov al,0FFh
F000:8476 8A E0 mov ah,al
F000:8478 B9 0020 mov cx,20h
F000:847B EB 00 jmp short loc_65 ; (847D)
F000:847D loc_65: ; xref F000:847B
F000:847D EB 00 jmp short loc_66 ; (847F)
F000:847F loc_66: ; xref F000:847D
F000:847F EE out dx,al ; port 40h, 8253 timer 0 clock

F000:8480 locloop_67: ; xref F000:8480
F000:8480 E2 FE loop locloop_67 ; Loop if cx > 0

F000:8482 8A C3 mov al,bl
F000:8484 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:8486 EB 00 jmp short loc_68 ; (8488)
F000:8488 loc_68: ; xref F000:8486
F000:8488 EB 00 jmp short loc_69 ; (848A)
F000:848A loc_69: ; xref F000:8488
F000:848A EC in al,dx ; port 40h, 8253 timer 0 clock
F000:848B 2A E0 sub ah,al
F000:848D 74 2D jz short loc_77 ; Jump if zero
F000:848F 8A C7 mov al,bh
F000:8491 EB 00 jmp short loc_70 ; (8493)
F000:8493 loc_70: ; xref F000:8491
F000:8493 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8495 B0 CC mov al,0CCh
F000:8497 8A F8 mov bh,al
F000:8499 B1 20 mov cl,20h ; ' '
F000:849B EB 00 jmp short loc_71 ; (849D)
F000:849D loc_71: ; xref F000:849B
F000:849D EB 00 jmp short loc_72 ; (849F)
F000:849F loc_72: ; xref F000:849D
F000:849F EE out dx,al ; port 40h, 8253 timer 0 clock

F000:84A0 locloop_73: ; xref F000:84A0
F000:84A0 E2 FE loop locloop_73 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 23


F000:84A2 8A C3 mov al,bl
F000:84A4 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:84A6 EB 00 jmp short loc_74 ; (84A8)
F000:84A8 loc_74: ; xref F000:84A6
F000:84A8 EB 00 jmp short loc_75 ; (84AA)
F000:84AA loc_75: ; xref F000:84A8
F000:84AA EC in al,dx ; port 40h, 8253 timer 0 clock
F000:84AB 2A F8 sub bh,al
F000:84AD 74 0D jz short loc_77 ; Jump if zero
F000:84AF 2A E7 sub ah,bh
F000:84B1 73 02 jnc short loc_76 ; Jump if carry=0
F000:84B3 F6 DC neg ah
F000:84B5 loc_76: ; xref F000:84B1
F000:84B5 80 FC 06 cmp ah,6
F000:84B8 72 02 jb short loc_77 ; Jump if below
F000:84BA 32 C0 xor al,al ; Zero register
F000:84BC loc_77: ; xref F000:848D, 84AD, 84B8
F000:84BC FF E4 jmp sp ;*Register jump
F000:84BE loc_78: ; xref F000:845D
F000:84BE B0 0A mov al,0Ah
F000:84C0 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:84C2 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:84C4 24 FC and al,0FCh
F000:84C6 EB 00 jmp short loc_79 ; (84C8)
F000:84C8 loc_79: ; xref F000:84C6
F000:84C8 EB 00 jmp short loc_80 ; (84CA)
F000:84CA loc_80: ; xref F000:84C8
F000:84CA E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:84CC B0 54 mov al,54h ; 'T'
F000:84CE E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:84D0 33 FF xor di,di ; Zero register
F000:84D2 B9 8000 mov cx,8000h
F000:84D5 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:84D7 B0 12 mov al,12h
F000:84D9 E6 41 out 41h,al ; port 41h, 8253 timer 1 refsh
F000:84DB B9 8000 mov cx,8000h
F000:84DE F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:84E0 33 F6 xor si,si ; Zero register
F000:84E2 B9 8000 mov cx,8000h
F000:84E5 F3/ AD rep lodsw ; Rep when cx >0 String [si] to ax
F000:84E7 B0 0B mov al,0Bh
F000:84E9 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:84EB B0 36 mov al,36h ; '6'
F000:84ED E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:84EF B0 00 mov al,0
F000:84F1 EB 00 jmp short loc_81 ; (84F3)
F000:84F3 loc_81: ; xref F000:84F1
F000:84F3 EB 00 jmp short loc_82 ; (84F5)
F000:84F5 loc_82: ; xref F000:84F3
F000:84F5 E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
F000:84F7 EB 00 jmp short loc_83 ; (84F9)
F000:84F9 loc_83: ; xref F000:84F7
F000:84F9 EB 00 jmp short loc_84 ; (84FB)
F000:84FB loc_84: ; xref F000:84F9
F000:84FB E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 24

F000:84FD B0 0C mov al,0Ch
F000:84FF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8501 33 DB xor bx,bx ; Zero register
F000:8503 B4 10 mov ah,10h
F000:8505 BA 0061 mov dx,61h
F000:8508 BC 850E mov sp,850Eh
F000:850B E9 0920 jmp loc_249 ; (8E2E)
F000:850E 10 85 E9 53 0B 00 db 10h, 85h, 0E9h, 53h, 0Bh, 0
F000:8514 858F data_72 dw offset sub_2 ; Data table (indexed access) (858F)
; xref F000:857B
F000:8516 866B data_73 dw offset sub_3 ; (866B)
; xref F000:857B
F000:8518 8674 data_74 dw offset sub_4 ; (8674)
; xref F000:857B
F000:851A 86C7 data_75 dw offset sub_7 ; (86C7)
; xref F000:857B
F000:851C 86DF data_76 dw offset sub_8 ; (86DF)
; xref F000:857B
F000:851E 8787 data_77 dw offset sub_9 ; (8787)
; xref F000:857B
F000:8520 87B6 data_78 dw offset sub_10 ; (87B6)
; xref F000:857B
F000:8522 87BA data_79 dw offset sub_11 ; (87BA)
; xref F000:857B
F000:8524 8917 data_80 dw offset sub_12 ; (8917)
; xref F000:857B
F000:8526 8A03 data_81 dw offset sub_13 ; (8A03)
; xref F000:857B
F000:8528 8A79 data_82 dw offset sub_14 ; (8A79)
; xref F000:857B
F000:852A 8BA0 data_83 dw offset sub_15 ; (8BA0)
; xref F000:857B
F000:852C 8BC5 data_84 dw offset sub_16 ; (8BC5)
; xref F000:857B
F000:852E 8BE2 data_85 dw offset sub_17 ; (8BE2)
; xref F000:857B
F000:8530 8BED data_86 dw offset sub_18 ; (8BED)
; xref F000:857B
F000:8532 8C36 data_87 dw offset sub_19 ; (8C36)
; xref F000:857B
F000:8534 8C49 data_88 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:8536 8C49 data_89 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:8538 8C49 data_90 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:853A 8C4A data_91 dw offset sub_21 ; (8C4A)
; xref F000:857B


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 10h ±±±±±
;
; VIDEO DISPLAY SERVICES
;
; Called with: ah = primary function number
;
; Returns: (unless otherwise indicated)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 25

; ax - altered (some systems may not alter ax)
;
; Functions:
; ah = 0 Set video display mode in al.
; ah = 1 Set cursor size
; Call with: ch = top line, 0-32
; cl = bottom line, 0-32
; ah = 2 Set cursor location
; Call with: bh = page number, 0 = 1st page
; dh = row (0 for top row)
; dl = column (0 for leftmost)
; ah = 3 Get cursor location
; Call with: bh = page number, 0 = 1st page
; Returns: ch/cl = cursor size (top & bottom)
; dh/dl = row and column of cursor
; ah = 4 Get light pen location
; Returns: ah = 0 not on/unsupported & bx,cx,dx changed
; 1 status valid
; bx = pixel column
; cx = horizontal line number
; dh/dl = row and column
; ah = 5 Set Page number al, 0 = 1st page
; ah = 6 Up scroll screen
; Call with: al = # bottom lines to clear, set 0 for all
; bh = attribute to fill cleared lines
; ch/cl = row/column of top left scroll corner
; dh/dl = row/column of bottom right scroll corner
; ah = 7 Down scroll screen
; Call with: al = # top lines to clear, set 0 for all
; bh = attribute to fill cleared lines
; ch/cl = row/column of top left scroll corner
; dh/dl = row/column of bottom right scroll corner
; ah = 8 Get character & attribute at cursor
; Call with: bh = page number, 0 = 1st page
; Returns: ah/al = attribute/character
; ah = 9 Write character & attribute at cursor (graphics modes)
; Call with: al = character
; bh = page number, 0 = 1st page
; bl = attribute, bit 7 = 1 to xor with old color
; cx = Number of same characters to write
; ah = 0Ah Write character at cursor (graphics modes)
; Call with: al = character
; bh = page number, 0 = 1st page
; cx = Number of same characters to write
; ah = 0Bh Set colors (typically in low res modes)
; Call with: bh = 0, bl = color low res background, border
; bh = 1, bl = 0/1 for low res color group 0/1
; ah = 0Ch Write graphics dot
; Call with: al = color, bit 7 = 1 to xor bit with old color
; cx/dx = pixel row/pixel column
; ah = 0Dh Read graphics dot
; Call with: cx/dx = pixel row/pixel column
; ah = 0Eh Write in ASCII mode (cr, lf, bell, and bs as operators)
; Call with: al/bl = character/color
; ah = 0Fh Get video info
; Returns: ah = columns active
; al = active video mode
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 26

; bh = active page, 0 = 1st page
; ah = 10h Colors (EGA/VGA) Called with al = subfunction
; al = 1 bl = color register (0-15) bh = color to set
; al = 2 es:dx = ptr to change all 16 colors & overscan #
; al = 3 bl = color high bit as: 0-intensity, 1-blink
; For VGA equipped systems only
; al = 7 bl = color register to get in bh
; al = 8 bh = returned overscan value
; al = 9 es:dx = ptr where to put all 16 colors & overscan
; al = 10h bx = color register to set; ch/cl/dl = grn/blu/red
; al = 12h es:dx = ptr to change color registers
; bx = 1st register to set, cx = # of registers
; al = 13h bl = 0, set color page mode in bh
; bl = 1, set page; bh = page number
; al = 15h bx = color reg to read; ch/cl/dl = grn/blu/red
; al = 17h es:dx = ptr where to load color regs
; bx = 1st register to get, cx = # of registers
; al = 1Ah get color page info; bl = mode; bh = page #
; ah = 11h Reset mode with new character set (leave memory as-is)
; al = 0 Character set load
; es:bp = ptr to table of chars
; bl/bh = which block/bytes per char
; cx/dx = # of characters/where to start in block
; al = 1 bl = block to load the mono character set
; al = 2 bl = block to load the double wide character set
; al = 3 bl = block select related to attribute
; al = 4 bl = block to load the 8 by 16 set (VGA)
; al = 10h - 14h same as 0 - 4, must occur after setting mode
; al = 20h es:bp = ptr to table of char, using int 1Fh ptr
; al = 21h es:bp = ptr to table of char, using int 43h ptr
; bl = 0-dl=# rows; 1-14 rows; 2-25 rows; 3-43 rows
; cx = number of bytes per character in table
; al = 22h use 8 by 14 char set, bl=rows (see al=21h)
; al = 23h use double wide char set, bl=rows (see al=21h)
; al = 24h use 8 by 16 char set, bl=rows (see al=21h)
; Get table pointer and info
; al = 30h es:bp = ptr returned; cx=bytes per char; dl=rows
; bh = 0, get int 1Fh bh = 4, get double wide
; bh = 1, get int 43h bh = 5, get mono 9 by 14
; bh = 2, get 8 by 14 bh = 6, get 8 by 16 (VGA)
; bh = 3, get double wide bh = 7, get 9 by 16 (VGA)
; ah = 12h Miscellaneous functions, bl = sub-function
; bl = 10h Get info, bh = 0-now color, 1-now mono
; ch/cl = info bits/switches
; bl = 20h Set print screen to work with EGA/VGA
; Functions for VGA only (bl = 30-34h return al = 12h)
; bl = 30h Set # of scan lines, 0-200, 1-350, 2-400
; activates after mode change
; bl = 31h ax = 0/1 allow/prevent palette load with new mode
; bl = 32h al = 0/1 video off/on
; bl = 33h al = 0/1 gray scale summing off/on
; bl = 34h al = 0/1 scale cursor size to font off/on
; bl = 35h switch between adapter and motherboard video
; al = 0, adapter off, es:dx = save state area
; al = 1, motherboard on
; al = 2, active video off, es:dx = save area
; al = 3, inactive video on, es:dx = save area
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 27

; bl = 36h al = 0/1 screen off/on
; ah = 13h Write character string (cr, lf, bell, and bs as operators)
; Call with: al = 0/1 write characters, cursor not/is moved
; bl = attribute of all characters
; = 2/3 write characters, cursor not/is moved
; string alternates character & attribute
; bh = page number, 0 = 1st page
; cx = number of characters
; dh/dl = row and column to start
; es:bp = ptr to character string
; ah = 14h LCD display support, al = sub-function
; al = 0, es:di = ptr to font table to load
; bl/bh = which block/bytes per char
; cx/dx = # of characters/where to start in block
; al = 1, bl = block # of ROM font to load
; al = 2, bl = how to support high intensity
; ah = 15h LCD info table ptr returned in es:di
; ax = 0 there is no alternate adapter
; ax = 5140h LCD is the alternate
; ax = 5153h CGA is alternate
; ax = 5151h MDA is alternate
;
; **** VGA SUPPORT ONLY ****
; ah = 1Ah Get/Set types of displays which are operating
; al = 0, get displays, returns al = 1Ah
; bl = in use display code
; bh = alternate display code
; al = 1, set codes, returns al = 1Ah
; bl = in use display code
; bh = alternate display code
; codes: 0 = no display
; 1 = mono display
; 2 = CGA
; 4 = EGA, color
; 5 = EGA, mono
; 6 = PGA
; 7 = VGA, mono (PS/2 MCA only)
; 8 = VGA, color (PS/2 MCA only)
; Bh = VGA, mono (PS/2 non MCA)
; Ch = VGA, color (PS/2 non MCA)
; FFh = display type not known
; ah = 1Bh Get video system information
; call with: bx = 0
; es:di = ptr to buffer where to put info
; ah = 1Ch Video system save & restore, al = sub-function
; call with: al = 0, get buffer size
; = 1, save system, buffer at es:bx
; = 2, restore system, buffer at es:bx
; cx bit 0 = 1 for hardware registers
; bit 1 = 1 for software states
; bit 2 = 1 for colors & DAC registers

F000:853C int_10h_video proc near ; xref F000:F065
F000:853C FB sti ; Enable interrupts
F000:853D FC cld ; Clear direction
F000:853E 80 FC 0E cmp ah,0Eh
F000:8541 74 40 je short loc_88 ; Jump if equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 28

F000:8543 80 FC 02 cmp ah,2
F000:8546 74 3E je short loc_89 ; Jump if equal
F000:8548 80 FC 03 cmp ah,3
F000:854B 74 3C je short loc_90 ; Jump if equal
F000:854D 80 FC 05 cmp ah,5
F000:8550 74 3A je short loc_91 ; Jump if equal
F000:8552 60 pusha ; Save all regs
F000:8553 1E push ds
F000:8554 06 push es
F000:8555 80 FC 13 cmp ah,13h
F000:8558 77 25 ja short loc_87 ; Jump if above
F000:855A 50 push ax
F000:855B 8A C4 mov al,ah
F000:855D 98 cbw ; Convrt byte to word

F000:855E 8B F8 mov di,ax
F000:8560 B8 0040 mov ax,seg_b
F000:8563 8E D8 mov ds,ax
F000:8565 74 10 jz short loc_86 ; Jump if zero
assume ds:seg_b
F000:8567 A0 0010 mov al,byte ptr equip_bits ; (0040:0010=61h)
F000:856A 24 30 and al,30h ; '0'
F000:856C 3C 30 cmp al,30h ; '0'
F000:856E B8 B000 mov ax,0B000h
F000:8571 74 02 jz short loc_85 ; Jump if zero
F000:8573 B4 B8 mov ah,0B8h
F000:8575 loc_85: ; xref F000:8571
F000:8575 8E C0 mov es,ax
F000:8577 loc_86: ; xref F000:8565
F000:8577 58 pop ax
F000:8578 D1 E7 shl di,1 ; Shift w/zeros fill
F000:857A 2E: FF 95 8514 call word ptr cs:data_72[di] ;*(F000:8514=858Fh) 20 entries
F000:857F loc_87: ; xref F000:8558
F000:857F 07 pop es
F000:8580 1F pop ds
F000:8581 61 popa ; Restore all regs
F000:8582 CF iret ; Interrupt return
int_10h_video endp

F000:8583 loc_88: ; xref F000:8541
F000:8583 E9 0667 jmp loc_197 ; (8BED)
F000:8586 loc_89: ; xref F000:8546
F000:8586 E9 00EB jmp loc_103 ; (8674)
F000:8589 loc_90: ; xref F000:854B
F000:8589 E9 013B jmp loc_109 ; (86C7)
F000:858C loc_91: ; xref F000:8550
F000:858C E9 01F8 jmp loc_127 ; (8787)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8514, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_2 proc near
F000:858F C6 06 0084 18 mov video_rows,18h ; (0040:0084=18h)
F000:8594 8C C2 mov dx,es
F000:8596 80 FE B0 cmp dh,0B0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 29

F000:8599 BA 03D4 mov dx,3D4h
F000:859C 75 05 jnz short loc_92 ; Jump if not zero
F000:859E BA 03B4 mov dx,3B4h
F000:85A1 B0 07 mov al,7
F000:85A3 loc_92: ; xref F000:859C
F000:85A3 89 16 0063 mov @video_port,dx ; (0040:0063=3D4h)
F000:85A7 A2 0049 mov video_mode,al ; (0040:0049=3)
F000:85AA B4 3F mov ah,3Fh ; '?'
F000:85AC 3C 06 cmp al,6
F000:85AE 74 02 je short loc_93 ; Jump if equal
F000:85B0 B4 30 mov ah,30h ; '0'
F000:85B2 loc_93: ; xref F000:85AE
F000:85B2 88 26 0066 mov video_color,ah ; (0040:0066=30h)
F000:85B6 8A E0 mov ah,al
F000:85B8 BB F0F4 mov bx,0F0F4h
F000:85BB 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:85BD A2 0065 mov video_mode_reg,al ; (0040:0065=29h)
F000:85C0 24 37 and al,37h ; '7'
F000:85C2 83 C2 04 add dx,4
F000:85C5 EE out dx,al ; port 3B8h, MDA video control
F000:85C6 83 EA 04 sub dx,4
F000:85C9 B0 28 mov al,28h ; '('
F000:85CB F6 C4 02 test ah,2
F000:85CE 74 02 jz short loc_94 ; Jump if zero
F000:85D0 B0 50 mov al,50h ; 'P'
F000:85D2 loc_94: ; xref F000:85CE
F000:85D2 8A DC mov bl,ah
F000:85D4 98 cbw ; Convrt byte to word
F000:85D5 A3 004A mov video_columns,ax ; (0040:004A=50h)
F000:85D8 B8 0800 mov ax,800h
F000:85DB 80 FB 01 cmp bl,1
F000:85DE 76 10 jbe short loc_95 ; Jump if below or =
F000:85E0 B8 1000 mov ax,1000h
F000:85E3 80 FB 03 cmp bl,3
F000:85E6 76 08 jbe short loc_95 ; Jump if below or =
F000:85E8 80 FB 07 cmp bl,7
F000:85EB 74 03 je short loc_95 ; Jump if equal
F000:85ED B8 4000 mov ax,4000h
F000:85F0 loc_95: ; xref F000:85DE, 85E6, 85EB
F000:85F0 A3 004C mov video_buf_siz,ax ; (0040:004C=10A0h)
F000:85F3 33 C0 xor ax,ax ; Zero register
F000:85F5 A3 004E mov video_segment,ax ; (0040:004E=0)
F000:85F8 A2 0062 mov video_page,al ; (0040:0062=0)
F000:85FB BF 0050 mov di,seg seg_c
F000:85FE B9 0008 mov cx,8

F000:8601 locloop_96: ; xref F000:8605
F000:8601 89 05 mov [di],ax
F000:8603 47 inc di
F000:8604 47 inc di
F000:8605 E2 FA loop locloop_96 ; Loop if cx > 0

F000:8607 53 push bx
F000:8608 06 push es
F000:8609 8E C1 mov es,cx
F000:860B 26: C4 36 0074 les si,dword ptr es:video_hdw_off ; (0000:0074=0F0A4h) Load 32 bit ptr
F000:8610 80 FB 06 cmp bl,6
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 30

F000:8613 75 02 jne short loc_97 ; Jump if not equal
F000:8615 FE CB dec bl
F000:8617 loc_97: ; xref F000:8613
F000:8617 D0 EB shr bl,1 ; Shift w/zeros fill
F000:8619 C0 E3 04 shl bl,4 ; Shift w/zeros fill
F000:861C 32 FF xor bh,bh ; Zero register
F000:861E 03 F3 add si,bx
F000:8620 B9 0010 mov cx,10h

F000:8623 locloop_98: ; xref F000:8633
F000:8623 8A C7 mov al,bh
F000:8625 EE out dx,al ; port 3B4h, MDA/EGA reg index
; al = 0, horiz char total
F000:8626 EB 00 jmp short loc_99 ; (8628)
F000:8628 loc_99: ; xref F000:8626
F000:8628 42 inc dx
F000:8629 26: 8A 04 mov al,es:[si]
F000:862C 46 inc si
F000:862D EE out dx,al ; port 3B5h, MDA/EGA indxd data
F000:862E EB 00 jmp short loc_100 ; (8630)
F000:8630 loc_100: ; xref F000:862E
F000:8630 FE C7 inc bh
F000:8632 4A dec dx
F000:8633 E2 EE loop locloop_98 ; Loop if cx > 0

F000:8635 26: 8B 44 FA mov ax,es:[si-6]
F000:8639 86 C4 xchg al,ah
F000:863B A3 0060 mov vid_curs_mode,ax ; (0040:0060=2000h)
F000:863E 07 pop es
F000:863F 5B pop bx
F000:8640 B9 0800 mov cx,800h
F000:8643 B8 0720 mov ax,720h
F000:8646 80 FB 07 cmp bl,7
F000:8649 74 0A je short loc_101 ; Jump if equal
F000:864B B9 2000 mov cx,2000h
F000:864E 80 FB 03 cmp bl,3
F000:8651 76 02 jbe short loc_101 ; Jump if below or =
F000:8653 33 C0 xor ax,ax ; Zero register
F000:8655 loc_101: ; xref F000:8649, 8651
F000:8655 33 FF xor di,di ; Zero register
F000:8657 FA cli ; Disable interrupts
F000:8658 FC cld ; Clear direction
F000:8659 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:865B FB sti ; Enable interrupts
F000:865C A0 0065 mov al,video_mode_reg ; (0040:0065=29h)
F000:865F 83 C2 04 add dx,4
F000:8662 EE out dx,al ; port 3B8h, MDA video control
F000:8663 EB 00 jmp short loc_102 ; (8665)
F000:8665 loc_102: ; xref F000:8663
F000:8665 A0 0066 mov al,video_color ; (0040:0066=30h)
F000:8668 42 inc dx
F000:8669 EE out dx,al ; port 3B9h, CGA color(port3D9)
F000:866A C3 retn
sub_2 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 31

; SUBROUTINE
;
; Called from: F000:8516, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_3 proc near
F000:866B 89 0E 0060 mov vid_curs_mode,cx ; (0040:0060=2000h)
F000:866F B0 0A mov al,0Ah
F000:8671 EB 3A jmp short loc_105 ; (86AD)
F000:8673 90 db 90h

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:8518, 857B

sub_4:
F000:8674 loc_103: ; xref F000:8586
F000:8674 1E push ds
F000:8675 50 push ax
F000:8676 53 push bx
F000:8677 51 push cx
F000:8678 52 push dx
F000:8679 B8 0040 mov ax,seg_b
F000:867C 8E D8 mov ds,ax
F000:867E 8A C7 mov al,bh
F000:8680 8A DF mov bl,bh
F000:8682 32 FF xor bh,bh ; Zero register
F000:8684 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8686 89 97 0050 mov [bx+50h],dx
nop ;*Fixup for MASM (M)
F000:868A 3A 06 0062 cmp al,video_page ; (0040:0062=0)
F000:868E 75 03 jne short loc_104 ; Jump if not equal
F000:8690 E8 0006 call sub_5 ; (8699)
F000:8693 loc_104: ; xref F000:868E
F000:8693 5A pop dx
F000:8694 59 pop cx
F000:8695 5B pop bx
F000:8696 58 pop ax
F000:8697 1F pop ds
F000:8698 CF iret ; Interrupt return

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:8690, 87AD

sub_5:
F000:8699 8A C6 mov al,dh
F000:869B F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:869F 32 F6 xor dh,dh ; Zero register
F000:86A1 03 C2 add ax,dx
F000:86A3 8B 0E 004E mov cx,video_segment ; (0040:004E=0)
F000:86A7 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:86A9 03 C8 add cx,ax
F000:86AB B0 0E mov al,0Eh
sub_3 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 32

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:87A4
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_6 proc near
F000:86AD loc_105: ; xref F000:8671
F000:86AD 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:86B1 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 0Ch, start address high
F000:86B2 EB 00 jmp short loc_106 ; (86B4)
F000:86B4 loc_106: ; xref F000:86B2
F000:86B4 42 inc dx
F000:86B5 86 C5 xchg al,ch
F000:86B7 EE out dx,al ; port 3D5h, CGA/EGA indxd data
F000:86B8 FE C5 inc ch
F000:86BA EB 00 jmp short loc_107 ; (86BC)
F000:86BC loc_107: ; xref F000:86BA
F000:86BC 4A dec dx
F000:86BD 86 C5 xchg al,ch
F000:86BF EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 0Dh, start address low
F000:86C0 EB 00 jmp short loc_108 ; (86C2)
F000:86C2 loc_108: ; xref F000:86C0
F000:86C2 42 inc dx
F000:86C3 86 C1 xchg al,cl
F000:86C5 EE out dx,al ; port 3D5h, CGA/EGA indxd data
F000:86C6 C3 retn
sub_6 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:851A, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_7 proc near
F000:86C7 loc_109: ; xref F000:8589
F000:86C7 1E push ds
F000:86C8 53 push bx
F000:86C9 8A DF mov bl,bh
F000:86CB 32 FF xor bh,bh ; Zero register
F000:86CD D1 E3 shl bx,1 ; Shift w/zeros fill
F000:86CF BA 0040 mov dx,seg seg_b
F000:86D2 8E DA mov ds,dx
F000:86D4 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:86D8 8B 0E 0060 mov cx,vid_curs_mode ; (0040:0060=2000h)
F000:86DC 5B pop bx
F000:86DD 1F pop ds
F000:86DE CF iret ; Interrupt return
sub_7 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 33

; SUBROUTINE
;
; Called from: F000:851C, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_8 proc near
F000:86DF 8B EC mov bp,sp
F000:86E1 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:86E5 83 C2 06 add dx,6
F000:86E8 8B F2 mov si,dx
F000:86EA EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:86EB A8 04 test al,4
F000:86ED B4 00 mov ah,0
F000:86EF 74 03 jz short loc_110 ; Jump if zero
F000:86F1 E9 008B jmp loc_125 ; (877F)
F000:86F4 loc_110: ; xref F000:86EF
F000:86F4 A8 02 test al,2
F000:86F6 75 03 jnz short loc_111 ; Jump if not zero
F000:86F8 E9 0088 jmp loc_126 ; (8783)
F000:86FB loc_111: ; xref F000:86F6
F000:86FB 83 EA 06 sub dx,6
F000:86FE B0 10 mov al,10h
F000:8700 B5 11 mov ch,11h
F000:8702 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 10h, light pen high
F000:8703 EB 00 jmp short loc_112 ; (8705)
F000:8705 loc_112: ; xref F000:8703
F000:8705 EB 00 jmp short loc_113 ; (8707)
F000:8707 loc_113: ; xref F000:8705
F000:8707 42 inc dx
F000:8708 EC in al,dx ; port 3D5h, CGA/EGA indxd data
F000:8709 86 C5 xchg al,ch
F000:870B 4A dec dx
F000:870C EB 00 jmp short loc_114 ; (870E)
F000:870E loc_114: ; xref F000:870C
F000:870E EB 00 jmp short loc_115 ; (8710)
F000:8710 loc_115: ; xref F000:870E
F000:8710 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 11h, light pen low
F000:8711 EB 00 jmp short loc_116 ; (8713)
F000:8713 loc_116: ; xref F000:8711
F000:8713 EB 00 jmp short loc_117 ; (8715)
F000:8715 loc_117: ; xref F000:8713
F000:8715 42 inc dx
F000:8716 EC in al,dx ; port 3D5h, CGA/EGA indxd data
F000:8717 86 C1 xchg al,cl
F000:8719 A1 004E mov ax,video_segment ; (0040:004E=0)
F000:871C D1 E8 shr ax,1 ; Shift w/zeros fill
F000:871E 2B C8 sub cx,ax
F000:8720 A0 0049 mov al,video_mode ; (0040:0049=3)
F000:8723 BB F0FC mov bx,0F0FCh
F000:8726 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:8728 2B C8 sub cx,ax
F000:872A 79 02 jns short loc_118 ; Jump if not sign
F000:872C 33 C9 xor cx,cx ; Zero register
F000:872E loc_118: ; xref F000:872A
F000:872E 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 34

F000:8732 80 FC 04 cmp ah,4
F000:8735 72 04 jb short loc_119 ; Jump if below
F000:8737 80 FC 07 cmp ah,7
F000:873A F5 cmc ; Complement carry
F000:873B loc_119: ; xref F000:8735
F000:873B A0 004A mov al,byte ptr video_columns ; (0040:004A=50h)
F000:873E 91 xchg ax,cx
F000:873F 72 02 jc short loc_120 ; Jump if carry Set
F000:8741 B1 28 mov cl,28h ; '('
F000:8743 loc_120: ; xref F000:873F
F000:8743 F6 F1 div cl ; al, ah rem = ax/reg
F000:8745 8A E8 mov ch,al
F000:8747 86 C4 xchg al,ah
F000:8749 8B D0 mov dx,ax
F000:874B 98 cbw ; Convrt byte to word
F000:874C 8B D8 mov bx,ax
F000:874E 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8752 80 FC 04 cmp ah,4
F000:8755 72 04 jb short loc_121 ; Jump if below
F000:8757 80 FC 07 cmp ah,7
F000:875A F5 cmc ; Complement carry
F000:875B loc_121: ; xref F000:8755
F000:875B 72 11 jc short loc_122 ; Jump if carry Set
F000:875D D0 E5 shl ch,1 ; Shift w/zeros fill
F000:875F C0 EE 02 shr dh,2 ; Shift w/zeros fill
F000:8762 80 FC 06 cmp ah,6
F000:8765 75 0A jne short loc_123 ; Jump if not equal
F000:8767 D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8769 C1 E3 04 shl bx,4 ; Shift w/zeros fill
F000:876C EB 06 jmp short loc_124 ; (8774)
F000:876E loc_122: ; xref F000:875B
F000:876E C0 E5 03 shl ch,3 ; Shift w/zeros fill
F000:8771 loc_123: ; xref F000:8765
F000:8771 C1 E3 03 shl bx,3 ; Shift w/zeros fill
F000:8774 loc_124: ; xref F000:876C
F000:8774 89 56 10 mov [bp+10h],dx
F000:8777 88 6E 13 mov [bp+13h],ch
F000:877A 89 5E 0E mov [bp+0Eh],bx
F000:877D B4 01 mov ah,1
F000:877F loc_125: ; xref F000:86F1
F000:877F 8B D6 mov dx,si
F000:8781 42 inc dx
F000:8782 EE out dx,al ; port 3DBh, CGA light pen clr
F000:8783 loc_126: ; xref F000:86F8
F000:8783 88 66 15 mov [bp+15h],ah
F000:8786 C3 retn
sub_8 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:851E, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_9 proc near
F000:8787 loc_127: ; xref F000:858C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 35

F000:8787 1E push ds
F000:8788 50 push ax
F000:8789 53 push bx
F000:878A 51 push cx
F000:878B 52 push dx
F000:878C BA 0040 mov dx,seg seg_b
F000:878F 8E DA mov ds,dx
F000:8791 A2 0062 mov video_page,al ; (0040:0062=0)
F000:8794 98 cbw ; Convrt byte to word
F000:8795 8B D8 mov bx,ax
F000:8797 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:879B A3 004E mov video_segment,ax ; (0040:004E=0)
F000:879E D1 E8 shr ax,1 ; Shift w/zeros fill
F000:87A0 8B C8 mov cx,ax
F000:87A2 B0 0C mov al,0Ch
F000:87A4 E8 FF06 call sub_6 ; (86AD)
F000:87A7 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:87A9 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:87AD E8 FEE9 call sub_5 ; (8699)
F000:87B0 5A pop dx
F000:87B1 59 pop cx
F000:87B2 5B pop bx
F000:87B3 58 pop ax
F000:87B4 1F pop ds
F000:87B5 CF iret ; Interrupt return
sub_9 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8520, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_10 proc near
F000:87B6 32 DB xor bl,bl ; Zero register
F000:87B8 EB 05 jmp short loc_128 ; (87BF)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:8522, 857B

sub_11:
F000:87BA B3 FF mov bl,0FFh
F000:87BC 8B F2 mov si,dx
F000:87BE FD std ; Set direction flag
F000:87BF loc_128: ; xref F000:87B8
F000:87BF 1E push ds
F000:87C0 53 push bx
F000:87C1 2B D1 sub dx,cx
F000:87C3 81 C2 0101 add dx,101h
F000:87C7 52 push dx
F000:87C8 50 push ax
F000:87C9 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:87CD 80 FC 04 cmp ah,4
F000:87D0 72 04 jb short loc_129 ; Jump if below
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 36

F000:87D2 80 FC 07 cmp ah,7
F000:87D5 F5 cmc ; Complement carry
F000:87D6 loc_129: ; xref F000:87D0
F000:87D6 BA 0028 mov dx,28h

F000:87D9 73 20 jnc short loc_133 ; Jump if carry=0
F000:87DB 80 FC 02 cmp ah,2
F000:87DE 74 05 je short loc_130 ; Jump if equal
F000:87E0 80 FC 03 cmp ah,3
F000:87E3 75 12 jne short loc_132 ; Jump if not equal
F000:87E5 loc_130: ; xref F000:87DE
F000:87E5 BA 03DA mov dx,3DAh
F000:87E8 51 push cx
F000:87E9 33 C9 xor cx,cx ; Zero register

F000:87EB locloop_131: ; xref F000:87EE
F000:87EB EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:87EC A8 08 test al,8
F000:87EE E1 FB loopz locloop_131 ; Loop if zf=1, cx>0

F000:87F0 59 pop cx
F000:87F1 B0 25 mov al,25h ; '%'
F000:87F3 BA 03D8 mov dx,3D8h
F000:87F6 EE out dx,al ; port 3D8h, CGA video control
F000:87F7 loc_132: ; xref F000:87E3
F000:87F7 8B 16 004A mov dx,video_columns ; (0040:004A=50h)
F000:87FB loc_133: ; xref F000:87D9
F000:87FB 8B EA mov bp,dx
F000:87FD D1 E5 shl bp,1 ; Shift w/zeros fill
F000:87FF 22 DB and bl,bl
F000:8801 74 04 jz short loc_134 ; Jump if zero
F000:8803 F7 DD neg bp
F000:8805 8B CE mov cx,si
F000:8807 loc_134: ; xref F000:8801
F000:8807 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:880B 80 FC 04 cmp ah,4
F000:880E 72 04 jb short loc_135 ; Jump if below
F000:8810 80 FC 07 cmp ah,7
F000:8813 F5 cmc ; Complement carry
F000:8814 loc_135: ; xref F000:880E
F000:8814 91 xchg ax,cx
F000:8815 8A CA mov cl,dl
F000:8817 8B D0 mov dx,ax
F000:8819 73 16 jnc short loc_136 ; Jump if carry=0
F000:881B 8A C6 mov al,dh
F000:881D F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8821 32 F6 xor dh,dh ; Zero register
F000:8823 03 C2 add ax,dx
F000:8825 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8827 03 06 004E add ax,video_segment ; (0040:004E=0)
F000:882B 8B F8 mov di,ax
F000:882D 58 pop ax
F000:882E 5A pop dx
F000:882F EB 2D jmp short loc_139 ; (885E)
F000:8831 loc_136: ; xref F000:8819
F000:8831 8A C6 mov al,dh
F000:8833 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8837 C1 E0 02 shl ax,2 ; Shift w/zeros fill
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 37

F000:883A 32 F6 xor dh,dh ; Zero register
F000:883C 03 C2 add ax,dx
F000:883E 8B F8 mov di,ax
F000:8840 58 pop ax
F000:8841 5A pop dx
F000:8842 C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:8845 80 FD 06 cmp ch,6
F000:8848 74 09 je short loc_137 ; Jump if equal
F000:884A D1 E7 shl di,1 ; Shift w/zeros fill
F000:884C D0 E2 shl dl,1 ; Shift w/zeros fill
F000:884E 22 DB and bl,bl
F000:8850 74 01 jz short loc_137 ; Jump if zero
F000:8852 47 inc di
F000:8853 loc_137: ; xref F000:8848, 8850
F000:8853 22 DB and bl,bl
F000:8855 74 04 jz short loc_138 ; Jump if zero
F000:8857 81 C7 00F0 add di,0F0h
F000:885B loc_138: ; xref F000:8855
F000:885B C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:885E loc_139: ; xref F000:882F
F000:885E 06 push es
F000:885F 1F pop ds
F000:8860 8A FE mov bh,dh
F000:8862 0A C0 or al,al ; Zero ?
F000:8864 74 68 jz short loc_145 ; Jump if zero
F000:8866 2A F0 sub dh,al
F000:8868 74 64 jz short loc_145 ; Jump if zero
F000:886A 8A F8 mov bh,al
F000:886C F6 E1 mul cl ; ax = reg * al
F000:886E D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8870 22 DB and bl,bl
F000:8872 74 02 jz short loc_140 ; Jump if zero
F000:8874 F7 D8 neg ax
F000:8876 loc_140: ; xref F000:8872
F000:8876 8B F7 mov si,di
F000:8878 03 F0 add si,ax
F000:887A 32 E4 xor ah,ah ; Zero register
F000:887C 86 E5 xchg ah,ch
F000:887E 80 FC 04 cmp ah,4
F000:8881 72 04 jb short loc_141 ; Jump if below
F000:8883 80 FC 07 cmp ah,7
F000:8886 F5 cmc ; Complement carry
F000:8887 loc_141: ; xref F000:8881
F000:8887 53 push bx
F000:8888 72 55 jc short loc_147 ; Jump if carry Set
F000:888A loc_142: ; xref F000:88AC
F000:888A 8B C6 mov ax,si
F000:888C 8B DF mov bx,di
F000:888E 8A CA mov cl,dl
F000:8890 F3/ A4 rep movsb ; Rep when cx >0 Mov [si] to es:[di]
F000:8892 8B FB mov di,bx
F000:8894 8B F0 mov si,ax
F000:8896 81 C6 2000 add si,2000h
F000:889A 81 C7 2000 add di,2000h
F000:889E 8A CA mov cl,dl
F000:88A0 F3/ A4 rep movsb ; Rep when cx >0 Mov [si] to es:[di]
F000:88A2 8B FB mov di,bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 38

F000:88A4 8B F0 mov si,ax
F000:88A6 03 F5 add si,bp
F000:88A8 03 FD add di,bp
F000:88AA FE CE dec dh
F000:88AC 75 DC jnz loc_142 ; Jump if not zero
F000:88AE 5B pop bx
F000:88AF loc_143: ; xref F000:88DB
F000:88AF 58 pop ax
F000:88B0 8A C4 mov al,ah
F000:88B2 8A F7 mov dh,bh
F000:88B4 loc_144: ; xref F000:88CA
F000:88B4 8B DF mov bx,di
F000:88B6 8A CA mov cl,dl
F000:88B8 F3/ AA rep stosb ; Rep when cx >0 Store al to es:[di]
F000:88BA 8B FB mov di,bx
F000:88BC 81 C7 2000 add di,2000h
F000:88C0 8A CA mov cl,dl
F000:88C2 F3/ AA rep stosb ; Rep when cx >0 Store al to es:[di]
F000:88C4 8B FB mov di,bx
F000:88C6 03 FD add di,bp
F000:88C8 FE CE dec dh
F000:88CA 75 E8 jnz loc_144 ; Jump if not zero
F000:88CC 1F pop ds
F000:88CD C3 retn
F000:88CE loc_145: ; xref F000:8864, 8868
F000:88CE 32 E4 xor ah,ah ; Zero register
F000:88D0 86 E5 xchg ah,ch
F000:88D2 80 FC 04 cmp ah,4
F000:88D5 72 04 jb short loc_146 ; Jump if below
F000:88D7 80 FC 07 cmp ah,7
F000:88DA F5 cmc ; Complement carry
F000:88DB loc_146: ; xref F000:88D5
F000:88DB 73 D2 jnc loc_143 ; Jump if carry=0
F000:88DD EB 15 jmp short loc_148 ; (88F4)
F000:88DF loc_147: ; xref F000:8888, 88F1
F000:88DF 8B C6 mov ax,si
F000:88E1 8B DF mov bx,di
F000:88E3 8A CA mov cl,dl
F000:88E5 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:88E7 8B FB mov di,bx
F000:88E9 8B F0 mov si,ax
F000:88EB 03 F5 add si,bp
F000:88ED 03 FD add di,bp
F000:88EF FE CE dec dh
F000:88F1 75 EC jnz loc_147 ; Jump if not zero
F000:88F3 5B pop bx
F000:88F4 loc_148: ; xref F000:88DD
F000:88F4 58 pop ax
F000:88F5 B0 20 mov al,20h ; ' '
F000:88F7 8A F7 mov dh,bh
F000:88F9 loc_149: ; xref F000:8905
F000:88F9 8B DF mov bx,di
F000:88FB 8A CA mov cl,dl
F000:88FD F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:88FF 8B FB mov di,bx
F000:8901 03 FD add di,bp
F000:8903 FE CE dec dh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 39

F000:8905 75 F2 jnz loc_149 ; Jump if not zero
F000:8907 1F pop ds
assume ds:seg_a
F000:8908 80 3E 0049 07 cmp byte ptr vectr_12h_off+1,7 ; (0000:0049=0F8h)
F000:890D 74 07 je short loc_ret_150 ; Jump if equal
F000:890F A0 0065 mov al,ds:data_3e ; (0000:0065=0)
F000:8912 BA 03D8 mov dx,3D8h
F000:8915 EE out dx,al ; port 3D8h, CGA video control

F000:8916 loc_ret_150: ; xref F000:890D
F000:8916 C3 retn
sub_10 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8524, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_12 proc near
F000:8917 8B EC mov bp,sp
assume ds:seg_b
F000:8919 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:891D 80 FC 07 cmp ah,7
F000:8920 74 05 je short loc_151 ; Jump if equal
F000:8922 80 FC 04 cmp ah,4
F000:8925 73 56 jae short loc_156 ; Jump if above or =
F000:8927 loc_151: ; xref F000:8920
F000:8927 8A DF mov bl,bh
F000:8929 32 FF xor bh,bh ; Zero register
F000:892B D1 E3 shl bx,1 ; Shift w/zeros fill
F000:892D 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8931 8A C6 mov al,dh
F000:8933 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8937 32 F6 xor dh,dh ; Zero register
F000:8939 03 C2 add ax,dx
F000:893B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:893D D1 EB shr bx,1 ; Shift w/zeros fill
F000:893F 93 xchg ax,bx
F000:8940 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8944 03 C3 add ax,bx
F000:8946 8B F0 mov si,ax
F000:8948 FA cli ; Disable interrupts
F000:8949 FC cld ; Clear direction
F000:894A 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:894F 74 26 je short loc_155 ; Jump if equal
F000:8951 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8956 72 1F jb short loc_155 ; Jump if below
F000:8958 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:895C 83 C2 06 add dx,6
F000:895F 33 C9 xor cx,cx ; Zero register

F000:8961 locloop_152: ; xref F000:896C
F000:8961 FB sti ; Enable interrupts
F000:8962 FC cld ; Clear direction
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 40

F000:8963 FA cli ; Disable interrupts
F000:8964 FC cld ; Clear direction
F000:8965 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8966 A8 08 test al,8
F000:8968 75 0D jnz short loc_155 ; Jump if not zero
F000:896A A8 01 test al,1
F000:896C E0 F3 loopnz locloop_152 ; Loop if zf=0, cx>0

F000:896E 33 C9 xor cx,cx ; Zero register

F000:8970 locloop_153: ; xref F000:8975
F000:8970 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8971 EB 00 jmp short loc_154 ; (8973)
F000:8973 loc_154: ; xref F000:8971
F000:8973 A8 09 test al,9
F000:8975 E1 F9 loopz locloop_153 ; Loop if zf=1, cx>0

F000:8977 loc_155: ; xref F000:894F, 8956, 8968
F000:8977 26: AD lods word ptr es:[si] ; String [si] to ax
F000:8979 FB sti ; Enable interrupts
F000:897A E9 0080 jmp loc_161 ; (89FD)
F000:897D loc_156: ; xref F000:8925
F000:897D BF 0008 mov di,8
F000:8980 2B E7 sub sp,di
F000:8982 F7 DF neg di
F000:8984 BB 2000 mov bx,2000h
F000:8987 8B 16 0050 mov dx,vid_curs_pos0 ; (0040:0050=184Fh)
F000:898B 8A C6 mov al,dh
F000:898D F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8991 C1 E0 02 shl ax,2 ; Shift w/zeros fill
F000:8994 32 F6 xor dh,dh ; Zero register
F000:8996 03 C2 add ax,dx
F000:8998 8B F0 mov si,ax
F000:899A 80 3E 0049 06 cmp video_mode,6 ; (0040:0049=3)
F000:899F 8C C1 mov cx,es
F000:89A1 8E D9 mov ds,cx
F000:89A3 74 13 jz short loc_158 ; Jump if zero
F000:89A5 D1 E6 shl si,1 ; Shift w/zeros fill
F000:89A7 loc_157: ; xref F000:89B4
F000:89A7 8B 04 mov ax,[si]
F000:89A9 E8 0370 call sub_25 ; (8D1C)
F000:89AC 8B 00 mov ax,[bx+si]
F000:89AE 83 C6 50 add si,50h
F000:89B1 E8 0368 call sub_25 ; (8D1C)
F000:89B4 75 F1 jnz loc_157 ; Jump if not zero
F000:89B6 EB 0F jmp short loc_159 ; (89C7)
F000:89B8 loc_158: ; xref F000:89A3, 89C5
F000:89B8 8A 04 mov al,[si]
F000:89BA 88 03 mov [bp+di],al
F000:89BC 47 inc di
F000:89BD 8A 00 mov al,[bx+si]
F000:89BF 83 C6 50 add si,50h
F000:89C2 88 03 mov [bp+di],al
F000:89C4 47 inc di
F000:89C5 75 F1 jnz loc_158 ; Jump if not zero
F000:89C7 loc_159: ; xref F000:89B6
F000:89C7 8C D7 mov di,ss
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 41

F000:89C9 8E DF mov ds,di
F000:89CB 8C CF mov di,cs
F000:89CD 8E C7 mov es,di
F000:89CF BF FA6E mov di,0FA6Eh
F000:89D2 32 C0 xor al,al ; Zero register
F000:89D4 loc_160: ; xref F000:89E8, 89FB
F000:89D4 8B F4 mov si,sp
F000:89D6 B9 0008 mov cx,8
F000:89D9 FA cli ; Disable interrupts
F000:89DA FC cld ; Clear direction
F000:89DB F3/ A6 repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:89DD FB sti ; Enable interrupts
F000:89DE 74 1D jz short loc_161 ; Jump if zero
F000:89E0 FE C0 inc al
F000:89E2 74 19 jz short loc_161 ; Jump if zero
F000:89E4 03 F9 add di,cx
F000:89E6 3C 80 cmp al,80h
F000:89E8 75 EA jne loc_160 ; Jump if not equal
F000:89EA 33 C0 xor ax,ax ; Zero register
F000:89EC 8E C0 mov es,ax
F000:89EE 26: C4 3E 007C les di,dword ptr es:graph_tbl_off ; (0000:007C=4CF0h) Load 32 bit ptr
F000:89F3 8C C1 mov cx,es
F000:89F5 0B CF or cx,di
F000:89F7 74 04 jz short loc_161 ; Jump if zero
F000:89F9 B0 80 mov al,80h
F000:89FB EB D7 jmp short loc_160 ; (89D4)
F000:89FD loc_161: ; xref F000:897A, 89DE, 89E2, 89F7
F000:89FD 89 46 14 mov [bp+14h],ax
F000:8A00 8B E5 mov sp,bp
F000:8A02 C3 retn
sub_12 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8526, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_13 proc near
F000:8A03 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8A07 80 FC 07 cmp ah,7
F000:8A0A 74 05 je short loc_162 ; Jump if equal
F000:8A0C 80 FC 04 cmp ah,4
F000:8A0F 73 74 jae short loc_171 ; Jump if above or =
F000:8A11 loc_162: ; xref F000:8A0A
F000:8A11 8A E3 mov ah,bl
F000:8A13 50 push ax
F000:8A14 8A DF mov bl,bh
F000:8A16 32 FF xor bh,bh ; Zero register
F000:8A18 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8A1A 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8A1E 8A C6 mov al,dh
F000:8A20 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8A24 32 F6 xor dh,dh ; Zero register
F000:8A26 03 C2 add ax,dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 42

F000:8A28 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8A2A D1 EB shr bx,1 ; Shift w/zeros fill
F000:8A2C 93 xchg ax,bx
F000:8A2D F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8A31 03 C3 add ax,bx
F000:8A33 8B F8 mov di,ax
F000:8A35 58 pop ax
F000:8A36 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8A3B 74 07 je short loc_163 ; Jump if equal
F000:8A3D 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8A42 73 0A jae short loc_165 ; Jump if above or =
F000:8A44 loc_163: ; xref F000:8A3B
F000:8A44 FA cli ; Disable interrupts
F000:8A45 FC cld ; Clear direction
F000:8A46 AB stosw ; Store ax to es:[di]
F000:8A47 49 dec cx
F000:8A48 74 02 jz short loc_164 ; Jump if zero
F000:8A4A F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:8A4C loc_164: ; xref F000:8A48
F000:8A4C FB sti ; Enable interrupts
F000:8A4D C3 retn
F000:8A4E loc_165: ; xref F000:8A42
F000:8A4E 8B D8 mov bx,ax
F000:8A50 8B F1 mov si,cx
F000:8A52 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8A56 83 C2 06 add dx,6
F000:8A59 loc_166: ; xref F000:8A76
F000:8A59 33 C9 xor cx,cx ; Zero register

F000:8A5B locloop_167: ; xref F000:8A66
F000:8A5B FB sti ; Enable interrupts
F000:8A5C FC cld ; Clear direction
F000:8A5D FA cli ; Disable interrupts
F000:8A5E FC cld ; Clear direction
F000:8A5F EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8A60 A8 08 test al,8
F000:8A62 75 0D jnz short loc_170 ; Jump if not zero
F000:8A64 A8 01 test al,1
F000:8A66 E0 F3 loopnz locloop_167 ; Loop if zf=0, cx>0

F000:8A68 33 C9 xor cx,cx ; Zero register

F000:8A6A locloop_168: ; xref F000:8A6F
F000:8A6A EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8A6B EB 00 jmp short loc_169 ; (8A6D)
F000:8A6D loc_169: ; xref F000:8A6B
F000:8A6D A8 09 test al,9
F000:8A6F E1 F9 loopz locloop_168 ; Loop if zf=1, cx>0

F000:8A71 loc_170: ; xref F000:8A62
F000:8A71 8B C3 mov ax,bx
F000:8A73 AB stosw ; Store ax to es:[di]
F000:8A74 FB sti ; Enable interrupts
F000:8A75 4E dec si
F000:8A76 75 E1 jnz loc_166 ; Jump if not zero
F000:8A78 C3 retn

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 43

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:8528, 857B

sub_14:
F000:8A79 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8A7D 80 FC 07 cmp ah,7
F000:8A80 74 05 je short loc_172 ; Jump if equal
F000:8A82 80 FC 04 cmp ah,4
F000:8A85 loc_171: ; xref F000:8A0F
F000:8A85 73 65 jae short loc_181 ; Jump if above or =
F000:8A87 loc_172: ; xref F000:8A80
F000:8A87 50 push ax
F000:8A88 8A DF mov bl,bh
F000:8A8A 32 FF xor bh,bh ; Zero register
F000:8A8C D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8A8E 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8A92 8A C6 mov al,dh
F000:8A94 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8A98 32 F6 xor dh,dh ; Zero register
F000:8A9A 03 C2 add ax,dx
F000:8A9C D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8A9E D1 EB shr bx,1 ; Shift w/zeros fill
F000:8AA0 93 xchg ax,bx
F000:8AA1 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8AA5 03 C3 add ax,bx
F000:8AA7 8B F8 mov di,ax
F000:8AA9 58 pop ax
F000:8AAA 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8AAF 74 07 je short loc_173 ; Jump if equal
F000:8AB1 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8AB6 73 08 jae short loc_175 ; Jump if above or =
F000:8AB8 loc_173: ; xref F000:8AAF
F000:8AB8 FA cli ; Disable interrupts
F000:8AB9 FC cld ; Clear direction

F000:8ABA locloop_174: ; xref F000:8ABC
F000:8ABA AA stosb ; Store al to es:[di]
F000:8ABB 47 inc di
F000:8ABC E2 FC loop locloop_174 ; Loop if cx > 0

F000:8ABE FB sti ; Enable interrupts
F000:8ABF C3 retn
F000:8AC0 loc_175: ; xref F000:8AB6
F000:8AC0 8A D8 mov bl,al
F000:8AC2 8B F1 mov si,cx
F000:8AC4 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8AC8 83 C2 06 add dx,6
F000:8ACB loc_176: ; xref F000:8AE9
F000:8ACB 33 C9 xor cx,cx ; Zero register

F000:8ACD locloop_177: ; xref F000:8AD8
F000:8ACD FB sti ; Enable interrupts
F000:8ACE FC cld ; Clear direction
F000:8ACF FA cli ; Disable interrupts
F000:8AD0 FC cld ; Clear direction
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 44

F000:8AD1 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8AD2 A8 08 test al,8
F000:8AD4 75 0D jnz short loc_180 ; Jump if not zero
F000:8AD6 A8 01 test al,1
F000:8AD8 E0 F3 loopnz locloop_177 ; Loop if zf=0, cx>0

F000:8ADA 33 C9 xor cx,cx ; Zero register

F000:8ADC locloop_178: ; xref F000:8AE1
F000:8ADC EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8ADD EB 00 jmp short loc_179 ; (8ADF)
F000:8ADF loc_179: ; xref F000:8ADD
F000:8ADF A8 09 test al,9
F000:8AE1 E1 F9 loopz locloop_178 ; Loop if zf=1, cx>0

F000:8AE3 loc_180: ; xref F000:8AD4
F000:8AE3 8A C3 mov al,bl
F000:8AE5 AA stosb ; Store al to es:[di]
F000:8AE6 FB sti ; Enable interrupts
F000:8AE7 47 inc di
F000:8AE8 4E dec si
F000:8AE9 75 E0 jnz loc_176 ; Jump if not zero
F000:8AEB C3 retn
F000:8AEC loc_181: ; xref F000:8A85
F000:8AEC 55 push bp
F000:8AED 8B E9 mov bp,cx
F000:8AEF 50 push ax
F000:8AF0 25 007F and ax,7Fh
F000:8AF3 C1 E0 03 shl ax,3 ; Shift w/zeros fill
F000:8AF6 50 push ax
F000:8AF7 8B 16 0050 mov dx,vid_curs_pos0 ; (0040:0050=184Fh)
F000:8AFB 8A C6 mov al,dh
F000:8AFD F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8B01 C1 E0 02 shl ax,2 ; Shift w/zeros fill
F000:8B04 32 F6 xor dh,dh ; Zero register
F000:8B06 03 C2 add ax,dx
F000:8B08 8B F8 mov di,ax
F000:8B0A BE FA6E mov si,0FA6Eh
F000:8B0D 8A 36 0049 mov dh,video_mode ; (0040:0049=3)
F000:8B11 8A D3 mov dl,bl
F000:8B13 0E push cs
F000:8B14 1F pop ds
F000:8B15 58 pop ax
F000:8B16 5B pop bx
F000:8B17 22 DB and bl,bl
F000:8B19 79 08 jns short loc_182 ; Jump if not sign
F000:8B1B 33 F6 xor si,si ; Zero register
F000:8B1D 8E DE mov ds,si
F000:8B1F C5 36 007C lds si,dword ptr ds:graph_tbl_off ; (0000:007C=4CF0h) Load 32 bit ptr
F000:8B23 loc_182: ; xref F000:8B19
F000:8B23 03 F0 add si,ax
F000:8B25 80 FE 06 cmp dh,6
F000:8B28 74 43 je short loc_188 ; Jump if equal
F000:8B2A D1 E7 shl di,1 ; Shift w/zeros fill
F000:8B2C 8A C2 mov al,dl
F000:8B2E 24 03 and al,3
F000:8B30 32 F6 xor dh,dh ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 45

F000:8B32 loc_183: ; xref F000:8B37
F000:8B32 0A F0 or dh,al
F000:8B34 C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:8B37 75 F9 jnz loc_183 ; Jump if not zero
F000:8B39 loc_184: ; xref F000:8B69
F000:8B39 B9 0004 mov cx,4

F000:8B3C locloop_185: ; xref F000:8B5F
F000:8B3C 8A 04 mov al,[si]
F000:8B3E 46 inc si
F000:8B3F E8 01F1 call sub_26 ; (8D33)
F000:8B42 79 03 jns short loc_186 ; Jump if not sign
F000:8B44 26: 33 05 xor ax,es:[di]
F000:8B47 loc_186: ; xref F000:8B42
F000:8B47 26: 89 05 mov es:[di],ax
F000:8B4A 8A 04 mov al,[si]
F000:8B4C 46 inc si
F000:8B4D E8 01E3 call sub_26 ; (8D33)
F000:8B50 79 05 jns short loc_187 ; Jump if not sign
F000:8B52 26: 33 85 2000 xor ax,es:data_28e[di] ; (B800:2000=720h)
F000:8B57 loc_187: ; xref F000:8B50
F000:8B57 26: 89 85 2000 mov es:data_28e[di],ax ; (B800:2000=720h)
F000:8B5C 83 C7 50 add di,50h
F000:8B5F E2 DB loop locloop_185 ; Loop if cx > 0

F000:8B61 81 EF 013E sub di,13Eh
F000:8B65 83 EE 08 sub si,8
F000:8B68 4D dec bp
F000:8B69 75 CE jnz loc_184 ; Jump if not zero
F000:8B6B 5D pop bp
F000:8B6C C3 retn
F000:8B6D loc_188: ; xref F000:8B28
F000:8B6D D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8B6F 9F lahf ; Load ah from flags
F000:8B70 loc_189: ; xref F000:8B9C
F000:8B70 B9 0004 mov cx,4

F000:8B73 locloop_190: ; xref F000:8B92
F000:8B73 8A 04 mov al,[si]
F000:8B75 46 inc si
F000:8B76 9E sahf ; Store ah into flags

F000:8B77 73 03 jnc short loc_191 ; Jump if carry=0
F000:8B79 26: 32 05 xor al,es:[di]
F000:8B7C loc_191: ; xref F000:8B77
F000:8B7C 26: 88 05 mov es:[di],al
F000:8B7F 8A 04 mov al,[si]
F000:8B81 46 inc si
F000:8B82 9E sahf ; Store ah into flags
F000:8B83 73 05 jnc short loc_192 ; Jump if carry=0
F000:8B85 26: 32 85 2000 xor al,es:data_28e[di] ; (B800:2000=20h)
F000:8B8A loc_192: ; xref F000:8B83
F000:8B8A 26: 88 85 2000 mov es:data_28e[di],al ; (B800:2000=20h)
F000:8B8F 83 C7 50 add di,50h
F000:8B92 E2 DF loop locloop_190 ; Loop if cx > 0

F000:8B94 81 EF 013F sub di,13Fh
F000:8B98 83 EE 08 sub si,8
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 46

F000:8B9B 4D dec bp
F000:8B9C 75 D2 jnz loc_189 ; Jump if not zero
F000:8B9E 5D pop bp
F000:8B9F C3 retn
sub_13 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:852A, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_15 proc near
F000:8BA0 A0 0066 mov al,video_color ; (0040:0066=30h)
F000:8BA3 22 FF and bh,bh
F000:8BA5 74 0B jz short loc_193 ; Jump if zero
F000:8BA7 0C 20 or al,20h ; ' '
F000:8BA9 F6 C3 01 test bl,1
F000:8BAC 75 0B jnz short loc_194 ; Jump if not zero
F000:8BAE 24 DF and al,0DFh
F000:8BB0 EB 07 jmp short loc_194 ; (8BB9)
F000:8BB2 loc_193: ; xref F000:8BA5
F000:8BB2 24 E0 and al,0E0h
F000:8BB4 80 E3 1F and bl,1Fh
F000:8BB7 0A C3 or al,bl
F000:8BB9 loc_194: ; xref F000:8BAC, 8BB0
F000:8BB9 A2 0066 mov video_color,al ; (0040:0066=30h)
F000:8BBC 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8BC0 83 C2 05 add dx,5
F000:8BC3 EE out dx,al ; port 3D9h, CGA color control
F000:8BC4 C3 retn
sub_15 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:852C, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_16 proc near
F000:8BC5 8A D8 mov bl,al
F000:8BC7 E8 011A call sub_24 ; (8CE4)
F000:8BCA 8A E3 mov ah,bl
F000:8BCC 22 DD and bl,ch
F000:8BCE 22 E4 and ah,ah
F000:8BD0 79 04 jns short loc_195 ; Jump if not sign
F000:8BD2 32 C3 xor al,bl
F000:8BD4 EB 06 jmp short loc_196 ; (8BDC)
F000:8BD6 loc_195: ; xref F000:8BD0
F000:8BD6 F6 D5 not ch
F000:8BD8 22 C5 and al,ch
F000:8BDA 0A C3 or al,bl
F000:8BDC loc_196: ; xref F000:8BD4
F000:8BDC D2 C8 ror al,cl ; Rotate
F000:8BDE 26: 88 04 mov es:[si],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 47

F000:8BE1 C3 retn
sub_16 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:852E, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_17 proc near
F000:8BE2 E8 00FF call sub_24 ; (8CE4)
F000:8BE5 22 C5 and al,ch
F000:8BE7 8B EC mov bp,sp
F000:8BE9 88 46 14 mov [bp+14h],al
F000:8BEC C3 retn
sub_17 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8530, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_18 proc near
F000:8BED loc_197: ; xref F000:8583
F000:8BED 1E push ds
F000:8BEE 50 push ax
F000:8BEF 53 push bx
F000:8BF0 51 push cx
F000:8BF1 52 push dx
F000:8BF2 50 push ax
F000:8BF3 B8 0040 mov ax,seg_b
F000:8BF6 8E D8 mov ds,ax
F000:8BF8 B4 03 mov ah,3
F000:8BFA 8A 3E 0062 mov bh,video_page ; (0040:0062=0)
F000:8BFE CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:8C00 58 pop ax
F000:8C01 3C 0D cmp al,0Dh
F000:8C03 76 0F jbe short loc_201 ; Jump if below or =
F000:8C05 loc_198: ; xref F000:8C20
F000:8C05 B4 0A mov ah,0Ah
F000:8C07 E8 009B call sub_22 ; (8CA5)
F000:8C0A loc_199: ; xref F000:8C25, 8C30, 8C34
F000:8C0A B4 02 mov ah,2
F000:8C0C CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:8C0E loc_200: ; xref F000:8C2A
F000:8C0E 5A pop dx
F000:8C0F 59 pop cx
F000:8C10 5B pop bx
F000:8C11 58 pop ax
F000:8C12 1F pop ds
F000:8C13 CF iret ; Interrupt return
F000:8C14 loc_201: ; xref F000:8C03
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 48

F000:8C14 74 16 jz short loc_203 ; Jump if zero
F000:8C16 3C 08 cmp al,8
F000:8C18 74 14 je short loc_204 ; Jump if equal
F000:8C1A 3C 07 cmp al,7
F000:8C1C 74 09 je short loc_202 ; Jump if equal
F000:8C1E 3C 0A cmp al,0Ah
F000:8C20 75 E3 jne loc_198 ; Jump if not equal
F000:8C22 E8 008F call sub_23 ; (8CB4)
F000:8C25 EB E3 jmp short loc_199 ; (8C0A)
F000:8C27 loc_202: ; xref F000:8C1C
F000:8C27 E8 01B6 call sub_30 ; (8DE0)
F000:8C2A EB E2 jmp short loc_200 ; (8C0E)
F000:8C2C loc_203: ; xref F000:8C14
F000:8C2C 32 D2 xor dl,dl ; Zero register
F000:8C2E loc_204: ; xref F000:8C18
F000:8C2E 22 D2 and dl,dl
F000:8C30 74 D8 jz loc_199 ; Jump if zero
F000:8C32 FE CA dec dl
F000:8C34 EB D4 jmp short loc_199 ; (8C0A)
sub_18 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8532, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_19 proc near
F000:8C36 A0 0049 mov al,video_mode ; (0040:0049=3)
F000:8C39 8A 26 004A mov ah,byte ptr video_columns ; (0040:004A=50h)
F000:8C3D 8B EC mov bp,sp
F000:8C3F 89 46 14 mov [bp+14h],ax
F000:8C42 A0 0062 mov al,video_page ; (0040:0062=0)
F000:8C45 88 46 0F mov [bp+0Fh],al
F000:8C48 C3 retn
sub_19 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8534, 8536, 8538, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_20 proc near
F000:8C49 C3 retn
sub_20 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:853A, 857B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_21 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 49

F000:8C4A 3C 04 cmp al,4
F000:8C4C 73 56 jae short loc_ret_210 ; Jump if above or =
F000:8C4E E3 54 jcxz short loc_ret_210 ; Jump if cx=0
F000:8C50 98 cbw ; Convrt byte to word
F000:8C51 8B F8 mov di,ax
F000:8C53 8B F3 mov si,bx
F000:8C55 32 DB xor bl,bl ; Zero register
F000:8C57 86 DF xchg bl,bh
F000:8C59 87 DE xchg bx,si
F000:8C5B D1 E6 shl si,1 ; Shift w/zeros fill
F000:8C5D FF B4 0050 push word ptr [si+50h]
nop ;*Fixup for MASM (M)
F000:8C61 B4 02 mov ah,2
F000:8C63 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx

F000:8C65 locloop_205: ; xref F000:8C99
F000:8C65 26: 8A 46 00 mov al,es:[bp]
F000:8C69 45 inc bp
F000:8C6A 3C 08 cmp al,8
F000:8C6C 74 0C je short loc_206 ; Jump if equal
F000:8C6E 3C 0D cmp al,0Dh
F000:8C70 74 08 je short loc_206 ; Jump if equal
F000:8C72 3C 07 cmp al,7
F000:8C74 74 04 je short loc_206 ; Jump if equal
F000:8C76 3C 0A cmp al,0Ah
F000:8C78 75 0A jne short loc_207 ; Jump if not equal
F000:8C7A loc_206: ; xref F000:8C6C, 8C70, 8C74
F000:8C7A B4 0E mov ah,0Eh
F000:8C7C CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:8C7E 8B 94 0050 mov dx,[si+50h]
nop ;*Fixup for MASM (M)
F000:8C82 EB 11 jmp short loc_209 ; (8C95)
F000:8C84 loc_207: ; xref F000:8C78
F000:8C84 83 FF 01 cmp di,1
F000:8C87 76 05 jbe short loc_208 ; Jump if below or =
F000:8C89 26: 8A 5E 00 mov bl,es:[bp]
F000:8C8D 45 inc bp
F000:8C8E loc_208: ; xref F000:8C87
F000:8C8E B4 09 mov ah,9
F000:8C90 51 push cx
F000:8C91 E8 0011 call sub_22 ; (8CA5)
F000:8C94 59 pop cx
F000:8C95 loc_209: ; xref F000:8C82
F000:8C95 B4 02 mov ah,2
F000:8C97 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:8C99 E2 CA loop locloop_205 ; Loop if cx > 0

F000:8C9B 5A pop dx
F000:8C9C D1 EF shr di,1 ; Shift w/zeros fill
F000:8C9E 72 04 jc short loc_ret_210 ; Jump if carry Set
F000:8CA0 B4 02 mov ah,2
F000:8CA2 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 50

F000:8CA4 loc_ret_210: ; xref F000:8C4C, 8C4E, 8C9E
F000:8CA4 C3 retn
sub_21 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8C07, 8C91
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_22 proc near
F000:8CA5 B9 0001 mov cx,1
F000:8CA8 CD 10 int 10h ; Video display ah=functn 0Ah
; set char al at present curs
F000:8CAA FE C2 inc dl
F000:8CAC 3A 16 004A cmp dl,byte ptr video_columns ; (0040:004A=50h)
F000:8CB0 75 31 jne short loc_ret_213 ; Jump if not equal
F000:8CB2 32 D2 xor dl,dl ; Zero register

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:8C22

sub_23:
F000:8CB4 FE C6 inc dh
F000:8CB6 80 FE 19 cmp dh,19h
F000:8CB9 75 28 jne short loc_ret_213 ; Jump if not equal
F000:8CBB FE CE dec dh
F000:8CBD 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8CC2 74 09 je short loc_211 ; Jump if equal
F000:8CC4 80 3E 0049 04 cmp video_mode,4 ; (0040:0049=3)
F000:8CC9 B4 00 mov ah,0
F000:8CCB 73 04 jnc short loc_212 ; Jump if carry=0
F000:8CCD loc_211: ; xref F000:8CC2
F000:8CCD B4 08 mov ah,8
F000:8CCF CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:8CD1 loc_212: ; xref F000:8CCB
F000:8CD1 53 push bx
F000:8CD2 52 push dx
F000:8CD3 33 C9 xor cx,cx ; Zero register
F000:8CD5 8A 16 004A mov dl,byte ptr video_columns ; (0040:004A=50h)
F000:8CD9 FE CA dec dl
F000:8CDB BB 0601 mov bx,601h
F000:8CDE 93 xchg ax,bx
F000:8CDF CD 10 int 10h ; Video display ah=functn 06h
; scroll up, al=lines
F000:8CE1 5A pop dx
F000:8CE2 5B pop bx

F000:8CE3 loc_ret_213: ; xref F000:8CB0, 8CB9
F000:8CE3 C3 retn
sub_22 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 51

; SUBROUTINE
;
; Called from: F000:8BC7, 8BE2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_24 proc near
F000:8CE4 D1 CA ror dx,1 ; Rotate
F000:8CE6 B0 50 mov al,50h ; 'P'
F000:8CE8 F6 E2 mul dl ; ax = reg * al
F000:8CEA D0 E6 shl dh,1 ; Shift w/zeros fill
F000:8CEC 73 03 jnc short loc_214 ; Jump if carry=0
F000:8CEE 05 2000 add ax,2000h
F000:8CF1 loc_214: ; xref F000:8CEC
F000:8CF1 8B F0 mov si,ax
F000:8CF3 8B C1 mov ax,cx
F000:8CF5 B9 0103 mov cx,103h
F000:8CF8 B2 07 mov dl,7
F000:8CFA 22 D0 and dl,al
F000:8CFC 80 3E 0049 06 cmp video_mode,6 ; (0040:0049=3)
F000:8D01 73 0B jae short loc_215 ; Jump if above or =
F000:8D03 B9 0302 mov cx,302h
F000:8D06 B2 03 mov dl,3
F000:8D08 22 D0 and dl,al
F000:8D0A D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8D0C FE C2 inc dl
F000:8D0E loc_215: ; xref F000:8D01
F000:8D0E FE C2 inc dl
F000:8D10 D3 E8 shr ax,cl ; Shift w/zeros fill
F000:8D12 03 F0 add si,ax
F000:8D14 8A CA mov cl,dl
F000:8D16 26: 8A 04 mov al,es:[si]
F000:8D19 D2 C0 rol al,cl ; Rotate
F000:8D1B C3 retn
sub_24 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:89A9, 89B1
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_25 proc near
F000:8D1C 8B D0 mov dx,ax
F000:8D1E D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D20 0B C2 or ax,dx
F000:8D22 86 C4 xchg al,ah
F000:8D24 B9 0008 mov cx,8

F000:8D27 locloop_216: ; xref F000:8D2D
F000:8D27 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D29 D0 D2 rcl dl,1 ; Rotate thru carry
F000:8D2B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D2D E2 F8 loop locloop_216 ; Loop if cx > 0

F000:8D2F 88 13 mov [bp+di],dl
F000:8D31 47 inc di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 52

F000:8D32 C3 retn
sub_25 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8B3F, 8B4D
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_26 proc near
F000:8D33 B4 08 mov ah,8
F000:8D35 loc_217: ; xref F000:8D3D
F000:8D35 D0 E0 shl al,1 ; Shift w/zeros fill
F000:8D37 D1 D3 rcl bx,1 ; Rotate thru carry
F000:8D39 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8D3B FE CC dec ah
F000:8D3D 75 F6 jnz loc_217 ; Jump if not zero
F000:8D3F 8B C3 mov ax,bx
F000:8D41 D1 E8 shr ax,1 ; Shift w/zeros fill
F000:8D43 0B C3 or ax,bx
F000:8D45 22 C6 and al,dh
F000:8D47 22 E6 and ah,dh
F000:8D49 86 C4 xchg al,ah
F000:8D4B 22 D2 and dl,dl
F000:8D4D C3 retn
sub_26 endp

F000:8D4E 50 A0 10 00 24 30 db 50h, 0A0h, 10h, 0, 24h, 30h
F000:8D54 3C 30 58 C3 db 3Ch, 30h, 58h, 0C3h
F000:8D58 loc_218: ; xref F000:8119, 8186, 8D70, 8F89
; 9099
F000:8D58 8B D5 mov dx,bp
F000:8D5A loc_219: ; xref F000:8D66
F000:8D5A BC 8D5F mov sp,8D5Fh
F000:8D5D EB 13 jmp short loc_224 ; (8D72)

F000:8D5F locloop_220: ; xref F000:8D5F
F000:8D5F E2 FE loop locloop_220 ; Loop if cx > 0


F000:8D61 locloop_221: ; xref F000:8D61
F000:8D61 E2 FE loop locloop_221 ; Loop if cx > 0


F000:8D63 locloop_222: ; xref F000:8D63
F000:8D63 E2 FE loop locloop_222 ; Loop if cx > 0

F000:8D65 4A dec dx
F000:8D66 75 F2 jnz loc_219 ; Jump if not zero
F000:8D68 BA 0006 mov dx,6

F000:8D6B locloop_223: ; xref F000:8D6B, 8D6E
F000:8D6B E2 FE loop locloop_223 ; Loop if cx > 0

F000:8D6D 4A dec dx
F000:8D6E 75 FB jnz locloop_223 ; Jump if not zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 53

F000:8D70 EB E6 jmp short loc_218 ; (8D58)
F000:8D72 loc_224: ; xref F000:8D5D, 8DB3
F000:8D72 BB 0080 mov bx,80h
F000:8D75 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8D77 24 FE and al,0FEh
F000:8D79 EB 00 jmp short loc_225 ; (8D7B)
F000:8D7B loc_225: ; xref F000:8D79
F000:8D7B EB 00 jmp short loc_226 ; (8D7D)
F000:8D7D loc_226: ; xref F000:8D7B, 8D90
F000:8D7D 0C 02 or al,2
F000:8D7F E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8D81 B9 00E0 mov cx,0E0h

F000:8D84 locloop_227: ; xref F000:8D84
F000:8D84 E2 FE loop locloop_227 ; Loop if cx > 0

F000:8D86 24 FD and al,0FDh
F000:8D88 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
; al = 0, disable parity
F000:8D8A B9 00D0 mov cx,0D0h

F000:8D8D locloop_228: ; xref F000:8D8D
F000:8D8D E2 FE loop locloop_228 ; Loop if cx > 0

F000:8D8F 4B dec bx
F000:8D90 75 EB jnz loc_226 ; Jump if not zero
F000:8D92 FF E4 jmp sp ;*Register jump
F000:8D94 loc_229: ; xref F000:8FC1, 932B, 9331, AA33
; AA60
F000:8D94 33 C0 xor ax,ax ; Zero register
F000:8D96 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:8D98 loc_230: ; xref F000:E9D0, E9FD
F000:8D98 E8 001E call sub_27 ; (8DB9)
F000:8D9B BE D802 mov si,0D802h
F000:8D9E E8 0018 call sub_27 ; (8DB9)
F000:8DA1 E8 00CF call sub_36 ; (8E73)
F000:8DA4 A8 20 test al,20h ; ' '
F000:8DA6 75 08 jnz short loc_233 ; Jump if not zero
F000:8DA8 loc_231: ; xref F000:8DAE
F000:8DA8 FA cli ; Disable interrupts
F000:8DA9 E8 005B call sub_31 ; (8E07)

F000:8DAC locloop_232: ; xref F000:8DAC
F000:8DAC E2 FE loop locloop_232 ; Loop if cx > 0

F000:8DAE EB F8 jmp short loc_231 ; (8DA8)
F000:8DB0 loc_233: ; xref F000:8DA6
F000:8DB0 BC 8DB5 mov sp,8DB5h
F000:8DB3 EB BD jmp short loc_224 ; (8D72)
F000:8DB5 loc_234: ; xref F000:8DB7
F000:8DB5 FB sti ; Enable interrupts
F000:8DB6 F4 hlt ; Halt processor
F000:8DB7 EB FC jmp short loc_234 ; (8DB5)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 54

;
; Called from: F000:8D98, 8D9E, 900E, 9017, 943D, 9826, AD3E
; AD53, E9DD, E9E3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_27 proc near
F000:8DB9 loc_235: ; xref F000:8DC4
F000:8DB9 FA cli ; Disable interrupts
F000:8DBA FC cld ; Clear direction
F000:8DBB 2E: AC lods byte ptr cs:[si] ; String [si] to al
F000:8DBD 22 C0 and al,al
F000:8DBF 74 05 jz short loc_ret_236 ; Jump if zero
F000:8DC1 E8 000E call sub_29 ; (8DD2)
F000:8DC4 EB F3 jmp short loc_235 ; (8DB9)

F000:8DC6 loc_ret_236: ; xref F000:8DBF
F000:8DC6 C3 retn
sub_27 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:900B, 9011, 901E, 9745, 9823
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_28 proc near
F000:8DC7 B0 0D mov al,0Dh
F000:8DC9 E8 0006 call sub_29 ; (8DD2)
F000:8DCC B0 0A mov al,0Ah
F000:8DCE E8 0001 call sub_29 ; (8DD2)
F000:8DD1 C3 retn
sub_28 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8DC1, 8DC9, 8DCE, ABED, AD11, AD31, E9ED
; E9F7, EA21
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_29 proc near
F000:8DD2 B4 0E mov ah,0Eh
F000:8DD4 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:8DD6 FA cli ; Disable interrupts
F000:8DD7 FC cld ; Clear direction
F000:8DD8 B0 8D mov al,8Dh
F000:8DDA E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:8DDC E8 0064 call sub_33 ; (8E43)
F000:8DDF C3 retn
sub_29 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 55

;
; Called from: F000:8C27, 9345, 9348
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_30 proc near
F000:8DE0 B0 B6 mov al,0B6h
F000:8DE2 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8DE4 EB 00 jmp short loc_237 ; (8DE6)
F000:8DE6 loc_237: ; xref F000:8DE4
F000:8DE6 EB 00 jmp short loc_238 ; (8DE8)
F000:8DE8 loc_238: ; xref F000:8DE6
F000:8DE8 B0 04 mov al,4
F000:8DEA E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8DEC EB 00 jmp short loc_239 ; (8DEE)
F000:8DEE loc_239: ; xref F000:8DEC
F000:8DEE EB 00 jmp short loc_240 ; (8DF0)
F000:8DF0 loc_240: ; xref F000:8DEE
F000:8DF0 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8DF2 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8DF4 50 push ax
F000:8DF5 EB 00 jmp short loc_241 ; (8DF7)
F000:8DF7 loc_241: ; xref F000:8DF5
F000:8DF7 EB 00 jmp short loc_242 ; (8DF9)
F000:8DF9 loc_242: ; xref F000:8DF7
F000:8DF9 0C 03 or al,3
F000:8DFB E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8DFD B9 8000 mov cx,8000h
F000:8E00 E8 6265 call sub_264 ; (F068)
F000:8E03 58 pop ax
F000:8E04 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E06 C3 retn
sub_30 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8DA9, 9351, 971F, 9728, 97C2, 97D2, BCE6
; EC7A, ECC1
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_31 proc near
F000:8E07 B0 B6 mov al,0B6h
F000:8E09 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8E0B EB 00 jmp short loc_243 ; (8E0D)
F000:8E0D loc_243: ; xref F000:8E0B
F000:8E0D EB 00 jmp short loc_244 ; (8E0F)
F000:8E0F loc_244: ; xref F000:8E0D
F000:8E0F B0 05 mov al,5
F000:8E11 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8E13 EB 00 jmp short loc_245 ; (8E15)
F000:8E15 loc_245: ; xref F000:8E13
F000:8E15 EB 00 jmp short loc_246 ; (8E17)
F000:8E17 loc_246: ; xref F000:8E15
F000:8E17 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8E19 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8E1B 50 push ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 56

F000:8E1C EB 00 jmp short loc_247 ; (8E1E)
F000:8E1E loc_247: ; xref F000:8E1C
F000:8E1E EB 00 jmp short loc_248 ; (8E20)
F000:8E20 loc_248: ; xref F000:8E1E
F000:8E20 0C 03 or al,3
F000:8E22 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E24 B9 3000 mov cx,3000h
F000:8E27 E8 623E call sub_264 ; (F068)
F000:8E2A 58 pop ax
F000:8E2B E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E2D C3 retn
sub_31 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:91F8, 91FF, 9224, 922B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_32 proc near
F000:8E2E loc_249: ; xref F000:850B
F000:8E2E 33 C9 xor cx,cx ; Zero register

F000:8E30 locloop_250: ; xref F000:8E35
F000:8E30 EB 00 jmp short loc_251 ; (8E32)
F000:8E32 loc_251: ; xref F000:8E30
F000:8E32 EC in al,dx ; port 2, DMA-1 bas&add ch 1
F000:8E33 84 C4 test al,ah
F000:8E35 E1 F9 loopz locloop_250 ; Loop if zf=1, cx>0

F000:8E37 74 09 jz short loc_ret_254 ; Jump if zero
F000:8E39 33 C9 xor cx,cx ; Zero register

F000:8E3B locloop_252: ; xref F000:8E40
F000:8E3B EB 00 jmp short loc_253 ; (8E3D)
F000:8E3D loc_253: ; xref F000:8E3B
F000:8E3D EC in al,dx ; port 2, DMA-1 bas&add ch 1
F000:8E3E 84 C4 test al,ah
F000:8E40 E0 F9 loopnz locloop_252 ; Loop if zf=0, cx>0


F000:8E42 loc_ret_254: ; xref F000:8E37
F000:8E42 C3 retn
sub_32 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8DDC, 8F8C, 9032, 9184, 91AE, 94BE, 959C
; 95DA, 97E1, AA4A, AB5C, AC83, ACC3, CB48
; E9AB
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_33 proc near
F000:8E43 loc_255: ; xref F000:90B1
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 57

F000:8E43 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8E45 0C 0C or al,0Ch
F000:8E47 EB 00 jmp short loc_256 ; (8E49)
F000:8E49 loc_256: ; xref F000:8E47
F000:8E49 EB 00 jmp short loc_257 ; (8E4B)
F000:8E4B loc_257: ; xref F000:8E49
F000:8E4B E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E4D 24 F3 and al,0F3h
F000:8E4F EB 00 jmp short loc_258 ; (8E51)
F000:8E51 loc_258: ; xref F000:8E4F
F000:8E51 EB 00 jmp short loc_259 ; (8E53)
F000:8E53 loc_259: ; xref F000:8E51
F000:8E53 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E55 C3 retn
sub_33 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8E7F, 93EF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_34 proc near
F000:8E56 E8 0065 call sub_40 ; (8EBE)
F000:8E59 75 07 jnz short loc_ret_260 ; Jump if not zero
F000:8E5B E8 0035 call sub_37 ; (8E93)
F000:8E5E 74 10 jz short loc_262 ; Jump if zero
F000:8E60 3A C4 cmp al,ah

F000:8E62 loc_ret_260: ; xref F000:8E59
F000:8E62 C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:93AA

sub_35:
F000:8E63 E8 0067 call sub_41 ; (8ECD)
F000:8E66 75 07 jnz short loc_ret_261 ; Jump if not zero
F000:8E68 E8 0028 call sub_37 ; (8E93)
F000:8E6B 74 03 jz short loc_262 ; Jump if zero
F000:8E6D 3A C4 cmp al,ah

F000:8E6F loc_ret_261: ; xref F000:8E66
F000:8E6F C3 retn
F000:8E70 loc_262: ; xref F000:8E5E, 8E6B
F000:8E70 0B E4 or sp,sp ; Zero ?
F000:8E72 C3 retn
sub_34 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8DA1, 9147
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 58


sub_36 proc near
F000:8E73 E4 64 in al,64h ; port 64h, keyboard status
F000:8E75 A8 01 test al,1
F000:8E77 74 04 jz short loc_264 ; Jump if zero
F000:8E79 EB 00 jmp short loc_263 ; (8E7B)
F000:8E7B loc_263: ; xref F000:8E79
F000:8E7B E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8E7D loc_264: ; xref F000:8E77
F000:8E7D B0 C0 mov al,0C0h
F000:8E7F E8 FFD4 call sub_34 ; (8E56)
F000:8E82 C3 retn
sub_36 endp

F000:8E83 E4 64 A8 01 74 04 db 0E4h, 64h, 0A8h, 1, 74h, 4
F000:8E89 EB 00 E4 60 B0 D0 db 0EBh, 0, 0E4h, 60h, 0B0h, 0D0h
F000:8E8F E8 C4 FF C3 db 0E8h, 0C4h, 0FFh, 0C3h

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8E5B, 8E68, 93B2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_37 proc near
F000:8E93 E8 0003 call sub_38 ; (8E99)
F000:8E96 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8E98 C3 retn
sub_37 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8E93
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_38 proc near
F000:8E99 B9 003A mov cx,3Ah

F000:8E9C locloop_265: ; xref F000:8EA8
F000:8E9C 51 push cx
F000:8E9D 33 C9 xor cx,cx ; Zero register

F000:8E9F locloop_266: ; xref F000:8EA5
F000:8E9F EB 00 jmp short loc_267 ; (8EA1)
F000:8EA1 loc_267: ; xref F000:8E9F
F000:8EA1 E4 64 in al,64h ; port 64h, keyboard status
F000:8EA3 A8 01 test al,1
F000:8EA5 E1 F8 loopz locloop_266 ; Loop if zf=1, cx>0

F000:8EA7 59 pop cx
F000:8EA8 E1 F2 loopz locloop_265 ; Loop if zf=1, cx>0

F000:8EAA C3 retn
sub_38 endp

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 59


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8EDE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_39 proc near
F000:8EAB E8 0010 call sub_40 ; (8EBE)
F000:8EAE 75 05 jnz short loc_ret_268 ; Jump if not zero
F000:8EB0 8A C4 mov al,ah
F000:8EB2 E8 0018 call sub_41 ; (8ECD)

F000:8EB5 loc_ret_268: ; xref F000:8EAE
F000:8EB5 C3 retn
sub_39 endp

F000:8EB6 8A E0 B0 D1 E8 EE db 8Ah, 0E0h, 0B0h, 0D1h, 0E8h, 0EEh
F000:8EBC FF C3 db 0FFh, 0C3h

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8E56, 8EAB, AC64, ACC8
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_40 proc near
F000:8EBE 50 push ax
F000:8EBF E8 0020 call sub_43 ; (8EE2)

F000:8EC2 58 pop ax
F000:8EC3 75 07 jnz short loc_ret_269 ; Jump if not zero
F000:8EC5 E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0C0h, read 8042 in port
F000:8EC7 50 push ax
F000:8EC8 E8 0017 call sub_43 ; (8EE2)
F000:8ECB 58 pop ax

F000:8ECC loc_ret_269: ; xref F000:8EC3
F000:8ECC C3 retn
sub_40 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8E63, 8EB2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_41 proc near
F000:8ECD 50 push ax
F000:8ECE E8 0011 call sub_43 ; (8EE2)
F000:8ED1 58 pop ax
F000:8ED2 75 05 jnz short loc_ret_270 ; Jump if not zero
F000:8ED4 E6 60 out 60h,al ; port 60h, keybd data write
F000:8ED6 E8 0009 call sub_43 ; (8EE2)

F000:8ED9 loc_ret_270: ; xref F000:8ED2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 60

F000:8ED9 C3 retn
sub_41 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:93C9, 940E, 9416
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_42 proc near
F000:8EDA 8A E0 mov ah,al
F000:8EDC B0 60 mov al,60h ; '`'
F000:8EDE E8 FFCA call sub_39 ; (8EAB)
F000:8EE1 C3 retn
sub_42 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8EBF, 8EC8, 8ECE, 8ED6, 8EF7, 8F00, 8F10
; AC67, ACCB, E151
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_43 proc near
F000:8EE2 loc_271: ; xref F000:81DF, 8209, 8241
F000:8EE2 33 C9 xor cx,cx ; Zero register

F000:8EE4 locloop_272: ; xref F000:8EEA
F000:8EE4 EB 00 jmp short loc_273 ; (8EE6)
F000:8EE6 loc_273: ; xref F000:8EE4
F000:8EE6 E4 64 in al,64h ; port 64h, keyboard status
F000:8EE8 A8 02 test al,2
F000:8EEA E0 F8 loopnz locloop_272 ; Loop if zf=0, cx>0

F000:8EEC 74 08 jz short loc_ret_276 ; Jump if zero

F000:8EEE locloop_274: ; xref F000:8EF4
F000:8EEE EB 00 jmp short loc_275 ; (8EF0)
F000:8EF0 loc_275: ; xref F000:8EEE
F000:8EF0 E4 64 in al,64h ; port 64h, keyboard status
F000:8EF2 A8 02 test al,2
F000:8EF4 E0 F8 loopnz locloop_274 ; Loop if zf=0, cx>0


F000:8EF6 loc_ret_276: ; xref F000:8EEC
F000:8EF6 C3 retn
sub_43 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AB7A, CB9F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 61

sub_44 proc near
F000:8EF7 E8 FFE8 call sub_43 ; (8EE2)
F000:8EFA 75 17 jnz short loc_ret_277 ; Jump if not zero
F000:8EFC B0 D1 mov al,0D1h
F000:8EFE E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0D1h, wrt 8042 out port
F000:8F00 E8 FFDF call sub_43 ; (8EE2)
F000:8F03 75 0E jnz short loc_ret_277 ; Jump if not zero
F000:8F05 B0 B7 mov al,0B7h
F000:8F07 E8 5F7F call sub_255 ; (EE89)
F000:8F0A 24 0C and al,0Ch
F000:8F0C 0C D1 or al,0D1h
F000:8F0E E6 60 out 60h,al ; port 60h, keybd data write
F000:8F10 E8 FFCF call sub_43 ; (8EE2)

F000:8F13 loc_ret_277: ; xref F000:8EFA, 8F03
F000:8F13 C3 retn
sub_44 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AB77, CBA2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_45 proc near
F000:8F14 B0 00 mov al,0
F000:8F16 E6 92 out 92h,al ; port 92h, system cntrl bits
F000:8F18 3B E4 cmp sp,sp
F000:8F1A C3 retn
sub_45 endp

F000:8F1B 51 E8 C3 FF 75 17 db 51h, 0E8h, 0C3h, 0FFh, 75h, 17h
F000:8F21 B0 D1 E6 64 E8 BA db 0B0h, 0D1h, 0E6h, 64h, 0E8h, 0BAh
F000:8F27 FF 75 0E B0 B7 E8 db 0FFh, 75h, 0Eh, 0B0h, 0B7h, 0E8h
F000:8F2D 5A 5F 24 0C 0C D3 db 5Ah, 5Fh, 24h, 0Ch, 0Ch, 0D3h
F000:8F33 E6 60 E8 AA FF db 0E6h, 60h, 0E8h, 0AAh, 0FFh
F000:8F38 loc_278:
F000:8F38 59 pop cx
F000:8F39 C3 retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CAB4
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_46 proc near
F000:8F3A B0 02 mov al,2
F000:8F3C E6 92 out 92h,al ; port 92h, system cntrl bits
F000:8F3E 3B E4 cmp sp,sp
F000:8F40 C3 retn
sub_46 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 62

; SUBROUTINE
;
; Called from: F000:9198, 95CD, 97F5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_47 proc near
F000:8F41 FA cli ; Disable interrupts
F000:8F42 FC cld ; Clear direction
F000:8F43 1E push ds
F000:8F44 8E DB mov ds,bx
F000:8F46 33 F6 xor si,si ; Zero register
F000:8F48 AD lodsw ; String [si] to ax
F000:8F49 35 AA55 xor ax,0AA55h
F000:8F4C 75 32 jnz short loc_281 ; Jump if not zero
F000:8F4E B9 0080 mov cx,80h
F000:8F51 81 FB E000 cmp bx,0E000h
F000:8F55 74 03 je short loc_279 ; Jump if equal
F000:8F57 AC lodsb ; String [si] to al
F000:8F58 8B C8 mov cx,ax
F000:8F5A loc_279: ; xref F000:8F55
F000:8F5A C1 E1 05 shl cx,5 ; Shift w/zeros fill
F000:8F5D 03 D9 add bx,cx
F000:8F5F C1 E1 04 shl cx,4 ; Shift w/zeros fill
F000:8F62 33 F6 xor si,si ; Zero register

F000:8F64 locloop_280: ; xref F000:8F67
F000:8F64 AC lodsb ; String [si] to al
F000:8F65 02 E0 add ah,al
F000:8F67 E2 FB loop locloop_280 ; Loop if cx > 0

F000:8F69 75 19 jnz short loc_282 ; Jump if not zero
F000:8F6B FB sti ; Enable interrupts
F000:8F6C 06 push es
F000:8F6D 53 push bx
F000:8F6E 55 push bp
F000:8F6F 0E push cs
F000:8F70 68 8F77 push 8F77h
F000:8F73 1E push ds
F000:8F74 6A 03 push 3
F000:8F76 CB retf ; Return far
F000:8F77 FA FC 5D 5B 07 1F db 0FAh, 0FCh, 5Dh, 5Bh, 7, 1Fh
F000:8F7D 3B E4 C3 db 3Bh, 0E4h, 0C3h
F000:8F80 loc_281: ; xref F000:8F4C
F000:8F80 81 C3 0080 add bx,80h
F000:8F84 loc_282: ; xref F000:8F69
F000:8F84 1F pop ds
F000:8F85 C3 retn
sub_47 endp


;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:8F86 loc_283: ; xref F000:80FB, 8104
F000:8F86 BD 0007 mov bp,7
F000:8F89 E9 FDCC jmp loc_218 ; (8D58)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 63


F000:8F8C loc_284: ; xref F000:80FB, 8108, 980A
F000:8F8C E8 FEB4 call sub_33 ; (8E43)
F000:8F8F B0 0D mov al,0Dh
F000:8F91 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:8F93 CD 19 int 19h ; Bootstrap loader
F000:8F95 loc_285: ; xref F000:9009
F000:8F95 B0 AA mov al,0AAh
F000:8F97 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8F99 loc_286: ; xref F000:8F9B
F000:8F99 FB sti ; Enable interrupts
F000:8F9A F4 hlt ; Halt processor
F000:8F9B EB FC jmp short loc_286 ; (8F99)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:8F9D loc_287: ; xref F000:80FB, 810A
F000:8F9D E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8F9F B0 20 mov al,20h ; ' '
F000:8FA1 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:8FA3 FF 2E 0067 jmp dword ptr @gen_io_ptr ; (0040:0067=522h)
F000:8FA7 loc_288: ; xref F000:E005
F000:8FA7 FA cli ; Disable interrupts
F000:8FA8 8B EC mov bp,sp
F000:8FAA 8C C8 mov ax,cs
F000:8FAC 3B 46 02 cmp ax,[bp+2]
F000:8FAF 75 0D jne short loc_289 ; Jump if not equal
F000:8FB1 B8 9009 mov ax,9009h
F000:8FB4 3B 46 00 cmp ax,[bp]
F000:8FB7 75 05 jne short loc_289 ; Jump if not equal
F000:8FB9 83 C4 06 add sp,6
F000:8FBC EB 4D jmp short loc_292 ; (900B)
F000:8FBE loc_289: ; xref F000:8FAF, 8FB7
F000:8FBE BE 7D8E mov si,7D8Eh
F000:8FC1 E9 FDD0 jmp loc_229 ; (8D94)


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 19h ±±±±±
;
; BOOTSTRAP LOADER
;
; Floppy drive a: attempts a read from the first sector of the disk.
; If read properly (i.e a boot disk is in drive a:), control is
; transferred to the loaded program. The boot sector at track 0,
; sector 1 is transfered to memory at 0:7C00h. dh = drive which
; was used (0=A:). Control is passed to 0:7C00h.

F000:8FC4 int_19h_bootup proc near ; xref F000:9021, E6F2
F000:8FC4 33 C0 xor ax,ax ; Zero register
F000:8FC6 8E C0 mov es,ax
F000:8FC8 B8 EFC7 mov ax,0EFC7h
F000:8FCB BF 0078 mov di,78h
F000:8FCE FA cli ; Disable interrupts
F000:8FCF FC cld ; Clear direction
F000:8FD0 AB stosw ; Store ax to es:[di]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 64

F000:8FD1 8C C8 mov ax,cs
F000:8FD3 AB stosw ; Store ax to es:[di]
F000:8FD4 BB 7C00 mov bx,7C00h
F000:8FD7 8B FB mov di,bx
F000:8FD9 B9 0100 mov cx,100h
F000:8FDC F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:8FDE FB sti ; Enable interrupts
F000:8FDF 33 D2 xor dx,dx ; Zero register
F000:8FE1 33 C0 xor ax,ax ; Zero register
F000:8FE3 CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:8FE5 E8 0061 call sub_48 ; (9049)
F000:8FE8 BE 7D9B mov si,7D9Bh
F000:8FEB E3 08 jcxz short loc_290 ; Jump if cx=0
F000:8FED BE 7DB3 mov si,7DB3h
F000:8FF0 73 31 jnc short loc_293 ; Jump if carry=0
F000:8FF2 BE 7DCB mov si,7DCBh
F000:8FF5 loc_290: ; xref F000:8FEB
F000:8FF5 B0 0E mov al,0Eh
F000:8FF7 E8 5EA5 call sub_257 ; (EE9F)
F000:8FFA A8 08 test al,8
F000:8FFC 75 09 jnz short loc_291 ; Jump if not zero
F000:8FFE B2 80 mov dl,80h
F000:9000 E8 0046 call sub_48 ; (9049)
F000:9003 E3 02 jcxz short loc_291 ; Jump if cx=0
F000:9005 73 37 jnc short loc_295 ; Jump if carry=0
F000:9007 loc_291: ; xref F000:8FFC, 9003, 9030, 9047
F000:9007 CD 18 int 18h ; ROM basic
F000:9009 EB 8A jmp short loc_285 ; (8F95)
F000:900B loc_292: ; xref F000:8FBC
F000:900B E8 FDB9 call sub_28 ; (8DC7)
F000:900E E8 FDA8 call sub_27 ; (8DB9)
F000:9011 E8 FDB3 call sub_28 ; (8DC7)
F000:9014 BE 7DE3 mov si,7DE3h
F000:9017 E8 FD9F call sub_27 ; (8DB9)
F000:901A B4 00 mov ah,0
F000:901C CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:901E E8 FDA6 call sub_28 ; (8DC7)
F000:9021 EB A1 jmp short int_19h_bootup ; (8FC4)
F000:9023 loc_293: ; xref F000:8FF0
F000:9023 8B FB mov di,bx
F000:9025 26: 8B 05 mov ax,es:[di]
F000:9028 B9 0080 mov cx,80h
F000:902B FA cli ; Disable interrupts
F000:902C FC cld ; Clear direction
F000:902D F3/ AE repe scasb ; Rep zf=1+cx >0 Scan es:[di] for al
F000:902F FB sti ; Enable interrupts
F000:9030 E3 D5 jcxz loc_291 ; Jump if cx=0
F000:9032 loc_294: ; xref F000:9045
F000:9032 E8 FE0E call sub_33 ; (8E43)
F000:9035 B0 0D mov al,0Dh
F000:9037 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:9039 EA 00007C00 ;* jmp far ptr loc_1 ;*(0000:7C00)
F000:9039 EA 00 7C 00 00 db 0EAh, 0, 7Ch, 0, 0
F000:903E loc_295: ; xref F000:9005
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 65

F000:903E 26: 81 BF 01FE AA55 cmp word ptr es:data_8e[bx],0AA55h ; (0000:01FE=0)
F000:9045 74 EB je loc_294 ; Jump if equal
F000:9047 EB BE jmp short loc_291 ; (9007)
int_19h_bootup endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8FE5, 9000
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_48 proc near
F000:9049 B9 0004 mov cx,4

F000:904C locloop_296: ; xref F000:9062
F000:904C 51 push cx
F000:904D B9 0001 mov cx,1
F000:9050 B8 0201 mov ax,201h
F000:9053 CD 13 int 13h ; Disk dl=drive #: ah=func a2h
; read sectors to memory es:bx
F000:9055 59 pop cx
F000:9056 73 0C jnc short loc_ret_297 ; Jump if carry=0
F000:9058 50 push ax
F000:9059 33 C0 xor ax,ax ; Zero register
F000:905B CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:905D 58 pop ax
F000:905E D0 E4 shl ah,1 ; Shift w/zeros fill
F000:9060 72 02 jc short loc_ret_297 ; Jump if carry Set
F000:9062 E2 E8 loop locloop_296 ; Loop if cx > 0


F000:9064 loc_ret_297: ; xref F000:9056, 9060
F000:9064 C3 retn
sub_48 endp

F000:9065 00 B0 10 E6 80 BC db 0, 0B0h, 10h, 0E6h, 80h, 0BCh
F000:906B 70 90 E9 D3 FD 72 db 70h, 90h, 0E9h, 0D3h, 0FDh, 72h
F000:9071 90 33 FF BE 01 00 db 90h, 33h, 0FFh, 0BEh, 1, 0
F000:9077 loc_298: ; xref F000:90A8
F000:9077 B0 FF mov al,0FFh
F000:9079 8B DF mov bx,di
F000:907B 89 05 mov [di],ax
F000:907D 89 45 02 mov [di+2],ax
F000:9080 loc_299: ; xref F000:908A
F000:9080 32 05 xor al,[di]
F000:9082 75 12 jnz short loc_300 ; Jump if not zero
F000:9084 0B FF or di,di ; Zero ?
F000:9086 74 14 jz short loc_301 ; Jump if zero
F000:9088 D1 EF shr di,1 ; Shift w/zeros fill
F000:908A EB F4 jmp short loc_299 ; (9080)
F000:908C BC 92 90 E9 05 1D db 0BCh, 92h, 90h, 0E9h, 5, 1Dh
F000:9092 94 90 db 94h, 90h
F000:9094 74 50 db 74h, 50h
F000:9096 loc_300: ; xref F000:9082, 90A0
F000:9096 BD 0003 mov bp,3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 66

F000:9099 E9 FCBC jmp loc_218 ; (8D58)
F000:909C loc_301: ; xref F000:9086
F000:909C 88 07 mov [bx],al
F000:909E 32 07 xor al,[bx]
F000:90A0 75 F4 jnz loc_300 ; Jump if not zero
F000:90A2 8B FE mov di,si
F000:90A4 D1 E6 shl si,1 ; Shift w/zeros fill
F000:90A6 0B FF or di,di ; Zero ?
F000:90A8 75 CD jnz loc_298 ; Jump if not zero
F000:90AA B0 11 mov al,11h
F000:90AC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:90AE BC 90B4 mov sp,90B4h
F000:90B1 E9 FD8F jmp loc_255 ; (8E43)
F000:90B4 B6 90 0B ED 78 D2 db 0B6h, 90h, 0Bh, 0EDh, 78h, 0D2h
F000:90BA BC C0 90 E9 E1 1C db 0BCh, 0C0h, 90h, 0E9h, 0E1h, 1Ch
F000:90C0 C2 90 75 D2 49 4F db 0C2h, 90h, 75h, 0D2h, 49h, 4Fh
F000:90C6 BC CC 90 E9 77 1B db 0BCh, 0CCh, 90h, 0E9h, 77h, 1Bh
F000:90CC CE 90 88 05 E2 F4 db 0CEh, 90h, 88h, 5, 0E2h, 0F4h
F000:90D2 49 90 BC DA 90 E9 db 49h, 90h, 0BCh, 0DAh, 90h, 0E9h
F000:90D8 69 1B DC 90 30 05 db 69h, 1Bh, 0DCh, 90h, 30h, 5
F000:90DE E1 F3 75 B4 30 24 db 0E1h, 0F3h, 75h, 0B4h, 30h, 24h
F000:90E4 75 B0 E4 61 A8 80 db 75h, 0B0h, 0E4h, 61h, 0A8h, 80h
F000:90EA B0 12 E6 80 33 C0 db 0B0h, 12h, 0E6h, 80h, 33h, 0C0h
F000:90F0 8E C0 B0 40 8E D8 db 8Eh, 0C0h, 0B0h, 40h, 8Eh, 0D8h
F000:90F6 B0 30 8E D0 BC 00 db 0B0h, 30h, 8Eh, 0D0h, 0BCh, 0
F000:90FC 01 B9 78 00 B8 7D db 1, 0B9h, 78h, 0, 0B8h, 7Dh
F000:9102 EA 8C CB 33 FF db 0EAh, 8Ch, 0CBh, 33h, 0FFh

F000:9107 locloop_302: ; xref F000:910B
F000:9107 AB stosw ; Store ax to es:[di]
F000:9108 93 xchg ax,bx
F000:9109 AB stosw ; Store ax to es:[di]
F000:910A 93 xchg ax,bx
F000:910B E2 FA loop locloop_302 ; Loop if cx > 0

F000:910D 26: C7 06 007E 0000 mov word ptr es:graph_tbl_seg,0 ; (0000:007E=0C80Eh)
F000:9114 BF 0180 mov di,180h
F000:9117 B9 000E mov cx,0Eh
F000:911A 33 C0 xor ax,ax ; Zero register
F000:911C F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:911E 33 FF xor di,di ; Zero register
F000:9120 BE FEE3 mov si,0FEE3h
F000:9123 B9 0020 mov cx,20h

F000:9126 locloop_303: ; xref F000:912A
F000:9126 2E: A5 movs word ptr es:[di],word ptr cs:[si] ; Mov [si] to es:[di]
F000:9128 47 inc di
F000:9129 47 inc di
F000:912A E2 FA loop locloop_303 ; Loop if cx > 0

F000:912C BF 01C0 mov di,1C0h
F000:912F B9 0008 mov cx,8

F000:9132 locloop_304: ; xref F000:9136
F000:9132 2E: A5 movs word ptr es:[di],word ptr cs:[si] ; Mov [si] to es:[di]
F000:9134 47 inc di
F000:9135 47 inc di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 67

F000:9136 E2 FA loop locloop_304 ; Loop if cx > 0

F000:9138 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:913E 74 07 jz short loc_305 ; Jump if zero
F000:9140 BF 01D0 mov di,1D0h
F000:9143 B8 7976 mov ax,7976h
F000:9146 AB stosw ; Store ax to es:[di]
F000:9147 loc_305: ; xref F000:913E
F000:9147 E8 FD29 call sub_36 ; (8E73)
F000:914A A2 0012 mov init_test_flag,al ; (0040:0012=0BFh)
F000:914D A8 20 test al,20h ; ' '
F000:914F 75 0E jnz short loc_306 ; Jump if not zero
F000:9151 BF 0020 mov di,20h
F000:9154 B8 FEB4 mov ax,0FEB4h
F000:9157 AB stosw ; Store ax to es:[di]
F000:9158 8C C8 mov ax,cs
F000:915A AB stosw ; Store ax to es:[di]
F000:915B B0 FE mov al,0FEh
F000:915D E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:915F loc_306: ; xref F000:914F
F000:915F B0 15 mov al,15h
F000:9161 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9163 C6 06 0084 18 mov video_rows,18h ; (0040:0084=18h)
F000:9168 80 0E 0010 31 or byte ptr equip_bits,31h ; (0040:0010=61h) '1'
F000:916D B8 0007 mov ax,7
F000:9170 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9172 B0 17 mov al,17h
F000:9174 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9176 80 26 0010 CF and byte ptr equip_bits,0CFh ; (0040:0010=61h)
F000:917B B8 0001 mov ax,1
F000:917E CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9180 B0 18 mov al,18h
F000:9182 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9184 E8 FCBC call sub_33 ; (8E43)
F000:9187 B0 19 mov al,19h
F000:9189 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:918B BB C000 mov bx,0C000h
F000:918E 0B ED or bp,bp ; Zero ?
F000:9190 79 06 jns short loc_307 ; Jump if not sign
F000:9192 C7 06 0072 1234 mov warm_boot_flag,1234h ; (0040:0072=1200h)
F000:9198 loc_307: ; xref F000:9190, 919F
F000:9198 E8 FDA6 call sub_47 ; (8F41)
F000:919B 81 FB C800 cmp bx,0C800h
F000:919F 72 F7 jb loc_307 ; Jump if below
F000:91A1 FA cli ; Disable interrupts
F000:91A2 FC cld ; Clear direction
F000:91A3 B0 1A mov al,1Ah
F000:91A5 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:91A7 E8 3BF9 call sub_209 ; (CDA3)
F000:91AA B0 8D mov al,8Dh
F000:91AC E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:91AE E8 FC92 call sub_33 ; (8E43)
F000:91B1 BB 0042 mov bx,42h
F000:91B4 8C C9 mov cx,cs
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 68

F000:91B6 26: 39 0F cmp es:[bx],cx
F000:91B9 74 1D je short loc_309 ; Jump if equal
F000:91BB B0 94 mov al,94h
F000:91BD E8 5CDF call sub_257 ; (EE9F)
F000:91C0 A8 30 test al,30h ; '0'
F000:91C2 74 11 jz short loc_308 ; Jump if zero
F000:91C4 81 CD 0400 or bp,400h
F000:91C8 B8 8E8E mov ax,8E8Eh
F000:91CB E8 5CD1 call sub_257 ; (EE9F)
F000:91CE 0C 20 or al,20h ; ' '
F000:91D0 86 C4 xchg al,ah
F000:91D2 E8 5CD9 call sub_258 ; (EEAE)
F000:91D5 loc_308: ; xref F000:91C2
F000:91D5 E9 0103 jmp loc_321 ; (92DB)
F000:91D8 loc_309: ; xref F000:91B9
F000:91D8 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:91DB 24 40 and al,40h ; '@'
F000:91DD BB B800 mov bx,0B800h
F000:91E0 74 04 jz short loc_310 ; Jump if zero
F000:91E2 B0 30 mov al,30h ; '0'
F000:91E4 B7 B0 mov bh,0B0h
F000:91E6 loc_310: ; xref F000:91E0
F000:91E6 08 06 0010 or ds:data_29e,al ; (C000:0010=20h)
F000:91EA E8 0171 call sub_51 ; (935E)
F000:91ED 75 17 jnz short loc_311 ; Jump if not zero
F000:91EF B0 1B mov al,1Bh
F000:91F1 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:91F3 B4 08 mov ah,8
F000:91F5 80 C2 02 add dl,2
F000:91F8 E8 FC33 call sub_32 ; (8E2E)
F000:91FB E3 09 jcxz short loc_311 ; Jump if cx=0
F000:91FD B4 01 mov ah,1
F000:91FF E8 FC2C call sub_32 ; (8E2E)
F000:9202 E3 02 jcxz short loc_311 ; Jump if cx=0
F000:9204 EB 4E jmp short loc_314 ; (9254)
F000:9206 loc_311: ; xref F000:91ED, 91FB, 9202
F000:9206 80 36 0010 30 xor byte ptr ds:data_29e,30h ; (C000:0010=20h) '0'
F000:920B A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:920E 24 30 and al,30h ; '0'
F000:9210 B7 B8 mov bh,0B8h
F000:9212 74 02 jz short loc_312 ; Jump if zero
F000:9214 B7 B0 mov bh,0B0h
F000:9216 loc_312: ; xref F000:9212
F000:9216 E8 0145 call sub_51 ; (935E)
F000:9219 75 17 jnz short loc_313 ; Jump if not zero
F000:921B B0 1C mov al,1Ch
F000:921D E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:921F B4 08 mov ah,8
F000:9221 80 C2 02 add dl,2
F000:9224 E8 FC07 call sub_32 ; (8E2E)
F000:9227 E3 09 jcxz short loc_313 ; Jump if cx=0
F000:9229 B4 01 mov ah,1
F000:922B E8 FC00 call sub_32 ; (8E2E)
F000:922E E3 02 jcxz short loc_313 ; Jump if cx=0
F000:9230 EB 22 jmp short loc_314 ; (9254)
F000:9232 loc_313: ; xref F000:9219, 9227, 922E
F000:9232 80 0E 0010 30 or byte ptr ds:data_29e,30h ; (C000:0010=20h) '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 69

F000:9237 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:923A A8 20 test al,20h ; ' '
F000:923C 74 16 jz short loc_314 ; Jump if zero
F000:923E BB 0008 mov bx,8
F000:9241 B8 02B7 mov ax,2B7h
F000:9244 E8 00ED call sub_49 ; (9334)
F000:9247 74 0B jz short loc_314 ; Jump if zero
F000:9249 2E: F6 06 E2C0 08 test byte ptr cs:data_158,8 ; (F000:E2C0=0BFh)
F000:924F 74 03 jz short loc_314 ; Jump if zero
F000:9251 E8 00F1 call sub_50 ; (9345)
F000:9254 loc_314: ; xref F000:9204, 9230, 923C, 9247
; 924F
F000:9254 B0 1D mov al,1Dh
F000:9256 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9258 B8 8E8E mov ax,8E8Eh
F000:925B E8 5C41 call sub_257 ; (EE9F)
F000:925E 50 push ax
F000:925F 8A 26 0012 mov ah,ds:data_31e ; (C000:0012=45h)
F000:9263 A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:9266 24 30 and al,30h ; '0'
F000:9268 3C 30 cmp al,30h ; '0'
F000:926A 8A C8 mov cl,al
F000:926C C0 C4 02 rol ah,2 ; Rotate
F000:926F 74 01 jz short loc_315 ; Jump if zero
F000:9271 F5 cmc ; Complement carry
F000:9272 loc_315: ; xref F000:926F
F000:9272 72 04 jc short loc_316 ; Jump if carry Set
F000:9274 81 CD 0800 or bp,800h
F000:9278 loc_316: ; xref F000:9272
F000:9278 B0 94 mov al,94h
F000:927A E8 5C22 call sub_257 ; (EE9F)
F000:927D 24 30 and al,30h ; '0'
F000:927F 74 10 jz short loc_318 ; Jump if zero
F000:9281 3C 30 cmp al,30h ; '0'
F000:9283 74 07 je short loc_317 ; Jump if equal
F000:9285 80 F9 30 cmp cl,30h ; '0'
F000:9288 75 0F jne short loc_319 ; Jump if not equal
F000:928A EB 05 jmp short loc_318 ; (9291)
F000:928C loc_317: ; xref F000:9283
F000:928C 80 F9 30 cmp cl,30h ; '0'
F000:928F 74 08 je short loc_319 ; Jump if equal
F000:9291 loc_318: ; xref F000:927F, 928A
F000:9291 81 CD 0400 or bp,400h
F000:9295 58 pop ax
F000:9296 0C 20 or al,20h ; ' '
F000:9298 50 push ax
F000:9299 loc_319: ; xref F000:9288, 928F
F000:9299 58 pop ax
F000:929A 86 C4 xchg al,ah
F000:929C E8 5C0F call sub_258 ; (EEAE)
F000:929F B0 1E mov al,1Eh
F000:92A1 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92A3 A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:92A6 24 30 and al,30h ; '0'
F000:92A8 3C 30 cmp al,30h ; '0'
F000:92AA B4 07 mov ah,7
F000:92AC 74 1A jz short loc_320 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 70

F000:92AE B0 8E mov al,8Eh
F000:92B0 E8 5BEC call sub_257 ; (EE9F)
F000:92B3 A8 E0 test al,0E0h
F000:92B5 B8 0320 mov ax,320h
F000:92B8 75 0E jnz short loc_320 ; Jump if not zero
F000:92BA B0 94 mov al,94h
F000:92BC E8 5BE0 call sub_257 ; (EE9F)
F000:92BF 24 30 and al,30h ; '0'
F000:92C1 3C 20 cmp al,20h ; ' '
F000:92C3 74 03 je short loc_320 ; Jump if equal
F000:92C5 B8 0110 mov ax,110h
F000:92C8 loc_320: ; xref F000:92AC, 92B8, 92C3
F000:92C8 80 26 0010 CF and byte ptr ds:data_29e,0CFh ; (C000:0010=20h)
F000:92CD 08 06 0010 or ds:data_29e,al ; (C000:0010=20h)
F000:92D1 32 C0 xor al,al ; Zero register
F000:92D3 86 C4 xchg al,ah
F000:92D5 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:92D7 B0 1F mov al,1Fh
F000:92D9 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92DB loc_321: ; xref F000:91D5
F000:92DB B0 20 mov al,20h ; ' '
F000:92DD E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92DF E8 34BE call sub_196 ; (C7A0)
F000:92E2 75 4A jnz short loc_323 ; Jump if not zero
F000:92E4 E8 E3D4 call $-1C29h
F000:92E7 F7 C5 4000 test bp,4000h
F000:92EB 75 3B jnz short loc_322 ; Jump if not zero
F000:92ED B4 03 mov ah,3
F000:92EF 32 FF xor bh,bh ; Zero register
F000:92F1 E8 E301 call $-1CFCh
F000:92F4 B0 21 mov al,21h ; '!'
F000:92F6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92F8 FE C6 inc dh
F000:92FA B2 00 mov dl,0
F000:92FC B4 02 mov ah,2
F000:92FE E8 E2F4 call $-1D09h
F000:9301 B0 22 mov al,22h ; '"'
F000:9303 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9305 E8 5D3A call sub_263 ; (F042)
F000:9308 B0 23 mov al,23h ; '#'
F000:930A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:930C B4 03 mov ah,3
F000:930E E8 E2E4 call $-1D19h
F000:9311 B0 24 mov al,24h ; '$'
F000:9313 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9315 80 C6 02 add dh,2
F000:9318 B2 00 mov dl,0
F000:931A 89 16 0069 mov ds:data_43e,dx ; (C000:0069=4E45h)
F000:931E E8 E3AF call $-1C4Eh
F000:9321 B0 25 mov al,25h ; '%'
F000:9323 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9325 E9 16C8 jmp loc_642 ; (A9F0)
F000:9328 loc_322: ; xref F000:92EB
F000:9328 BE 7D0F mov si,7D0Fh
F000:932B E9 FA66 jmp loc_229 ; (8D94)
F000:932E loc_323: ; xref F000:92E2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 71

F000:932E BE D7D6 mov si,0D7D6h
F000:9331 E9 FA60 jmp loc_229 ; (8D94)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9244, 93DF, 946D, 9709
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_49 proc near
F000:9334 50 push ax
F000:9335 B0 8E mov al,8Eh
F000:9337 E8 5B65 call sub_257 ; (EE9F)
F000:933A A8 C0 test al,0C0h
F000:933C 58 pop ax
F000:933D 75 05 jnz short loc_ret_324 ; Jump if not zero
F000:933F E8 5B5D call sub_257 ; (EE9F)
F000:9342 84 C4 test al,ah

F000:9344 loc_ret_324: ; xref F000:933D
F000:9344 C3 retn
sub_49 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9251, ACEA
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_50 proc near
F000:9345 E8 FA98 call sub_30 ; (8DE0)
F000:9348 E8 FA95 call sub_30 ; (8DE0)
F000:934B B9 FFF0 mov cx,0FFF0h
F000:934E E8 5D17 call sub_264 ; (F068)
F000:9351 loc_325: ; xref F000:935B
F000:9351 E8 FAB3 call sub_31 ; (8E07)
F000:9354 B9 8000 mov cx,8000h
F000:9357 E8 5D0E call sub_264 ; (F068)
F000:935A 4B dec bx
F000:935B 75 F4 jnz loc_325 ; Jump if not zero
F000:935D C3 retn
sub_50 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:91EA, 9216
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_51 proc near
F000:935E 33 C0 xor ax,ax ; Zero register
F000:9360 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9362 8B 16 0063 mov dx,ds:data_40e ; (C000:0063=2030h)
F000:9366 80 C2 04 add dl,4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 72

F000:9369 A0 0065 mov al,ds:data_41e ; (C000:0065=54h)
F000:936C 24 37 and al,37h ; '7'
F000:936E EE out dx,al ; port 2034h
F000:936F 06 push es
F000:9370 51 push cx
F000:9371 8E C3 mov es,bx
F000:9373 B7 08 mov bh,8
F000:9375 E8 1A2C call sub_133 ; (ADA4)
F000:9378 9F lahf ; Load ah from flags
F000:9379 50 push ax
F000:937A 33 C0 xor ax,ax ; Zero register
F000:937C CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:937E 33 FF xor di,di ; Zero register
F000:9380 B9 0028 mov cx,28h
F000:9383 B8 7020 mov ax,7020h
F000:9386 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:9388 58 pop ax
F000:9389 9E sahf ; Store ah into flags
F000:938A 59 pop cx
F000:938B 07 pop es
F000:938C C3 retn
sub_51 endp

F000:938D 00 db 0
F000:938E loc_326: ; xref F000:CD30
F000:938E B0 70 mov al,70h ; 'p'
F000:9390 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9392 55 push bp
F000:9393 33 ED xor bp,bp ; Zero register
F000:9395 33 C9 xor cx,cx ; Zero register

F000:9397 locloop_327: ; xref F000:93A1
F000:9397 EB 00 jmp short loc_328 ; (9399)
F000:9399 loc_328: ; xref F000:9397
F000:9399 E4 64 in al,64h ; port 64h, keyboard status
F000:939B A8 01 test al,1
F000:939D 74 02 jz short loc_329 ; Jump if zero
F000:939F E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:93A1 loc_329: ; xref F000:939D
F000:93A1 E2 F4 loop locloop_327 ; Loop if cx > 0

F000:93A3 B9 0003 mov cx,3

F000:93A6 locloop_330: ; xref F000:93AE
F000:93A6 51 push cx
F000:93A7 B8 FAFF mov ax,0FAFFh
F000:93AA E8 FAB6 call sub_35 ; (8E63)
F000:93AD 59 pop cx
F000:93AE E0 F6 loopnz locloop_330 ; Loop if zf=0, cx>0

F000:93B0 75 2A jnz short loc_335 ; Jump if not zero
F000:93B2 E8 FADE call sub_37 ; (8E93)
F000:93B5 3C AA cmp al,0AAh
F000:93B7 75 23 jne short loc_335 ; Jump if not equal
F000:93B9 B0 71 mov al,71h ; 'q'
F000:93BB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 73

F000:93BD 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:93C3 B0 4D mov al,4Dh ; 'M'
F000:93C5 74 02 jz short loc_331 ; Jump if zero
F000:93C7 B0 6C mov al,6Ch ; 'l'
F000:93C9 loc_331: ; xref F000:93C5
F000:93C9 E8 FB0E call sub_42 ; (8EDA)
F000:93CC 33 C9 xor cx,cx ; Zero register

F000:93CE locloop_332: ; xref F000:93D4
F000:93CE EB 00 jmp short loc_333 ; (93D0)
F000:93D0 loc_333: ; xref F000:93CE
F000:93D0 E4 64 in al,64h ; port 64h, keyboard status
F000:93D2 A8 01 test al,1
F000:93D4 E1 F8 loopz locloop_332 ; Loop if zf=1, cx>0

F000:93D6 74 26 jz short loc_337 ; Jump if zero
F000:93D8 EB 00 jmp short loc_334 ; (93DA)
F000:93DA loc_334: ; xref F000:93D8
F000:93DA E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:93DC loc_335: ; xref F000:93B0, 93B7
F000:93DC B8 01B7 mov ax,1B7h
F000:93DF E8 FF52 call sub_49 ; (9334)
F000:93E2 74 1A jz short loc_337 ; Jump if zero
F000:93E4 2E: F6 06 E2C0 03 test byte ptr cs:data_158,3 ; (F000:E2C0=0BFh)
F000:93EA 74 12 jz short loc_337 ; Jump if zero
F000:93EC B8 00AB mov ax,0ABh
F000:93EF E8 FA64 call sub_34 ; (8E56)
F000:93F2 75 06 jnz short loc_336 ; Jump if not zero
F000:93F4 81 CD 0200 or bp,200h
F000:93F8 EB 04 jmp short loc_337 ; (93FE)
F000:93FA loc_336: ; xref F000:93F2
F000:93FA 81 CD 0400 or bp,400h
F000:93FE loc_337: ; xref F000:93D6, 93E2, 93EA, 93F8
F000:93FE B0 72 mov al,72h ; 'r'
F000:9400 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9402 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:9408 B0 45 mov al,45h ; 'E'
F000:940A 74 0A jz short loc_338 ; Jump if zero
F000:940C B0 64 mov al,64h ; 'd'
F000:940E E8 FAC9 call sub_42 ; (8EDA)
F000:9411 E8 E64B call $-19B2h
F000:9414 EB 03 jmp short loc_339 ; (9419)
F000:9416 loc_338: ; xref F000:940A
F000:9416 E8 FAC1 call sub_42 ; (8EDA)
F000:9419 loc_339: ; xref F000:9414
F000:9419 B8 001E mov ax,1Eh
F000:941C A3 001A mov keybd_q_head,ax ; (0040:001A=24h)
F000:941F A3 001C mov keybd_q_tail,ax ; (0040:001C=24h)
F000:9422 A3 0080 mov @keybd_begin,ax ; (0040:0080=1Eh)
F000:9425 05 0020 add ax,20h
F000:9428 A3 0082 mov @keybd_end,ax ; (0040:0082=3Eh)
F000:942B E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:942D 24 B8 and al,0B8h
F000:942F EB 00 jmp short loc_340 ; (9431)
F000:9431 loc_340: ; xref F000:942F
F000:9431 EB 00 jmp short loc_341 ; (9433)
F000:9433 loc_341: ; xref F000:9431
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 74

F000:9433 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:9435 FB sti ; Enable interrupts
F000:9436 B0 73 mov al,73h ; 's'
F000:9438 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:943A BE 7E3B mov si,7E3Bh
F000:943D E8 F979 call sub_27 ; (8DB9)
F000:9440 FB sti ; Enable interrupts
F000:9441 B0 04 mov al,4
F000:9443 BA 03F6 mov dx,3F6h
F000:9446 EE out dx,al ; port 3F6h, hdsk0 register
; al = 4, reset controller
F000:9447 B9 0100 mov cx,100h
F000:944A E8 5C1B call sub_264 ; (F068)
F000:944D B0 00 mov al,0
F000:944F EE out dx,al ; port 3F6h, hdsk0 register
F000:9450 B9 FFF0 mov cx,0FFF0h
F000:9453 E8 5C12 call sub_264 ; (F068)
F000:9456 B0 74 mov al,74h ; 't'
F000:9458 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:945A A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
F000:945D A8 20 test al,20h ; ' '
F000:945F 74 1C jz short loc_343 ; Jump if zero
F000:9461 B0 8E mov al,8Eh
F000:9463 E8 5A39 call sub_257 ; (EE9F)
F000:9466 A8 C0 test al,0C0h
F000:9468 75 08 jnz short loc_342 ; Jump if not zero
F000:946A B8 FF90 mov ax,0FF90h
F000:946D E8 FEC4 call sub_49 ; (9334)
F000:9470 74 0B jz short loc_343 ; Jump if zero
F000:9472 loc_342: ; xref F000:9468
F000:9472 2E: F6 06 E2C0 30 test byte ptr cs:data_158,30h ; (F000:E2C0=0BFh) '0'
F000:9478 74 03 jz short loc_343 ; Jump if zero
F000:947A E8 1F46 call sub_136 ; (B3C3)
F000:947D loc_343: ; xref F000:945F, 9470, 9478
F000:947D FB sti ; Enable interrupts
F000:947E B0 75 mov al,75h ; 'u'
F000:9480 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9482 B0 8E mov al,8Eh
F000:9484 E8 5A18 call sub_257 ; (EE9F)
F000:9487 A8 C0 test al,0C0h
F000:9489 75 15 jnz short loc_344 ; Jump if not zero
F000:948B B0 92 mov al,92h
F000:948D E8 5A0F call sub_257 ; (EE9F)
F000:9490 0A C0 or al,al ; Zero ?
F000:9492 74 0C jz short loc_344 ; Jump if zero
F000:9494 B0 76 mov al,76h ; 'v'
F000:9496 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9498 E8 13FD call sub_118 ; (A898)
F000:949B FB sti ; Enable interrupts
F000:949C B0 77 mov al,77h ; 'w'
F000:949E E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94A0 loc_344: ; xref F000:9489, 9492
F000:94A0 5B pop bx
F000:94A1 87 DD xchg bx,bp
F000:94A3 53 push bx
F000:94A4 B0 78 mov al,78h ; 'x'
F000:94A6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 75

F000:94A8 E8 E210 call $-1DEDh
F000:94AB B0 79 mov al,79h ; 'y'
F000:94AD E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94AF 8B 1E 0013 mov bx,ds:data_32e ; (C000:0013=4553h)
F000:94B3 B8 8E8E mov ax,8E8Eh
F000:94B6 E8 59E6 call sub_257 ; (EE9F)
F000:94B9 A8 C0 test al,0C0h
F000:94BB 75 3D jnz short loc_347 ; Jump if not zero
F000:94BD 50 push ax
F000:94BE E8 F982 call sub_33 ; (8E43)
F000:94C1 B0 7A mov al,7Ah ; 'z'
F000:94C3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94C5 B8 9596 mov ax,9596h
F000:94C8 E8 0369 call sub_55 ; (9834)
F000:94CB 3B C3 cmp ax,bx
F000:94CD 74 08 je short loc_345 ; Jump if equal
F000:94CF 81 CD 0100 or bp,100h
F000:94D3 58 pop ax
F000:94D4 0C 10 or al,10h
F000:94D6 50 push ax
F000:94D7 loc_345: ; xref F000:94CD
F000:94D7 B8 B0B1 mov ax,0B0B1h
F000:94DA E8 59C2 call sub_257 ; (EE9F)
F000:94DD 86 C4 xchg al,ah
F000:94DF E8 59BD call sub_257 ; (EE9F)
F000:94E2 8B C8 mov cx,ax
F000:94E4 B8 9798 mov ax,9798h
F000:94E7 E8 034A call sub_55 ; (9834)
F000:94EA 3B C1 cmp ax,cx
F000:94EC 58 pop ax
F000:94ED 74 06 jz short loc_346 ; Jump if zero
F000:94EF 81 CD 0100 or bp,100h
F000:94F3 0C 10 or al,10h
F000:94F5 loc_346: ; xref F000:94ED
F000:94F5 86 C4 xchg al,ah
F000:94F7 E8 59B4 call sub_258 ; (EEAE)
F000:94FA loc_347: ; xref F000:94BB
F000:94FA B0 7B mov al,7Bh ; '{'
F000:94FC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94FE 68 9505 push 9505h
F000:9501 68 FA4E push 0FA4Eh
F000:9504 C3 retn
F000:9505 B0 7C E6 80 E8 C4 db 0B0h, 7Ch, 0E6h, 80h, 0E8h, 0C4h
F000:950B E1 FB B0 7D E6 80 db 0E1h, 0FBh, 0B0h, 7Dh, 0E6h, 80h
F000:9511 B8 B3 B3 E8 88 59 db 0B8h, 0B3h, 0B3h, 0E8h, 88h, 59h
F000:9517 24 7F 80 FB 08 76 db 24h, 7Fh, 80h, 0FBh, 8, 76h
F000:951D 02 0C 80 86 C4 E8 db 2, 0Ch, 80h, 86h, 0C4h, 0E8h
F000:9523 89 59 8B C3 98 C1 db 89h, 59h, 8Bh, 0C3h, 98h, 0C1h
F000:9529 E0 06 50 2E F6 06 db 0E0h, 6, 50h, 2Eh, 0F6h, 6
F000:952F C0 E2 40 74 0B 48 db 0C0h, 0E2h, 40h, 74h, 0Bh, 48h
F000:9535 8B C8 C1 E0 06 A3 db 8Bh, 0C8h, 0C1h, 0E0h, 6, 0A3h
F000:953B 0E 00 EB 15 db 0Eh, 0, 0EBh, 15h
F000:953F loc_348:
F000:953F 8B C8 mov cx,ax
F000:9541 B0 8E mov al,8Eh
F000:9543 E8 5959 call sub_257 ; (EE9F)
F000:9546 A8 C0 test al,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 76

F000:9548 75 0A jnz short loc_349 ; Jump if not zero
F000:954A B0 B8 mov al,0B8h
F000:954C E8 5950 call sub_257 ; (EE9F)
F000:954F A8 10 test al,10h
F000:9551 74 01 jz short loc_349 ; Jump if zero
F000:9553 49 dec cx
F000:9554 loc_349: ; xref F000:9548, 9551
F000:9554 89 0E 0013 mov ds:data_32e,cx ; (C000:0013=4553h)
F000:9558 B8 B0B1 mov ax,0B0B1h
F000:955B E8 5941 call sub_257 ; (EE9F)
F000:955E 86 C4 xchg al,ah
F000:9560 E8 593C call sub_257 ; (EE9F)
F000:9563 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:9566 50 push ax
F000:9567 B0 B1 mov al,0B1h
F000:9569 E8 5942 call sub_258 ; (EEAE)
F000:956C 58 pop ax
F000:956D B4 B0 mov ah,0B0h
F000:956F 86 C4 xchg al,ah
F000:9571 E8 593A call sub_258 ; (EEAE)
F000:9574 B0 7E mov al,7Eh ; '~'
F000:9576 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9578 E8 E0F3 call $-1F0Ah
F000:957B FB sti ; Enable interrupts
F000:957C C7 06 007C 0101 mov word ptr ds:data_51e,101h ; (C000:007C=2E43h)
F000:9582 C7 06 007E 0101 mov word ptr ds:data_52e,101h ; (C000:007E=0A0Dh)
F000:9588 C7 06 0078 1414 mov word ptr ds:data_49e,1414h ; (C000:0078=2053h)
F000:958E C7 06 007A 1414 mov word ptr ds:data_50e,1414h ; (C000:007A=4E49h)
F000:9594 B0 7F mov al,7Fh
F000:9596 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9598 B0 8D mov al,8Dh
F000:959A E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:959C E8 F8A4 call sub_33 ; (8E43)
F000:959F E8 1618 call sub_121 ; (ABBA)
F000:95A2 33 C9 xor cx,cx ; Zero register
F000:95A4 loc_350: ; xref F000:95B1, 95B6
F000:95A4 B4 01 mov ah,1
F000:95A6 CD 16 int 16h ; Keyboard i/o ah=function 01h
; get status, if zf=0 al=char
F000:95A8 74 0E jz short loc_351 ; Jump if zero
F000:95AA B4 00 mov ah,0
F000:95AC CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:95AE 80 FC 53 cmp ah,53h ; 'S'
F000:95B1 75 F1 jne loc_350 ; Jump if not equal
F000:95B3 B9 5555 mov cx,5555h
F000:95B6 EB EC jmp short loc_350 ; (95A4)
F000:95B8 loc_351: ; xref F000:95A8
F000:95B8 51 push cx
F000:95B9 33 C0 xor ax,ax ; Zero register
F000:95BB BF 0600 mov di,600h
F000:95BE B9 7D00 mov cx,7D00h
F000:95C1 FA cli ; Disable interrupts
F000:95C2 FC cld ; Clear direction
F000:95C3 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:95C5 FB sti ; Enable interrupts
F000:95C6 B0 80 mov al,80h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 77

F000:95C8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:95CA BB C800 mov bx,0C800h
F000:95CD loc_352: ; xref F000:95D4
F000:95CD E8 F971 call sub_47 ; (8F41)
F000:95D0 81 FB E000 cmp bx,0E000h
F000:95D4 72 F7 jb loc_352 ; Jump if below
F000:95D6 B0 8D mov al,8Dh
F000:95D8 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:95DA E8 F866 call sub_33 ; (8E43)
F000:95DD B0 81 mov al,81h
F000:95DF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:95E1 B0 8E mov al,8Eh
F000:95E3 E8 58B9 call sub_257 ; (EE9F)
F000:95E6 A8 C0 test al,0C0h
F000:95E8 75 58 jnz short loc_355 ; Jump if not zero
F000:95EA B4 02 mov ah,2
F000:95EC CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:95EE 72 41 jc short loc_354 ; Jump if carry Set
F000:95F0 80 FE 60 cmp dh,60h ; '`'
F000:95F3 73 3C jae short loc_354 ; Jump if above or =
F000:95F5 80 F9 60 cmp cl,60h ; '`'
F000:95F8 73 37 jae short loc_354 ; Jump if above or =
F000:95FA 80 FD 24 cmp ch,24h ; '$'
F000:95FD 73 32 jae short loc_354 ; Jump if above or =
F000:95FF 8A C6 mov al,dh
F000:9601 E8 0226 call sub_54 ; (982A)
F000:9604 6B C0 12 imul ax,ax,12h ; reg1 = reg2 * value
F000:9607 91 xchg ax,cx
F000:9608 50 push ax
F000:9609 E8 021E call sub_54 ; (982A)
F000:960C 69 C0 0444 imul ax,ax,444h ; reg1 = reg2 * value
F000:9610 03 C8 add cx,ax
F000:9612 58 pop ax
F000:9613 8A C4 mov al,ah
F000:9615 E8 0212 call sub_54 ; (982A)
F000:9618 50 push ax
F000:9619 6B C0 07 imul ax,ax,7 ; reg1 = reg2 * value
F000:961C 03 C1 add ax,cx
F000:961E loc_353: ; xref F000:9645
F000:961E FA cli ; Disable interrupts
F000:961F A3 006C mov ds:data_44e,ax ; (C000:006C=4D20h)
F000:9622 58 pop ax
F000:9623 15 0000 adc ax,0
F000:9626 A3 006E mov ds:data_45e,ax ; (C000:006E=4349h)
F000:9629 C6 06 0070 00 mov byte ptr ds:data_46e,0 ; (C000:0070=52h)
F000:962E FB sti ; Enable interrupts
F000:962F EB 16 jmp short loc_356 ; (9647)
F000:9631 loc_354: ; xref F000:95EE, 95F3, 95F8, 95FD
F000:9631 81 CD 0200 or bp,200h
F000:9635 B8 8E8E mov ax,8E8Eh
F000:9638 E8 5864 call sub_257 ; (EE9F)
F000:963B 0C 04 or al,4
F000:963D 86 C4 xchg al,ah
F000:963F E8 586C call sub_258 ; (EEAE)
F000:9642 loc_355: ; xref F000:95E8
F000:9642 33 C0 xor ax,ax ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 78

F000:9644 50 push ax
F000:9645 EB D7 jmp short loc_353 ; (961E)
F000:9647 loc_356: ; xref F000:962F
F000:9647 FB sti ; Enable interrupts
F000:9648 FC cld ; Clear direction
F000:9649 58 pop ax
F000:964A A3 0069 mov ds:data_43e,ax ; (C000:0069=4E45h)
F000:964D 58 pop ax
F000:964E A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:9651 33 DB xor bx,bx ; Zero register
F000:9653 33 FF xor di,di ; Zero register
F000:9655 BA 03BC mov dx,3BCh
F000:9658 E8 01E5 call sub_56 ; (9840)
F000:965B BA 0378 mov dx,378h
F000:965E E8 01DF call sub_56 ; (9840)
F000:9661 BA 0278 mov dx,278h
F000:9664 E8 01D9 call sub_56 ; (9840)
F000:9667 57 push di
F000:9668 B0 82 mov al,82h
F000:966A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:966C 33 FF xor di,di ; Zero register
F000:966E BA 03F8 mov dx,3F8h
F000:9671 E8 01D8 call sub_57 ; (984C)
F000:9674 BA 02F8 mov dx,2F8h
F000:9677 E8 01D2 call sub_57 ; (984C)
F000:967A BA 03E8 mov dx,3E8h
F000:967D E8 01CC call sub_57 ; (984C)
F000:9680 BA 02E8 mov dx,2E8h
F000:9683 E8 01C6 call sub_57 ; (984C)
F000:9686 58 pop ax
F000:9687 C0 C8 03 ror al,3 ; Rotate
F000:968A 0B C7 or ax,di
F000:968C 08 06 0011 or ds:data_30e,al ; (C000:0011=52h)
F000:9690 B0 83 mov al,83h
F000:9692 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9694 80 26 0010 FD and byte ptr ds:data_29e,0FDh ; (C000:0010=20h)
F000:9699 90 nop ;
F000:969A DB E3 fninit ; Initialize math uP
F000:969C 60 pusha ; Save all regs
F000:969D 61 popa ; Restore all regs
F000:969E 60 pusha ; Save all regs
F000:969F 61 popa ; Restore all regs
F000:96A0 60 pusha ; Save all regs
F000:96A1 61 popa ; Restore all regs
F000:96A2 DF E0 fnstsw ax ; Store status word
F000:96A4 22 C0 and al,al
F000:96A6 75 0F jnz short loc_359 ; Jump if not zero
F000:96A8 80 0E 0010 02 or byte ptr ds:data_29e,2 ; (C000:0010=20h)
F000:96AD E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:96AF 24 DF and al,0DFh
F000:96B1 EB 00 jmp short loc_357 ; (96B3)
F000:96B3 loc_357: ; xref F000:96B1
F000:96B3 EB 00 jmp short loc_358 ; (96B5)
F000:96B5 loc_358: ; xref F000:96B3
F000:96B5 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:96B7 loc_359: ; xref F000:96A6
F000:96B7 E4 21 in al,21h ; port 21h, 8259-1 int IMR
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 79

F000:96B9 24 F8 and al,0F8h
F000:96BB EB 00 jmp short loc_360 ; (96BD)
F000:96BD loc_360: ; xref F000:96BB
F000:96BD EB 00 jmp short loc_361 ; (96BF)
F000:96BF loc_361: ; xref F000:96BD
F000:96BF E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:96C1 B0 84 mov al,84h
F000:96C3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:96C5 E4 64 in al,64h ; port 64h, keyboard status
F000:96C7 A8 10 test al,10h
F000:96C9 75 04 jnz short loc_362 ; Jump if not zero
F000:96CB 81 CD 1000 or bp,1000h
F000:96CF loc_362: ; xref F000:96C9
F000:96CF C6 06 0017 00 mov byte ptr ds:data_33e,0 ; (C000:0017=45h)
F000:96D4 C6 06 0096 A0 mov byte ptr ds:data_59e,0A0h ; (C000:0096=20h)
F000:96D9 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:96DC A8 20 test al,20h ; ' '
F000:96DE 74 05 jz short loc_363 ; Jump if zero
F000:96E0 B0 F2 mov al,0F2h
F000:96E2 E8 091C call sub_75 ; (A001)
F000:96E5 loc_363: ; xref F000:96DE
F000:96E5 FB sti ; Enable interrupts
F000:96E6 B9 FFF0 mov cx,0FFF0h
F000:96E9 E8 597C call sub_264 ; (F068)
F000:96EC 80 26 0096 1F and byte ptr ds:data_59e,1Fh ; (C000:0096=20h)
F000:96F1 80 26 0097 7F and byte ptr ds:data_60e,7Fh ; (C000:0097=51h)
F000:96F6 E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:96F8 24 FD and al,0FDh
F000:96FA EB 00 jmp short loc_364 ; (96FC)
F000:96FC loc_364: ; xref F000:96FA
F000:96FC EB 00 jmp short loc_365 ; (96FE)
F000:96FE loc_365: ; xref F000:96FC
F000:96FE E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:9700 B0 85 mov al,85h
F000:9702 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9704 5B pop bx
F000:9705 55 push bp
F000:9706 B8 02B7 mov ax,2B7h
F000:9709 E8 FC28 call sub_49 ; (9334)
F000:970C 75 04 jnz short loc_366 ; Jump if not zero
F000:970E 81 E5 F3FF and bp,0F3FFh
F000:9712 loc_366: ; xref F000:970C
F000:9712 81 E5 7FFF and bp,7FFFh
F000:9716 75 07 jnz short loc_367 ; Jump if not zero
F000:9718 0B DB or bx,bx ; Zero ?
F000:971A 75 03 jnz short loc_367 ; Jump if not zero
F000:971C E9 0082 jmp loc_374 ; (97A1)
F000:971F loc_367: ; xref F000:9716, 971A
F000:971F E8 F6E5 call sub_31 ; (8E07)
F000:9722 B9 8000 mov cx,8000h
F000:9725 E8 5940 call sub_264 ; (F068)
F000:9728 E8 F6DC call sub_31 ; (8E07)
F000:972B BE 7AB2 mov si,7AB2h
F000:972E E8 00DC call sub_52 ; (980D)
F000:9731 87 EB xchg bp,bx
F000:9733 E8 00D7 call sub_52 ; (980D)
F000:9736 F7 C5 0020 test bp,20h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 80

F000:973A 75 06 jnz short loc_368 ; Jump if not zero
F000:973C F7 C3 07E2 test bx,7E2h
F000:9740 74 17 jz short loc_369 ; Jump if zero
F000:9742 loc_368: ; xref F000:973A
F000:9742 BE 7CE8 mov si,7CE8h
F000:9745 E8 F67F call sub_28 ; (8DC7)
F000:9748 E8 00D8 call sub_53 ; (9823)
F000:974B 2E: F6 06 E2C0 80 test byte ptr cs:data_158,80h ; (F000:E2C0=0BFh)
F000:9751 74 06 jz short loc_369 ; Jump if zero
F000:9753 81 0E 0069 AAAA or word ptr ds:data_43e,0AAAAh ; (C000:0069=4E45h)
F000:9759 loc_369: ; xref F000:9740, 9751
F000:9759 BE 7CFA mov si,7CFAh
F000:975C E8 00C4 call sub_53 ; (9823)
F000:975F A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:9762 A8 20 test al,20h ; ' '
F000:9764 74 3B jz short loc_374 ; Jump if zero
F000:9766 2E: A0 E2C0 mov al,cs:data_158 ; (F000:E2C0=0BFh)
F000:976A A8 80 test al,80h
F000:976C 74 21 jz short loc_372 ; Jump if zero
F000:976E A8 02 test al,2
F000:9770 75 08 jnz short loc_370 ; Jump if not zero
F000:9772 81 E5 F9FF and bp,0F9FFh
F000:9776 81 E3 EFFF and bx,0EFFFh
F000:977A loc_370: ; xref F000:9770
F000:977A A8 20 test al,20h ; ' '
F000:977C 75 03 jnz short loc_371 ; Jump if not zero
F000:977E 83 E5 FE and bp,0FFFEh
F000:9781 loc_371: ; xref F000:977C
F000:9781 0B ED or bp,bp ; Zero ?
F000:9783 75 13 jnz short loc_373 ; Jump if not zero
F000:9785 0B DB or bx,bx ; Zero ?
F000:9787 74 06 jz short loc_372 ; Jump if zero
F000:9789 F7 C3 0004 test bx,4
F000:978D 74 09 jz short loc_373 ; Jump if zero
F000:978F loc_372: ; xref F000:976C, 9787
F000:978F FB sti ; Enable interrupts
F000:9790 B9 FFF0 mov cx,0FFF0h
F000:9793 E8 58D2 call sub_264 ; (F068)
F000:9796 EB 09 jmp short loc_374 ; (97A1)
F000:9798 loc_373: ; xref F000:9783, 978D, 979F
F000:9798 B4 00 mov ah,0
F000:979A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:979C 80 FC 3B cmp ah,3Bh ; ';'
F000:979F 75 F7 jne loc_373 ; Jump if not equal
F000:97A1 loc_374: ; xref F000:971C, 9764, 9796
F000:97A1 5D pop bp
F000:97A2 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:97A5 A8 20 test al,20h ; ' '
F000:97A7 75 1F jnz short loc_375 ; Jump if not zero
F000:97A9 FB sti ; Enable interrupts
F000:97AA B8 008F mov ax,8Fh
F000:97AD E8 56FE call sub_258 ; (EEAE)
F000:97B0 C7 06 0072 0000 mov word ptr ds:data_47e,0 ; (C000:0072=5953h)
F000:97B6 B9 FFF0 mov cx,0FFF0h
F000:97B9 E8 58AC call sub_264 ; (F068)
F000:97BC B9 FFF0 mov cx,0FFF0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 81

F000:97BF E8 58A6 call sub_264 ; (F068)
F000:97C2 E8 F642 call sub_31 ; (8E07)
F000:97C5 E9 4893 jmp loc_1197 ; (E05B)
F000:97C8 loc_375: ; xref F000:97A7
F000:97C8 83 3E 0069 00 cmp word ptr ds:data_43e,0 ; (C000:0069=4E45h)
F000:97CD 74 03 je short loc_376 ; Jump if equal
F000:97CF E8 2514 call sub_164 ; (BCE6)
F000:97D2 loc_376: ; xref F000:97CD
F000:97D2 E8 F632 call sub_31 ; (8E07)
F000:97D5 B4 0F mov ah,0Fh
F000:97D7 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:97D9 32 E4 xor ah,ah ; Zero register
F000:97DB CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:97DD B0 0D mov al,0Dh
F000:97DF E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:97E1 E8 F65F call sub_33 ; (8E43)
F000:97E4 FB sti ; Enable interrupts
F000:97E5 FC cld ; Clear direction
F000:97E6 B0 86 mov al,86h
F000:97E8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:97EA BB E000 mov bx,0E000h
F000:97ED 88 1E 0072 mov ds:data_47e,bl ; (C000:0072=53h)
F000:97F1 A1 0067 mov ax,ds:data_42e ; (C000:0067=4449h)
F000:97F4 50 push ax
F000:97F5 E8 F749 call sub_47 ; (8F41)
F000:97F8 58 pop ax
F000:97F9 A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:97FC B0 00 mov al,0
F000:97FE E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9800 E8 2F9D call sub_196 ; (C7A0)
F000:9803 75 05 jnz short loc_377 ; Jump if not zero
F000:9805 B8 0008 mov ax,8
F000:9808 FF D0 call ax ;*
F000:980A loc_377: ; xref F000:9803
F000:980A E9 F77F jmp loc_284 ; (8F8C)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:972E, 9733
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_52 proc near
F000:980D B9 0010 mov cx,10h

F000:9810 locloop_378: ; xref F000:9820
F000:9810 FA cli ; Disable interrupts
F000:9811 FC cld ; Clear direction
F000:9812 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:9814 FB sti ; Enable interrupts
F000:9815 D1 CD ror bp,1 ; Rotate
F000:9817 73 07 jnc short loc_379 ; Jump if carry=0
F000:9819 56 push si
F000:981A 8B F0 mov si,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 82

F000:981C E8 0004 call sub_53 ; (9823)
F000:981F 5E pop si
F000:9820 loc_379: ; xref F000:9817
F000:9820 E2 EE loop locloop_378 ; Loop if cx > 0

F000:9822 C3 retn
sub_52 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9748, 975C, 981C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_53 proc near
F000:9823 E8 F5A1 call sub_28 ; (8DC7)
F000:9826 E8 F590 call sub_27 ; (8DB9)
F000:9829 C3 retn
sub_53 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9601, 9609, 9615
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_54 proc near
F000:982A 8A E0 mov ah,al
F000:982C C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:982F 24 0F and al,0Fh
F000:9831 D5 0A aad ; Ascii adjust
F000:9833 C3 retn
sub_54 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:94C8, 94E7
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ


sub_55 proc near
F000:9834 E8 5668 call sub_257 ; (EE9F)
F000:9837 86 C4 xchg al,ah
F000:9839 E8 5663 call sub_257 ; (EE9F)
F000:983C C1 E8 06 shr ax,6 ; Shift w/zeros fill
F000:983F C3 retn
sub_55 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9658, 965E, 9664
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 83


sub_56 proc near
F000:9840 E8 353F call sub_208 ; (CD82)
F000:9843 75 06 jnz short loc_ret_380 ; Jump if not zero
F000:9845 89 95 0008 mov [di+8],dx
nop ;*Fixup for MASM (M)
F000:9849 47 inc di
F000:984A 47 inc di

F000:984B loc_ret_380: ; xref F000:9843
F000:984B C3 retn
sub_56 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9671, 9677, 967D, 9683
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_57 proc near
F000:984C 52 push dx
F000:984D 42 inc dx
F000:984E 42 inc dx
F000:984F EC in al,dx ; port 3FAh, RS232-1 int identy
F000:9850 A8 F8 test al,0F8h
F000:9852 5A pop dx
F000:9853 75 06 jnz short loc_ret_381 ; Jump if not zero
F000:9855 89 95 0000 mov [di+0],dx
nop ;*Fixup for MASM (M)
F000:9859 47 inc di
F000:985A 47 inc di

F000:985B loc_ret_381: ; xref F000:9853
F000:985B C3 retn
sub_57 endp

F000:985C 000A[FE] db 10 dup (0FEh)
F000:9866 D5 66 5E 66 96 76 db 0D5h, 66h, 5Eh, 66h, 96h, 76h
F000:986C 76 6E 5E 96 7E 4E db 76h, 6Eh, 5Eh, 96h, 7Eh, 4Eh
F000:9872 76 66 36 7E 96 A1 db 76h, 66h, 36h, 7Eh, 96h, 0A1h

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A8F5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_58 proc near
F000:9878 51 push cx
F000:9879 BF 0104 mov di,104h
F000:987C B5 9B mov ch,9Bh
F000:987E EB 06 jmp short loc_382 ; (9886)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A932
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 84


sub_59:
F000:9880 51 push cx
F000:9881 BF 0118 mov di,118h
F000:9884 B5 A4 mov ch,0A4h
F000:9886 loc_382: ; xref F000:987E
F000:9886 FA cli ; Disable interrupts
F000:9887 FC cld ; Clear direction
F000:9888 52 push dx
F000:9889 06 push es
F000:988A 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:9890 75 0C jnz short loc_383 ; Jump if not zero
F000:9892 B0 B8 mov al,0B8h
F000:9894 E8 5608 call sub_257 ; (EE9F)
F000:9897 A8 10 test al,10h
F000:9899 B8 002D mov ax,2Dh
F000:989C 74 0B jz short loc_384 ; Jump if zero
F000:989E loc_383: ; xref F000:9890
F000:989E A1 0013 mov ax,ds:data_32e ; (C000:0013=4553h)
F000:98A1 98 cbw ; Convrt byte to word
F000:98A2 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:98A5 48 dec ax
F000:98A6 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:98A9 loc_384: ; xref F000:989C
F000:98A9 8B D0 mov dx,ax
F000:98AB B8 003D mov ax,3Dh
F000:98AE 80 FD 9B cmp ch,9Bh
F000:98B1 74 03 je short loc_385 ; Jump if equal
F000:98B3 B8 004D mov ax,4Dh
F000:98B6 loc_385: ; xref F000:98B1
F000:98B6 AB stosw ; Store ax to es:[di]
F000:98B7 50 push ax
F000:98B8 8B C2 mov ax,dx
F000:98BA AB stosw ; Store ax to es:[di]
F000:98BB 8E C0 mov es,ax
F000:98BD 3D F7FA cmp ax,0F7FAh
F000:98C0 75 00 jne short loc_386 ; Jump if not equal
F000:98C2 loc_386: ; xref F000:98C0
F000:98C2 5F pop di
F000:98C3 06 push es
F000:98C4 E8 002F call sub_60 ; (98F6)
F000:98C7 E8 002C call sub_60 ; (98F6)
F000:98CA E8 0029 call sub_60 ; (98F6)
F000:98CD 33 C0 xor ax,ax ; Zero register
F000:98CF AB stosw ; Store ax to es:[di]
F000:98D0 E8 0023 call sub_60 ; (98F6)
F000:98D3 E8 0020 call sub_60 ; (98F6)
F000:98D6 32 C0 xor al,al ; Zero register
F000:98D8 AA stosb ; Store al to es:[di]
F000:98D9 E8 001A call sub_60 ; (98F6)
F000:98DC 33 C0 xor ax,ax ; Zero register

F000:98DE locloop_387:
F000:98DE AB stosw ; Store ax to es:[di]
F000:98DF AA stosb ; Store al to es:[di]
F000:98E0 E8 0013 call sub_60 ; (98F6)
F000:98E3 E8 0010 call sub_60 ; (98F6)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 85

F000:98E6 E8 000D call sub_60 ; (98F6)
F000:98E9 32 C0 xor al,al ; Zero register
F000:98EB AA stosb ; Store al to es:[di]
F000:98EC 58 pop ax
F000:98ED 3D F7FA cmp ax,0F7FAh
F000:98F0 75 00 jne short loc_388 ; Jump if not equal
F000:98F2 loc_388: ; xref F000:98F0
F000:98F2 07 pop es
F000:98F3 5A pop dx
F000:98F4 59 pop cx
F000:98F5 C3 retn
sub_58 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:98C4, 98C7, 98CA, 98D0, 98D3, 98D9, 98E0
; 98E3, 98E6
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_60 proc near
F000:98F6 8A C5 mov al,ch
F000:98F8 FE C5 inc ch
F000:98FA E8 55A2 call sub_257 ; (EE9F)
F000:98FD AA stosb ; Store al to es:[di]
F000:98FE C3 retn
sub_60 endp

F000:98FF 00 F0 db 0, 0F0h
F000:9901 78 79 7A 7B 7C 7D db 'xyz{|}~', 7Fh
F000:9907 7E 7F
F000:9909 80 81 82 83 F0 db 80h, 81h, 82h, 83h, 0F0h

F000:990E locloop_389:
F000:990E A5 movsw ; Mov [si] to es:[di]
F000:990F 10 11 adc [bx+di],dl
F000:9911 12 13 adc dl,[bp+di]
F000:9913 14 15 adc al,15h
F000:9915 16 push ss
F000:9916 17 pop ss
F000:9917 18 19 sbb [bx+di],bl
F000:9919 F0 F0 F0 FF 1E 1F db 0F0h, 0F0h, 0F0h, 0FFh, 1Eh, 1Fh
F000:991F 20 21 22 23 24 25 db 20h, 21h, 22h, 23h, 24h, 25h
F000:9925 26 F0 F0 F0 FF F0 db 26h, 0F0h, 0F0h, 0F0h, 0FFh, 0F0h
F000:992B 2C 2D 2E 2F 30 31 db 2Ch, 2Dh, 2Eh, 2Fh, 30h, 31h
F000:9931 32 F0 F0 F0 FF F0 db 32h, 0F0h, 0F0h, 0F0h, 0FFh, 0F0h
F000:9937 FF 20 FF db 0FFh, 20h, 0FFh
F000:993A 68 69 6A 6B 6C 6D db 'hijklmnopq'
F000:9940 6E 6F 70 71
F000:9944 FF FF 07 08 09 F0 db 0FFh, 0FFh, 7, 8, 9, 0F0h
F000:994A 04 05 06 F0 01 02 db 4, 5, 6, 0F0h, 1, 2
F000:9950 03 00 53 FF FF FF db 3, 0, 53h, 0FFh, 0FFh, 0FFh
F000:9956 8B 8C BB E2 B3 E2 db 8Bh, 8Ch, 0BBh, 0E2h, 0B3h, 0E2h
F000:995C 81 79 31 69 B1 C1 db 81h, 79h, 31h, 69h, 0B1h, 0C1h
F000:9962 B9 59 FB F2 E1 E1 db 0B9h, 59h, 0FBh, 0F2h, 0E1h, 0E1h
F000:9968 D1 61 61 FB 92 D1 db 0D1h, 61h, 61h, 0FBh, 92h, 0D1h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 86

F000:996E 59 B9 81 D9 61 FB db 59h, 0B9h, 81h, 0D9h, 61h, 0FBh
F000:9974 B2 89 E1 8B FF FE db 0B2h, 89h, 0E1h, 8Bh, 0FFh, 0FEh
F000:997A 67 04 03 FF 00 0F db 67h, 4, 3, 0FFh, 0, 0Fh
F000:9980 1B FF 00 FF FF FF db 1Bh, 0FFh, 0, 0FFh, 0FFh, 0FFh
F000:9986 1E FF FF FF FF 1F db 1Eh, 0FFh, 0FFh, 0FFh, 0FFh, 1Fh
F000:998C FF 7F 94 11 17 05 db 0FFh, 7Fh, 94h, 11h, 17h, 5
F000:9992 12 14 19 15 09 0F db 12h, 14h, 19h, 15h, 9, 0Fh
F000:9998 10 1B 1D db 10h, 1Bh, 1Dh
F000:999B loc_390: ; xref F000:99E7
F000:999B 0A FF or bh,bh ; Zero ?
F000:999D 01 13 add [bp+di],dx
F000:999F 04 06 add al,6
F000:99A1 07 pop es
F000:99A2 08 0A or [bp+si],cl
F000:99A4 0B 0C or cx,[si]
F000:99A6 FF FF FF FF 1C 1A db 0FFh, 0FFh, 0FFh, 0FFh, 1Ch, 1Ah
F000:99AC 18 03 16 02 0E 0D db 18h, 3, 16h, 2, 0Eh, 0Dh
F000:99B2 FF FF 95 FF 96 FF db 0FFh, 0FFh, 95h, 0FFh, 96h, 0FFh
F000:99B8 20 FF db 20h, 0FFh
F000:99BA 5E 5F 60 61 62 63 db '^_`abcdefgEFw'
F000:99C0 64 65 66 67 45 46
F000:99C6 77
F000:99C7 8D 84 8E 73 8F 74 db 8Dh, 84h, 8Eh, 73h, 8Fh, 74h
F000:99CD 90 75 91 76 92 93 db 90h, 75h, 91h, 76h, 92h, 93h
F000:99D3 FF FF FF 89 8A 5F db 0FFh, 0FFh, 0FFh, 89h, 8Ah, 5Fh
F000:99D9 F2 5B 7F CA CA db 0F2h, 5Bh, 7Fh, 0CAh, 0CAh
F000:99DE loc_391:
F000:99DE F2 7F EE db 0F2h, 7Fh, 0EEh
F000:99E1 5A 62 5A 2E 7A db 5Ah, 62h, 5Ah, 2Eh, 7Ah

F000:99E6 locloop_392:
F000:99E6 4E dec si
F000:99E7 7F B2 jg loc_390 ; Jump if >
F000:99E9 1A 32 sbb dh,[bp+si]
F000:99EB 2E 6A 4A 32 4F 7F db 2Eh, 6Ah, 4Ah, 32h, 4Fh, 7Fh
F000:99F1 DA C6 EE DA FA db 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:99F6 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:99FC 33 4B
F000:99FE 1F 2B 1B db 1Fh, 2Bh, 1Bh
F000:9A01 21 40 23 24 db '[email protected]#$'
F000:9A05 25 5E 26 2A 28 29 db '%^&*()_+'
F000:9A0B 5F 2B
F000:9A0D 08 00 db 8, 0
F000:9A0F 51 57 45 52 54 59 db 'QWERTYUIOP{}', 0Dh
F000:9A15 55 49 4F 50 7B 7D
F000:9A1B 0D
F000:9A1C FF db 0FFh
F000:9A1D 41 53 44 46 47 48 db 'ASDFGHJKL:"~'
F000:9A23 4A 4B 4C 3A 22 7E
F000:9A29 FF db 0FFh
F000:9A2A 7C 5A 58 43 56 42 db '|ZXCVBNM<>?'
F000:9A30 4E 4D 3C 3E 3F
F000:9A35 FF 2A FF 20 FF db 0FFh, 2Ah, 0FFh, 20h, 0FFh
F000:9A3A 54 55 56 57 58 59 db 'TUVWXYZ[\]'
F000:9A40 5A 5B 5C 5D
F000:9A44 FF FF db 0FFh, 0FFh
F000:9A46 37 38 39 2D 34 35 db '789-456+1230.'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 87

F000:9A4C 36 2B 31 32 33 30
F000:9A52 2E
F000:9A53 FF FF 7C 87 88 db 0FFh, 0FFh, 7Ch, 87h, 88h
F000:9A58 2A 35 36 37 38 39 db '*56789?/'
F000:9A5E 3F 2F
F000:9A60 BB E2 B3 E2 81 79 db 0BBh, 0E2h, 0B3h, 0E2h, 81h, 79h
F000:9A66 31 69 B1 C1 B9 59 db 31h, 69h, 0B1h, 0C1h, 0B9h, 59h
F000:9A6C FB F2 E1 E1 D1 61 db 0FBh, 0F2h, 0E1h, 0E1h, 0D1h, 61h
F000:9A72 61 FB 92 D1 59 B9 db 61h, 0FBh, 92h, 0D1h, 59h, 0B9h
F000:9A78 81 D9 61 FB B2 89 db 81h, 0D9h, 61h, 0FBh, 0B2h, 89h
F000:9A7E E1 8B 1B db 0E1h, 8Bh, 1Bh
F000:9A81 31 32 33 34 35 db 31h, 32h, 33h, 34h, 35h
F000:9A86 loc_393:
F000:9A86 36 37 38 39 30 2D db 36h, 37h, 38h, 39h, 30h, 2Dh
F000:9A8C 3D 08 db 3Dh, 8
F000:9A8E 09 71 77 65 72 74 db 9, 'qwertyuio'
F000:9A94 79 75 69 6F
F000:9A98 loc_394:
F000:9A98 70 5B jo short loc_395 ; Jump if overflow=1
F000:9A9A 5D pop bp
F000:9A9B 0D 61FF or ax,61FFh
F000:9A9E 73 64 jnc short loc_396 ; Jump if carry=0
F000:9AA0 66 67 68 6A 6B 6C db 'fghjkl;', 27h, '`'
F000:9AA6 3B 27 60
F000:9AA9 FF db 0FFh
F000:9AAA 5C 7A 78 63 76 62 db '\zxcvbnm,./'
F000:9AB0 6E 6D 2C 2E 2F
F000:9AB5 FF 2A FF 20 FF db 0FFh, 2Ah, 0FFh, 20h, 0FFh
F000:9ABA 3B 3C 3D 3E 3F 40 db ';<=>[email protected]'
F000:9AC0 41 42 43 44
F000:9AC4 FF FF 47 48 49 2D db 0FFh, 0FFh, 47h, 48h, 49h, 2Dh
F000:9ACA 4B F0 4D 2B 4F 50 db 4Bh, 0F0h, 4Dh, 2Bh, 4Fh, 50h
F000:9AD0 51 52 53 FF FF 5C db 51h, 52h, 53h, 0FFh, 0FFh, 5Ch
F000:9AD6 85 86 5F F2 5B 7F db 85h, 86h, 5Fh, 0F2h, 5Bh, 7Fh
F000:9ADC CA CA F2 7F EE 5A db 0CAh, 0CAh, 0F2h, 7Fh, 0EEh, 5Ah
F000:9AE2 62 5A 2E 7A 4E 7F db 62h, 5Ah, 2Eh, 7Ah, 4Eh, 7Fh
F000:9AE8 B2 1A 32 2E 6A 4A db 0B2h, 1Ah, 32h, 2Eh, 6Ah, 4Ah
F000:9AEE 32 4F 7F DA C6 EE db 32h, 4Fh, 7Fh, 0DAh, 0C6h, 0EEh
F000:9AF4 DA db 0DAh
F000:9AF5 loc_395: ; xref F000:9A98
F000:9AF5 FA cli ; Disable interrupts
F000:9AF6 4F dec di
F000:9AF7 7F 3B jg short loc_401 ; Jump if >
F000:9AF9 3B 4B 3B cmp cx,[bp+di+3Bh]
F000:9AFC 33 4B 1F xor cx,[bp+di+1Fh]
F000:9AFF 2B FB sub di,bx
F000:9B01 FC cld ; Clear direction
F000:9B02 60 pusha ; Save all regs
F000:9B03 1E push ds
F000:9B04 loc_396: ; xref F000:9A9E
F000:9B04 8B EC mov bp,sp
F000:9B06 6A 40 push 40h
F000:9B08 1F pop ds
F000:9B09 E8 03FE call sub_69 ; (9F0A)
F000:9B0C F9 stc ; Set carry flag
F000:9B0D B4 4F mov ah,4Fh ; 'O'
F000:9B0F CD 15 int 15h ; General services, ah=func 4Fh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 88

; change keyboard scan code
F000:9B11 loc_397:
F000:9B11 FA cli ; Disable interrupts
F000:9B12 loc_398:
F000:9B12 73 69 jnc short loc_406 ; Jump if carry=0
F000:9B14 3C FE cmp al,0FEh
F000:9B16 75 07 jne short loc_399 ; Jump if not equal
F000:9B18 80 0E 0097 20 or keybd_flags_4,20h ; (0040:0097=10h) ' '
F000:9B1D EB 5E jmp short loc_406 ; (9B7D)
F000:9B1F loc_399: ; xref F000:9B16
F000:9B1F 3C FA cmp al,0FAh
F000:9B21 75 07 jne short loc_400 ; Jump if not equal
F000:9B23 80 0E 0097 10 or keybd_flags_4,10h ; (0040:0097=10h)
F000:9B28 EB 53 jmp short loc_406 ; (9B7D)
F000:9B2A loc_400: ; xref F000:9B21
F000:9B2A FB sti ; Enable interrupts
F000:9B2B 50 push ax
F000:9B2C E8 047D call sub_72 ; (9FAC)
F000:9B2F 74 03 jz short loc_401 ; Jump if zero
F000:9B31 E8 048A call sub_73 ; (9FBE)
F000:9B34 loc_401: ; xref F000:9AF7, 9B2F
F000:9B34 58 pop ax
F000:9B35 3C FD cmp al,0FDh
F000:9B37 74 04 je short loc_402 ; Jump if equal
F000:9B39 3C FF cmp al,0FFh
F000:9B3B 75 06 jne short loc_403 ; Jump if not equal
F000:9B3D loc_402: ; xref F000:9B37
F000:9B3D E8 03ED call sub_71 ; (9F2D)
F000:9B40 E9 0340 jmp loc_470 ; (9E83)
F000:9B43 loc_403: ; xref F000:9B3B
F000:9B43 F6 06 0096 C0 test keybd_flags_3,0C0h ; (0040:0096=10h)
F000:9B48 74 36 jz short loc_407 ; Jump if zero
F000:9B4A 79 10 jns short loc_404 ; Jump if not sign
F000:9B4C 80 26 0096 7F and keybd_flags_3,7Fh ; (0040:0096=10h)
F000:9B51 3C AB cmp al,0ABh
F000:9B53 75 28 jne short loc_406 ; Jump if not equal
F000:9B55 80 0E 0096 40 or keybd_flags_3,40h ; (0040:0096=10h) '@'
F000:9B5A EB 21 jmp short loc_406 ; (9B7D)
F000:9B5C loc_404: ; xref F000:9B4A
F000:9B5C 80 26 0096 BF and keybd_flags_3,0BFh ; (0040:0096=10h)
F000:9B61 3C 54 cmp al,54h ; 'T'
F000:9B63 74 13 je short loc_405 ; Jump if equal
F000:9B65 3C 41 cmp al,41h ; 'A'
F000:9B67 75 14 jne short loc_406 ; Jump if not equal
F000:9B69 F6 06 0096 20 test keybd_flags_3,20h ; (0040:0096=10h) ' '
F000:9B6E 74 08 jz short loc_405 ; Jump if zero
F000:9B70 80 0E 0017 20 or keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9B75 E8 0446 call sub_73 ; (9FBE)
F000:9B78 loc_405: ; xref F000:9B63, 9B6E
F000:9B78 80 0E 0096 10 or keybd_flags_3,10h ; (0040:0096=10h)
F000:9B7D loc_406: ; xref F000:9B12, 9B1D, 9B28, 9B53
; 9B5A, 9B67, 9BAA, 9BB4
F000:9B7D E9 00A1 jmp loc_419 ; (9C21)
F000:9B80 loc_407: ; xref F000:9B48
F000:9B80 3C E1 cmp al,0E1h
F000:9B82 75 07 jne short loc_408 ; Jump if not equal
F000:9B84 80 0E 0096 11 or keybd_flags_3,11h ; (0040:0096=10h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 89

F000:9B89 EB 09 jmp short loc_409 ; (9B94)
F000:9B8B loc_408: ; xref F000:9B82
F000:9B8B 3C E0 cmp al,0E0h
F000:9B8D 75 08 jne short loc_410 ; Jump if not equal
F000:9B8F 80 0E 0096 12 or keybd_flags_3,12h ; (0040:0096=10h)
F000:9B94 loc_409: ; xref F000:9B89
F000:9B94 E9 008D jmp loc_420 ; (9C24)
F000:9B97 loc_410: ; xref F000:9B8D
F000:9B97 A8 80 test al,80h
F000:9B99 75 03 jnz short loc_411 ; Jump if not zero
F000:9B9B E9 0089 jmp loc_421 ; (9C27)
F000:9B9E loc_411: ; xref F000:9B99
F000:9B9E 24 7F and al,7Fh
F000:9BA0 E8 04D3 call sub_81 ; (A076)
F000:9BA3 74 07 jz short loc_412 ; Jump if zero
F000:9BA5 E8 0342 call sub_66 ; (9EEA)
F000:9BA8 74 7A jz short loc_420 ; Jump if zero
F000:9BAA EB D1 jmp short loc_406 ; (9B7D)
F000:9BAC loc_412: ; xref F000:9BA3
F000:9BAC E8 04C1 call sub_80 ; (A070)
F000:9BAF 74 05 jz short loc_413 ; Jump if zero
F000:9BB1 E8 0342 call sub_67 ; (9EF6)
F000:9BB4 74 C7 jz loc_406 ; Jump if zero
F000:9BB6 loc_413: ; xref F000:9BAF
F000:9BB6 E8 0320 call sub_65 ; (9ED9)
F000:9BB9 74 06 jz short loc_414 ; Jump if zero
F000:9BBB B4 80 mov ah,80h
F000:9BBD 3C 52 cmp al,52h ; 'R'
F000:9BBF 75 08 jne short loc_415 ; Jump if not equal
F000:9BC1 loc_414: ; xref F000:9BB9
F000:9BC1 F6 D4 not ah
F000:9BC3 20 26 0018 and keybd_flags_2,ah ; (0040:0018=0)
F000:9BC7 EB 58 jmp short loc_419 ; (9C21)
F000:9BC9 loc_415: ; xref F000:9BBF
F000:9BC9 3C 54 cmp al,54h ; 'T'
F000:9BCB 75 0B jne short loc_416 ; Jump if not equal
F000:9BCD 80 26 0018 FB and keybd_flags_2,0FBh ; (0040:0018=0)
F000:9BD2 B8 8501 mov ax,8501h
F000:9BD5 E9 00B0 jmp loc_426 ; (9C88)
F000:9BD8 loc_416: ; xref F000:9BCB
F000:9BD8 E8 030F call sub_66 ; (9EEA)
F000:9BDB 75 44 jnz short loc_419 ; Jump if not zero
F000:9BDD F6 D4 not ah
F000:9BDF 20 26 0017 and keybd_flags_1,ah ; (0040:0017=80h)
F000:9BE3 50 push ax
F000:9BE4 E8 030F call sub_67 ; (9EF6)
F000:9BE7 58 pop ax
F000:9BE8 74 37 jz short loc_419 ; Jump if zero
F000:9BEA E8 0483 call sub_80 ; (A070)
F000:9BED 86 C4 xchg al,ah
F000:9BEF 74 06 jz short loc_417 ; Jump if zero
F000:9BF1 20 06 0096 and keybd_flags_3,al ; (0040:0096=10h)
F000:9BF5 EB 07 jmp short loc_418 ; (9BFE)
F000:9BF7 loc_417: ; xref F000:9BEF
F000:9BF7 C0 F8 02 sar al,2 ; Shift w/sign fill
F000:9BFA 20 06 0018 and keybd_flags_2,al ; (0040:0018=0)
F000:9BFE loc_418: ; xref F000:9BF5
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 90

F000:9BFE A0 0018 mov al,keybd_flags_2 ; (0040:0018=0)
F000:9C01 C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:9C04 0A 06 0096 or al,keybd_flags_3 ; (0040:0096=10h)
F000:9C08 24 0C and al,0Ch
F000:9C0A 08 06 0017 or keybd_flags_1,al ; (0040:0017=80h)
F000:9C0E 86 C4 xchg al,ah
F000:9C10 3C 38 cmp al,38h ; '8'
F000:9C12 75 0D jne short loc_419 ; Jump if not equal
F000:9C14 33 C0 xor ax,ax ; Zero register
F000:9C16 86 06 0019 xchg al,keybd_alt_num ; (0040:0019=0)
F000:9C1A 22 C0 and al,al
F000:9C1C 74 03 jz short loc_419 ; Jump if zero
F000:9C1E E9 035B jmp loc_489 ; (9F7C)
F000:9C21 loc_419: ; xref F000:9B7D, 9BC7, 9BDB, 9BE8
; 9C12, 9C1C, 9C33, 9C3A
; 9C47, 9C57, 9C62, 9C6B
; 9C6F, 9C73, 9C7E
F000:9C21 E9 0255 jmp loc_468 ; (9E79)
F000:9C24 loc_420: ; xref F000:9B94, 9BA8, 9C2F
F000:9C24 E9 0257 jmp loc_469 ; (9E7E)
F000:9C27 loc_421: ; xref F000:9B9B
F000:9C27 E8 044C call sub_81 ; (A076)
F000:9C2A 74 13 jz short loc_422 ; Jump if zero
F000:9C2C E8 02BB call sub_66 ; (9EEA)
F000:9C2F 74 F3 jz loc_420 ; Jump if zero
F000:9C31 3C 45 cmp al,45h ; 'E'
F000:9C33 75 EC jne loc_419 ; Jump if not equal
F000:9C35 F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9C3A 75 E5 jnz loc_419 ; Jump if not zero
F000:9C3C E9 0102 jmp loc_443 ; (9D41)
F000:9C3F loc_422: ; xref F000:9C2A
F000:9C3F E8 042E call sub_80 ; (A070)
F000:9C42 74 05 jz short loc_423 ; Jump if zero
F000:9C44 E8 02AF call sub_67 ; (9EF6)
F000:9C47 74 D8 jz loc_419 ; Jump if zero
F000:9C49 loc_423: ; xref F000:9C42
F000:9C49 E8 029E call sub_66 ; (9EEA)
F000:9C4C 75 1F jnz short loc_425 ; Jump if not zero
F000:9C4E 08 26 0017 or keybd_flags_1,ah ; (0040:0017=80h)
F000:9C52 50 push ax
F000:9C53 E8 02A0 call sub_67 ; (9EF6)
F000:9C56 58 pop ax
F000:9C57 74 C8 jz loc_419 ; Jump if zero
F000:9C59 E8 0414 call sub_80 ; (A070)
F000:9C5C 74 06 jz short loc_424 ; Jump if zero
F000:9C5E 08 26 0096 or keybd_flags_3,ah ; (0040:0096=10h)
F000:9C62 EB BD jmp short loc_419 ; (9C21)
F000:9C64 loc_424: ; xref F000:9C5C
F000:9C64 C0 EC 02 shr ah,2 ; Shift w/zeros fill
F000:9C67 08 26 0018 or keybd_flags_2,ah ; (0040:0018=0)
F000:9C6B EB B4 jmp short loc_419 ; (9C21)
F000:9C6D loc_425: ; xref F000:9C4C
F000:9C6D 22 C0 and al,al
F000:9C6F 74 B0 jz loc_419 ; Jump if zero
F000:9C71 3C 58 cmp al,58h ; 'X'
F000:9C73 77 AC ja loc_419 ; Jump if above
F000:9C75 3C 54 cmp al,54h ; 'T'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 91

F000:9C77 75 1D jne short loc_427 ; Jump if not equal
F000:9C79 F6 06 0018 04 test keybd_flags_2,4 ; (0040:0018=0)
F000:9C7E 75 A1 jnz loc_419 ; Jump if not zero
F000:9C80 80 0E 0018 04 or keybd_flags_2,4 ; (0040:0018=0)
F000:9C85 B8 8500 mov ax,8500h
F000:9C88 loc_426: ; xref F000:9BD5
F000:9C88 50 push ax
F000:9C89 B0 20 mov al,20h ; ' '
F000:9C8B E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9C8D E8 0271 call sub_68 ; (9F01)
F000:9C90 58 pop ax
F000:9C91 CD 15 int 15h ; General services, ah=func 85h
; get system request key state
F000:9C93 E9 01F0 jmp loc_471 ; (9E86)
F000:9C96 loc_427: ; xref F000:9C77
F000:9C96 F6 06 0017 08 test keybd_flags_1,8 ; (0040:0017=80h)
F000:9C9B 74 0C jz short loc_428 ; Jump if zero
F000:9C9D E8 03CA call sub_79 ; (A06A)
F000:9CA0 74 0A jz short loc_429 ; Jump if zero
F000:9CA2 F6 06 0018 04 test keybd_flags_2,4 ; (0040:0018=0)
F000:9CA7 74 03 jz short loc_429 ; Jump if zero
F000:9CA9 loc_428: ; xref F000:9C9B
F000:9CA9 EB 79 jmp short loc_441 ; (9D24)
F000:9CAB 90 db 90h
F000:9CAC loc_429: ; xref F000:9CA0, 9CA7
F000:9CAC F6 06 0017 04 test keybd_flags_1,4 ; (0040:0017=80h)
F000:9CB1 74 12 jz short loc_431 ; Jump if zero
F000:9CB3 3C 53 cmp al,53h ; 'S'
F000:9CB5 75 09 jne short loc_430 ; Jump if not equal
F000:9CB7 C7 06 0072 1234 mov warm_boot_flag,1234h ; (0040:0072=1200h)
F000:9CBD E9 439B jmp loc_1197 ; (E05B)
F000:9CC0 loc_430: ; xref F000:9CB5
F000:9CC0 E8 4BCB call sub_234 ; (E88E)
F000:9CC3 EB 03 jmp short loc_432 ; (9CC8)
F000:9CC5 loc_431: ; xref F000:9CB1
F000:9CC5 E8 01C4 call sub_61 ; (9E8C)
F000:9CC8 loc_432: ; xref F000:9CC3
F000:9CC8 E8 01DA call sub_62 ; (9EA5)
F000:9CCB BB 9900 mov bx,9900h
F000:9CCE E8 01E7 call sub_63 ; (9EB8)
F000:9CD1 E8 039C call sub_80 ; (A070)
F000:9CD4 74 1D jz short loc_435 ; Jump if zero
F000:9CD6 C6 06 0019 00 mov keybd_alt_num,0 ; (0040:0019=0)
F000:9CDB 80 FC 1C cmp ah,1Ch
F000:9CDE 75 04 jne short loc_433 ; Jump if not equal
F000:9CE0 B0 A6 mov al,0A6h
F000:9CE2 EB 39 jmp short loc_438 ; (9D1D)
F000:9CE4 loc_433: ; xref F000:9CDE
F000:9CE4 80 FC 35 cmp ah,35h ; '5'
F000:9CE7 75 04 jne short loc_434 ; Jump if not equal
F000:9CE9 B0 A4 mov al,0A4h
F000:9CEB EB 30 jmp short loc_438 ; (9D1D)
F000:9CED loc_434: ; xref F000:9CE7
F000:9CED 8A C4 mov al,ah
F000:9CEF 04 50 add al,50h ; 'P'
F000:9CF1 EB 2A jmp short loc_438 ; (9D1D)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 92

F000:9CF3 loc_435: ; xref F000:9CD4
F000:9CF3 3C 0A cmp al,0Ah
F000:9CF5 73 13 jae short loc_437 ; Jump if above or =
F000:9CF7 8A 26 0019 mov ah,keybd_alt_num ; (0040:0019=0)
F000:9CFB D0 E4 shl ah,1 ; Shift w/zeros fill
F000:9CFD 02 C4 add al,ah
F000:9CFF C0 E4 02 shl ah,2 ; Shift w/zeros fill
F000:9D02 02 C4 add al,ah
F000:9D04 A2 0019 mov keybd_alt_num,al ; (0040:0019=0)
F000:9D07 loc_436: ; xref F000:9D12, 9D3F, 9D74
F000:9D07 E9 016F jmp loc_468 ; (9E79)
F000:9D0A loc_437: ; xref F000:9CF5
F000:9D0A C6 06 0019 00 mov keybd_alt_num,0 ; (0040:0019=0)
F000:9D0F 80 FC 53 cmp ah,53h ; 'S'
F000:9D12 74 F3 je loc_436 ; Jump if equal
F000:9D14 80 FC 39 cmp ah,39h ; '9'
F000:9D17 74 08 je short loc_440 ; Jump if equal
F000:9D19 3C F0 cmp al,0F0h
F000:9D1B 74 04 je short loc_440 ; Jump if equal
F000:9D1D loc_438: ; xref F000:9CE2, 9CEB, 9CF1, 9D9E
F000:9D1D B4 00 mov ah,0
F000:9D1F loc_439: ; xref F000:9DC5
F000:9D1F 86 C4 xchg al,ah
F000:9D21 loc_440: ; xref F000:9D17, 9D1B, 9D8B
F000:9D21 E9 0258 jmp loc_489 ; (9F7C)
F000:9D24 loc_441: ; xref F000:9CA9
F000:9D24 F6 06 0017 04 test keybd_flags_1,4 ; (0040:0017=80h)
F000:9D29 75 03 jnz short loc_442 ; Jump if not zero
F000:9D2B E9 009A jmp loc_454 ; (9DC8)
F000:9D2E loc_442: ; xref F000:9D29
F000:9D2E E8 0174 call sub_62 ; (9EA5)
F000:9D31 BB 9980 mov bx,9980h
F000:9D34 E8 0181 call sub_63 ; (9EB8)
F000:9D37 80 FC 45 cmp ah,45h ; 'E'
F000:9D3A 75 2B jne short loc_445 ; Jump if not equal
F000:9D3C E8 032B call sub_79 ; (A06A)
F000:9D3F 75 C6 jnz loc_436 ; Jump if not zero
F000:9D41 loc_443: ; xref F000:9C3C
F000:9D41 80 0E 0018 08 or keybd_flags_2,8 ; (0040:0018=0)
F000:9D46 E8 01B8 call sub_68 ; (9F01)
F000:9D49 B0 20 mov al,20h ; ' '
F000:9D4B E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9D4D 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:9D52 74 09 je short loc_444 ; Jump if equal
F000:9D54 A0 0065 mov al,video_mode_reg ; (0040:0065=29h)
F000:9D57 52 push dx
F000:9D58 BA 03D8 mov dx,3D8h
F000:9D5B EE out dx,al ; port 3D8h, CGA video control
F000:9D5C 5A pop dx
F000:9D5D loc_444: ; xref F000:9D52, 9D62
F000:9D5D F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9D62 75 F9 jnz loc_444 ; Jump if not zero
F000:9D64 E9 011C jmp loc_470 ; (9E83)
F000:9D67 loc_445: ; xref F000:9D3A
F000:9D67 80 FC 46 cmp ah,46h ; 'F'
F000:9D6A 75 21 jne short loc_449 ; Jump if not equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 93

F000:9D6C E8 02FB call sub_79 ; (A06A)
F000:9D6F 74 05 jz short loc_447 ; Jump if zero
F000:9D71 E8 02FC call sub_80 ; (A070)
F000:9D74 loc_446: ; xref F000:9DB3
F000:9D74 74 91 jz loc_436 ; Jump if zero
F000:9D76 loc_447: ; xref F000:9D6F
F000:9D76 A1 0080 mov ax,@keybd_begin ; (0040:0080=1Eh)
F000:9D79 A3 001A mov keybd_q_head,ax ; (0040:001A=24h)
F000:9D7C A3 001C mov keybd_q_tail,ax ; (0040:001C=24h)
F000:9D7F C6 06 0071 80 mov keybd_break,80h ; (0040:0071=0)
F000:9D84 E8 017A call sub_68 ; (9F01)
F000:9D87 CD 1B int 1Bh ; Keyboard break (cntrl-break)
F000:9D89 33 C0 xor ax,ax ; Zero register
F000:9D8B loc_448: ; xref F000:9DAE, 9DB5, 9DC3
F000:9D8B EB 94 jmp short loc_440 ; (9D21)
F000:9D8D loc_449: ; xref F000:9D6A
F000:9D8D 80 FC 37 cmp ah,37h ; '7'
F000:9D90 75 0F jne short loc_452 ; Jump if not equal
F000:9D92 E8 02D5 call sub_79 ; (A06A)
F000:9D95 74 05 jz short loc_450 ; Jump if zero
F000:9D97 E8 02D6 call sub_80 ; (A070)
F000:9D9A 74 02 jz short loc_451 ; Jump if zero
F000:9D9C loc_450: ; xref F000:9D95
F000:9D9C B0 72 mov al,72h ; 'r'
F000:9D9E loc_451: ; xref F000:9D9A, 9DA9, 9DB7, 9DBC
F000:9D9E E9 FF7C jmp loc_438 ; (9D1D)
F000:9DA1 loc_452: ; xref F000:9D90
F000:9DA1 E8 02CC call sub_80 ; (A070)
F000:9DA4 75 13 jnz short loc_453 ; Jump if not zero
F000:9DA6 80 FC 0F cmp ah,0Fh
F000:9DA9 74 F3 je loc_451 ; Jump if equal
F000:9DAB 80 FC 39 cmp ah,39h ; '9'
F000:9DAE 74 DB je loc_448 ; Jump if equal
F000:9DB0 80 FC 35 cmp ah,35h ; '5'
F000:9DB3 74 BF je loc_446 ; Jump if equal
F000:9DB5 72 D4 jc loc_448 ; Jump if carry Set
F000:9DB7 EB E5 jmp short loc_451 ; (9D9E)
F000:9DB9 loc_453: ; xref F000:9DA4
F000:9DB9 80 FC 35 cmp ah,35h ; '5'
F000:9DBC 74 E0 je loc_451 ; Jump if equal
F000:9DBE 80 FC 1C cmp ah,1Ch
F000:9DC1 B4 E0 mov ah,0E0h
F000:9DC3 74 C6 jz loc_448 ; Jump if zero
F000:9DC5 E9 FF57 jmp loc_439 ; (9D1F)
F000:9DC8 loc_454: ; xref F000:9D2B
F000:9DC8 E8 00C1 call sub_61 ; (9E8C)
F000:9DCB 3C 52 cmp al,52h ; 'R'
F000:9DCD 74 03 je short loc_455 ; Jump if equal
F000:9DCF E8 00D3 call sub_62 ; (9EA5)
F000:9DD2 loc_455: ; xref F000:9DCD
F000:9DD2 3C 37 cmp al,37h ; '7'
F000:9DD4 75 26 jne short loc_458 ; Jump if not equal
F000:9DD6 E8 0291 call sub_79 ; (A06A)
F000:9DD9 74 07 jz short loc_456 ; Jump if zero
F000:9DDB E8 0292 call sub_80 ; (A070)
F000:9DDE 74 1C jz short loc_458 ; Jump if zero
F000:9DE0 EB 07 jmp short loc_457 ; (9DE9)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 94

F000:9DE2 loc_456: ; xref F000:9DD9
F000:9DE2 F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9DE7 74 13 jz short loc_458 ; Jump if zero
F000:9DE9 loc_457: ; xref F000:9DE0
F000:9DE9 E8 0115 call sub_68 ; (9F01)
F000:9DEC B0 20 mov al,20h ; ' '
F000:9DEE E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9DF0 55 push bp
F000:9DF1 CD 05 int 5 ; Print screen (status at 50:0h)
F000:9DF3 5D pop bp
F000:9DF4 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)
F000:9DF9 E9 0087 jmp loc_470 ; (9E83)
F000:9DFC loc_458: ; xref F000:9DD4, 9DDE, 9DE7
F000:9DFC E8 0271 call sub_80 ; (A070)
F000:9DFF 75 09 jnz short loc_459 ; Jump if not zero
F000:9E01 F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9E06 74 34 jz short loc_464 ; Jump if zero
F000:9E08 EB 18 jmp short loc_463 ; (9E22)
F000:9E0A loc_459: ; xref F000:9DFF
F000:9E0A 3C 1C cmp al,1Ch
F000:9E0C 75 05 jne short loc_460 ; Jump if not equal
F000:9E0E B8 E00D mov ax,0E00Dh
F000:9E11 EB 07 jmp short loc_461 ; (9E1A)
F000:9E13 loc_460: ; xref F000:9E0C
F000:9E13 3C 35 cmp al,35h ; '5'
F000:9E15 75 06 jne short loc_462 ; Jump if not equal
F000:9E17 B8 E02F mov ax,0E02Fh
F000:9E1A loc_461: ; xref F000:9E11
F000:9E1A E9 015F jmp loc_489 ; (9F7C)
F000:9E1D loc_462: ; xref F000:9E15
F000:9E1D BB 9A80 mov bx,9A80h
F000:9E20 EB 31 jmp short loc_465 ; (9E53)
F000:9E22 loc_463: ; xref F000:9E08
F000:9E22 BB 9A00 mov bx,9A00h
F000:9E25 F6 06 0017 20 test keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9E2A 74 2A jz short loc_466 ; Jump if zero
F000:9E2C E8 0094 call sub_64 ; (9EC3)
F000:9E2F 3C 46 cmp al,46h ; 'F'
F000:9E31 76 23 jbe short loc_466 ; Jump if below or =
F000:9E33 3C 56 cmp al,56h ; 'V'
F000:9E35 73 1F jae short loc_466 ; Jump if above or =
F000:9E37 BB 9A80 mov bx,9A80h
F000:9E3A EB 1A jmp short loc_466 ; (9E56)
F000:9E3C loc_464: ; xref F000:9E06
F000:9E3C BB 9A80 mov bx,9A80h
F000:9E3F F6 06 0017 20 test keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9E44 74 0D jz short loc_465 ; Jump if zero
F000:9E46 3C 46 cmp al,46h ; 'F'
F000:9E48 76 0C jbe short loc_466 ; Jump if below or =
F000:9E4A 3C 56 cmp al,56h ; 'V'
F000:9E4C 73 08 jae short loc_466 ; Jump if above or =
F000:9E4E BB 9A00 mov bx,9A00h
F000:9E51 EB 03 jmp short loc_466 ; (9E56)
F000:9E53 loc_465: ; xref F000:9E20, 9E44
F000:9E53 E8 006D call sub_64 ; (9EC3)
F000:9E56 loc_466: ; xref F000:9E2A, 9E31, 9E35, 9E3A
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 95

; 9E48, 9E4C, 9E51
F000:9E56 E8 005F call sub_63 ; (9EB8)
F000:9E59 80 FC 3A cmp ah,3Ah ; ':'
F000:9E5C 76 18 jbe short loc_467 ; Jump if below or =
F000:9E5E 3C 3A cmp al,3Ah ; ':'
F000:9E60 76 14 jbe short loc_467 ; Jump if below or =
F000:9E62 3C F0 cmp al,0F0h
F000:9E64 74 10 je short loc_467 ; Jump if equal
F000:9E66 80 FC 56 cmp ah,56h ; 'V'
F000:9E69 74 0B je short loc_467 ; Jump if equal
F000:9E6B 8A E0 mov ah,al
F000:9E6D B0 00 mov al,0
F000:9E6F E8 01FE call sub_80 ; (A070)
F000:9E72 74 02 jz short loc_467 ; Jump if zero
F000:9E74 B0 E0 mov al,0E0h
F000:9E76 loc_467: ; xref F000:9E5C, 9E60, 9E64, 9E69
; 9E72
F000:9E76 E9 00DF jmp loc_487 ; (9F58)
F000:9E79 loc_468: ; xref F000:9C21, 9D07, 9EA2, 9EB5
; 9EC0, 9ECC
F000:9E79 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)

F000:9E7E loc_469: ; xref F000:9C24
F000:9E7E FA cli ; Disable interrupts
F000:9E7F B0 20 mov al,20h ; ' '
F000:9E81 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9E83 loc_470: ; xref F000:9B40, 9D64, 9DF9, 9F8D
F000:9E83 E8 007B call sub_68 ; (9F01)
F000:9E86 loc_471: ; xref F000:9C93, 9FA9
F000:9E86 FA cli ; Disable interrupts
F000:9E87 8B E5 mov sp,bp
F000:9E89 1F pop ds
F000:9E8A 61 popa ; Restore all regs
F000:9E8B CF iret ; Interrupt return

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9CC5, 9DC8
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_61 proc near
F000:9E8C E8 004A call sub_65 ; (9ED9)
F000:9E8F 75 13 jnz short loc_ret_473 ; Jump if not zero
F000:9E91 84 26 0018 test ah,keybd_flags_2 ; (0040:0018=0)
F000:9E95 75 0B jnz short loc_472 ; Jump if not zero
F000:9E97 08 26 0018 or keybd_flags_2,ah ; (0040:0018=0)
F000:9E9B 30 26 0017 xor keybd_flags_1,ah ; (0040:0017=80h)
F000:9E9F E8 011C call sub_73 ; (9FBE)
F000:9EA2 loc_472: ; xref F000:9E95
F000:9EA2 EB D5 jmp short loc_468 ; (9E79)

F000:9EA4 loc_ret_473: ; xref F000:9E8F
F000:9EA4 C3 retn
sub_61 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 96

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9CC8, 9D2E, 9DCF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_62 proc near
F000:9EA5 F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9EAA 74 0B jz short loc_ret_475 ; Jump if zero
F000:9EAC 3C 45 cmp al,45h ; 'E'
F000:9EAE 74 05 je short loc_474 ; Jump if equal
F000:9EB0 80 26 0018 F7 and keybd_flags_2,0F7h ; (0040:0018=0)
F000:9EB5 loc_474: ; xref F000:9EAE
F000:9EB5 EB C2 jmp short loc_468 ; (9E79)

F000:9EB7 loc_ret_475: ; xref F000:9EAA
F000:9EB7 C3 retn
sub_62 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9CCE, 9D34, 9E56
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_63 proc near
F000:9EB8 8A E0 mov ah,al
F000:9EBA FE C8 dec al
F000:9EBC 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:9EBE 3C FF cmp al,0FFh
F000:9EC0 74 B7 je loc_468 ; Jump if equal
F000:9EC2 C3 retn
sub_63 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9E2C, 9E53
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_64 proc near
F000:9EC3 3C 52 cmp al,52h ; 'R'
F000:9EC5 75 11 jne short loc_ret_476 ; Jump if not equal
F000:9EC7 F6 06 0018 80 test keybd_flags_2,80h ; (0040:0018=0)
F000:9ECC 75 AB jnz loc_468 ; Jump if not zero
F000:9ECE 80 0E 0018 80 or keybd_flags_2,80h ; (0040:0018=0)
F000:9ED3 80 36 0017 80 xor keybd_flags_1,80h ; (0040:0017=80h)

F000:9ED8 loc_ret_476: ; xref F000:9EC5
F000:9ED8 C3 retn
sub_64 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 97

;
; Called from: F000:9BB6, 9E8C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_65 proc near
F000:9ED9 B4 40 mov ah,40h ; '@'
F000:9EDB 3C 3A cmp al,3Ah ; ':'
F000:9EDD 74 0A je short loc_ret_477 ; Jump if equal
F000:9EDF B4 20 mov ah,20h ; ' '
F000:9EE1 3C 45 cmp al,45h ; 'E'
F000:9EE3 74 04 je short loc_ret_477 ; Jump if equal
F000:9EE5 B4 10 mov ah,10h
F000:9EE7 3C 46 cmp al,46h ; 'F'

F000:9EE9 loc_ret_477: ; xref F000:9EDD, 9EE3
F000:9EE9 C3 retn
sub_65 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9BA5, 9BD8, 9C2C, 9C49
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_66 proc near
F000:9EEA B4 08 mov ah,8
F000:9EEC 3C 38 cmp al,38h ; '8'
F000:9EEE 74 10 je short loc_ret_478 ; Jump if equal
F000:9EF0 B4 04 mov ah,4
F000:9EF2 3C 1D cmp al,1Dh
F000:9EF4 74 0A je short loc_ret_478 ; Jump if equal

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:9BB1, 9BE4, 9C44, 9C53

sub_67:
F000:9EF6 B4 02 mov ah,2
F000:9EF8 3C 2A cmp al,2Ah ; '*'
F000:9EFA 74 04 je short loc_ret_478 ; Jump if equal
F000:9EFC B4 01 mov ah,1
F000:9EFE 3C 36 cmp al,36h ; '6'

F000:9F00 loc_ret_478: ; xref F000:9EEE, 9EF4, 9EFA
F000:9F00 C3 retn
sub_66 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9C8D, 9D46, 9D84, 9DE9, 9E83, 9F9C, A0ED
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_68 proc near
F000:9F01 E8 0013 call sub_70 ; (9F17)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 98

F000:9F04 B0 AE mov al,0AEh
F000:9F06 E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0AEh, enable keyboard
F000:9F08 FB sti ; Enable interrupts
F000:9F09 C3 retn
sub_68 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9B09, A0DF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_69 proc near
F000:9F0A E8 000A call sub_70 ; (9F17)
F000:9F0D B0 AD mov al,0ADh
F000:9F0F E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0ADh, disable keyboard
F000:9F11 E8 0003 call sub_70 ; (9F17)
F000:9F14 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:9F16 C3 retn
sub_69 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9F01, 9F0A, 9F11, A007, E8D6
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_70 proc near
F000:9F17 FA cli ; Disable interrupts
F000:9F18 33 C9 xor cx,cx ; Zero register

F000:9F1A locloop_479: ; xref F000:9F20
F000:9F1A EB 00 jmp short loc_480 ; (9F1C)
F000:9F1C loc_480: ; xref F000:9F1A
F000:9F1C E4 64 in al,64h ; port 64h, keyboard status
F000:9F1E A8 02 test al,2
F000:9F20 E0 F8 loopnz locloop_479 ; Loop if zf=0, cx>0

F000:9F22 74 08 jz short loc_ret_483 ; Jump if zero

F000:9F24 locloop_481: ; xref F000:9F2A
F000:9F24 EB 00 jmp short loc_482 ; (9F26)
F000:9F26 loc_482: ; xref F000:9F24
F000:9F26 E4 64 in al,64h ; port 64h, keyboard status
F000:9F28 A8 02 test al,2
F000:9F2A E0 F8 loopnz locloop_481 ; Loop if zf=0, cx>0


F000:9F2C loc_ret_483: ; xref F000:9F22
F000:9F2C C3 retn
sub_70 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 99

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9B3D, 9F8A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_71 proc near
F000:9F2D B0 20 mov al,20h ; ' '
F000:9F2F E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9F31 BB 00D0 mov bx,0D0h
F000:9F34 B9 0030 mov cx,30h
F000:9F37 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:9F39 8A E0 mov ah,al
F000:9F3B 24 FE and al,0FEh
F000:9F3D EB 00 jmp short locloop_484 ; (9F3F)

F000:9F3F locloop_484: ; xref F000:9F3D, 9F51
F000:9F3F 51 push cx
F000:9F40 0C 02 or al,2
F000:9F42 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F44 8B CB mov cx,bx

F000:9F46 locloop_485: ; xref F000:9F46
F000:9F46 E2 FE loop locloop_485 ; Loop if cx > 0

F000:9F48 24 FD and al,0FDh
F000:9F4A E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F4C 8B CB mov cx,bx

F000:9F4E locloop_486: ; xref F000:9F4E
F000:9F4E E2 FE loop locloop_486 ; Loop if cx > 0

F000:9F50 59 pop cx
F000:9F51 E2 EC loop locloop_484 ; Loop if cx > 0

F000:9F53 8A C4 mov al,ah
F000:9F55 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F57 C3 retn
sub_71 endp

F000:9F58 loc_487: ; xref F000:9E76
F000:9F58 F6 06 0017 40 test keybd_flags_1,40h ; (0040:0017=80h) '@'
F000:9F5D 74 1D jz short loc_489 ; Jump if zero
F000:9F5F F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9F64 75 0C jnz short loc_488 ; Jump if not zero
F000:9F66 3C 7A cmp al,7Ah ; 'z'
F000:9F68 77 12 ja short loc_489 ; Jump if above
F000:9F6A 3C 61 cmp al,61h ; 'a'
F000:9F6C 72 0E jb short loc_489 ; Jump if below
F000:9F6E 2C 20 sub al,20h ; ' '
F000:9F70 EB 0A jmp short loc_489 ; (9F7C)
F000:9F72 loc_488: ; xref F000:9F64
F000:9F72 3C 5A cmp al,5Ah ; 'Z'
F000:9F74 77 06 ja short loc_489 ; Jump if above
F000:9F76 3C 41 cmp al,41h ; 'A'
F000:9F78 72 02 jb short loc_489 ; Jump if below
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 100

F000:9F7A 04 20 add al,20h ; ' '
F000:9F7C loc_489: ; xref F000:9C1E, 9D21, 9E1A, 9F5D
; 9F68, 9F6C, 9F70, 9F74
; 9F78
F000:9F7C 8B 1E 001C mov bx,keybd_q_tail ; (0040:001C=24h)
F000:9F80 53 push bx
F000:9F81 E8 00B3 call sub_76 ; (A037)
F000:9F84 3B 1E 001A cmp bx,keybd_q_head ; (0040:001A=24h)
F000:9F88 75 06 jne short loc_490 ; Jump if not equal
F000:9F8A E8 FFA0 call sub_71 ; (9F2D)
F000:9F8D E9 FEF3 jmp loc_470 ; (9E83)
F000:9F90 loc_490: ; xref F000:9F88
F000:9F90 FA cli ; Disable interrupts
F000:9F91 89 1E 001C mov keybd_q_tail,bx ; (0040:001C=24h)
F000:9F95 5B pop bx
F000:9F96 89 07 mov [bx],ax
F000:9F98 B0 20 mov al,20h ; ' '
F000:9F9A E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9F9C E8 FF62 call sub_68 ; (9F01)
F000:9F9F B8 9102 mov ax,9102h
F000:9FA2 CD 15 int 15h ; General services, ah=func 91h
; interrupt complete, al=type
F000:9FA4 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)
F000:9FA9 E9 FEDA jmp loc_471 ; (9E86)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9B2C, 9FD9, A056
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_72 proc near
F000:9FAC A0 0017 mov al,keybd_flags_1 ; (0040:0017=80h)
F000:9FAF C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:9FB2 24 07 and al,7
F000:9FB4 8A E0 mov ah,al
F000:9FB6 32 26 0097 xor ah,keybd_flags_4 ; (0040:0097=10h)
F000:9FBA 80 E4 07 and ah,7
F000:9FBD C3 retn
sub_72 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9B31, 9B75, 9E9F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_73 proc near
F000:9FBE FA cli ; Disable interrupts
F000:9FBF F6 06 0097 40 test keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:9FC4 75 0C jnz short loc_491 ; Jump if not zero
F000:9FC6 80 0E 0097 40 or keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:9FCB B0 20 mov al,20h ; ' '
F000:9FCD E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 101

F000:9FCF E8 0002 call sub_74 ; (9FD4)
F000:9FD2 loc_491: ; xref F000:9FC4
F000:9FD2 FB sti ; Enable interrupts
F000:9FD3 C3 retn
sub_73 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9FCF, A051
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_74 proc near
F000:9FD4 B0 ED mov al,0EDh
F000:9FD6 E8 0028 call sub_75 ; (A001)
F000:9FD9 E8 FFD0 call sub_72 ; (9FAC)
F000:9FDC 80 26 0097 F8 and keybd_flags_4,0F8h ; (0040:0097=10h)
F000:9FE1 08 06 0097 or keybd_flags_4,al ; (0040:0097=10h)
F000:9FE5 F6 06 0097 80 test keybd_flags_4,80h ; (0040:0097=10h)
F000:9FEA 75 0A jnz short loc_492 ; Jump if not zero
F000:9FEC E8 0012 call sub_75 ; (A001)
F000:9FEF F6 06 0097 80 test keybd_flags_4,80h ; (0040:0097=10h)
F000:9FF4 74 05 jz short loc_493 ; Jump if zero
F000:9FF6 loc_492: ; xref F000:9FEA
F000:9FF6 B0 F4 mov al,0F4h
F000:9FF8 E8 0006 call sub_75 ; (A001)
F000:9FFB loc_493: ; xref F000:9FF4
F000:9FFB 80 26 0097 3F and keybd_flags_4,3Fh ; (0040:0097=10h) '?'
F000:A000 C3 retn
sub_74 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:96E2, 9FD6, 9FEC, 9FF8, A0E5, A0EA, A0F3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_75 proc near
F000:A001 8A E0 mov ah,al
F000:A003 B9 0003 mov cx,3

F000:A006 locloop_494: ; xref F000:A02D
F000:A006 51 push cx
F000:A007 E8 FF0D call sub_70 ; (9F17)
F000:A00A 8A C4 mov al,ah
F000:A00C E6 60 out 60h,al ; port 60h, keybd data write
F000:A00E 80 26 0097 4F and byte ptr ds:data_60e,4Fh ; (C000:0097=51h) 'O'
F000:A013 FB sti ; Enable interrupts
F000:A014 33 C9 xor cx,cx ; Zero register

F000:A016 locloop_495: ; xref F000:A01D
F000:A016 F6 06 0097 30 test byte ptr ds:data_60e,30h ; (C000:0097=51h) '0'
F000:A01B 75 09 jnz short loc_497 ; Jump if not zero
F000:A01D E2 F7 loop locloop_495 ; Loop if cx > 0

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 102


F000:A01F locloop_496: ; xref F000:A024
F000:A01F F6 06 0097 30 test byte ptr ds:data_60e,30h ; (C000:0097=51h) '0'
F000:A024 E1 F9 loopz locloop_496 ; Loop if zf=1, cx>0

F000:A026 loc_497: ; xref F000:A01B
F000:A026 FA cli ; Disable interrupts
F000:A027 59 pop cx
F000:A028 F6 06 0097 10 test byte ptr ds:data_60e,10h ; (C000:0097=51h)
F000:A02D E1 D7 loopz locloop_494 ; Loop if zf=1, cx>0

F000:A02F 75 05 jnz short loc_ret_498 ; Jump if not zero
F000:A031 80 0E 0097 80 or byte ptr ds:data_60e,80h ; (C000:0097=51h)

F000:A036 loc_ret_498: ; xref F000:A02F
F000:A036 C3 retn
sub_75 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9F81, A0B4, A159
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_76 proc near
F000:A037 43 inc bx
F000:A038 43 inc bx
F000:A039 3B 1E 0082 cmp bx,@keybd_end ; (0040:0082=3Eh)
F000:A03D 75 04 jne short loc_ret_499 ; Jump if not equal
F000:A03F 8B 1E 0080 mov bx,@keybd_begin ; (0040:0080=1Eh)

F000:A043 loc_ret_499: ; xref F000:A03D
F000:A043 C3 retn
sub_76 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A05B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_77 proc near
F000:A044 FA cli ; Disable interrupts
F000:A045 F6 06 0097 40 test keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:A04A 75 08 jnz short loc_500 ; Jump if not zero
F000:A04C 80 0E 0097 40 or keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:A051 E8 FF80 call sub_74 ; (9FD4)
F000:A054 loc_500: ; xref F000:A04A
F000:A054 FB sti ; Enable interrupts
F000:A055 C3 retn
sub_77 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 103

;
; Called from: F000:A125, A135, A154
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_78 proc near
F000:A056 E8 FF53 call sub_72 ; (9FAC)
F000:A059 74 03 jz short loc_501 ; Jump if zero
F000:A05B E8 FFE6 call sub_77 ; (A044)
F000:A05E loc_501: ; xref F000:A059
F000:A05E FA cli ; Disable interrupts
F000:A05F 8B 1E 001A mov bx,keybd_q_head ; (0040:001A=24h)
F000:A063 3B 1E 001C cmp bx,keybd_q_tail ; (0040:001C=24h)
F000:A067 8B 07 mov ax,[bx]
F000:A069 C3 retn
sub_78 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9C9D, 9D3C, 9D6C, 9D92, 9DD6
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_79 proc near
F000:A06A F6 06 0096 10 test keybd_flags_3,10h ; (0040:0096=10h)
F000:A06F C3 retn
sub_79 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9BAC, 9BEA, 9C3F, 9C59, 9CD1, 9D71, 9D97
; 9DA1, 9DDB, 9DFC, 9E6F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_80 proc near
F000:A070 F6 06 0096 02 test keybd_flags_3,2 ; (0040:0096=10h)
F000:A075 C3 retn
sub_80 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9BA0, 9C27
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_81 proc near
F000:A076 F6 06 0096 01 test keybd_flags_3,1 ; (0040:0096=10h)
F000:A07B C3 retn
sub_81 endp



; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 16h ±±±±±
;

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 104

; KEYBOARD SERVICES
;
; Call with: ah = sub-function number
;
; Functions:
; ah = 0 Get a key, and wait until one is available if none are
; in the queue.
; Returns: ah = keyboard scan code
; al = ASCII character, or 0 if non-ASCII
; ah = 1 Get key status
; Returns: zero flag = 0 if a valid key is in the queue
; ah = keyboard scan code
; al = ASCII character, or 0 if non-ASCII
; zero flag = 1 if no keys in the queue
; ah = 2 Get shift status register
; Returns: al = bits 7 6 5 4 3 2 1 0
; right left ctrl alt scrl num cap insrt
; -------shifts------ ------toggles-------
; 1 = down 1 = on
; ah = 3 Set repeating character rate (not supported in all systems)
; Call with: al = 5
; bh = start delay, 0 = 250 ms 2 = 750 ms
; 1 = 500 ms 3 = 1000 ms
; bl = speed in characters per second - values
; range from 0 = 30 cps, to 1Fh = 2 cps
; ah = 5 Load keyboard queue (not supported in all systems)
; Call with: ch/cl = scan code/character to load into the queue
; Returns: al = 0 if ok, 1 if keyboard queue is full
;
; **** Support for extended keyboard functions ****
; ah = 10h Get a key (similar to ah = 0, not supported in all systems)
; ah = 11h Get key status (similar to ah = 1, not supported in all systems)
; ah = 12h Get shift info (similar to ah = 2, not supported in all systems)

F000:A07C int_16h_keybd proc near ; xref F000:E82E
F000:A07C FB sti ; Enable interrupts
F000:A07D 1E push ds
F000:A07E 53 push bx
F000:A07F 51 push cx
F000:A080 6A 40 push 40h
F000:A082 1F pop ds
F000:A083 80 EC 03 sub ah,3
F000:A086 74 44 jz short loc_506 ; Jump if zero
F000:A088 72 14 jc short loc_502 ; Jump if carry Set
F000:A08A 80 EC 02 sub ah,2
F000:A08D 74 1F jz short loc_504 ; Jump if zero
F000:A08F 80 EC 0B sub ah,0Bh
F000:A092 74 7F jz short loc_510 ; Jump if zero
F000:A094 FE CC dec ah
F000:A096 74 60 jz short loc_507 ; Jump if zero
F000:A098 FE CC dec ah
F000:A09A 74 5E jz short loc_508 ; Jump if zero
F000:A09C EB 0C jmp short loc_503 ; (A0AA)
F000:A09E loc_502: ; xref F000:A088
F000:A09E FE C4 inc ah
F000:A0A0 74 6C jz short loc_509 ; Jump if zero
F000:A0A2 FE C4 inc ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 105

F000:A0A4 74 7F jz short loc_512 ; Jump if zero
F000:A0A6 FE C4 inc ah
F000:A0A8 EB 71 jmp short loc_511 ; (A11B)
F000:A0AA loc_503: ; xref F000:A09C, A0CA, A0CF, A0D4
; A0D8, A0F6, A111, A119
; A123
F000:A0AA 59 pop cx
F000:A0AB 5B pop bx
F000:A0AC 1F pop ds
F000:A0AD CF iret ; Interrupt return
int_16h_keybd endp

F000:A0AE loc_504: ; xref F000:A08D
F000:A0AE FA cli ; Disable interrupts
F000:A0AF 8B 1E 001C mov bx,keybd_q_tail ; (0040:001C=24h)
F000:A0B3 53 push bx
F000:A0B4 E8 FF80 call sub_76 ; (A037)
F000:A0B7 3B 1E 001A cmp bx,keybd_q_head ; (0040:001A=24h)
F000:A0BB B0 01 mov al,1
F000:A0BD 74 0A jz short loc_505 ; Jump if zero
F000:A0BF 89 1E 001C mov keybd_q_tail,bx ; (0040:001C=24h)
F000:A0C3 5B pop bx
F000:A0C4 89 0F mov [bx],cx
F000:A0C6 53 push bx
F000:A0C7 B0 00 mov al,0
F000:A0C9 loc_505: ; xref F000:A0BD
F000:A0C9 5B pop bx
F000:A0CA EB DE jmp short loc_503 ; (A0AA)
F000:A0CC loc_506: ; xref F000:A086
F000:A0CC 80 FB 1F cmp bl,1Fh
F000:A0CF 77 D9 ja loc_503 ; Jump if above
F000:A0D1 80 FF 03 cmp bh,3
F000:A0D4 77 D4 ja loc_503 ; Jump if above
F000:A0D6 3C 05 cmp al,5
F000:A0D8 75 D0 jne loc_503 ; Jump if not equal
F000:A0DA C0 CF 03 ror bh,3 ; Rotate
F000:A0DD 0A DF or bl,bh
F000:A0DF E8 FE28 call sub_69 ; (9F0A)
F000:A0E2 FB sti ; Enable interrupts
F000:A0E3 B0 F3 mov al,0F3h
F000:A0E5 E8 FF19 call sub_75 ; (A001)
F000:A0E8 8A C3 mov al,bl
F000:A0EA E8 FF14 call sub_75 ; (A001)
F000:A0ED E8 FE11 call sub_68 ; (9F01)
F000:A0F0 FB sti ; Enable interrupts
F000:A0F1 B0 F4 mov al,0F4h
F000:A0F3 E8 FF0B call sub_75 ; (A001)
F000:A0F6 EB B2 jmp short loc_503 ; (A0AA)
F000:A0F8 loc_507: ; xref F000:A096
F000:A0F8 EB 3B jmp short loc_513 ; (A135)
F000:A0FA loc_508: ; xref F000:A09A
F000:A0FA A0 0018 mov al,keybd_flags_2 ; (0040:0018=0)

F000:A0FD 8A E0 mov ah,al
F000:A0FF 25 7304 and ax,7304h
F000:A102 C0 C8 03 ror al,3 ; Rotate
F000:A105 0A E0 or ah,al
F000:A107 A0 0096 mov al,keybd_flags_3 ; (0040:0096=10h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 106

F000:A10A 24 0C and al,0Ch
F000:A10C 0A E0 or ah,al
F000:A10E loc_509: ; xref F000:A0A0
F000:A10E A0 0017 mov al,keybd_flags_1 ; (0040:0017=80h)
F000:A111 EB 97 jmp short loc_503 ; (A0AA)
F000:A113 loc_510: ; xref F000:A092
F000:A113 E8 002E call sub_82 ; (A144)
F000:A116 E8 0049 call sub_83 ; (A162)
F000:A119 EB 8F jmp short loc_503 ; (A0AA)
F000:A11B loc_511: ; xref F000:A0A8, A121
F000:A11B E8 0026 call sub_82 ; (A144)
F000:A11E E8 004F call sub_84 ; (A170)
F000:A121 74 F8 jz loc_511 ; Jump if zero
F000:A123 EB 85 jmp short loc_503 ; (A0AA)
F000:A125 loc_512: ; xref F000:A0A4, A133
F000:A125 E8 FF2E call sub_78 ; (A056)
F000:A128 FB sti ; Enable interrupts
F000:A129 74 13 jz short loc_514 ; Jump if zero
F000:A12B E8 0042 call sub_84 ; (A170)
F000:A12E 75 0E jnz short loc_514 ; Jump if not zero
F000:A130 E8 0011 call sub_82 ; (A144)
F000:A133 EB F0 jmp short loc_512 ; (A125)
F000:A135 loc_513: ; xref F000:A0F8
F000:A135 E8 FF1E call sub_78 ; (A056)
F000:A138 FB sti ; Enable interrupts
F000:A139 74 03 jz short loc_514 ; Jump if zero
F000:A13B E8 0024 call sub_83 ; (A162)
F000:A13E loc_514: ; xref F000:A129, A12E, A139
F000:A13E 59 pop cx
F000:A13F 5B pop bx
F000:A140 1F pop ds
F000:A141 CA 0002 retf 2 ; Return far

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A113, A11B, A130
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_82 proc near
F000:A144 8B 1E 001A mov bx,keybd_q_head ; (0040:001A=24h)
F000:A148 3B 1E 001C cmp bx,keybd_q_tail ; (0040:001C=24h)
F000:A14C 75 05 jne short loc_515 ; Jump if not equal
F000:A14E B8 9002 mov ax,9002h
F000:A151 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:A153 loc_515: ; xref F000:A14C, A157
F000:A153 FB sti ; Enable interrupts
F000:A154 E8 FEFF call sub_78 ; (A056)
F000:A157 74 FA jz loc_515 ; Jump if zero
F000:A159 E8 FEDB call sub_76 ; (A037)
F000:A15C 89 1E 001A mov keybd_q_head,bx ; (0040:001A=24h)
F000:A160 FB sti ; Enable interrupts
F000:A161 C3 retn
sub_82 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 107

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A116, A13B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_83 proc near
F000:A162 3D 00F0 cmp ax,0F0h
F000:A165 74 06 je short loc_516 ; Jump if equal
F000:A167 3C F0 cmp al,0F0h
F000:A169 75 02 jne short loc_516 ; Jump if not equal
F000:A16B B0 00 mov al,0
F000:A16D loc_516: ; xref F000:A165, A169
F000:A16D 0B E4 or sp,sp ; Zero ?
F000:A16F C3 retn
sub_83 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A11E, A12B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_84 proc near
F000:A170 80 FC 84 cmp ah,84h
F000:A173 76 13 jbe short loc_517 ; Jump if below or =
F000:A175 80 FC E0 cmp ah,0E0h
F000:A178 75 25 jne short loc_519 ; Jump if not equal
F000:A17A B4 1C mov ah,1Ch
F000:A17C 3C 0A cmp al,0Ah
F000:A17E 74 1C je short loc_518 ; Jump if equal
F000:A180 3C 0D cmp al,0Dh
F000:A182 74 18 je short loc_518 ; Jump if equal
F000:A184 B4 35 mov ah,35h ; '5'
F000:A186 EB 14 jmp short loc_518 ; (A19C)
F000:A188 loc_517: ; xref F000:A173
F000:A188 3D 00E0 cmp ax,0E0h
F000:A18B 74 0F je short loc_518 ; Jump if equal
F000:A18D 3D 00F0 cmp ax,0F0h
F000:A190 74 0A je short loc_518 ; Jump if equal
F000:A192 3C F0 cmp al,0F0h
F000:A194 74 09 je short loc_519 ; Jump if equal
F000:A196 3C E0 cmp al,0E0h
F000:A198 75 02 jne short loc_518 ; Jump if not equal
F000:A19A B0 00 mov al,0
F000:A19C loc_518: ; xref F000:A17E, A182, A186, A18B
; A190, A198
F000:A19C 0B E4 or sp,sp ; Zero ?
F000:A19E C3 retn
F000:A19F loc_519: ; xref F000:A178, A194
F000:A19F 3B E4 cmp sp,sp
F000:A1A1 C3 retn
sub_84 endp

F000:A1A2 90 80 FA 80 FB FC db 90h, 80h, 0FAh, 80h, 0FBh, 0FCh
F000:A1A8 72 52 0A E4 75 04 db 72h, 52h, 0Ah, 0E4h, 75h, 4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 108

F000:A1AE CD 40 32 E4 50 51 db 0CDh, 40h, 32h, 0E4h, 50h, 51h
F000:A1B4 52 53 56 57 1E 06 db 52h, 53h, 56h, 57h, 1Eh, 6
F000:A1BA 83 EC 08 55 8B EC db 83h, 0ECh, 8, 55h, 8Bh, 0ECh
F000:A1C0 6A 40 1F 50 8A C4 db 6Ah, 40h, 1Fh, 50h, 8Ah, 0C4h
F000:A1C6 98 8B F8 3C 19 58 db 98h, 8Bh, 0F8h, 3Ch, 19h, 58h
F000:A1CC 77 24 D1 E7 2E FF db 77h, 24h, 0D1h, 0E7h, 2Eh, 0FFh
F000:A1D2 95 01 A2 db 95h, 1, 0A2h
F000:A1D5 loc_520: ; xref F000:A1FA
F000:A1D5 89 46 18 mov [bp+18h],ax
F000:A1D8 B8 0201 mov ax,201h
F000:A1DB 72 05 jc short loc_521 ; Jump if carry Set
F000:A1DD 80 66 1E FE and byte ptr [bp+1Eh],0FEh
F000:A1E1 48 dec ax
F000:A1E2 loc_521: ; xref F000:A1DB
F000:A1E2 09 46 1E or [bp+1Eh],ax
F000:A1E5 5D pop bp
F000:A1E6 83 C4 08 add sp,8
F000:A1E9 07 pop es
F000:A1EA 1F pop ds
F000:A1EB 5F pop di
F000:A1EC 5E pop si
F000:A1ED 5B pop bx
F000:A1EE 5A pop dx
F000:A1EF 59 pop cx
F000:A1F0 58 pop ax
F000:A1F1 CF iret ; Interrupt return
F000:A1F2 loc_522:
F000:A1F2 B8 0100 mov ax,100h
F000:A1F5 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A1F9 F9 stc ; Set carry flag
F000:A1FA EB D9 jmp short loc_520 ; (A1D5)
F000:A1FC CD 40 CA 02 00 db 0CDh, 40h, 0CAh, 2, 0
F000:A201 A23E data_93 dw offset sub_86 ; Data table (indexed access) (A23E)
F000:A203 A2B3 data_94 dw offset sub_90 ; (A2B3)
F000:A205 A2BE data_95 dw offset sub_91 ; (A2BE)
F000:A207 A2CE data_96 dw offset sub_92 ; (A2CE)
F000:A209 A2DE data_97 dw offset sub_93 ; (A2DE)
F000:A20B A2FF data_98 dw offset sub_94 ; (A2FF)
F000:A20D A235 data_99 dw offset sub_85 ; (A235)
F000:A20F A235 data_100 dw offset sub_85 ; (A235)
F000:A211 A24B data_101 dw offset sub_88 ; (A24B)
F000:A213 A3D0 data_102 dw offset sub_96 ; (A3D0)
F000:A215 A40B data_103 dw offset sub_97 ; (A40B)
F000:A217 A41A data_104 dw offset sub_98 ; (A41A)
F000:A219 A504 data_105 dw offset sub_99 ; (A504)
F000:A21B A245 data_106 dw offset sub_87 ; (A245)
F000:A21D A235 data_107 dw offset sub_85 ; (A235)
F000:A21F A235 data_108 dw offset sub_85 ; (A235)
F000:A221 A563 data_109 dw offset sub_100 ; (A563)
F000:A223 A591 data_110 dw offset sub_101 ; (A591)
F000:A225 A235 data_111 dw offset sub_85 ; (A235)
F000:A227 A235 data_112 dw offset sub_85 ; (A235)
F000:A229 A5BB data_113 dw offset sub_102 ; (A5BB)
F000:A22B A250 data_114 dw offset sub_89 ; (A250)
F000:A22D A235 data_115 dw offset sub_85 ; (A235)
F000:A22F A235 data_116 dw offset sub_85 ; (A235)
F000:A231 A235 data_117 dw offset sub_85 ; (A235)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 109

F000:A233 A60B data_118 dw offset sub_104 ; (A60B)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A20D, A20F, A21D, A21F, A225, A227, A22D
; A22F, A231
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_85 proc near
F000:A235 B8 0100 mov ax,100h
F000:A238 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A23C F9 stc ; Set carry flag
F000:A23D C3 retn
sub_85 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A201
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_86 proc near
F000:A23E 80 FA 81 cmp dl,81h
F000:A241 77 07 ja short loc_ret_524 ; Jump if above
F000:A243 loc_523: ; xref F000:A248
F000:A243 EB 15 jmp short loc_526 ; (A25A)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A21B

sub_87:
F000:A245 E8 0412 call sub_107 ; (A65A)
F000:A248 73 F9 jnc loc_523 ; Jump if carry=0

F000:A24A loc_ret_524: ; xref F000:A241
F000:A24A C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A211

sub_88:
F000:A24B E8 013C call sub_95 ; (A38A)
F000:A24E EB 03 jmp short loc_525 ; (A253)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A22B

sub_89:
F000:A250 E8 038F call sub_103 ; (A5E2)
F000:A253 loc_525: ; xref F000:A24E
F000:A253 89 56 14 mov [bp+14h],dx
F000:A256 89 4E 16 mov [bp+16h],cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 110

F000:A259 C3 retn
F000:A25A loc_526: ; xref F000:A243
F000:A25A C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)
F000:A25F BA 03F6 mov dx,3F6h
F000:A262 B0 04 mov al,4
F000:A264 EE out dx,al ; port 3F6h, hdsk0 register
; al = 4, reset controller
F000:A265 B9 0024 mov cx,24h
F000:A268 E8 4DFD call sub_264 ; (F068)
F000:A26B B0 00 mov al,0
F000:A26D EE out dx,al ; port 3F6h, hdsk0 register
F000:A26E E8 044C call sub_109 ; (A6BD)
F000:A271 72 3F jc short loc_ret_531 ; Jump if carry Set
F000:A273 BA 01F1 mov dx,1F1h
F000:A276 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A277 88 26 008D mov hdsk_error,ah ; (0040:008D=0)
F000:A27B 3C 01 cmp al,1
F000:A27D 74 05 je short loc_527 ; Jump if equal
F000:A27F B4 05 mov ah,5
F000:A281 F9 stc ; Set carry flag
F000:A282 EB 2A jmp short loc_530 ; (A2AE)
F000:A284 loc_527: ; xref F000:A27D
F000:A284 B2 80 mov dl,80h
F000:A286 BF 0022 mov di,22h
F000:A289 E8 0305 call sub_101 ; (A591)
F000:A28C 80 3E 0075 02 cmp hdsk_count,2 ; (0040:0075=1)
F000:A291 72 05 jb short loc_528 ; Jump if below
F000:A293 B2 81 mov dl,81h
F000:A295 E8 02F9 call sub_101 ; (A591)
F000:A298 loc_528: ; xref F000:A291
F000:A298 B2 80 mov dl,80h
F000:A29A BF 0012 mov di,12h
F000:A29D E8 0130 call sub_96 ; (A3D0)
F000:A2A0 80 3E 0075 02 cmp hdsk_count,2 ; (0040:0075=1)
F000:A2A5 72 05 jb short loc_529 ; Jump if below
F000:A2A7 B2 81 mov dl,81h
F000:A2A9 E8 0124 call sub_96 ; (A3D0)
F000:A2AC loc_529: ; xref F000:A2A5
F000:A2AC 32 E4 xor ah,ah ; Zero register
F000:A2AE loc_530: ; xref F000:A282
F000:A2AE 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)

F000:A2B2 loc_ret_531: ; xref F000:A271
F000:A2B2 C3 retn
sub_86 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A203
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_90 proc near
F000:A2B3 A0 0074 mov al,hdsk_status_1 ; (0040:0074=0)
F000:A2B6 B4 00 mov ah,0
F000:A2B8 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 111

F000:A2BC F8 clc ; Clear carry flag
F000:A2BD C3 retn
sub_90 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A205
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_91 proc near
F000:A2BE C7 46 18 0200 mov word ptr [bp+18h],200h
F000:A2C3 E8 0536 call sub_115 ; (A7FC)
F000:A2C6 72 05 jc short loc_ret_532 ; Jump if carry Set
F000:A2C8 B4 20 mov ah,20h ; ' '
F000:A2CA E9 015C jmp loc_554 ; (A429)

F000:A2CD loc_ret_532: ; xref F000:A2C6
F000:A2CD C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A207

sub_92:
F000:A2CE C7 46 18 0200 mov word ptr [bp+18h],200h
F000:A2D3 E8 0526 call sub_115 ; (A7FC)
F000:A2D6 72 05 jc short loc_ret_533 ; Jump if carry Set
F000:A2D8 B4 30 mov ah,30h ; '0'
F000:A2DA E9 01B9 jmp loc_565 ; (A496)

F000:A2DD loc_ret_533: ; xref F000:A2D6
F000:A2DD C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A209

sub_93:
F000:A2DE E8 0379 call sub_107 ; (A65A)
F000:A2E1 72 1B jc short loc_ret_534 ; Jump if carry Set
F000:A2E3 E8 03FF call sub_110 ; (A6E5)
F000:A2E6 72 16 jc short loc_ret_534 ; Jump if carry Set
F000:A2E8 E8 053D call sub_116 ; (A828)
F000:A2EB E8 055C call sub_117 ; (A84A)
F000:A2EE E8 03C0 call sub_108 ; (A6B1)
F000:A2F1 B0 40 mov al,40h ; '@'
F000:A2F3 E8 04D8 call sub_114 ; (A7CE)
F000:A2F6 E8 042B call sub_111 ; (A724)
F000:A2F9 72 03 jc short loc_ret_534 ; Jump if carry Set
F000:A2FB E8 046E call sub_113 ; (A76C)

F000:A2FE loc_ret_534: ; xref F000:A2E1, A2E6, A2F9
F000:A2FE C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 112

;
; Called from: F000:A20B

sub_94:
F000:A2FF E8 0358 call sub_107 ; (A65A)
F000:A302 72 05 jc short loc_535 ; Jump if carry Set
F000:A304 E8 03DE call sub_110 ; (A6E5)
F000:A307 73 03 jnc short loc_536 ; Jump if carry=0
F000:A309 loc_535: ; xref F000:A302
F000:A309 EB 7E jmp short loc_ret_545 ; (A389)
F000:A30B 90 db 90h
F000:A30C loc_536: ; xref F000:A307
F000:A30C 8C C7 mov di,es
F000:A30E 8B F3 mov si,bx
F000:A310 E8 0326 call sub_105 ; (A639)
F000:A313 E8 0512 call sub_116 ; (A828)
F000:A316 E8 0398 call sub_108 ; (A6B1)
F000:A319 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A31D 88 46 03 mov [bp+3],al
F000:A320 BA 01F2 mov dx,1F2h
F000:A323 EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A324 EB 00 jmp short loc_537 ; (A326)
F000:A326 loc_537: ; xref F000:A324
F000:A326 EB 00 jmp short loc_538 ; (A328)
F000:A328 loc_538: ; xref F000:A326
F000:A328 8A 46 05 mov al,[bp+5]
F000:A32B 24 3F and al,3Fh ; '?'
F000:A32D BA 01F3 mov dx,1F3h
F000:A330 EE out dx,al ; port 1F3h, hdsk0-sector numbr
F000:A331 EB 00 jmp short loc_539 ; (A333)
F000:A333 loc_539: ; xref F000:A331
F000:A333 EB 00 jmp short loc_540 ; (A335)
F000:A335 loc_540: ; xref F000:A333
F000:A335 8A 46 07 mov al,[bp+7]
F000:A338 BA 01F6 mov dx,1F6h
F000:A33B EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A33C EB 00 jmp short loc_541 ; (A33E)
F000:A33E loc_541: ; xref F000:A33C
F000:A33E EB 00 jmp short loc_542 ; (A340)
F000:A340 loc_542: ; xref F000:A33E
F000:A340 8A C5 mov al,ch
F000:A342 88 46 05 mov [bp+5],al
F000:A345 BA 01F4 mov dx,1F4h
F000:A348 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A349 EB 00 jmp short loc_543 ; (A34B)
F000:A34B loc_543: ; xref F000:A349
F000:A34B EB 00 jmp short loc_544 ; (A34D)
F000:A34D loc_544: ; xref F000:A34B
F000:A34D 8A C1 mov al,cl
F000:A34F C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A352 8A D0 mov dl,al
F000:A354 8A 46 15 mov al,[bp+15h]
F000:A357 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:A35A 24 0C and al,0Ch
F000:A35C 0A C2 or al,dl
F000:A35E 88 46 06 mov [bp+6],al
F000:A361 BA 01F5 mov dx,1F5h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 113

F000:A364 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A365 B0 50 mov al,50h ; 'P'
F000:A367 E8 0464 call sub_114 ; (A7CE)
F000:A36A E8 03DE call sub_112 ; (A74B)
F000:A36D 72 1A jc short loc_ret_545 ; Jump if carry Set
F000:A36F 8C D8 mov ax,ds
F000:A371 97 xchg ax,di
F000:A372 8E D8 mov ds,ax
F000:A374 B9 0100 mov cx,100h
F000:A377 BA 01F0 mov dx,1F0h
F000:A37A FA cli ; Disable interrupts
F000:A37B FC cld ; Clear direction
F000:A37C F3/ 6F rep outsw ; Rep when cx >0 Out [si] to port dx
F000:A37E FB sti ; Enable interrupts
F000:A37F 8E DF mov ds,di
F000:A381 E8 03A0 call sub_111 ; (A724)
F000:A384 72 03 jc short loc_ret_545 ; Jump if carry Set
F000:A386 E8 03E3 call sub_113 ; (A76C)

F000:A389 loc_ret_545: ; xref F000:A309, A36D, A384
F000:A389 C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A24B

sub_95:
F000:A38A E8 02AC call sub_105 ; (A639)
F000:A38D 73 09 jnc short loc_546 ; Jump if carry=0
F000:A38F B4 07 mov ah,7
F000:A391 33 C9 xor cx,cx ; Zero register
F000:A393 33 D2 xor dx,dx ; Zero register
F000:A395 F9 stc ; Set carry flag
F000:A396 EB 33 jmp short loc_548 ; (A3CB)
F000:A398 loc_546: ; xref F000:A38D
F000:A398 26: 8A 77 02 mov dh,es:[bx+2]
F000:A39C FE CE dec dh
F000:A39E 26: 8B 07 mov ax,es:[bx]
F000:A3A1 2D 0002 sub ax,2
F000:A3A4 3D 03FF cmp ax,3FFh
F000:A3A7 76 03 jbe short loc_547 ; Jump if below or =
F000:A3A9 B8 03FF mov ax,3FFh
F000:A3AC loc_547: ; xref F000:A3A7
F000:A3AC 8A D4 mov dl,ah
F000:A3AE 8A E8 mov ch,al
F000:A3B0 C0 E4 06 shl ah,6 ; Shift w/zeros fill
F000:A3B3 8A CC mov cl,ah
F000:A3B5 8A E2 mov ah,dl
F000:A3B7 C0 E4 04 shl ah,4 ; Shift w/zeros fill
F000:A3BA 80 E4 C0 and ah,0C0h
F000:A3BD 0A F4 or dh,ah
F000:A3BF 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A3C3 0A C8 or cl,al
F000:A3C5 8A 16 0075 mov dl,hdsk_count ; (0040:0075=1)
F000:A3C9 B4 00 mov ah,0
F000:A3CB loc_548: ; xref F000:A396
F000:A3CB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 114

F000:A3CF C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A213, A29D, A2A9

sub_96:
F000:A3D0 E8 0287 call sub_107 ; (A65A)
F000:A3D3 72 35 jc short loc_ret_551 ; Jump if carry Set
F000:A3D5 E8 0261 call sub_105 ; (A639)
F000:A3D8 72 30 jc short loc_ret_551 ; Jump if carry Set
F000:A3DA E8 0308 call sub_110 ; (A6E5)
F000:A3DD 72 2B jc short loc_ret_551 ; Jump if carry Set
F000:A3DF E8 0446 call sub_116 ; (A828)
F000:A3E2 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A3E6 8A E2 mov ah,dl
F000:A3E8 BA 01F2 mov dx,1F2h
F000:A3EB 88 46 03 mov [bp+3],al
F000:A3EE EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A3EF EB 00 jmp short loc_549 ; (A3F1)
F000:A3F1 loc_549: ; xref F000:A3EF
F000:A3F1 EB 00 jmp short loc_550 ; (A3F3)
F000:A3F3 loc_550: ; xref F000:A3F1
F000:A3F3 BA 01F6 mov dx,1F6h
F000:A3F6 8A 46 07 mov al,[bp+7]
F000:A3F9 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A3FA B0 91 mov al,91h
F000:A3FC E8 02B2 call sub_108 ; (A6B1)
F000:A3FF E8 03CC call sub_114 ; (A7CE)
F000:A402 E8 031F call sub_111 ; (A724)
F000:A405 72 03 jc short loc_ret_551 ; Jump if carry Set
F000:A407 E8 0362 call sub_113 ; (A76C)

F000:A40A loc_ret_551: ; xref F000:A3D3, A3D8, A3DD, A405
F000:A40A C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A215

sub_97:
F000:A40B C7 46 18 0204 mov word ptr [bp+18h],204h
F000:A410 E8 03E9 call sub_115 ; (A7FC)
F000:A413 72 04 jc short loc_ret_552 ; Jump if carry Set
F000:A415 B4 22 mov ah,22h ; '"'
F000:A417 EB 10 jmp short loc_554 ; (A429)

F000:A419 loc_ret_552: ; xref F000:A413
F000:A419 C3 retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:A217

sub_98:
F000:A41A C7 46 18 0204 mov word ptr [bp+18h],204h
F000:A41F E8 03DA call sub_115 ; (A7FC)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 115

F000:A422 72 04 jc short loc_ret_553 ; Jump if carry Set
F000:A424 B4 32 mov ah,32h ; '2'
F000:A426 EB 6E jmp short loc_565 ; (A496)

F000:A428 loc_ret_553: ; xref F000:A422
F000:A428 C3 retn
F000:A429 loc_554: ; xref F000:A2CA, A417
F000:A429 E8 022E call sub_107 ; (A65A)
F000:A42C 72 67 jc short loc_ret_564 ; Jump if carry Set
F000:A42E E8 02B4 call sub_110 ; (A6E5)
F000:A431 72 62 jc short loc_ret_564 ; Jump if carry Set
F000:A433 8B FB mov di,bx
F000:A435 8C C6 mov si,es
F000:A437 E8 03EE call sub_116 ; (A828)
F000:A43A F6 06 0076 C0 test hdsk_head_ctrl,0C0h ; (0040:0076=0)
F000:A43F 74 02 jz short loc_555 ; Jump if zero
F000:A441 FE C4 inc ah
F000:A443 loc_555: ; xref F000:A43F
F000:A443 E8 0404 call sub_117 ; (A84A)
F000:A446 E8 0268 call sub_108 ; (A6B1)
F000:A449 8A C4 mov al,ah
F000:A44B E8 0380 call sub_114 ; (A7CE)
F000:A44E loc_556: ; xref F000:A48A
F000:A44E E8 02D3 call sub_111 ; (A724)
F000:A451 72 42 jc short loc_ret_564 ; Jump if carry Set
F000:A453 E8 0316 call sub_113 ; (A76C)
F000:A456 73 07 jnc short loc_557 ; Jump if carry=0
F000:A458 80 3E 0074 11 cmp hdsk_status_1,11h ; (0040:0074=0)
F000:A45D 75 2D jne short loc_563 ; Jump if not equal
F000:A45F loc_557: ; xref F000:A456
F000:A45F 8E C6 mov es,si
F000:A461 B9 0100 mov cx,100h
F000:A464 BA 01F0 mov dx,1F0h
F000:A467 FA cli ; Disable interrupts
F000:A468 FC cld ; Clear direction
F000:A469 F3/ 6D rep insw ; Rep when cx >0 Port dx to es:[di]
F000:A46B FB sti ; Enable interrupts
F000:A46C F6 46 08 02 test byte ptr [bp+8],2
F000:A470 74 15 jz short loc_562 ; Jump if zero
F000:A472 E8 02D6 call sub_112 ; (A74B)
F000:A475 72 1E jc short loc_ret_564 ; Jump if carry Set
F000:A477 B9 0004 mov cx,4

F000:A47A locloop_558: ; xref F000:A485
F000:A47A EC in al,dx ; port 1F0h, hdsk0-read data
F000:A47B 26: 88 05 mov es:[di],al
F000:A47E 47 inc di
F000:A47F EB 00 jmp short loc_559 ; (A481)
F000:A481 loc_559: ; xref F000:A47F
F000:A481 EB 00 jmp short loc_560 ; (A483)
F000:A483 loc_560: ; xref F000:A481
F000:A483 EB 00 jmp short loc_561 ; (A485)
F000:A485 loc_561: ; xref F000:A483
F000:A485 E2 F3 loop locloop_558 ; Loop if cx > 0

F000:A487 loc_562: ; xref F000:A470
F000:A487 FE 4E 03 dec byte ptr [bp+3]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 116

F000:A48A 75 C2 jnz loc_556 ; Jump if not zero
F000:A48C loc_563: ; xref F000:A45D
F000:A48C 8A 26 0074 mov ah,hdsk_status_1 ; (0040:0074=0)
F000:A490 0A E4 or ah,ah ; Zero ?
F000:A492 74 01 jz short loc_ret_564 ; Jump if zero
F000:A494 F9 stc ; Set carry flag

F000:A495 loc_ret_564: ; xref F000:A42C, A431, A451, A475
; A492
F000:A495 C3 retn
F000:A496 loc_565: ; xref F000:A2DA, A426
F000:A496 E8 01C1 call sub_107 ; (A65A)
F000:A499 72 68 jc short loc_ret_573 ; Jump if carry Set
F000:A49B E8 0247 call sub_110 ; (A6E5)
F000:A49E 72 63 jc short loc_ret_573 ; Jump if carry Set
F000:A4A0 8C C7 mov di,es
F000:A4A2 8B F3 mov si,bx
F000:A4A4 E8 0381 call sub_116 ; (A828)
F000:A4A7 E8 018F call sub_105 ; (A639)
F000:A4AA F6 06 0076 C0 test hdsk_head_ctrl,0C0h ; (0040:0076=0)
F000:A4AF 74 02 jz short loc_566 ; Jump if zero
F000:A4B1 FE C4 inc ah
F000:A4B3 loc_566: ; xref F000:A4AF
F000:A4B3 E8 0394 call sub_117 ; (A84A)
F000:A4B6 E8 01F8 call sub_108 ; (A6B1)
F000:A4B9 8A C4 mov al,ah
F000:A4BB E8 0310 call sub_114 ; (A7CE)
F000:A4BE E8 028A call sub_112 ; (A74B)
F000:A4C1 72 40 jc short loc_ret_573 ; Jump if carry Set
F000:A4C3 loc_567: ; xref F000:A501
F000:A4C3 8E DF mov ds,di
F000:A4C5 B9 0100 mov cx,100h
F000:A4C8 BA 01F0 mov dx,1F0h
F000:A4CB FA cli ; Disable interrupts
F000:A4CC FC cld ; Clear direction
F000:A4CD F3/ 6F rep outsw ; Rep when cx >0 Out [si] to port dx
F000:A4CF FB sti ; Enable interrupts
F000:A4D0 F6 46 08 02 test byte ptr [bp+8],2
F000:A4D4 74 19 jz short loc_572 ; Jump if zero
F000:A4D6 6A 40 push 40h
F000:A4D8 1F pop ds
F000:A4D9 E8 026F call sub_112 ; (A74B)
F000:A4DC 72 25 jc short loc_ret_573 ; Jump if carry Set
F000:A4DE B9 0004 mov cx,4
F000:A4E1 8E DF mov ds,di

F000:A4E3 locloop_568: ; xref F000:A4ED
F000:A4E3 8A 04 mov al,[si]
F000:A4E5 46 inc si
F000:A4E6 EE out dx,al ; port 1F0h, hdsk0-write data
F000:A4E7 EB 00 jmp short loc_569 ; (A4E9)
F000:A4E9 loc_569: ; xref F000:A4E7
F000:A4E9 EB 00 jmp short loc_570 ; (A4EB)
F000:A4EB loc_570: ; xref F000:A4E9
F000:A4EB EB 00 jmp short loc_571 ; (A4ED)
F000:A4ED loc_571: ; xref F000:A4EB
F000:A4ED E2 F4 loop locloop_568 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 117


F000:A4EF loc_572: ; xref F000:A4D4
F000:A4EF 6A 40 push 40h
F000:A4F1 1F pop ds
F000:A4F2 E8 022F call sub_111 ; (A724)
F000:A4F5 72 0C jc short loc_ret_573 ; Jump if carry Set
F000:A4F7 E8 0272 call sub_113 ; (A76C)
F000:A4FA 72 07 jc short loc_ret_573 ; Jump if carry Set
F000:A4FC F6 06 008C 08 test hdsk_status_2,8 ; (0040:008C=50h)
F000:A501 75 C0 jnz loc_567 ; Jump if not zero

F000:A503 loc_ret_573: ; xref F000:A499, A49E, A4C1, A4DC
; A4F5, A4FA
F000:A503 C3 retn
sub_91 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A219, A631
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_99 proc near
F000:A504 E8 0153 call sub_107 ; (A65A)
F000:A507 72 59 jc short loc_ret_578 ; Jump if carry Set
F000:A509 E8 01D9 call sub_110 ; (A6E5)
F000:A50C 72 54 jc short loc_ret_578 ; Jump if carry Set
F000:A50E E8 0317 call sub_116 ; (A828)
F000:A511 8A C5 mov al,ch
F000:A513 8A EA mov ch,dl
F000:A515 BA 01F4 mov dx,1F4h
F000:A518 88 46 05 mov [bp+5],al
F000:A51B EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A51C EB 00 jmp short loc_574 ; (A51E)
F000:A51E loc_574: ; xref F000:A51C
F000:A51E EB 00 jmp short loc_575 ; (A520)
F000:A520 loc_575: ; xref F000:A51E
F000:A520 8A C1 mov al,cl
F000:A522 C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A525 8A 56 15 mov dl,[bp+15h]
F000:A528 C0 EA 04 shr dl,4 ; Shift w/zeros fill
F000:A52B 80 E2 0C and dl,0Ch
F000:A52E 0A C2 or al,dl
F000:A530 BA 01F5 mov dx,1F5h
F000:A533 88 46 06 mov [bp+6],al
F000:A536 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A537 EB 00 jmp short loc_576 ; (A539)
F000:A539 loc_576: ; xref F000:A537
F000:A539 EB 00 jmp short loc_577 ; (A53B)
F000:A53B loc_577: ; xref F000:A539
F000:A53B 8A 46 07 mov al,[bp+7]
F000:A53E BA 01F6 mov dx,1F6h
F000:A541 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A542 E8 016C call sub_108 ; (A6B1)
F000:A545 B0 70 mov al,70h ; 'p'
F000:A547 E8 0284 call sub_114 ; (A7CE)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 118

F000:A54A E8 01D7 call sub_111 ; (A724)
F000:A54D 72 13 jc short loc_ret_578 ; Jump if carry Set
F000:A54F E8 021A call sub_113 ; (A76C)
F000:A552 73 0E jnc short loc_ret_578 ; Jump if carry=0
F000:A554 80 3E 0074 40 cmp hdsk_status_1,40h ; (0040:0074=0) '@'
F000:A559 F9 stc ; Set carry flag
F000:A55A 75 06 jnz short loc_ret_578 ; Jump if not zero
F000:A55C 32 E4 xor ah,ah ; Zero register
F000:A55E 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)

F000:A562 loc_ret_578: ; xref F000:A507, A50C, A54D, A552
; A55A
F000:A562 C3 retn
sub_99 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A221
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_100 proc near
F000:A563 E8 00F4 call sub_107 ; (A65A)
F000:A566 72 28 jc short loc_ret_580 ; Jump if carry Set
F000:A568 E8 0152 call sub_109 ; (A6BD)
F000:A56B 72 23 jc short loc_ret_580 ; Jump if carry Set
F000:A56D BA 01F6 mov dx,1F6h
F000:A570 8A 46 07 mov al,[bp+7]
F000:A573 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A574 BA 01F7 mov dx,1F7h
F000:A577 51 push cx
F000:A578 B9 0002 mov cx,2
F000:A57B E8 4AEA call sub_264 ; (F068)
F000:A57E 59 pop cx
F000:A57F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A580 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A583 B4 00 mov ah,0
F000:A585 A8 40 test al,40h ; '@'
F000:A587 75 03 jnz short loc_579 ; Jump if not zero
F000:A589 B4 AA mov ah,0AAh
F000:A58B F9 stc ; Set carry flag
F000:A58C loc_579: ; xref F000:A587
F000:A58C 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)

F000:A590 loc_ret_580: ; xref F000:A566, A56B
F000:A590 C3 retn
sub_100 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A223, A289, A295
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_101 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 119

F000:A591 E8 00C6 call sub_107 ; (A65A)
F000:A594 72 24 jc short loc_ret_582 ; Jump if carry Set
F000:A596 E8 014C call sub_110 ; (A6E5)
F000:A599 72 1F jc short loc_ret_582 ; Jump if carry Set
F000:A59B E8 028A call sub_116 ; (A828)
F000:A59E BA 01F6 mov dx,1F6h
F000:A5A1 8A 46 07 mov al,[bp+7]
F000:A5A4 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A5A5 E8 0109 call sub_108 ; (A6B1)
F000:A5A8 B0 10 mov al,10h
F000:A5AA E8 0221 call sub_114 ; (A7CE)
F000:A5AD E8 0174 call sub_111 ; (A724)
F000:A5B0 73 05 jnc short loc_581 ; Jump if carry=0
F000:A5B2 E8 016F call sub_111 ; (A724)
F000:A5B5 72 03 jc short loc_ret_582 ; Jump if carry Set
F000:A5B7 loc_581: ; xref F000:A5B0
F000:A5B7 E8 01B2 call sub_113 ; (A76C)

F000:A5BA loc_ret_582: ; xref F000:A594, A599, A5B5
F000:A5BA C3 retn
sub_101 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A229
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_102 proc near
F000:A5BB E8 026A call sub_116 ; (A828)
F000:A5BE E8 00FC call sub_109 ; (A6BD)
F000:A5C1 72 1E jc short loc_ret_584 ; Jump if carry Set
F000:A5C3 B0 90 mov al,90h
F000:A5C5 E8 0206 call sub_114 ; (A7CE)
F000:A5C8 E8 0159 call sub_111 ; (A724)
F000:A5CB 72 14 jc short loc_ret_584 ; Jump if carry Set
F000:A5CD BA 01F1 mov dx,1F1h
F000:A5D0 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A5D1 A2 008D mov hdsk_error,al ; (0040:008D=0)
F000:A5D4 B4 20 mov ah,20h ; ' '
F000:A5D6 3C 01 cmp al,1
F000:A5D8 F9 stc ; Set carry flag
F000:A5D9 75 02 jnz short loc_583 ; Jump if not zero
F000:A5DB 32 E4 xor ah,ah ; Zero register
F000:A5DD loc_583: ; xref F000:A5D9
F000:A5DD 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)

F000:A5E1 loc_ret_584: ; xref F000:A5C1, A5CB
F000:A5E1 C3 retn
sub_102 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A250
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 120

;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_103 proc near
F000:A5E2 E8 0075 call sub_107 ; (A65A)
F000:A5E5 73 07 jnc short loc_585 ; Jump if carry=0
F000:A5E7 32 E4 xor ah,ah ; Zero register
F000:A5E9 33 C9 xor cx,cx ; Zero register
F000:A5EB 33 D2 xor dx,dx ; Zero register
F000:A5ED C3 retn
F000:A5EE loc_585: ; xref F000:A5E5
F000:A5EE E8 0055 call sub_106 ; (A646)
F000:A5F1 26: 8B 07 mov ax,es:[bx]
F000:A5F4 48 dec ax
F000:A5F5 26: 8A 4F 0E mov cl,es:[bx+0Eh]
F000:A5F9 B5 00 mov ch,0
F000:A5FB F7 E1 mul cx ; dx:ax = reg * ax
F000:A5FD 26: 8A 4F 02 mov cl,es:[bx+2]
F000:A601 F7 E1 mul cx ; dx:ax = reg * ax
F000:A603 8B CA mov cx,dx
F000:A605 8B D0 mov dx,ax
F000:A607 B4 03 mov ah,3
F000:A609 F8 clc ; Clear carry flag
F000:A60A C3 retn
sub_103 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A233
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_104 proc near
F000:A60B E8 002B call sub_105 ; (A639)
F000:A60E 73 07 jnc short loc_586 ; Jump if carry=0
F000:A610 B4 01 mov ah,1
F000:A612 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A616 C3 retn
F000:A617 loc_586: ; xref F000:A60E
F000:A617 8A 76 15 mov dh,[bp+15h]
F000:A61A 52 push dx
F000:A61B 26: 8B 47 0C mov ax,es:[bx+0Ch]
F000:A61F 8A E8 mov ch,al
F000:A621 8A CC mov cl,ah
F000:A623 C0 E1 06 shl cl,6 ; Shift w/zeros fill
F000:A626 8A F4 mov dh,ah
F000:A628 C0 E6 04 shl dh,4 ; Shift w/zeros fill
F000:A62B 80 E6 C0 and dh,0C0h
F000:A62E 88 76 15 mov [bp+15h],dh
F000:A631 E8 FED0 call sub_99 ; (A504)
F000:A634 5A pop dx
F000:A635 88 76 15 mov [bp+15h],dh
F000:A638 C3 retn
sub_104 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 121

; SUBROUTINE
;
; Called from: F000:A310, A38A, A3D5, A4A7, A60B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_105 proc near
F000:A639 80 FA 81 cmp dl,81h
F000:A63C 76 08 jbe short loc_587 ; Jump if below or =
F000:A63E B4 01 mov ah,1
F000:A640 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A644 F9 stc ; Set carry flag
F000:A645 C3 retn
sub_105 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A5EE, A676, A82C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_106 proc near
F000:A646 loc_587: ; xref F000:A63C
F000:A646 33 DB xor bx,bx ; Zero register
F000:A648 8E C3 mov es,bx
F000:A64A F6 C2 01 test dl,1
F000:A64D BB 0104 mov bx,104h
F000:A650 74 03 jz short loc_588 ; Jump if zero
F000:A652 BB 0118 mov bx,118h
F000:A655 loc_588: ; xref F000:A650
F000:A655 26: C4 1F les bx,dword ptr es:[bx] ; Load 32 bit ptr
F000:A658 F8 clc ; Clear carry flag
F000:A659 C3 retn
sub_106 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A245, A2DE, A2FF, A3D0, A429, A496, A504
; A563, A591, A5E2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_107 proc near
F000:A65A 50 push ax
F000:A65B A0 0075 mov al,hdsk_count ; (0040:0075=1)
F000:A65E 8A E2 mov ah,dl
F000:A660 80 E4 7F and ah,7Fh
F000:A663 3A C4 cmp al,ah
F000:A665 58 pop ax
F000:A666 76 41 jbe short loc_593 ; Jump if below or =
F000:A668 83 FF 2A cmp di,2Ah
F000:A66B 74 3A je short loc_592 ; Jump if equal
F000:A66D 83 FF 10 cmp di,10h
F000:A670 74 35 je short loc_592 ; Jump if equal
F000:A672 06 push es
F000:A673 53 push bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 122

F000:A674 52 push dx
F000:A675 51 push cx
F000:A676 E8 FFCD call sub_106 ; (A646)
F000:A679 26: 8B 4F 05 mov cx,es:[bx+5]
F000:A67D C1 E9 02 shr cx,2 ; Shift w/zeros fill
F000:A680 88 4E 02 mov [bp+2],cl
F000:A683 B1 A0 mov cl,0A0h
F000:A685 F6 C2 01 test dl,1
F000:A688 74 02 jz short loc_589 ; Jump if zero
F000:A68A B1 B0 mov cl,0B0h
F000:A68C loc_589: ; xref F000:A688
F000:A68C 83 FF 12 cmp di,12h
F000:A68F 75 0A jne short loc_590 ; Jump if not equal
F000:A691 26: 8A 77 02 mov dh,es:[bx+2]
F000:A695 FE CE dec dh
F000:A697 0A CE or cl,dh
F000:A699 EB 05 jmp short loc_591 ; (A6A0)
F000:A69B loc_590: ; xref F000:A68F
F000:A69B 80 E6 0F and dh,0Fh
F000:A69E 0A CE or cl,dh
F000:A6A0 loc_591: ; xref F000:A699
F000:A6A0 88 4E 07 mov [bp+7],cl
F000:A6A3 59 pop cx
F000:A6A4 5A pop dx
F000:A6A5 5B pop bx
F000:A6A6 07 pop es
F000:A6A7 loc_592: ; xref F000:A66B, A670
F000:A6A7 F8 clc ; Clear carry flag
F000:A6A8 C3 retn
F000:A6A9 loc_593: ; xref F000:A666
F000:A6A9 B4 01 mov ah,1
F000:A6AB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A6AF F9 stc ; Set carry flag
F000:A6B0 C3 retn
sub_107 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2EE, A316, A3FC, A446, A4B6, A542, A5A5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_108 proc near
F000:A6B1 52 push dx
F000:A6B2 50 push ax
F000:A6B3 8A 46 02 mov al,[bp+2]
F000:A6B6 BA 01F1 mov dx,1F1h
F000:A6B9 EE out dx,al ; port 1F1h, hdsk0-precomp cylr
F000:A6BA 58 pop ax
F000:A6BB 5A pop dx
F000:A6BC C3 retn
sub_108 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 123

;
; Called from: F000:A26E, A568, A5BE, A6EB, A7CE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_109 proc near
F000:A6BD FB sti ; Enable interrupts
F000:A6BE 51 push cx
F000:A6BF 52 push dx
F000:A6C0 50 push ax
F000:A6C1 B9 0010 mov cx,10h
F000:A6C4 BA 01F7 mov dx,1F7h
F000:A6C7 B4 80 mov ah,80h

F000:A6C9 locloop_594: ; xref F000:A6D2
F000:A6C9 51 push cx
F000:A6CA 33 C9 xor cx,cx ; Zero register
F000:A6CC E8 488B call sub_260 ; (EF5A)
F000:A6CF 59 pop cx
F000:A6D0 73 0F jnc short loc_595 ; Jump if carry=0
F000:A6D2 E2 F5 loop locloop_594 ; Loop if cx > 0

F000:A6D4 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A6D5 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A6D8 58 pop ax
F000:A6D9 B4 80 mov ah,80h
F000:A6DB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A6DF EB 01 jmp short loc_596 ; (A6E2)
F000:A6E1 loc_595: ; xref F000:A6D0
F000:A6E1 58 pop ax
F000:A6E2 loc_596: ; xref F000:A6DF
F000:A6E2 5A pop dx
F000:A6E3 59 pop cx
F000:A6E4 C3 retn
sub_109 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2E3, A304, A3DA, A42E, A49B, A509, A596
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_110 proc near
F000:A6E5 52 push dx
F000:A6E6 51 push cx
F000:A6E7 50 push ax
F000:A6E8 B9 0C00 mov cx,0C00h

F000:A6EB locloop_597: ; xref F000:A70F
F000:A6EB E8 FFCF call sub_109 ; (A6BD)
F000:A6EE 72 28 jc short loc_599 ; Jump if carry Set
F000:A6F0 BA 01F6 mov dx,1F6h
F000:A6F3 8A 46 07 mov al,[bp+7]
F000:A6F6 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A6F7 51 push cx
F000:A6F8 B9 0002 mov cx,2
F000:A6FB E8 496A call sub_264 ; (F068)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 124

F000:A6FE 59 pop cx
F000:A6FF BA 01F7 mov dx,1F7h
F000:A702 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A703 B4 AA mov ah,0AAh
F000:A705 A8 40 test al,40h ; '@'
F000:A707 74 06 jz short loc_598 ; Jump if zero
F000:A709 B4 40 mov ah,40h ; '@'
F000:A70B A8 10 test al,10h
F000:A70D 75 10 jnz short loc_600 ; Jump if not zero
F000:A70F loc_598: ; xref F000:A707
F000:A70F E2 DA loop locloop_597 ; Loop if cx > 0

F000:A711 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A714 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A718 loc_599: ; xref F000:A6EE
F000:A718 59 pop cx
F000:A719 8A C1 mov al,cl
F000:A71B 59 pop cx
F000:A71C 5A pop dx
F000:A71D F9 stc ; Set carry flag
F000:A71E C3 retn
F000:A71F loc_600: ; xref F000:A70D
F000:A71F 58 pop ax
F000:A720 59 pop cx
F000:A721 5A pop dx
F000:A722 F8 clc ; Clear carry flag
F000:A723 C3 retn
sub_110 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2F6, A381, A402, A44E, A4F2, A54A, A5AD
; A5B2, A5C8
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_111 proc near
F000:A724 F8 clc ; Clear carry flag
F000:A725 B8 9000 mov ax,9000h
F000:A728 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:A72A FB sti ; Enable interrupts
F000:A72B 72 10 jc short loc_602 ; Jump if carry Set
F000:A72D BB 008E mov bx,8Eh
F000:A730 BA 0010 mov dx,10h
F000:A733 loc_601: ; xref F000:A73B
F000:A733 33 C9 xor cx,cx ; Zero register
F000:A735 E8 486A call sub_262 ; (EFA2)
F000:A738 73 0B jnc short loc_603 ; Jump if carry=0
F000:A73A 4A dec dx
F000:A73B 75 F6 jnz loc_601 ; Jump if not zero
F000:A73D loc_602: ; xref F000:A72B
F000:A73D B4 80 mov ah,80h
F000:A73F 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A743 EB 05 jmp short loc_ret_604 ; (A74A)
F000:A745 loc_603: ; xref F000:A738
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 125

F000:A745 C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)

F000:A74A loc_ret_604: ; xref F000:A743
F000:A74A C3 retn
sub_111 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A36A, A472, A4BE, A4D9
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_112 proc near
F000:A74B 51 push cx
F000:A74C 52 push dx
F000:A74D 50 push ax
F000:A74E B9 00C8 mov cx,0C8h
F000:A751 BA 01F7 mov dx,1F7h
F000:A754 B4 08 mov ah,8
F000:A756 E8 4825 call sub_261 ; (EF7E)
F000:A759 73 0D jnc short loc_605 ; Jump if carry=0
F000:A75B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A75C A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A75F 58 pop ax
F000:A760 B4 80 mov ah,80h
F000:A762 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A766 EB 01 jmp short loc_606 ; (A769)
F000:A768 loc_605: ; xref F000:A759
F000:A768 58 pop ax
F000:A769 loc_606: ; xref F000:A766
F000:A769 5A pop dx
F000:A76A 59 pop cx
F000:A76B C3 retn
sub_112 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2FB, A386, A407, A453, A4F7, A54F, A5B7
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_113 proc near
F000:A76C 52 push dx
F000:A76D 50 push ax
F000:A76E BA 01F7 mov dx,1F7h
F000:A771 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A772 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A775 B4 11 mov ah,11h
F000:A777 A8 04 test al,4
F000:A779 75 45 jnz short loc_607 ; Jump if not zero
F000:A77B B4 CC mov ah,0CCh
F000:A77D A8 20 test al,20h ; ' '
F000:A77F 75 3F jnz short loc_607 ; Jump if not zero
F000:A781 B4 AA mov ah,0AAh
F000:A783 A8 40 test al,40h ; '@'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 126

F000:A785 74 39 jz short loc_607 ; Jump if zero
F000:A787 B4 40 mov ah,40h ; '@'
F000:A789 A8 10 test al,10h
F000:A78B 74 33 jz short loc_607 ; Jump if zero
F000:A78D B4 00 mov ah,0
F000:A78F A8 01 test al,1
F000:A791 74 2D jz short loc_607 ; Jump if zero
F000:A793 BA 01F1 mov dx,1F1h
F000:A796 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A797 A2 008D mov hdsk_error,al ; (0040:008D=0)
F000:A79A B4 02 mov ah,2
F000:A79C A8 01 test al,1
F000:A79E 75 20 jnz short loc_607 ; Jump if not zero
F000:A7A0 B4 01 mov ah,1
F000:A7A2 A8 04 test al,4
F000:A7A4 75 1A jnz short loc_607 ; Jump if not zero
F000:A7A6 B4 04 mov ah,4
F000:A7A8 A8 10 test al,10h
F000:A7AA 75 14 jnz short loc_607 ; Jump if not zero
F000:A7AC B4 10 mov ah,10h
F000:A7AE A8 40 test al,40h ; '@'
F000:A7B0 75 0E jnz short loc_607 ; Jump if not zero
F000:A7B2 B4 40 mov ah,40h ; '@'
F000:A7B4 A8 02 test al,2
F000:A7B6 75 08 jnz short loc_607 ; Jump if not zero
F000:A7B8 B4 0A mov ah,0Ah
F000:A7BA A8 80 test al,80h
F000:A7BC 75 02 jnz short loc_607 ; Jump if not zero
F000:A7BE B4 BB mov ah,0BBh
F000:A7C0 loc_607: ; xref F000:A779, A77F, A785, A78B
; A791, A79E, A7A4, A7AA
; A7B0, A7B6, A7BC
F000:A7C0 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A7C4 5A pop dx
F000:A7C5 8A C2 mov al,dl
F000:A7C7 5A pop dx
F000:A7C8 0A E4 or ah,ah ; Zero ?
F000:A7CA 74 01 jz short loc_ret_608 ; Jump if zero
F000:A7CC F9 stc ; Set carry flag

F000:A7CD loc_ret_608: ; xref F000:A7CA
F000:A7CD C3 retn
sub_113 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2F3, A367, A3FF, A44B, A4BB, A547, A5AA
; A5C5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_114 proc near
F000:A7CE E8 FEEC call sub_109 ; (A6BD)
F000:A7D1 FA cli ; Disable interrupts
F000:A7D2 50 push ax
F000:A7D3 C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 127

F000:A7D8 E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:A7DA EB 00 jmp short loc_609 ; (A7DC)
F000:A7DC loc_609: ; xref F000:A7DA
F000:A7DC EB 00 jmp short loc_610 ; (A7DE)
F000:A7DE loc_610: ; xref F000:A7DC
F000:A7DE 24 BF and al,0BFh
F000:A7E0 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:A7E2 E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:A7E4 EB 00 jmp short loc_611 ; (A7E6)
F000:A7E6 loc_611: ; xref F000:A7E4
F000:A7E6 EB 00 jmp short loc_612 ; (A7E8)
F000:A7E8 loc_612: ; xref F000:A7E6
F000:A7E8 24 FB and al,0FBh
F000:A7EA E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:A7EC EB 00 jmp short loc_613 ; (A7EE)
F000:A7EE loc_613: ; xref F000:A7EC
F000:A7EE EB 00 jmp short loc_614 ; (A7F0)
F000:A7F0 loc_614: ; xref F000:A7EE
F000:A7F0 58 pop ax
F000:A7F1 52 push dx
F000:A7F2 BA 01F7 mov dx,1F7h
F000:A7F5 88 46 08 mov [bp+8],al
F000:A7F8 EE out dx,al ; port 1F7h, hdsk0-command reg
F000:A7F9 5A pop dx
F000:A7FA FB sti ; Enable interrupts
F000:A7FB C3 retn
sub_114 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2C3, A2D3, A410, A41F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_115 proc near
F000:A7FC 52 push dx
F000:A7FD 50 push ax
F000:A7FE 8B C3 mov ax,bx
F000:A800 C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:A803 8C C2 mov dx,es
F000:A805 03 C2 add ax,dx
F000:A807 8E C0 mov es,ax
F000:A809 83 E3 0F and bx,0Fh
F000:A80C 33 C0 xor ax,ax ; Zero register
F000:A80E BA 0001 mov dx,1
F000:A811 2B C3 sub ax,bx
F000:A813 83 DA 00 sbb dx,0
F000:A816 F7 76 18 div word ptr [bp+18h] ; ax,dxrem=dx:ax/data
F000:A819 8A D0 mov dl,al
F000:A81B 58 pop ax
F000:A81C 3A D0 cmp dl,al
F000:A81E 5A pop dx
F000:A81F 73 06 jnc short loc_ret_615 ; Jump if carry=0
F000:A821 B4 09 mov ah,9
F000:A823 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 128

F000:A827 loc_ret_615: ; xref F000:A81F
F000:A827 C3 retn
sub_115 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2E8, A313, A3DF, A437, A4A4, A50E, A59B
; A5BB
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_116 proc near
F000:A828 06 push es
F000:A829 53 push bx
F000:A82A 52 push dx
F000:A82B 50 push ax
F000:A82C E8 FE17 call sub_106 ; (A646)
F000:A82F 26: 8A 47 08 mov al,es:[bx+8]
F000:A833 8A E0 mov ah,al
F000:A835 24 08 and al,8
F000:A837 BA 03F6 mov dx,3F6h
F000:A83A EE out dx,al ; port 3F6h, hdsk0 register
F000:A83B A0 0076 mov al,hdsk_head_ctrl ; (0040:0076=0)
F000:A83E 24 C0 and al,0C0h
F000:A840 0A C4 or al,ah
F000:A842 A2 0076 mov hdsk_head_ctrl,al ; (0040:0076=0)
F000:A845 58 pop ax
F000:A846 5A pop dx
F000:A847 5B pop bx
F000:A848 07 pop es
F000:A849 C3 retn
sub_116 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A2EB, A443, A4B3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_117 proc near
F000:A84A 50 push ax
F000:A84B 52 push dx
F000:A84C BA 01F2 mov dx,1F2h
F000:A84F 88 46 03 mov [bp+3],al
F000:A852 EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A853 EB 00 jmp short loc_616 ; (A855)
F000:A855 loc_616: ; xref F000:A853
F000:A855 EB 00 jmp short loc_617 ; (A857)
F000:A857 loc_617: ; xref F000:A855
F000:A857 8A C1 mov al,cl
F000:A859 24 3F and al,3Fh ; '?'
F000:A85B BA 01F3 mov dx,1F3h
F000:A85E 88 46 04 mov [bp+4],al
F000:A861 EE out dx,al ; port 1F3h, hdsk0-sector numbr
F000:A862 EB 00 jmp short loc_618 ; (A864)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 129

F000:A864 loc_618: ; xref F000:A862
F000:A864 EB 00 jmp short loc_619 ; (A866)
F000:A866 loc_619: ; xref F000:A864
F000:A866 8A C5 mov al,ch
F000:A868 BA 01F4 mov dx,1F4h
F000:A86B 88 46 05 mov [bp+5],al
F000:A86E EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A86F EB 00 jmp short loc_620 ; (A871)
F000:A871 loc_620: ; xref F000:A86F
F000:A871 EB 00 jmp short loc_621 ; (A873)
F000:A873 loc_621: ; xref F000:A871
F000:A873 8A C1 mov al,cl
F000:A875 C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A878 8A 56 15 mov dl,[bp+15h]
F000:A87B C0 EA 04 shr dl,4 ; Shift w/zeros fill
F000:A87E 80 E2 0C and dl,0Ch
F000:A881 0A C2 or al,dl
F000:A883 BA 01F5 mov dx,1F5h
F000:A886 88 46 06 mov [bp+6],al
F000:A889 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A88A EB 00 jmp short loc_622 ; (A88C)
F000:A88C loc_622: ; xref F000:A88A
F000:A88C EB 00 jmp short loc_623 ; (A88E)
F000:A88E loc_623: ; xref F000:A88C
F000:A88E BA 01F6 mov dx,1F6h
F000:A891 8A 46 07 mov al,[bp+7]
F000:A894 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A895 5A pop dx
F000:A896 58 pop ax
F000:A897 C3 retn
sub_117 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9498
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_118 proc near
F000:A898 FA cli ; Disable interrupts
F000:A899 FC cld ; Clear direction
F000:A89A BE 004C mov si,4Ch
F000:A89D BF 0100 mov di,100h
F000:A8A0 B8 A1A3 mov ax,0A1A3h
F000:A8A3 26: 87 04 xchg ax,es:[si]
F000:A8A6 AB stosw ; Store ax to es:[di]
F000:A8A7 8C C8 mov ax,cs
F000:A8A9 26: 87 44 02 xchg ax,es:[si+2]
F000:A8AD AB stosw ; Store ax to es:[di]
F000:A8AE B8 E845 mov ax,0E845h
F000:A8B1 BF 01D8 mov di,1D8h
F000:A8B4 AB stosw ; Store ax to es:[di]
F000:A8B5 26: 8C 0D mov es:[di],cs
F000:A8B8 BF 0442 mov di,442h
F000:A8BB 33 C0 xor ax,ax ; Zero register
F000:A8BD AB stosw ; Store ax to es:[di]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 130

F000:A8BE AB stosw ; Store ax to es:[di]
F000:A8BF AB stosw ; Store ax to es:[di]
F000:A8C0 AA stosb ; Store al to es:[di]
F000:A8C1 BF 0474 mov di,474h
F000:A8C4 AB stosw ; Store ax to es:[di]
F000:A8C5 AA stosb ; Store al to es:[di]
F000:A8C6 BF 048C mov di,48Ch
F000:A8C9 AB stosw ; Store ax to es:[di]
F000:A8CA AA stosb ; Store al to es:[di]
F000:A8CB BE E401 mov si,0E401h
F000:A8CE BF 0104 mov di,104h
F000:A8D1 26: 8C 4D 02 mov es:[di+2],cs
F000:A8D5 B0 92 mov al,92h
F000:A8D7 E8 45C5 call sub_257 ; (EE9F)
F000:A8DA 8A C8 mov cl,al
F000:A8DC C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:A8DF 74 19 jz short loc_624 ; Jump if zero
F000:A8E1 48 dec ax
F000:A8E2 3C 0E cmp al,0Eh
F000:A8E4 75 20 jne short loc_625 ; Jump if not equal
F000:A8E6 B0 99 mov al,99h
F000:A8E8 E8 45B4 call sub_257 ; (EE9F)
F000:A8EB 2C 01 sub al,1
F000:A8ED 72 0B jc short loc_624 ; Jump if carry Set
F000:A8EF 3C 2E cmp al,2Eh ; '.'
F000:A8F1 77 07 ja short loc_624 ; Jump if above
F000:A8F3 75 11 jnz short loc_625 ; Jump if not zero
F000:A8F5 E8 EF80 call sub_58 ; (9878)
F000:A8F8 EB 12 jmp short loc_626 ; (A90C)
F000:A8FA loc_624: ; xref F000:A8DF, A8ED, A8F1
F000:A8FA 8B C6 mov ax,si
F000:A8FC AB stosw ; Store ax to es:[di]
F000:A8FD BF 0118 mov di,118h
F000:A900 AB stosw ; Store ax to es:[di]
F000:A901 8C C8 mov ax,cs
F000:A903 AB stosw ; Store ax to es:[di]
F000:A904 EB 4B jmp short loc_631 ; (A951)
F000:A906 loc_625: ; xref F000:A8E4, A8F3
F000:A906 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:A909 03 C6 add ax,si
F000:A90B AB stosw ; Store ax to es:[di]
F000:A90C loc_626: ; xref F000:A8F8
F000:A90C FE 06 0075 inc byte ptr ds:data_48e ; (C000:0075=54h)
F000:A910 BF 0118 mov di,118h
F000:A913 26: 8C 4D 02 mov es:[di+2],cs
F000:A917 8A C1 mov al,cl
F000:A919 25 000F and ax,0Fh
F000:A91C 74 19 jz short loc_627 ; Jump if zero
F000:A91E 48 dec ax
F000:A91F 3C 0E cmp al,0Eh
F000:A921 75 19 jne short loc_628 ; Jump if not equal
F000:A923 B0 9A mov al,9Ah
F000:A925 E8 4577 call sub_257 ; (EE9F)
F000:A928 2C 01 sub al,1
F000:A92A 72 0B jc short loc_627 ; Jump if carry Set
F000:A92C 3C 2E cmp al,2Eh ; '.'
F000:A92E 77 07 ja short loc_627 ; Jump if above
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 131

F000:A930 75 0A jnz short loc_628 ; Jump if not zero
F000:A932 E8 EF4B call sub_59 ; (9880)
F000:A935 EB 0B jmp short loc_629 ; (A942)
F000:A937 loc_627: ; xref F000:A91C, A92A, A92E
F000:A937 8B C6 mov ax,si
F000:A939 AB stosw ; Store ax to es:[di]
F000:A93A EB 0A jmp short loc_630 ; (A946)
F000:A93C loc_628: ; xref F000:A921, A930
F000:A93C C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:A93F 03 C6 add ax,si
F000:A941 AB stosw ; Store ax to es:[di]
F000:A942 loc_629: ; xref F000:A935
F000:A942 FE 06 0075 inc byte ptr ds:data_48e ; (C000:0075=54h)
F000:A946 loc_630: ; xref F000:A93A
F000:A946 B2 80 mov dl,80h
F000:A948 B4 14 mov ah,14h
F000:A94A CD 13 int 13h ; Disk dl=drive #: ah=func a4h
; controller diagnostic
F000:A94C 73 11 jnc short loc_632 ; Jump if carry=0
F000:A94E 83 CD 04 or bp,4
F000:A951 loc_631: ; xref F000:A904, A990
F000:A951 B8 8E8E mov ax,8E8Eh
F000:A954 E8 4548 call sub_257 ; (EE9F)
F000:A957 0C 08 or al,8
F000:A959 86 C4 xchg al,ah
F000:A95B E8 4550 call sub_258 ; (EEAE)
F000:A95E C3 retn
F000:A95F loc_632: ; xref F000:A94C
F000:A95F E8 0072 call sub_120 ; (A9D4)
F000:A962 73 05 jnc short loc_633 ; Jump if carry=0
F000:A964 83 CD 20 or bp,20h
F000:A967 EB 08 jmp short loc_634 ; (A971)
F000:A969 loc_633: ; xref F000:A962
F000:A969 E8 0034 call sub_119 ; (A9A0)
F000:A96C 73 03 jnc short loc_634 ; Jump if carry=0
F000:A96E 83 CD 08 or bp,8
F000:A971 loc_634: ; xref F000:A967, A96C
F000:A971 80 3E 0075 01 cmp byte ptr ds:data_48e,1 ; (C000:0075=54h)
F000:A976 74 14 je short loc_636 ; Jump if equal
F000:A978 B2 81 mov dl,81h
F000:A97A E8 0057 call sub_120 ; (A9D4)
F000:A97D 73 05 jnc short loc_635 ; Jump if carry=0
F000:A97F 83 CD 40 or bp,40h
F000:A982 EB 08 jmp short loc_636 ; (A98C)
F000:A984 loc_635: ; xref F000:A97D
F000:A984 E8 0019 call sub_119 ; (A9A0)
F000:A987 73 03 jnc short loc_636 ; Jump if carry=0
F000:A989 83 CD 10 or bp,10h
F000:A98C loc_636: ; xref F000:A976, A982, A987
F000:A98C F7 C5 0020 test bp,20h
F000:A990 75 BF jnz loc_631 ; Jump if not zero
F000:A992 B8 8E8E mov ax,8E8Eh
F000:A995 E8 4507 call sub_257 ; (EE9F)
F000:A998 24 F7 and al,0F7h
F000:A99A 86 C4 xchg al,ah
F000:A99C E8 450F call sub_258 ; (EEAE)
F000:A99F C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 132

sub_118 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A969, A984
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_119 proc near
F000:A9A0 B4 08 mov ah,8
F000:A9A2 52 push dx
F000:A9A3 CD 13 int 13h ; Disk dl=drive #: ah=func a8h
; read parameters for drive dl
F000:A9A5 58 pop ax
F000:A9A6 8A D0 mov dl,al
F000:A9A8 72 29 jc short loc_ret_638 ; Jump if carry Set
F000:A9AA loc_637: ; xref F000:A9D0
F000:A9AA B8 0401 mov ax,401h
F000:A9AD CD 13 int 13h ; Disk dl=drive #: ah=func a4h
; verify sectors with mem es:bx
F000:A9AF 73 22 jnc short loc_ret_638 ; Jump if carry=0
F000:A9B1 80 FC 0A cmp ah,0Ah
F000:A9B4 74 1D je short loc_ret_638 ; Jump if equal
F000:A9B6 80 FC 10 cmp ah,10h
F000:A9B9 74 18 je short loc_ret_638 ; Jump if equal
F000:A9BB 80 FC 11 cmp ah,11h
F000:A9BE 74 13 je short loc_ret_638 ; Jump if equal
F000:A9C0 A1 006C mov ax,ds:data_44e ; (C000:006C=4D20h)
F000:A9C3 2B C6 sub ax,si
F000:A9C5 3D 02D8 cmp ax,2D8h
F000:A9C8 F5 cmc ; Complement carry
F000:A9C9 72 08 jc short loc_ret_638 ; Jump if carry Set
F000:A9CB FE C9 dec cl
F000:A9CD F6 C1 3F test cl,3Fh ; '?'
F000:A9D0 75 D8 jnz loc_637 ; Jump if not zero
F000:A9D2 F9 stc ; Set carry flag

F000:A9D3 loc_ret_638: ; xref F000:A9A8, A9AF, A9B4, A9B9
; A9BE, A9C9
F000:A9D3 C3 retn
sub_119 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A95F, A97A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_120 proc near
F000:A9D4 8B 36 006C mov si,ds:data_44e ; (C000:006C=4D20h)
F000:A9D8 loc_639: ; xref F000:A9ED
F000:A9D8 B4 09 mov ah,9
F000:A9DA CD 13 int 13h ; Disk dl=drive #: ah=func a9h
; initialize drive parameters
F000:A9DC 72 06 jc short loc_640 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 133

F000:A9DE B4 11 mov ah,11h
F000:A9E0 CD 13 int 13h ; Disk dl=drive #: ah=func a1h
; recalibrate drive
F000:A9E2 73 0B jnc short loc_ret_641 ; Jump if carry=0
F000:A9E4 loc_640: ; xref F000:A9DC
F000:A9E4 A1 006C mov ax,ds:data_44e ; (C000:006C=4D20h)
F000:A9E7 2B C6 sub ax,si
F000:A9E9 3D 02D8 cmp ax,2D8h
F000:A9EC F5 cmc ; Complement carry
F000:A9ED 73 E9 jnc loc_639 ; Jump if carry=0

F000:A9EF loc_ret_641: ; xref F000:A9E2
F000:A9EF C3 retn
sub_120 endp

F000:A9F0 loc_642: ; xref F000:9325
F000:A9F0 B8 028F mov ax,28Fh
F000:A9F3 E8 449C call sub_256 ; (EE92)
F000:A9F6 B0 30 mov al,30h ; '0'
F000:A9F8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:A9FA E8 CC71 call $-338Ch
F000:A9FD BF 0600 mov di,600h
F000:AA00 57 push di
F000:AA01 BE E260 mov si,0E260h
F000:AA04 B9 0030 mov cx,30h
F000:AA07 FA cli ; Disable interrupts
F000:AA08 FC cld ; Clear direction
F000:AA09 2E: F3/ A5 rep movs word ptr es:[di],word ptr cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA0C 33 F6 xor si,si ; Zero register
F000:AA0E BF 8010 mov di,8010h
F000:AA11 B9 0300 mov cx,300h
F000:AA14 26: F3/ A5 rep movs word ptr es:[di],word ptr es:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA17 5E pop si
F000:AA18 26: C7 44 0A 0600 mov word ptr es:[si+0Ah],600h
F000:AA1E 26: C6 44 0C 00 mov byte ptr es:[si+0Ch],0
F000:AA23 BB 0800 mov bx,800h
F000:AA26 B4 89 mov ah,89h
F000:AA28 B0 31 mov al,31h ; '1'
F000:AA2A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA2C CD 15 int 15h ; General services, ah=func 89h
; set protected mode operation
F000:AA2E 74 06 jz short loc_644 ; Jump if zero
F000:AA30 loc_643: ; xref F000:ABB7, AD7A
F000:AA30 BE 7D22 mov si,7D22h
F000:AA33 E9 E35E jmp loc_229 ; (8D94)
F000:AA36 loc_644: ; xref F000:AA2E
F000:AA36 E8 0344 call sub_129 ; (AD7D)
F000:AA39 B8 0040 mov ax,seg_b
F000:AA3C 8E C0 mov es,ax
F000:AA3E B0 32 mov al,32h ; '2'
F000:AA40 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA42 EB 1F jmp short loc_647 ; (AA63)
F000:AA44 loc_645: ; xref F000:AA79, AA8D
F000:AA44 B8 018F mov ax,18Fh
F000:AA47 E8 4448 call sub_256 ; (EE92)
F000:AA4A E8 E3F6 call sub_33 ; (8E43)
F000:AA4D E9 3700 jmp loc_1198 ; (E150)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 134


;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AA50 loc_646: ; xref F000:80FB, 8102
F000:AA50 BE 8010 mov si,8010h
F000:AA53 33 FF xor di,di ; Zero register
F000:AA55 B9 0300 mov cx,300h
F000:AA58 FA cli ; Disable interrupts
F000:AA59 FC cld ; Clear direction
F000:AA5A 26: F3/ A5 rep movs word ptr es:[di],word ptr es:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA5D BE 7D36 mov si,7D36h
F000:AA60 E9 E331 jmp loc_229 ; (8D94)
F000:AA63 loc_647: ; xref F000:AA42
F000:AA63 33 FF xor di,di ; Zero register
F000:AA65 BE 0244 mov si,244h
F000:AA68 B8 00FF mov ax,0FFh
F000:AA6B BB 000F mov bx,0Fh
F000:AA6E 8A 16 0000 mov dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA72 E8 017C call sub_124 ; (ABF1)
F000:AA75 3A 16 0000 cmp dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA79 75 C9 jne loc_645 ; Jump if not equal
F000:AA7B 50 push ax
F000:AA7C B0 33 mov al,33h ; '3'
F000:AA7E E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA80 B8 0009 mov ax,9
F000:AA83 BB 0000 mov bx,0
F000:AA86 E8 0168 call sub_124 ; (ABF1)
F000:AA89 3A 16 0000 cmp dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA8D 75 B5 jne loc_645 ; Jump if not equal
F000:AA8F 50 push ax
F000:AA90 B0 34 mov al,34h ; '4'
F000:AA92 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA94 58 pop ax
F000:AA95 BB 000A mov bx,0Ah
F000:AA98 C6 04 00 mov byte ptr [si],0
F000:AA9B C6 44 03 00 mov byte ptr [si+3],0
F000:AA9F 33 D2 xor dx,dx ; Zero register
F000:AAA1 E8 0172 call sub_125 ; (AC16)
F000:AAA4 B0 35 mov al,35h ; '5'
F000:AAA6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAA8 58 pop ax
F000:AAA9 52 push dx
F000:AAAA 33 D2 xor dx,dx ; Zero register
F000:AAAC BB 0100 mov bx,100h
F000:AAAF C6 04 0F mov byte ptr [si],0Fh
F000:AAB2 C6 44 03 00 mov byte ptr [si+3],0
F000:AAB6 E8 015D call sub_125 ; (AC16)
F000:AAB9 5B pop bx
F000:AABA 87 DA xchg bx,dx
F000:AABC B0 36 mov al,36h ; '6'
F000:AABE E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAC0 68 AAC7 push 0AAC7h
F000:AAC3 68 FA4E push 0FA4Eh
F000:AAC6 C3 retn
F000:AAC7 B0 37 E6 80 0B ED db 0B0h, 37h, 0E6h, 80h, 0Bh, 0EDh
F000:AACD 79 37 52 53 0B D2 db 79h, 37h, 52h, 53h, 0Bh, 0D2h
F000:AAD3 74 10 C6 04 00 C6 db 74h, 10h, 0C6h, 4, 0, 0C6h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 135

F000:AAD9 44 03 00 db 44h, 3, 0
F000:AADC loc_648: ; xref F000:AAE3
F000:AADC E8 02AB call sub_130 ; (AD8A)
F000:AADF E8 02B5 call sub_131 ; (AD97)
F000:AAE2 4A dec dx
F000:AAE3 75 F7 jnz loc_648 ; Jump if not zero
F000:AAE5 B0 38 mov al,38h ; '8'
F000:AAE7 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAE9 0B DB or bx,bx ; Zero ?
F000:AAEB 74 10 jz short loc_650 ; Jump if zero
F000:AAED C6 04 0F mov byte ptr [si],0Fh
F000:AAF0 C6 44 03 00 mov byte ptr [si+3],0
F000:AAF4 loc_649: ; xref F000:AAFB
F000:AAF4 E8 0293 call sub_130 ; (AD8A)
F000:AAF7 E8 029D call sub_131 ; (AD97)
F000:AAFA 4B dec bx
F000:AAFB 75 F7 jnz loc_649 ; Jump if not zero
F000:AAFD loc_650: ; xref F000:AAEB
F000:AAFD B0 39 mov al,39h ; '9'
F000:AAFF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB01 5B pop bx
F000:AB02 5A pop dx
F000:AB03 42 inc dx
F000:AB04 EB 38 jmp short loc_652 ; (AB3E)
F000:AB06 55 BD 01 00 53 33 db 55h, 0BDh, 1, 0, 53h, 33h
F000:AB0C DB B0 3A E6 80 E8 db 0DBh, 0B0h, 3Ah, 0E6h, 80h, 0E8h
F000:AB12 E4 01 C6 04 00 C6 db 0E4h, 1, 0C6h, 4, 0, 0C6h
F000:AB18 44 03 00 B0 3B E6 db 44h, 3, 0, 0B0h, 3Bh, 0E6h
F000:AB1E 80 E8 32 01 43 8B db 80h, 0E8h, 32h, 1, 43h, 8Bh
F000:AB24 EB EB 00 db 0EBh, 0EBh, 0
F000:AB27 loc_651:
F000:AB27 90 nop ;
F000:AB28 5A pop dx
F000:AB29 53 push bx
F000:AB2A C6 04 0F mov byte ptr [si],0Fh
F000:AB2D C6 44 03 00 mov byte ptr [si+3],0
F000:AB31 B0 3C mov al,3Ch ; '<'
F000:AB33 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB35 E8 011C call sub_127 ; (AC54)
F000:AB38 5A pop dx
F000:AB39 5D pop bp
F000:AB3A B0 3D mov al,3Dh ; '='
F000:AB3C E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB3E loc_652: ; xref F000:AB04
F000:AB3E 89 16 0013 mov main_ram_size,dx ; (0040:0013=280h)
F000:AB42 8A E3 mov ah,bl
F000:AB44 B0 B0 mov al,0B0h
F000:AB46 E8 4349 call sub_256 ; (EE92)
F000:AB49 8A E7 mov ah,bh
F000:AB4B B0 B1 mov al,0B1h
F000:AB4D E8 4342 call sub_256 ; (EE92)
F000:AB50 60 pusha ; Save all regs
F000:AB51 8B C4 mov ax,sp
F000:AB53 A3 0067 mov @gen_io_ptr,ax ; (0040:0067=522h)
F000:AB56 B8 038F mov ax,38Fh
F000:AB59 E8 4336 call sub_256 ; (EE92)
F000:AB5C E8 E2E4 call sub_33 ; (8E43)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 136

F000:AB5F B0 3E mov al,3Eh ; '>'
F000:AB61 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB63 E9 35EA jmp loc_1198 ; (E150)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AB66 loc_653: ; xref F000:80FB, 8106
F000:AB66 B0 3F mov al,3Fh ; '?'
F000:AB68 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB6A A1 0067 mov ax,@gen_io_ptr ; (0040:0067=522h)
F000:AB6D 8B E0 mov sp,ax
F000:AB6F 61 popa ; Restore all regs
F000:AB70 EB 00 jmp short loc_654 ; (AB72)
F000:AB72 loc_654: ; xref F000:AB70
F000:AB72 90 nop ;
F000:AB73 B0 40 mov al,40h ; '@'
F000:AB75 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB77 E8 E39A call sub_45 ; (8F14)
F000:AB7A E8 E37A call sub_44 ; (8EF7)
F000:AB7D 75 38 jnz short loc_657 ; Jump if not zero
F000:AB7F B0 41 mov al,41h ; 'A'
F000:AB81 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB83 0F 01 E0 smsw ax ; Store machine stat
F000:AB86 F6 C4 FF test ah,0FFh
F000:AB89 75 0C jnz short loc_655 ; Jump if not zero
F000:AB8B 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:AB8E 66| 25 9FFFFFFF and eax,9FFFFFFFh
F000:AB94 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:AB97 loc_655: ; xref F000:AB89
F000:AB97 E8 CB21 call $-34DCh
F000:AB9A B0 42 mov al,42h ; 'B'
F000:AB9C E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB9E E8 CB2F call $-34CEh
F000:ABA1 B0 43 mov al,43h ; 'C'
F000:ABA3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:ABA5 E8 0012 call sub_121 ; (ABBA)
F000:ABA8 A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
F000:ABAB A8 20 test al,20h ; ' '
F000:ABAD 75 05 jnz short loc_656 ; Jump if not zero
F000:ABAF B0 FE mov al,0FEh
F000:ABB1 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:ABB3 FB sti ; Enable interrupts
F000:ABB4 loc_656: ; xref F000:ABAD
F000:ABB4 E9 20B3 jmp loc_1043 ; (CC6A)
F000:ABB7 loc_657: ; xref F000:AB7D
F000:ABB7 E9 FE76 jmp loc_643 ; (AA30)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:959F, ABA5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_121 proc near
F000:ABBA 8B 16 0069 mov dx,ds:data_43e ; (C000:0069=4E45h)
F000:ABBE B4 02 mov ah,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 137

F000:ABC0 B7 00 mov bh,0
F000:ABC2 E8 CA30 call $-35CDh
F000:ABC5 B9 0050 mov cx,seg seg_c

F000:ABC8 locloop_658: ; xref F000:ABCE
F000:ABC8 B8 0E20 mov ax,0E20h
F000:ABCB E8 CA27 call $-35D6h
F000:ABCE E2 F8 loop locloop_658 ; Loop if cx > 0

F000:ABD0 B4 02 mov ah,2
F000:ABD2 E8 CA20 call $-35DDh
F000:ABD5 C3 retn
sub_121 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AD38
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_122 proc near
F000:ABD6 B9 000A mov cx,0Ah
F000:ABD9 C1 E0 06 shl ax,6 ; Shift w/zeros fill

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:ABE5

sub_123:
F000:ABDC 33 D2 xor dx,dx ; Zero register
F000:ABDE F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:ABE0 0B C0 or ax,ax ; Zero ?
F000:ABE2 74 05 jz short loc_659 ; Jump if zero
F000:ABE4 52 push dx
F000:ABE5 E8 FFF4 call sub_123 ; (ABDC)
F000:ABE8 5A pop dx
F000:ABE9 loc_659: ; xref F000:ABE2
F000:ABE9 8A C2 mov al,dl
F000:ABEB 0C 30 or al,30h ; '0'
F000:ABED E8 E1E2 call sub_29 ; (8DD2)
F000:ABF0 C3 retn
sub_122 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AA72, AA86
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_124 proc near
F000:ABF1 88 04 mov [si],al
F000:ABF3 88 64 03 mov [si+3],ah
F000:ABF6 loc_660: ; xref F000:AC0E, AC13
F000:ABF6 8C C1 mov cx,es
F000:ABF8 8E C1 mov es,cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 138

F000:ABFA F9 stc ; Set carry flag
F000:ABFB loc_661: ; xref F000:AC02
F000:ABFB 26: 88 05 mov es:[di],al
F000:ABFE FE C8 dec al
F000:AC00 D1 DF rcr di,1 ; Rotate thru carry
F000:AC02 73 F7 jnc loc_661 ; Jump if carry=0
F000:AC04 80 2C 01 sub byte ptr [si],1
F000:AC07 73 03 jnc short loc_662 ; Jump if carry=0
F000:AC09 FE 4C 03 dec byte ptr [si+3]
F000:AC0C loc_662: ; xref F000:AC07
F000:AC0C 3A 1C cmp bl,[si]
F000:AC0E 75 E6 jne loc_660 ; Jump if not equal
F000:AC10 3A 7C 03 cmp bh,[si+3]
F000:AC13 75 E1 jne loc_660 ; Jump if not equal
F000:AC15 C3 retn
sub_124 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AAA1, AAB6
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_125 proc near
F000:AC16 loc_663: ; xref F000:AC3F
F000:AC16 42 inc dx
F000:AC17 80 04 01 add byte ptr [si],1
F000:AC1A 73 03 jnc short loc_664 ; Jump if carry=0
F000:AC1C FE 44 03 inc byte ptr [si+3]
F000:AC1F loc_664: ; xref F000:AC1A
F000:AC1F 3A 1C cmp bl,[si]
F000:AC21 75 05 jne short loc_665 ; Jump if not equal
F000:AC23 3A 7C 03 cmp bh,[si+3]
F000:AC26 74 19 je short loc_667 ; Jump if equal
F000:AC28 loc_665: ; xref F000:AC21
F000:AC28 8C C1 mov cx,es
F000:AC2A 8E C1 mov es,cx
F000:AC2C BF 0001 mov di,1
F000:AC2F loc_666: ; xref F000:AC38
F000:AC2F FE C0 inc al
F000:AC31 26: 30 05 xor es:[di],al
F000:AC34 75 0B jnz short loc_667 ; Jump if not zero
F000:AC36 D1 D7 rcl di,1 ; Rotate thru carry
F000:AC38 73 F5 jnc loc_666 ; Jump if carry=0
F000:AC3A FE C0 inc al
F000:AC3C 26: 30 05 xor es:[di],al
F000:AC3F 74 D5 jz loc_663 ; Jump if zero
F000:AC41 loc_667: ; xref F000:AC26, AC34
F000:AC41 4A dec dx
F000:AC42 C3 retn
sub_125 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 139

; Called from: F000:AC9B, ACA9
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_126 proc near
F000:AC43 loc_668:
F000:AC43 F7 C7 FC3F test di,0FC3Fh
F000:AC47 7A 01 jp short loc_669 ; Jump if parity=1
F000:AC49 F9 stc ; Set carry flag
F000:AC4A loc_669: ; xref F000:AC47
F000:AC4A D1 DF rcr di,1 ; Rotate thru carry
F000:AC4C A8 C3 test al,0C3h
F000:AC4E 7A 01 jp short loc_670 ; Jump if parity=1
F000:AC50 F9 stc ; Set carry flag
F000:AC51 loc_670: ; xref F000:AC4E
F000:AC51 D0 D8 rcr al,1 ; Rotate thru carry
F000:AC53 C3 retn
sub_126 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AB35
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_127 proc near
F000:AC54 33 DB xor bx,bx ; Zero register
F000:AC56 0B D2 or dx,dx ; Zero ?
F000:AC58 74 76 jz short loc_ret_679 ; Jump if zero
F000:AC5A 81 3E 0013 FEDC cmp main_ram_size,0FEDCh ; (0040:0013=280h)
F000:AC60 74 75 je short loc_681 ; Jump if equal
F000:AC62 B0 AE mov al,0AEh
F000:AC64 E8 E257 call sub_40 ; (8EBE)
F000:AC67 E8 E278 call sub_43 ; (8EE2)
F000:AC6A E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:AC6C EB 00 jmp short loc_671 ; (AC6E)
F000:AC6E loc_671: ; xref F000:AC6C
F000:AC6E EB 00 jmp short loc_672 ; (AC70)
F000:AC70 loc_672: ; xref F000:AC6E, ACC1
F000:AC70 E4 64 in al,64h ; port 64h, keyboard status
F000:AC72 A8 01 test al,1
F000:AC74 74 0A jz short loc_675 ; Jump if zero
F000:AC76 EB 00 jmp short loc_673 ; (AC78)
F000:AC78 loc_673: ; xref F000:AC76
F000:AC78 EB 00 jmp short loc_674 ; (AC7A)
F000:AC7A loc_674: ; xref F000:AC78
F000:AC7A E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:AC7C 3C 01 cmp al,1
F000:AC7E 74 51 je short loc_680 ; Jump if equal
F000:AC80 loc_675: ; xref F000:AC74
F000:AC80 E8 0107 call sub_130 ; (AD8A)
F000:AC83 E8 E1BD call sub_33 ; (8E43)
F000:AC86 53 push bx
F000:AC87 E8 0117 call sub_132 ; (ADA1)
F000:AC8A 5B pop bx
F000:AC8B 75 59 jnz short loc_682 ; Jump if not zero
F000:AC8D 26: 30 05 xor es:[di],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 140

F000:AC90 8B FA mov di,dx
F000:AC92 8B C7 mov ax,di
F000:AC94 B9 4000 mov cx,4000h
F000:AC97 50 push ax
F000:AC98 51 push cx
F000:AC99 0A C4 or al,ah

F000:AC9B locloop_676: ; xref F000:ACA1
F000:AC9B E8 FFA5 call sub_126 ; (AC43)
F000:AC9E 26: 88 05 mov es:[di],al
F000:ACA1 E2 F8 loop locloop_676 ; Loop if cx > 0

F000:ACA3 59 pop cx
F000:ACA4 58 pop ax
F000:ACA5 8B F8 mov di,ax
F000:ACA7 0A C4 or al,ah

F000:ACA9 locloop_677: ; xref F000:ACAF
F000:ACA9 E8 FF97 call sub_126 ; (AC43)
F000:ACAC 26: 30 05 xor es:[di],al
F000:ACAF E1 F8 loopz locloop_677 ; Loop if zf=1, cx>0

F000:ACB1 75 33 jnz short loc_682 ; Jump if not zero
F000:ACB3 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:ACB5 A8 C0 test al,0C0h
F000:ACB7 75 2D jnz short loc_682 ; Jump if not zero
F000:ACB9 E8 00DB call sub_131 ; (AD97)
F000:ACBC 43 inc bx
F000:ACBD E8 0038 call sub_128 ; (ACF8)
F000:ACC0 4A dec dx
F000:ACC1 75 AD jnz loc_672 ; Jump if not zero
F000:ACC3 loc_678: ; xref F000:ACE4, ACF6
F000:ACC3 E8 E17D call sub_33 ; (8E43)
F000:ACC6 B0 AD mov al,0ADh
F000:ACC8 E8 E1F3 call sub_40 ; (8EBE)
F000:ACCB E8 E214 call sub_43 ; (8EE2)
F000:ACCE E4 60 in al,60h ; port 60h, keybd scan or sw1

F000:ACD0 loc_ret_679: ; xref F000:AC58
F000:ACD0 C3 retn
F000:ACD1 loc_680: ; xref F000:AC7E
F000:ACD1 C7 06 0013 FEDC mov main_ram_size,0FEDCh ; (0040:0013=280h)
F000:ACD7 loc_681: ; xref F000:AC60, ACE2
F000:ACD7 E8 00B0 call sub_130 ; (AD8A)
F000:ACDA E8 00BA call sub_131 ; (AD97)
F000:ACDD 43 inc bx
F000:ACDE E8 0017 call sub_128 ; (ACF8)
F000:ACE1 4A dec dx
F000:ACE2 75 F3 jnz loc_681 ; Jump if not zero
F000:ACE4 EB DD jmp short loc_678 ; (ACC3)
F000:ACE6 loc_682: ; xref F000:AC8B, ACB1, ACB7, ACF4
F000:ACE6 53 push bx
F000:ACE7 BB 0003 mov bx,3
F000:ACEA E8 E658 call sub_50 ; (9345)
F000:ACED 5B pop bx
F000:ACEE FA cli ; Disable interrupts
F000:ACEF A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 141

F000:ACF2 A8 20 test al,20h ; ' '
F000:ACF4 74 F0 jz loc_682 ; Jump if zero
F000:ACF6 EB CB jmp short loc_678 ; (ACC3)
sub_127 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:ACBD, ACDE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_128 proc near
F000:ACF8 60 pusha ; Save all regs
F000:ACF9 8B C4 mov ax,sp
F000:ACFB A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:ACFE B8 068F mov ax,68Fh
F000:AD01 E8 418E call sub_256 ; (EE92)
F000:AD04 E9 3449 jmp loc_1198 ; (E150)
sub_128 endp


;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AD07 loc_683: ; xref F000:80FB, 810C
F000:AD07 A1 0067 mov ax,@gen_io_ptr ; (0040:0067=522h)
F000:AD0A 8B E0 mov sp,ax
F000:AD0C E8 00DA call sub_134 ; (ADE9)
F000:AD0F B0 0D mov al,0Dh
F000:AD11 E8 E0BE call sub_29 ; (8DD2)
F000:AD14 61 popa ; Restore all regs
F000:AD15 60 pusha ; Save all regs
F000:AD16 8B C3 mov ax,bx
F000:AD18 03 C5 add ax,bp
F000:AD1A 50 push ax
F000:AD1B 3D 009D cmp ax,9Dh
F000:AD1E 73 16 jae short loc_685 ; Jump if above or =
F000:AD20 B9 0001 mov cx,1
F000:AD23 3C 10 cmp al,10h
F000:AD25 73 08 jae short locloop_684 ; Jump if above or =
F000:AD27 B1 02 mov cl,2
F000:AD29 3C 02 cmp al,2
F000:AD2B 73 02 jae short locloop_684 ; Jump if above or =
F000:AD2D B1 03 mov cl,3

F000:AD2F locloop_684: ; xref F000:AD25, AD2B, AD34
F000:AD2F B0 30 mov al,30h ; '0'
F000:AD31 E8 E09E call sub_29 ; (8DD2)
F000:AD34 E2 F9 loop locloop_684 ; Loop if cx > 0

F000:AD36 loc_685: ; xref F000:AD1E
F000:AD36 58 pop ax
F000:AD37 50 push ax
F000:AD38 E8 FE9B call sub_122 ; (ABD6)
F000:AD3B BE 7D55 mov si,7D55h
F000:AD3E E8 E078 call sub_27 ; (8DB9)
F000:AD41 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 142

F000:AD42 48 dec ax
F000:AD43 75 19 jnz short loc_686 ; Jump if not zero
F000:AD45 8B 16 0069 mov dx,@gen_io_seg ; (0040:0069=9087h)
F000:AD49 B7 00 mov bh,0
F000:AD4B B4 02 mov ah,2
F000:AD4D E8 C8A5 call $-3758h
F000:AD50 BE 7E19 mov si,7E19h
F000:AD53 E8 E063 call sub_27 ; (8DB9)
F000:AD56 80 EE 02 sub dh,2
F000:AD59 B4 02 mov ah,2
F000:AD5B E8 C897 call $-3766h
F000:AD5E loc_686: ; xref F000:AD43
F000:AD5E B8 028F mov ax,28Fh
F000:AD61 E8 412E call sub_256 ; (EE92)
F000:AD64 BE 0600 mov si,600h
F000:AD67 BB 0800 mov bx,800h
F000:AD6A B4 89 mov ah,89h
F000:AD6C CD 15 int 15h ; General services, ah=func 89h
; set protected mode operation
F000:AD6E 75 0A jnz short loc_687 ; Jump if not zero
F000:AD70 E8 000A call sub_129 ; (AD7D)
F000:AD73 B8 0040 mov ax,seg_b
F000:AD76 8E C0 mov es,ax
F000:AD78 61 popa ; Restore all regs
F000:AD79 C3 retn
F000:AD7A loc_687: ; xref F000:AD6E
F000:AD7A E9 FCB3 jmp loc_643 ; (AA30)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AA36, AD70
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_129 proc near
F000:AD7D A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:AD80 A8 20 test al,20h ; ' '
F000:AD82 75 05 jnz short loc_ret_688 ; Jump if not zero
F000:AD84 B0 FE mov al,0FEh
F000:AD86 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:AD88 FB sti ; Enable interrupts

F000:AD89 loc_ret_688: ; xref F000:AD82
F000:AD89 C3 retn
sub_129 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AADC, AAF4, AC80, ACD7
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_130 proc near
F000:AD8A 80 04 01 add byte ptr [si],1
F000:AD8D 73 03 jnc short loc_689 ; Jump if carry=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 143

F000:AD8F FE 44 03 inc byte ptr [si+3]
F000:AD92 loc_689: ; xref F000:AD8D
F000:AD92 8C C1 mov cx,es
F000:AD94 8E C1 mov es,cx
F000:AD96 C3 retn
sub_130 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AADF, AAF7, ACB9, ACDA, CE02
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_131 proc near
F000:AD97 loc_690:
F000:AD97 33 C0 xor ax,ax ; Zero register
F000:AD99 33 FF xor di,di ; Zero register
F000:AD9B B9 8000 mov cx,8000h
F000:AD9E F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADA0 C3 retn
sub_131 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AC87
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_132 proc near
F000:ADA1 BB 8000 mov bx,8000h

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:9375

sub_133:
F000:ADA4 B8 8080 mov ax,8080h
F000:ADA7 8B CB mov cx,bx
F000:ADA9 33 FF xor di,di ; Zero register
F000:ADAB F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADAD 8B CB mov cx,bx
F000:ADAF 33 FF xor di,di ; Zero register
F000:ADB1 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADB3 75 33 jnz short loc_ret_691 ; Jump if not zero
F000:ADB5 B8 5555 mov ax,5555h
F000:ADB8 8B CB mov cx,bx
F000:ADBA 33 FF xor di,di ; Zero register
F000:ADBC F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADBE 8B CB mov cx,bx
F000:ADC0 33 FF xor di,di ; Zero register
F000:ADC2 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADC4 75 22 jnz short loc_ret_691 ; Jump if not zero
F000:ADC6 B8 3333 mov ax,3333h
F000:ADC9 8B CB mov cx,bx
F000:ADCB 33 FF xor di,di ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 144

F000:ADCD F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADCF 8B CB mov cx,bx
F000:ADD1 33 FF xor di,di ; Zero register
F000:ADD3 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADD5 75 11 jnz short loc_ret_691 ; Jump if not zero
F000:ADD7 B8 0F0F mov ax,0F0Fh
F000:ADDA 8B CB mov cx,bx
F000:ADDC 33 FF xor di,di ; Zero register
F000:ADDE F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADE0 8B CB mov cx,bx
F000:ADE2 33 FF xor di,di ; Zero register
F000:ADE4 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADE6 75 00 jnz short loc_ret_691 ; Jump if not zero

F000:ADE8 loc_ret_691: ; xref F000:ADB3, ADC4, ADD5, ADE6
F000:ADE8 C3 retn
sub_132 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AD0C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_134 proc near
F000:ADE9 B0 B6 mov al,0B6h
F000:ADEB E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:ADED 32 C0 xor al,al ; Zero register
F000:ADEF EB 00 jmp short loc_692 ; (ADF1)
F000:ADF1 loc_692: ; xref F000:ADEF
F000:ADF1 EB 00 jmp short loc_693 ; (ADF3)
F000:ADF3 loc_693: ; xref F000:ADF1
F000:ADF3 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:ADF5 EB 00 jmp short loc_694 ; (ADF7)
F000:ADF7 loc_694: ; xref F000:ADF5
F000:ADF7 EB 00 jmp short loc_695 ; (ADF9)
F000:ADF9 loc_695: ; xref F000:ADF7
F000:ADF9 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:ADFB E4 61 in al,61h ; port 61h, 8255 port B, read
F000:ADFD 0C 03 or al,3
F000:ADFF EB 00 jmp short loc_696 ; (AE01)
F000:AE01 loc_696: ; xref F000:ADFF
F000:AE01 EB 00 jmp short loc_697 ; (AE03)
F000:AE03 loc_697: ; xref F000:AE01
F000:AE03 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:AE05 B9 00FF mov cx,0FFh

F000:AE08 locloop_698: ; xref F000:AE08
F000:AE08 E2 FE loop locloop_698 ; Loop if cx > 0

F000:AE0A 24 FC and al,0FCh
F000:AE0C E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
; al = 0, disable parity
F000:AE0E C3 retn
sub_134 endp

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 145

F000:AE0F 00 db 0
F000:AE10 AEAA data_119 dw offset loc_706 ; Data table (indexed access)
; xref F000:AE57
F000:AE12 AEDE data_120 dw offset loc_710 ; xref F000:AE57
F000:AE14 AFF7 data_121 dw offset loc_735 ; xref F000:AE57
F000:AE16 AFF7 data_122 dw offset loc_735 ; xref F000:AE57
F000:AE18 AFF7 data_123 dw offset loc_735 ; xref F000:AE57
F000:AE1A B0EE data_124 dw offset loc_754 ; xref F000:AE57
F000:AE1C B1A6 data_125 dw offset loc_763 ; xref F000:AE57
F000:AE1E AEE9 data_126 dw offset loc_712 ; xref F000:AE57
F000:AE20 AFA0 data_127 dw offset loc_729 ; xref F000:AE57
F000:AE22 AF2B data_128 dw offset loc_719 ; xref F000:AE57
F000:AE24 B2FC data_129 dw offset loc_776 ; xref F000:AE57


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 13h ±±±±±
;
; FLOPPY DISK SERVICES
;
; Note: Floppy disk services may be vectored to this routine from int 40h
; on newer systems with hard disk support inside the BIOS.
;
; Call with: ah = sub-function number
; dl = drive number (unless otherwise noted), drive a: = 0
;
; Returns: carry = 0 if function ok
; ah = status (unless otherwise noted)
; ah = 0 Function ok
; ah = 1 Invalid value passed or unsupported function
; ah = 2 Can not locate address mark
; ah = 3 Floppy write protected
; ah = 4 Sector not found
; ah = 6 Floppy changed line on (1.2 meg drives)
; ah = 8 DMA overrun occurred
; ah = 9 DMA attempted across 64K byte boundary
; ah = 0Ch Media type not found
; ah = 10h CRC read error
; ah = 20h Floppy controller failure
; ah = 40h Seek operation failed
; ah = 80h Floppy drive not ready
;
; Functions:
; ah = 0 Floppy disk controller reset
; ah = 1 Get last status
; ah = 2 Read sectors
; Call with: al = number of sectors to read
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to put data
; ah = 3 Write sectors
; Call with: al = number of sectors to write
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to get data
; Return: al = number of sectors written
; ah = 4 Verify sectors
; Call with: al = number of sectors to compare
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 146

; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to compare data
; Return: al = number of sectors checked
; ah = 5 Format track
; Call with: al = number of sectors to format
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to table of address fields
; ah = 8 Get drive information (not supported by all systems)
; Returns: ax/bh = 0 size dia. size dia.
; bl = drive type: 1=360K 5.25 3=720K 3.5
; 2=1.2M 5.25 4=1.4M 3.5
; cx bits 7&6, 15-8 = number of tracks, 0=1 track
; bits 5-0 = number of sectors per track
; dh/dl = # of heads/number of floppy drives
; es:di = ptr to floppy parameter table
; ah = 15h Get drive type (not supported by all systems)
; Returns: ah = 0 no drive
; ah = 1/2 floppy changed line not/is available
; ah = 16h Get changed floppy status (not supported by all systems)
; Returns: ah = 0 floppy in drive, carry = 0
; ah = 1 bad drive number, carry = 1
; ah = 6 floppy out of drive, carry = 1
; ah = 80h drive not ready, carry = 1
; ah = 17h Specify media type for a drive
; Call with: al = 1 use a 320/360K floppy in 360k drive
; al = 2 use a 360K floppy in a 1.2M drive
; al = 3 use a 1.2M floppy in a 1.2M drive
; al = 4 use a 720K disk in a 720K drive
; ah = 18h Prepare for format (not supported by all systems)
; Call with: cx bits 7&6, 15-8 = number of tracks, 0=1 track
; bits 5-0 = number of sectors per track
; Returns: es:di = ptr to floppy parameter table

F000:AE26 int_13h_floppy proc near ; xref F000:EC59
F000:AE26 FB sti ; Enable interrupts
F000:AE27 FC cld ; Clear direction
F000:AE28 50 push ax
F000:AE29 51 push cx
F000:AE2A 52 push dx
F000:AE2B 53 push bx
F000:AE2C 55 push bp
F000:AE2D 56 push si
F000:AE2E 57 push di
F000:AE2F 1E push ds
F000:AE30 06 push es
F000:AE31 55 push bp
F000:AE32 8B EC mov bp,sp
F000:AE34 6A 40 push 40h
F000:AE36 1F pop ds
F000:AE37 50 push ax
F000:AE38 8A C4 mov al,ah
F000:AE3A 3C 18 cmp al,18h
F000:AE3C 77 62 ja short loc_705 ; Jump if above
F000:AE3E 3C 05 cmp al,5
F000:AE40 76 0E jbe short loc_700 ; Jump if below or =
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 147

F000:AE42 3C 08 cmp al,8
F000:AE44 75 04 jne short loc_699 ; Jump if not equal
F000:AE46 B0 06 mov al,6
F000:AE48 EB 06 jmp short loc_700 ; (AE50)
F000:AE4A loc_699: ; xref F000:AE44
F000:AE4A 3C 15 cmp al,15h
F000:AE4C 72 52 jb short loc_705 ; Jump if below
F000:AE4E 2C 0E sub al,0Eh
F000:AE50 loc_700: ; xref F000:AE40, AE48
F000:AE50 98 cbw ; Convrt byte to word
F000:AE51 8B F8 mov di,ax
F000:AE53 58 pop ax
F000:AE54 D1 E7 shl di,1 ; Shift w/zeros fill
F000:AE56 2E: FF A5 AE10 jmp word ptr cs:data_119[di] ;*(F000:AE10=0AEAAh) 11 entries
F000:AE5B loc_701: ; xref F000:AF28, AF9D, AFF4, B0EB
; B0FA, B1A3, B1B2, B280
; B304, B3BA
F000:AE5B 8A C4 mov al,ah
F000:AE5D 9F lahf ; Load ah from flags
F000:AE5E 50 push ax
F000:AE5F 6A 40 push 40h
F000:AE61 1F pop ds
F000:AE62 8A 46 0E mov al,[bp+0Eh]
F000:AE65 3C 01 cmp al,1
F000:AE67 77 18 ja short loc_702 ; Jump if above
F000:AE69 32 E4 xor ah,ah ; Zero register
F000:AE6B BB 0090 mov bx,90h
F000:AE6E 03 D8 add bx,ax
F000:AE70 F6 07 10 test byte ptr [bx],10h
F000:AE73 74 0C jz short loc_702 ; Jump if zero
F000:AE75 B2 04 mov dl,4
F000:AE77 F6 E2 mul dl ; ax = reg * al
F000:AE79 8A C8 mov cl,al
F000:AE7B D2 E2 shl dl,cl ; Shift w/zeros fill
F000:AE7D 08 16 008F or hdsk_options,dl ; (0040:008F=33h)
F000:AE81 loc_702: ; xref F000:AE67, AE73
F000:AE81 58 pop ax
F000:AE82 9E sahf ; Store ah into flags
F000:AE83 8A E0 mov ah,al
F000:AE85 loc_703: ; xref F000:AEA8, AECA, AEE7
F000:AE85 88 66 13 mov [bp+13h],ah
F000:AE88 B8 0201 mov ax,201h
F000:AE8B 72 05 jc short loc_704 ; Jump if carry Set
F000:AE8D 80 66 18 FE and byte ptr [bp+18h],0FEh
F000:AE91 48 dec ax
F000:AE92 loc_704: ; xref F000:AE8B
F000:AE92 09 46 18 or [bp+18h],ax
F000:AE95 5D pop bp
F000:AE96 07 pop es
F000:AE97 1F pop ds
F000:AE98 5F pop di
F000:AE99 5E pop si
F000:AE9A 5D pop bp
F000:AE9B 5B pop bx
F000:AE9C 5A pop dx
F000:AE9D 59 pop cx
F000:AE9E 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 148

F000:AE9F CF iret ; Interrupt return
int_13h_floppy endp

F000:AEA0 loc_705: ; xref F000:AE3C, AE4C
F000:AEA0 58 pop ax
F000:AEA1 B4 01 mov ah,1
F000:AEA3 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEA7 F9 stc ; Set carry flag
F000:AEA8 EB DB jmp short loc_703 ; (AE85)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AEAA loc_706: ; xref F000:AE10, AE57
F000:AEAA E8 001F call sub_135 ; (AECC)
F000:AEAD 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEB1 8A C4 mov al,ah
F000:AEB3 9F lahf ; Load ah from flags
F000:AEB4 50 push ax
F000:AEB5 1E push ds
F000:AEB6 33 F6 xor si,si ; Zero register
F000:AEB8 8E DE mov ds,si
F000:AEBA C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:AEBE 8A 4C 02 mov cl,[si+2]
F000:AEC1 1F pop ds
F000:AEC2 88 0E 0040 mov dsk_motor_tmr,cl ; (0040:0040=9Fh)
F000:AEC6 58 pop ax
F000:AEC7 9E sahf ; Store ah into flags
F000:AEC8 8A E0 mov ah,al
F000:AECA EB B9 jmp short loc_703 ; (AE85)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AEAA, BA50
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_135 proc near
F000:AECC 80 26 003E F0 and dsk_recal_stat,0F0h ; (0040:003E=0)
F000:AED1 E9 0D4F jmp loc_906 ; (BC23)
sub_135 endp

F000:AED4 loc_707: ; xref F000:BC6B
F000:AED4 72 07 jc short loc_ret_709 ; Jump if carry Set
F000:AED6 E9 0DCE jmp loc_913 ; (BCA7)
F000:AED9 loc_708: ; xref F000:BCC6
F000:AED9 72 02 jc short loc_ret_709 ; Jump if carry Set
F000:AEDB 32 E4 xor ah,ah ; Zero register

F000:AEDD loc_ret_709: ; xref F000:AED4, AED9
F000:AEDD C3 retn

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AEDE loc_710: ; xref F000:AE12, AE57
F000:AEDE 8A 26 0041 mov ah,dsk_ret_code ; (0040:0041=0)
F000:AEE2 0A E4 or ah,ah ; Zero ?
F000:AEE4 74 01 jz short loc_711 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 149

F000:AEE6 F9 stc ; Set carry flag
F000:AEE7 loc_711: ; xref F000:AEE4
F000:AEE7 EB 9C jmp short loc_703 ; (AE85)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AEE9 loc_712: ; xref F000:AE1E, AE57
F000:AEE9 80 FA 01 cmp dl,1
F000:AEEC 76 09 jbe short loc_713 ; Jump if below or =
F000:AEEE B4 01 mov ah,1
F000:AEF0 F9 stc ; Set carry flag
F000:AEF1 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEF5 EB 31 jmp short loc_718 ; (AF28)
F000:AEF7 loc_713: ; xref F000:AEEC
F000:AEF7 EB 03 jmp short loc_714 ; (AEFC)
F000:AEF9 90 7F 24 db 90h, 7Fh, 24h
F000:AEFC loc_714: ; xref F000:AEF7
F000:AEFC BB 0090 mov bx,90h
F000:AEFF 32 F6 xor dh,dh ; Zero register
F000:AF01 03 DA add bx,dx
F000:AF03 8A 1F mov bl,[bx]
F000:AF05 0A DB or bl,bl ; Zero ?
F000:AF07 75 04 jnz short loc_715 ; Jump if not zero
F000:AF09 32 E4 xor ah,ah ; Zero register
F000:AF0B EB 15 jmp short loc_717 ; (AF22)
F000:AF0D loc_715: ; xref F000:AF07
F000:AF0D 80 E3 07 and bl,7
F000:AF10 74 0E jz short loc_716 ; Jump if zero
F000:AF12 80 FB 03 cmp bl,3
F000:AF15 74 09 je short loc_716 ; Jump if equal
F000:AF17 E8 0DAF call sub_162 ; (BCC9)
F000:AF1A 73 04 jnc short loc_716 ; Jump if carry=0
F000:AF1C B4 02 mov ah,2
F000:AF1E EB 02 jmp short loc_717 ; (AF22)
F000:AF20 loc_716: ; xref F000:AF10, AF15, AF1A
F000:AF20 B4 01 mov ah,1
F000:AF22 loc_717: ; xref F000:AF0B, AF1E
F000:AF22 F8 clc ; Clear carry flag
F000:AF23 C6 06 0041 00 mov dsk_ret_code,0 ; (0040:0041=0)
F000:AF28 loc_718: ; xref F000:AEF5
F000:AF28 E9 FF30 jmp loc_701 ; (AE5B)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AF2B loc_719: ; xref F000:AE22, AE57
F000:AF2B 32 E4 xor ah,ah ; Zero register
F000:AF2D 80 FA 01 cmp dl,1
F000:AF30 76 09 jbe short loc_722 ; Jump if below or =
F000:AF32 loc_720: ; xref F000:AF3D, AF41
F000:AF32 B4 01 mov ah,1
F000:AF34 loc_721: ; xref F000:AF76, AF7B, AF96
F000:AF34 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AF38 F9 stc ; Set carry flag
F000:AF39 EB 62 jmp short loc_728 ; (AF9D)
F000:AF3B loc_722: ; xref F000:AF30
F000:AF3B 3C 00 cmp al,0
F000:AF3D 74 F3 je loc_720 ; Jump if equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 150

F000:AF3F 3C 04 cmp al,4
F000:AF41 77 EF ja loc_720 ; Jump if above
F000:AF43 BB 0090 mov bx,90h
F000:AF46 32 F6 xor dh,dh ; Zero register
F000:AF48 03 DA add bx,dx
F000:AF4A 3C 01 cmp al,1
F000:AF4C 75 0A jne short loc_723 ; Jump if not equal
F000:AF4E C6 07 93 mov byte ptr [bx],93h
F000:AF51 C6 06 0041 00 mov dsk_ret_code,0 ; (0040:0041=0)
F000:AF56 EB 3C jmp short loc_727 ; (AF94)
F000:AF58 loc_723: ; xref F000:AF4C
F000:AF58 8B C8 mov cx,ax
F000:AF5A E8 0D6C call sub_162 ; (BCC9)
F000:AF5D 73 1E jnc short loc_724 ; Jump if carry=0
F000:AF5F 53 push bx
F000:AF60 E8 09E5 call sub_147 ; (B948)
F000:AF63 5E pop si
F000:AF64 56 push si
F000:AF65 E8 0AC2 call sub_151 ; (BA2A)
F000:AF68 5B pop bx
F000:AF69 80 FC 06 cmp ah,6
F000:AF6C 76 0F jbe short loc_724 ; Jump if below or =
F000:AF6E 80 FC 80 cmp ah,80h
F000:AF71 75 0A jne short loc_724 ; Jump if not equal
F000:AF73 80 3F 97 cmp byte ptr [bx],97h
F000:AF76 74 BC je loc_721 ; Jump if equal
F000:AF78 C6 07 61 mov byte ptr [bx],61h ; 'a'
F000:AF7B EB B7 jmp short loc_721 ; (AF34)
F000:AF7D loc_724: ; xref F000:AF5D, AF6C, AF71
F000:AF7D 80 F9 04 cmp cl,4
F000:AF80 75 05 jne short loc_725 ; Jump if not equal
F000:AF82 C6 07 97 mov byte ptr [bx],97h
F000:AF85 EB 0D jmp short loc_727 ; (AF94)
F000:AF87 loc_725: ; xref F000:AF80
F000:AF87 80 F9 02 cmp cl,2
F000:AF8A 75 05 jne short loc_726 ; Jump if not equal
F000:AF8C C6 07 74 mov byte ptr [bx],74h ; 't'
F000:AF8F EB 03 jmp short loc_727 ; (AF94)
F000:AF91 loc_726: ; xref F000:AF8A
F000:AF91 C6 07 15 mov byte ptr [bx],15h
F000:AF94 loc_727: ; xref F000:AF56, AF85, AF8F
F000:AF94 0A E4 or ah,ah ; Zero ?
F000:AF96 75 9C jnz loc_721 ; Jump if not zero
F000:AF98 C6 06 0041 00 mov byte ptr ds:data_37e,0 ; (C000:0041=0)
F000:AF9D loc_728: ; xref F000:AF39
F000:AF9D E9 FEBB jmp loc_701 ; (AE5B)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AFA0 loc_729: ; xref F000:AE20, AE57
F000:AFA0 80 FA 01 cmp dl,1
F000:AFA3 76 05 jbe short loc_731 ; Jump if below or =
F000:AFA5 B4 01 mov ah,1
F000:AFA7 loc_730: ; xref F000:AFB6
F000:AFA7 F9 stc ; Set carry flag
F000:AFA8 EB 31 jmp short loc_734 ; (AFDB)
F000:AFAA loc_731: ; xref F000:AFA3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 151

F000:AFAA 32 F6 xor dh,dh ; Zero register
F000:AFAC BB 0090 mov bx,90h
F000:AFAF 03 DA add bx,dx
F000:AFB1 80 3F 00 cmp byte ptr [bx],0
F000:AFB4 B4 80 mov ah,80h
F000:AFB6 74 EF jz loc_730 ; Jump if zero
F000:AFB8 8A 27 mov ah,[bx]
F000:AFBA 80 E4 07 and ah,7
F000:AFBD 74 05 jz short loc_732 ; Jump if zero
F000:AFBF 80 FC 03 cmp ah,3
F000:AFC2 75 05 jne short loc_733 ; Jump if not equal
F000:AFC4 loc_732: ; xref F000:AFBD, AFCC, AFD7
F000:AFC4 B4 06 mov ah,6
F000:AFC6 F9 stc ; Set carry flag
F000:AFC7 EB 12 jmp short loc_734 ; (AFDB)
F000:AFC9 loc_733: ; xref F000:AFC2
F000:AFC9 E8 0CFD call sub_162 ; (BCC9)
F000:AFCC 73 F6 jnc loc_732 ; Jump if carry=0
F000:AFCE E8 0977 call sub_147 ; (B948)
F000:AFD1 BA 03F7 mov dx,3F7h
F000:AFD4 EC in al,dx ; port 3F7h, dsk0 status C
F000:AFD5 D0 E0 shl al,1 ; Shift w/zeros fill
F000:AFD7 72 EB jc loc_732 ; Jump if carry Set
F000:AFD9 32 E4 xor ah,ah ; Zero register
F000:AFDB loc_734: ; xref F000:AFA8, AFC7
F000:AFDB 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AFDF 50 push ax
F000:AFE0 56 push si
F000:AFE1 1E push ds
F000:AFE2 BE 0000 mov si,0
F000:AFE5 8E DE mov ds,si
F000:AFE7 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:AFEB 8A 44 02 mov al,[si+2]
F000:AFEE 1F pop ds
F000:AFEF A2 0040 mov dsk_motor_tmr,al ; (0040:0040=8Bh)
F000:AFF2 5E pop si
F000:AFF3 58 pop ax
F000:AFF4 E9 FE64 jmp loc_701 ; (AE5B)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:AFF7 loc_735: ; xref F000:AE14, AE16, AE18, AE57
F000:AFF7 80 FA 01 cmp dl,1
F000:AFFA 76 0C jbe short loc_737 ; Jump if below or =
F000:AFFC B4 01 mov ah,1
F000:AFFE loc_736: ; xref F000:B01F, B050
F000:AFFE 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B002 32 C0 xor al,al ; Zero register
F000:B004 F9 stc ; Set carry flag
F000:B005 E9 00E0 jmp loc_753 ; (B0E8)
F000:B008 loc_737: ; xref F000:AFFA
F000:B008 BE 0090 mov si,90h
F000:B00B 52 push dx
F000:B00C 32 F6 xor dh,dh ; Zero register
F000:B00E 03 F2 add si,dx
F000:B010 80 3C 00 cmp byte ptr [si],0
F000:B013 5A pop dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 152

F000:B014 75 13 jnz short loc_740 ; Jump if not zero
F000:B016 50 push ax
F000:B017 E8 406A call sub_265 ; (F084)
F000:B01A 74 05 jz short loc_739 ; Jump if zero
F000:B01C 58 pop ax
F000:B01D loc_738: ; xref F000:B024
F000:B01D B4 80 mov ah,80h
F000:B01F EB DD jmp short loc_736 ; (AFFE)
F000:B021 loc_739: ; xref F000:B01A
F000:B021 0A C0 or al,al ; Zero ?
F000:B023 58 pop ax
F000:B024 74 F7 jz loc_738 ; Jump if zero
F000:B026 C6 04 02 mov byte ptr [si],2
F000:B029 loc_740: ; xref F000:B014
F000:B029 BF 003F mov di,3Fh
F000:B02C 80 25 7F and byte ptr [di],7Fh
F000:B02F 80 FC 03 cmp ah,3
F000:B032 75 03 jne short loc_741 ; Jump if not equal
F000:B034 80 0D 80 or byte ptr [di],80h
F000:B037 loc_741: ; xref F000:B032
F000:B037 56 push si
F000:B038 E8 4049 call sub_265 ; (F084)
F000:B03B 75 07 jnz short loc_742 ; Jump if not zero
F000:B03D 3C 01 cmp al,1
F000:B03F 75 03 jne short loc_742 ; Jump if not equal
F000:B041 C6 04 93 mov byte ptr [si],93h
F000:B044 loc_742: ; xref F000:B03B, B03F
F000:B044 E8 0901 call sub_147 ; (B948)
F000:B047 E8 09E0 call sub_151 ; (BA2A)
F000:B04A 5E pop si
F000:B04B 73 0E jnc short loc_744 ; Jump if carry=0
F000:B04D loc_743: ; xref F000:B063, B08C, B0B1
F000:B04D E8 0979 call sub_148 ; (B9C9)
F000:B050 EB AC jmp short loc_736 ; (AFFE)
F000:B052 3C 03 75 EE C6 04 db 3Ch, 3, 75h, 0EEh, 0C6h, 4
F000:B058 97 EB E9 db 97h, 0EBh, 0E9h
F000:B05B loc_744: ; xref F000:B04B
F000:B05B F6 04 10 test byte ptr [si],10h
F000:B05E 75 07 jnz short loc_745 ; Jump if not zero
F000:B060 E8 0774 call sub_146 ; (B7D7)
F000:B063 72 E8 jc loc_743 ; Jump if carry Set
F000:B065 EB 03 jmp short loc_746 ; (B06A)
F000:B067 loc_745: ; xref F000:B05E
F000:B067 E8 098A call sub_149 ; (B9F4)
F000:B06A loc_746: ; xref F000:B065
F000:B06A BE 0090 mov si,90h
F000:B06D 52 push dx
F000:B06E 32 F6 xor dh,dh ; Zero register
F000:B070 03 F2 add si,dx
F000:B072 5A pop dx
F000:B073 B8 DF03 mov ax,0DF03h
F000:B076 80 3C 17 cmp byte ptr [si],17h
F000:B079 75 02 jne short loc_747 ; Jump if not equal
F000:B07B B4 BF mov ah,0BFh
F000:B07D loc_747: ; xref F000:B079
F000:B07D 8B F0 mov si,ax
F000:B07F BF 0002 mov di,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 153

F000:B082 B5 03 mov ch,3
F000:B084 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:B089 E8 0AB0 call sub_155 ; (BB3C)
F000:B08C 72 BF jc loc_743 ; Jump if carry Set
F000:B08E 8B 46 12 mov ax,[bp+12h]
F000:B091 32 E4 xor ah,ah ; Zero register
F000:B093 1E push ds
F000:B094 33 F6 xor si,si ; Zero register
F000:B096 8E DE mov ds,si
F000:B098 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B09C 8A 4C 03 mov cl,[si+3]
F000:B09F D2 E0 shl al,cl ; Shift w/zeros fill
F000:B0A1 B1 80 mov cl,80h
F000:B0A3 F6 E1 mul cl ; ax = reg * al
F000:B0A5 1F pop ds
F000:B0A6 48 dec ax
F000:B0A7 8B C8 mov cx,ax
F000:B0A9 E8 0A11 call sub_153 ; (BABD)
F000:B0AC 73 05 jnc short loc_748 ; Jump if carry=0
F000:B0AE 8B 4E 10 mov cx,[bp+10h]
F000:B0B1 EB 9A jmp short loc_743 ; (B04D)
F000:B0B3 loc_748: ; xref F000:B0AC
F000:B0B3 8B 46 12 mov ax,[bp+12h]
F000:B0B6 80 FC 02 cmp ah,2
F000:B0B9 75 04 jne short loc_749 ; Jump if not equal
F000:B0BB B4 46 mov ah,46h ; 'F'
F000:B0BD EB 09 jmp short loc_750 ; (B0C8)
F000:B0BF loc_749: ; xref F000:B0B9
F000:B0BF 80 FC 03 cmp ah,3
F000:B0C2 B4 4A mov ah,4Ah ; 'J'
F000:B0C4 74 02 jz short loc_750 ; Jump if zero
F000:B0C6 B4 42 mov ah,42h ; 'B'
F000:B0C8 loc_750: ; xref F000:B0BD, B0C4
F000:B0C8 E8 09B1 call sub_152 ; (BA7C)
F000:B0CB 8B 46 12 mov ax,[bp+12h]
F000:B0CE 8B 4E 10 mov cx,[bp+10h]
F000:B0D1 E9 062C jmp loc_831 ; (B700)
F000:B0D4 loc_751: ; xref F000:B7D4
F000:B0D4 E8 08F2 call sub_148 ; (B9C9)
F000:B0D7 0A C0 or al,al ; Zero ?
F000:B0D9 74 04 jz short loc_752 ; Jump if zero
F000:B0DB 2A D9 sub bl,cl
F000:B0DD 8A C3 mov al,bl
F000:B0DF loc_752: ; xref F000:B0D9
F000:B0DF 8A 26 0041 mov ah,ds:data_37e ; (C000:0041=0)
F000:B0E3 0A E4 or ah,ah ; Zero ?
F000:B0E5 74 01 jz short loc_753 ; Jump if zero
F000:B0E7 F9 stc ; Set carry flag
F000:B0E8 loc_753: ; xref F000:B005, B0E5
F000:B0E8 88 46 12 mov [bp+12h],al
F000:B0EB E9 FD6D jmp loc_701 ; (AE5B)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:B0EE loc_754: ; xref F000:AE1A, AE57
F000:B0EE 80 FA 01 cmp dl,1
F000:B0F1 76 0A jbe short loc_756 ; Jump if below or =
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 154

F000:B0F3 B4 01 mov ah,1
F000:B0F5 loc_755: ; xref F000:B10B, B11E
F000:B0F5 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B0F9 F9 stc ; Set carry flag
F000:B0FA E9 FD5E jmp loc_701 ; (AE5B)
F000:B0FD loc_756: ; xref F000:B0F1
F000:B0FD BE 0090 mov si,90h
F000:B100 52 push dx
F000:B101 32 F6 xor dh,dh ; Zero register
F000:B103 03 F2 add si,dx
F000:B105 5A pop dx
F000:B106 80 3C 00 cmp byte ptr [si],0
F000:B109 B4 80 mov ah,80h
F000:B10B 74 E8 jz loc_755 ; Jump if zero
F000:B10D BF 003F mov di,3Fh
F000:B110 80 0D 80 or byte ptr [di],80h
F000:B113 E8 0832 call sub_147 ; (B948)
F000:B116 E8 0911 call sub_151 ; (BA2A)
F000:B119 73 05 jnc short loc_758 ; Jump if carry=0
F000:B11B loc_757: ; xref F000:B13F
F000:B11B E8 08AB call sub_148 ; (B9C9)
F000:B11E EB D5 jmp short loc_755 ; (B0F5)
F000:B120 loc_758: ; xref F000:B119
F000:B120 E8 08D1 call sub_149 ; (B9F4)
F000:B123 E8 0B81 call sub_161 ; (BCA7)
F000:B126 1E push ds
F000:B127 33 F6 xor si,si ; Zero register
F000:B129 8E DE mov ds,si
F000:B12B C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B12F 8A 44 04 mov al,[si+4]
F000:B132 1F pop ds
F000:B133 32 E4 xor ah,ah ; Zero register
F000:B135 B1 04 mov cl,4
F000:B137 F6 E1 mul cl ; ax = reg * al
F000:B139 8B C8 mov cx,ax
F000:B13B 49 dec cx
F000:B13C E8 097E call sub_153 ; (BABD)
F000:B13F 72 DA jc loc_757 ; Jump if carry Set
F000:B141 B4 4A mov ah,4Ah ; 'J'
F000:B143 E8 0936 call sub_152 ; (BA7C)
F000:B146 8B 4E 10 mov cx,[bp+10h]
F000:B149 E8 04B7 call sub_144 ; (B603)
F000:B14C 73 0D jnc short loc_760 ; Jump if carry=0
F000:B14E loc_759: ; xref F000:B183
F000:B14E BB 0042 mov bx,42h
F000:B151 B9 0007 mov cx,7
F000:B154 50 push ax
F000:B155 E8 0A3E call sub_157 ; (BB96)
F000:B158 58 pop ax
F000:B159 EB 38 jmp short loc_761 ; (B193)
F000:B15B loc_760: ; xref F000:B14C
F000:B15B C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B15E 0A F2 or dh,dl
F000:B160 B2 CD mov dl,0CDh
F000:B162 1E push ds
F000:B163 33 F6 xor si,si ; Zero register
F000:B165 8E DE mov ds,si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 155

F000:B167 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B16B 50 push ax
F000:B16C 8B 44 07 mov ax,[si+7]
F000:B16F 89 46 00 mov [bp],ax
F000:B172 58 pop ax
F000:B173 8B 7C 03 mov di,[si+3]
F000:B176 1F pop ds
F000:B177 8B F2 mov si,dx
F000:B179 B5 06 mov ch,6
F000:B17B 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B180 E8 09B9 call sub_155 ; (BB3C)
F000:B183 72 C9 jc loc_759 ; Jump if carry Set
F000:B185 BB 0042 mov bx,42h
F000:B188 B9 0007 mov cx,7
F000:B18B E8 0A08 call sub_157 ; (BB96)
F000:B18E 72 03 jc short loc_761 ; Jump if carry Set
F000:B190 E8 0A50 call sub_159 ; (BBE3)
F000:B193 loc_761: ; xref F000:B159, B18E
F000:B193 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B197 E8 082F call sub_148 ; (B9C9)
F000:B19A 8A 26 0041 mov ah,dsk_ret_code ; (0040:0041=0)
F000:B19E 0A E4 or ah,ah ; Zero ?
F000:B1A0 74 01 jz short loc_762 ; Jump if zero
F000:B1A2 F9 stc ; Set carry flag
F000:B1A3 loc_762: ; xref F000:B1A0
F000:B1A3 E9 FCB5 jmp loc_701 ; (AE5B)

;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:B1A6 loc_763: ; xref F000:AE1C, AE57
F000:B1A6 80 FA 80 cmp dl,80h
F000:B1A9 72 0A jb short loc_764 ; Jump if below
F000:B1AB B4 01 mov ah,1
F000:B1AD 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B1B1 F9 stc ; Set carry flag
F000:B1B2 E9 FCA6 jmp loc_701 ; (AE5B)
F000:B1B5 loc_764: ; xref F000:B1A9
F000:B1B5 33 FF xor di,di ; Zero register
F000:B1B7 33 F6 xor si,si ; Zero register
F000:B1B9 32 F6 xor dh,dh ; Zero register
F000:B1BB A0 0010 mov al,byte ptr equip_bits ; (0040:0010=61h)
F000:B1BE 24 C1 and al,0C1h
F000:B1C0 BF 0002 mov di,2
F000:B1C3 3C 41 cmp al,41h ; 'A'
F000:B1C5 74 08 je short loc_765 ; Jump if equal
F000:B1C7 4F dec di
F000:B1C8 3C 01 cmp al,1
F000:B1CA 74 03 je short loc_765 ; Jump if equal
F000:B1CC E9 00B4 jmp loc_773 ; (B283)
F000:B1CF loc_765: ; xref F000:B1C5, B1CA
F000:B1CF 80 FA 01 cmp dl,1
F000:B1D2 76 03 jbe short loc_766 ; Jump if below or =
F000:B1D4 E9 00AE jmp loc_774 ; (B285)
F000:B1D7 loc_766: ; xref F000:B1D2
F000:B1D7 B0 0E mov al,0Eh
F000:B1D9 E8 3CC3 call sub_257 ; (EE9F)
F000:B1DC A8 C0 test al,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 156

F000:B1DE 75 41 jnz short loc_769 ; Jump if not zero
F000:B1E0 B0 10 mov al,10h
F000:B1E2 E8 3CBA call sub_257 ; (EE9F)
F000:B1E5 0A D2 or dl,dl ; Zero ?
F000:B1E7 75 04 jnz short loc_767 ; Jump if not zero
F000:B1E9 B1 04 mov cl,4
F000:B1EB D2 E8 shr al,cl ; Shift w/zeros fill
F000:B1ED loc_767: ; xref F000:B1E7
F000:B1ED 24 0F and al,0Fh
F000:B1EF 74 30 jz short loc_769 ; Jump if zero
F000:B1F1 3C 04 cmp al,4
F000:B1F3 77 2C ja short loc_769 ; Jump if above
F000:B1F5 32 E4 xor ah,ah ; Zero register
F000:B1F7 8B F0 mov si,ax
F000:B1F9 8A F0 mov dh,al
F000:B1FB BB 0090 mov bx,90h
F000:B1FE 02 DA add bl,dl
F000:B200 8A 07 mov al,[bx]
F000:B202 A8 10 test al,10h
F000:B204 75 44 jnz short loc_771 ; Jump if not zero
F000:B206 83 FE 01 cmp si,1
F000:B209 B0 93 mov al,93h
F000:B20B 74 10 jz short loc_768 ; Jump if zero
F000:B20D 83 FE 02 cmp si,2
F000:B210 B0 02 mov al,2
F000:B212 74 09 jz short loc_768 ; Jump if zero
F000:B214 83 FE 03 cmp si,3
F000:B217 B0 97 mov al,97h
F000:B219 74 02 jz short loc_768 ; Jump if zero
F000:B21B B0 07 mov al,7
F000:B21D loc_768: ; xref F000:B20B, B212, B219
F000:B21D 88 07 mov [bx],al
F000:B21F EB 29 jmp short loc_771 ; (B24A)
F000:B221 loc_769: ; xref F000:B1DE, B1EF, B1F3
F000:B221 BB 0090 mov bx,90h
F000:B224 02 DA add bl,dl
F000:B226 8A 07 mov al,[bx]
F000:B228 A8 10 test al,10h
F000:B22A 74 67 jz short loc_775 ; Jump if zero
F000:B22C 8A E0 mov ah,al
F000:B22E 24 C0 and al,0C0h
F000:B230 3C 80 cmp al,80h
F000:B232 BE 0002 mov si,2
F000:B235 75 0B jnz short loc_770 ; Jump if not zero
F000:B237 F6 C4 04 test ah,4
F000:B23A BE 0001 mov si,1
F000:B23D 74 0B jz short loc_771 ; Jump if zero
F000:B23F BE 0004 mov si,4
F000:B242 loc_770: ; xref F000:B235
F000:B242 F6 C4 07 test ah,7
F000:B245 74 03 jz short loc_771 ; Jump if zero
F000:B247 BE 0004 mov si,4
F000:B24A loc_771: ; xref F000:B204, B21F, B23D, B245
; B2A5
F000:B24A 8B DF mov bx,di
F000:B24C 8B FE mov di,si
F000:B24E 4F dec di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 157

F000:B24F 03 FF add di,di
F000:B251 2E: 8B 85 B2AB mov ax,cs:data_130[di] ; (F000:B2AB=2709h)
F000:B256 C6 46 0F 01 mov byte ptr [bp+0Fh],1
F000:B25A 2E: 8B BD B2B3 mov di,cs:data_131[di] ; (F000:B2B3=0B2BBh)
F000:B25F 0E push cs
F000:B260 07 pop es
F000:B261 loc_772: ; xref F000:B291
F000:B261 88 5E 0E mov [bp+0Eh],bl
F000:B264 88 66 11 mov [bp+11h],ah
F000:B267 88 46 10 mov [bp+10h],al
F000:B26A 88 76 0C mov [bp+0Ch],dh
F000:B26D C6 46 0D 00 mov byte ptr [bp+0Dh],0
F000:B271 8C 46 02 mov [bp+2],es
F000:B274 89 7E 06 mov [bp+6],di
F000:B277 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B27B 33 C0 xor ax,ax ; Zero register
F000:B27D 88 46 12 mov [bp+12h],al
F000:B280 E9 FBD8 jmp loc_701 ; (AE5B)
F000:B283 loc_773: ; xref F000:B1CC, B29C, B2A0, B2A9
F000:B283 33 FF xor di,di ; Zero register
F000:B285 loc_774: ; xref F000:B1D4
F000:B285 32 F6 xor dh,dh ; Zero register
F000:B287 33 C0 xor ax,ax ; Zero register
F000:B289 8E C0 mov es,ax
F000:B28B C6 46 0F 00 mov byte ptr [bp+0Fh],0
F000:B28F 8B DF mov bx,di
F000:B291 EB CE jmp short loc_772 ; (B261)
F000:B293 loc_775: ; xref F000:B22A
F000:B293 8B DF mov bx,di
F000:B295 B0 0E mov al,0Eh
F000:B297 E8 3C05 call sub_257 ; (EE9F)
F000:B29A A8 C0 test al,0C0h
F000:B29C 75 E5 jnz loc_773 ; Jump if not zero
F000:B29E 0B F6 or si,si ; Zero ?
F000:B2A0 74 E1 jz loc_773 ; Jump if zero
F000:B2A2 83 FE 03 cmp si,3
F000:B2A5 76 A3 jbe loc_771 ; Jump if below or =
F000:B2A7 33 F6 xor si,si ; Zero register
F000:B2A9 EB D8 jmp short loc_773 ; (B283)
F000:B2AB 2709 data_130 dw 2709h ; Data table (indexed access)
; xref F000:B252
F000:B2AD 0F 4F 09 4F 12 4F db 0Fh, 4Fh, 9, 4Fh, 12h, 4Fh
F000:B2B3 B2BB data_131 dw 0B2BBh ; Data table (indexed access)
; xref F000:B25B
F000:B2B5 C8 B2 D5 B2 E2 B2 db 0C8h, 0B2h, 0D5h, 0B2h, 0E2h, 0B2h
F000:B2BB DF 02 25 02 09 2A db 0DFh, 2, 25h, 2, 9, 2Ah
F000:B2C1 FF 50 F6 0F 08 27 db 0FFh, 50h, 0F6h, 0Fh, 8, 27h
F000:B2C7 80 DF 02 25 02 0F db 80h, 0DFh, 2, 25h, 2, 0Fh
F000:B2CD 1B FF 54 F6 0F 08 db 1Bh, 0FFh, 54h, 0F6h, 0Fh, 8
F000:B2D3 4F 00 DF 02 25 02 db 4Fh, 0, 0DFh, 2, 25h, 2
F000:B2D9 09 2A FF 50 F6 0F db 9, 2Ah, 0FFh, 50h, 0F6h, 0Fh
F000:B2DF 08 4F 80 AF 02 25 db 8, 4Fh, 80h, 0AFh, 2, 25h
F000:B2E5 02 12 1B FF 6C F6 db 2, 12h, 1Bh, 0FFh, 6Ch, 0F6h
F000:B2EB 0F 08 4F 00 DF 02 db 0Fh, 8, 4Fh, 0, 0DFh, 2
F000:B2F1 25 02 09 2A FF 50 db 25h, 2, 9, 2Ah, 0FFh, 50h
F000:B2F7 F6 0F 08 db 0F6h, 0Fh, 8
F000:B2FA 27 40 db 27h, 40h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 158


;ÄÄÄÄÄ Indexed Entry Point ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

F000:B2FC loc_776: ; xref F000:AE24, AE57
F000:B2FC 80 FA 01 cmp dl,1
F000:B2FF 76 06 jbe short loc_778 ; Jump if below or =
F000:B301 B4 01 mov ah,1
F000:B303 loc_777: ; xref F000:B30E
F000:B303 F9 stc ; Set carry flag
F000:B304 E9 FB54 jmp loc_701 ; (AE5B)
F000:B307 loc_778: ; xref F000:B2FF
F000:B307 E8 3D7A call sub_265 ; (F084)
F000:B30A 74 04 jz short loc_780 ; Jump if zero
F000:B30C loc_779: ; xref F000:B32C, B33C, B346, B355
; B366
F000:B30C B4 0C mov ah,0Ch
F000:B30E EB F3 jmp short loc_777 ; (B303)
F000:B310 loc_780: ; xref F000:B30A
F000:B310 32 E4 xor ah,ah ; Zero register
F000:B312 8B F8 mov di,ax
F000:B314 8A 56 0E mov dl,[bp+0Eh]
F000:B317 BB 0090 mov bx,90h
F000:B31A 32 F6 xor dh,dh ; Zero register
F000:B31C 03 DA add bx,dx
F000:B31E 3C 01 cmp al,1
F000:B320 75 0F jne short loc_781 ; Jump if not equal
F000:B322 8B 4E 10 mov cx,[bp+10h]
F000:B325 81 F9 2709 cmp cx,2709h
F000:B329 BE B2BB mov si,0B2BBh
F000:B32C 75 DE jnz loc_779 ; Jump if not zero
F000:B32E E9 008C jmp loc_786 ; (B3BD)
F000:B331 loc_781: ; xref F000:B320
F000:B331 3C 03 cmp al,3
F000:B333 75 0B jne short loc_782 ; Jump if not equal
F000:B335 8B 4E 10 mov cx,[bp+10h]
F000:B338 81 F9 4F09 cmp cx,4F09h
F000:B33C 75 CE jne loc_779 ; Jump if not equal
F000:B33E EB 28 jmp short loc_784 ; (B368)
F000:B340 loc_782: ; xref F000:B333
F000:B340 3C 04 cmp al,4
F000:B342 74 15 je short loc_783 ; Jump if equal
F000:B344 3C 02 cmp al,2
F000:B346 75 C4 jne loc_779 ; Jump if not equal
F000:B348 8B 4E 10 mov cx,[bp+10h]
F000:B34B 81 F9 4F0F cmp cx,4F0Fh
F000:B34F 74 17 je short loc_784 ; Jump if equal
F000:B351 81 F9 2709 cmp cx,2709h
F000:B355 75 B5 jne loc_779 ; Jump if not equal
F000:B357 EB 0F jmp short loc_784 ; (B368)
F000:B359 loc_783: ; xref F000:B342
F000:B359 8B 4E 10 mov cx,[bp+10h]
F000:B35C 81 F9 4F12 cmp cx,4F12h
F000:B360 74 06 je short loc_784 ; Jump if equal
F000:B362 81 F9 4F09 cmp cx,4F09h
F000:B366 75 A4 jne loc_779 ; Jump if not equal
F000:B368 loc_784: ; xref F000:B33E, B34F, B357, B360
F000:B368 8B 4E 10 mov cx,[bp+10h]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 159

F000:B36B 81 F9 4F12 cmp cx,4F12h
F000:B36F B0 17 mov al,17h
F000:B371 BE B2E2 mov si,0B2E2h
F000:B374 B6 00 mov dh,0
F000:B376 74 21 jz short loc_785 ; Jump if zero
F000:B378 81 F9 4F09 cmp cx,4F09h
F000:B37C B0 97 mov al,97h
F000:B37E BE B2D5 mov si,0B2D5h
F000:B381 B6 02 mov dh,2
F000:B383 74 14 jz short loc_785 ; Jump if zero
F000:B385 81 F9 4F0F cmp cx,4F0Fh
F000:B389 B0 15 mov al,15h
F000:B38B BE B2C8 mov si,0B2C8h
F000:B38E B6 00 mov dh,0
F000:B390 74 07 jz short loc_785 ; Jump if zero
F000:B392 B0 74 mov al,74h ; 't'
F000:B394 BE B2EF mov si,0B2EFh
F000:B397 B6 01 mov dh,1
F000:B399 loc_785: ; xref F000:B376, B383, B390, B3C1
F000:B399 88 07 mov [bx],al
F000:B39B 52 push dx
F000:B39C E8 0682 call sub_150 ; (BA21)
F000:B39F 5A pop dx
F000:B3A0 8A 07 mov al,[bx]
F000:B3A2 24 C0 and al,0C0h
F000:B3A4 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B3A9 08 06 008B or ds:data_53e,al ; (C000:008B=74h)
F000:B3AD 89 76 06 mov [bp+6],si
F000:B3B0 8C 4E 02 mov [bp+2],cs
F000:B3B3 C6 06 0041 00 mov byte ptr ds:data_37e,0 ; (C000:0041=0)
F000:B3B8 32 E4 xor ah,ah ; Zero register
F000:B3BA E9 FA9E jmp loc_701 ; (AE5B)
F000:B3BD loc_786: ; xref F000:B32E
F000:B3BD B6 02 mov dh,2
F000:B3BF B0 93 mov al,93h
F000:B3C1 EB D6 jmp short loc_785 ; (B399)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:947A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_136 proc near
F000:B3C3 80 26 0010 3E and byte ptr ds:data_29e,3Eh ; (C000:0010=20h) '>'
F000:B3C8 80 0E 0010 01 or byte ptr ds:data_29e,1 ; (C000:0010=20h)
F000:B3CD E8 016A call sub_142 ; (B53A)
F000:B3D0 BB 003E mov bx,3Eh
F000:B3D3 33 C0 xor ax,ax ; Zero register
F000:B3D5 B9 000B mov cx,0Bh

F000:B3D8 locloop_787: ; xref F000:B3DB
F000:B3D8 88 07 mov [bx],al
F000:B3DA 43 inc bx
F000:B3DB E2 FB loop locloop_787 ; Loop if cx > 0

F000:B3DD A2 008F mov ds:data_54e,al ; (C000:008F=38h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 160

F000:B3E0 A3 0090 mov ds:data_55e,ax ; (C000:0090=2D37h)
F000:B3E3 A3 0092 mov ds:data_57e,ax ; (C000:0092=3931h)
F000:B3E6 A3 0094 mov ds:data_58e,ax ; (C000:0094=3039h)
F000:B3E9 A2 0096 mov ds:data_59e,al ; (C000:0096=20h)
F000:B3EC B2 00 mov dl,0
F000:B3EE CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:B3F0 73 03 jnc short loc_788 ; Jump if carry=0
F000:B3F2 83 CD 01 or bp,1
F000:B3F5 loc_788: ; xref F000:B3F0
F000:B3F5 EB 00 jmp short loc_789 ; (B3F7)
F000:B3F7 loc_789: ; xref F000:B3F5
F000:B3F7 EB 00 jmp short loc_790 ; (B3F9)
F000:B3F9 loc_790: ; xref F000:B3F7
F000:B3F9 90 nop ;
F000:B3FA B6 02 mov dh,2
F000:B3FC E8 0622 call sub_150 ; (BA21)
F000:B3FF 32 F6 xor dh,dh ; Zero register
F000:B401 E8 001B call sub_137 ; (B41F)
F000:B404 FE C6 inc dh
F000:B406 E8 0016 call sub_137 ; (B41F)
F000:B409 8A 26 0091 mov ah,byte ptr ds:data_55e+1 ; (C000:0091=2Dh)
F000:B40D 0A E4 or ah,ah ; Zero ?
F000:B40F 74 05 jz short loc_791 ; Jump if zero
F000:B411 80 0E 0010 40 or byte ptr ds:data_29e,40h ; (C000:0010=20h) '@'
F000:B416 loc_791: ; xref F000:B40F
F000:B416 E8 00D3 call sub_140 ; (B4EC)
F000:B419 C6 06 003E 00 mov byte ptr ds:data_34e,0 ; (C000:003E=39h)
F000:B41E C3 retn
sub_136 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B401, B406
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_137 proc near
F000:B41F B9 0002 mov cx,2

F000:B422 locloop_792: ; xref F000:B42C
F000:B422 8A D6 mov dl,dh
F000:B424 E8 0521 call sub_147 ; (B948)
F000:B427 E8 0176 call sub_143 ; (B5A0)
F000:B42A 73 04 jnc short loc_793 ; Jump if carry=0
F000:B42C E2 F4 loop locloop_792 ; Loop if cx > 0

F000:B42E EB 55 jmp short loc_ret_799 ; (B485)
F000:B430 loc_793: ; xref F000:B42A
F000:B430 B2 0F mov dl,0Fh
F000:B432 8B F2 mov si,dx
F000:B434 BF 0030 mov di,30h
F000:B437 E8 004C call sub_138 ; (B486)
F000:B43A 72 49 jc short loc_ret_799 ; Jump if carry Set
F000:B43C BF 000A mov di,0Ah
F000:B43F loc_794: ; xref F000:B456
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 161

F000:B43F B2 0F mov dl,0Fh
F000:B441 8B F2 mov si,dx
F000:B443 E8 0040 call sub_138 ; (B486)
F000:B446 72 3D jc short loc_ret_799 ; Jump if carry Set
F000:B448 B2 04 mov dl,4
F000:B44A 8B F2 mov si,dx
F000:B44C E8 007F call sub_139 ; (B4CE)
F000:B44F 72 34 jc short loc_ret_799 ; Jump if carry Set
F000:B451 0A ED or ch,ch ; Zero ?
F000:B453 74 05 jz short loc_795 ; Jump if zero
F000:B455 4F dec di
F000:B456 79 E7 jns loc_794 ; Jump if not sign
F000:B458 EB 2B jmp short loc_ret_799 ; (B485)
F000:B45A loc_795: ; xref F000:B453
F000:B45A 8A DE mov bl,dh
F000:B45C 32 FF xor bh,bh ; Zero register
F000:B45E C6 87 0090 93 mov byte ptr ds:data_55e[bx],93h ; (C000:0090=37h)
F000:B463 B5 04 mov ch,4
F000:B465 0B FF or di,di ; Zero ?
F000:B467 75 07 jnz short loc_796 ; Jump if not zero
F000:B469 C6 87 0090 02 mov byte ptr ds:data_55e[bx],2 ; (C000:0090=37h)
F000:B46E B5 01 mov ch,1
F000:B470 loc_796: ; xref F000:B467
F000:B470 B0 04 mov al,4
F000:B472 F6 E6 mul dh ; ax = reg * al
F000:B474 8A C8 mov cl,al
F000:B476 D2 E5 shl ch,cl ; Shift w/zeros fill
F000:B478 08 2E 008F or ds:data_54e,ch ; (C000:008F=38h)
F000:B47C 0B FF or di,di ; Zero ?
F000:B47E 75 05 jnz short loc_ret_799 ; Jump if not zero
F000:B480 EB 00 jmp short loc_797 ; (B482)
F000:B482 loc_797: ; xref F000:B480
F000:B482 EB 00 jmp short loc_798 ; (B484)
F000:B484 loc_798: ; xref F000:B482
F000:B484 90 nop ;

F000:B485 loc_ret_799: ; xref F000:B42E, B43A, B446, B44F
; B458, B47E
F000:B485 C3 retn
sub_137 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B437, B443
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_138 proc near
F000:B486 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B48B 8B C6 mov ax,si
F000:B48D 8A E0 mov ah,al
F000:B48F E8 06D7 call sub_156 ; (BB69)
F000:B492 72 39 jc short loc_ret_800 ; Jump if carry Set
F000:B494 8B C6 mov ax,si
F000:B496 E8 06D0 call sub_156 ; (BB69)
F000:B499 72 32 jc short loc_ret_800 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 162

F000:B49B 8B C7 mov ax,di
F000:B49D 8A E0 mov ah,al
F000:B49F E8 06C7 call sub_156 ; (BB69)
F000:B4A2 72 29 jc short loc_ret_800 ; Jump if carry Set
F000:B4A4 B8 9001 mov ax,9001h
F000:B4A7 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:B4A9 72 22 jc short loc_ret_800 ; Jump if carry Set
F000:B4AB E8 0828 call sub_163 ; (BCD6)
F000:B4AE 72 1D jc short loc_ret_800 ; Jump if carry Set
F000:B4B0 B4 08 mov ah,8
F000:B4B2 E8 06B4 call sub_156 ; (BB69)
F000:B4B5 72 16 jc short loc_ret_800 ; Jump if carry Set
F000:B4B7 E8 0700 call sub_158 ; (BBBA)
F000:B4BA 72 11 jc short loc_ret_800 ; Jump if carry Set
F000:B4BC 8A D8 mov bl,al
F000:B4BE E8 06F9 call sub_158 ; (BBBA)
F000:B4C1 72 0A jc short loc_ret_800 ; Jump if carry Set
F000:B4C3 80 E3 60 and bl,60h ; '`'
F000:B4C6 80 FB 60 cmp bl,60h ; '`'
F000:B4C9 F8 clc ; Clear carry flag
F000:B4CA 75 01 jnz short loc_ret_800 ; Jump if not zero
F000:B4CC F9 stc ; Set carry flag

F000:B4CD loc_ret_800: ; xref F000:B492, B499, B4A2, B4A9
; B4AE, B4B5, B4BA, B4C1
; B4CA
F000:B4CD C3 retn
sub_138 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B44C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_139 proc near
F000:B4CE 8B C6 mov ax,si
F000:B4D0 8A E0 mov ah,al
F000:B4D2 E8 0694 call sub_156 ; (BB69)
F000:B4D5 72 14 jc short loc_ret_801 ; Jump if carry Set
F000:B4D7 8B C6 mov ax,si
F000:B4D9 E8 068D call sub_156 ; (BB69)
F000:B4DC 72 0D jc short loc_ret_801 ; Jump if carry Set
F000:B4DE E8 06D9 call sub_158 ; (BBBA)
F000:B4E1 72 08 jc short loc_ret_801 ; Jump if carry Set
F000:B4E3 B5 FF mov ch,0FFh
F000:B4E5 A8 10 test al,10h
F000:B4E7 74 02 jz short loc_ret_801 ; Jump if zero
F000:B4E9 32 ED xor ch,ch ; Zero register

F000:B4EB loc_ret_801: ; xref F000:B4D5, B4DC, B4E1, B4E7
F000:B4EB C3 retn
sub_139 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 163

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B416
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_140 proc near
F000:B4EC BE 0090 mov si,90h
F000:B4EF B0 0E mov al,0Eh
F000:B4F1 E8 39AB call sub_257 ; (EE9F)
F000:B4F4 A8 C0 test al,0C0h
F000:B4F6 75 1C jnz short loc_ret_802 ; Jump if not zero
F000:B4F8 B0 10 mov al,10h
F000:B4FA E8 39A2 call sub_257 ; (EE9F)
F000:B4FD 8A E0 mov ah,al
F000:B4FF B1 04 mov cl,4
F000:B501 D2 E8 shr al,cl ; Shift w/zeros fill
F000:B503 24 0F and al,0Fh
F000:B505 B1 00 mov cl,0
F000:B507 E8 000B call sub_141 ; (B515)
F000:B50A 8A C4 mov al,ah
F000:B50C 24 0F and al,0Fh
F000:B50E 46 inc si
F000:B50F B1 04 mov cl,4
F000:B511 E8 0001 call sub_141 ; (B515)

F000:B514 loc_ret_802: ; xref F000:B4F6
F000:B514 C3 retn
sub_140 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B507, B511
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_141 proc near
F000:B515 80 3C 00 cmp byte ptr [si],0
F000:B518 74 1F je short loc_ret_806 ; Jump if equal
F000:B51A 80 3C 93 cmp byte ptr [si],93h
F000:B51D 74 1A je short loc_ret_806 ; Jump if equal
F000:B51F 3C 03 cmp al,3
F000:B521 75 07 jne short loc_803 ; Jump if not equal
F000:B523 C6 04 97 mov byte ptr [si],97h
F000:B526 B0 04 mov al,4
F000:B528 EB 09 jmp short loc_805 ; (B533)
F000:B52A loc_803: ; xref F000:B521
F000:B52A 3C 04 cmp al,4
F000:B52C 75 03 jne short loc_804 ; Jump if not equal
F000:B52E C6 04 07 mov byte ptr [si],7
F000:B531 loc_804: ; xref F000:B52C
F000:B531 B0 02 mov al,2
F000:B533 loc_805: ; xref F000:B528
F000:B533 D2 E0 shl al,cl ; Shift w/zeros fill
F000:B535 08 06 008F or ds:data_54e,al ; (C000:008F=38h)

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 164

F000:B539 loc_ret_806: ; xref F000:B518, B51D
F000:B539 C3 retn
sub_141 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B3CD
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_142 proc near
F000:B53A 50 push ax
F000:B53B 51 push cx
F000:B53C 52 push dx
F000:B53D BA 03F1 mov dx,3F1h
F000:B540 EC in al,dx ; port 3F1h, dsk status B
F000:B541 24 F8 and al,0F8h
F000:B543 3C 50 cmp al,50h ; 'P'
F000:B545 74 4F je short loc_818 ; Jump if equal
F000:B547 BA 05F7 mov dx,5F7h
F000:B54A EB 00 jmp short loc_807 ; (B54C)
F000:B54C loc_807: ; xref F000:B54A
F000:B54C EB 00 jmp short loc_808 ; (B54E)
F000:B54E loc_808: ; xref F000:B54C
F000:B54E EC in al,dx ; port 5F7h
F000:B54F 24 F0 and al,0F0h
F000:B551 3C A0 cmp al,0A0h
F000:B553 74 39 je short loc_817 ; Jump if equal
F000:B555 BA 01F7 mov dx,1F7h
F000:B558 B4 80 mov ah,80h
F000:B55A B9 0003 mov cx,3

F000:B55D locloop_809: ; xref F000:B566
F000:B55D 51 push cx
F000:B55E 33 C9 xor cx,cx ; Zero register
F000:B560 E8 39F7 call sub_260 ; (EF5A)
F000:B563 59 pop cx
F000:B564 73 09 jnc short loc_810 ; Jump if carry=0
F000:B566 E2 F5 loop locloop_809 ; Loop if cx > 0

F000:B568 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:B569 24 0C and al,0Ch
F000:B56B 74 29 jz short loc_818 ; Jump if zero
F000:B56D EB 1F jmp short loc_817 ; (B58E)
F000:B56F loc_810: ; xref F000:B564
F000:B56F BA 01F4 mov dx,1F4h
F000:B572 B0 AA mov al,0AAh
F000:B574 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:B575 EB 00 jmp short loc_811 ; (B577)
F000:B577 loc_811: ; xref F000:B575
F000:B577 EB 00 jmp short loc_812 ; (B579)
F000:B579 loc_812: ; xref F000:B577
F000:B579 EC in al,dx ; port 1F4h, hdsk0-cylr,lo byte
F000:B57A 3C AA cmp al,0AAh
F000:B57C 75 10 jne short loc_817 ; Jump if not equal
F000:B57E B0 55 mov al,55h ; 'U'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 165

F000:B580 EB 00 jmp short loc_813 ; (B582)
F000:B582 loc_813: ; xref F000:B580
F000:B582 EB 00 jmp short loc_814 ; (B584)
F000:B584 loc_814: ; xref F000:B582
F000:B584 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:B585 EB 00 jmp short loc_815 ; (B587)
F000:B587 loc_815: ; xref F000:B585
F000:B587 EB 00 jmp short loc_816 ; (B589)
F000:B589 loc_816: ; xref F000:B587
F000:B589 EC in al,dx ; port 1F4h, hdsk0-cylr,lo byte
F000:B58A 3C 55 cmp al,55h ; 'U'
F000:B58C 74 08 je short loc_818 ; Jump if equal
F000:B58E loc_817: ; xref F000:B553, B56D, B57C
F000:B58E C6 06 008B 80 mov byte ptr ds:data_53e,80h ; (C000:008B=74h)
F000:B593 F9 stc ; Set carry flag
F000:B594 EB 06 jmp short loc_819 ; (B59C)
F000:B596 loc_818: ; xref F000:B545, B56B, B58C
F000:B596 C6 06 008B 81 mov byte ptr ds:data_53e,81h ; (C000:008B=74h)
F000:B59B F8 clc ; Clear carry flag
F000:B59C loc_819: ; xref F000:B594
F000:B59C 5A pop dx
F000:B59D 59 pop cx
F000:B59E 58 pop ax
F000:B59F C3 retn
sub_142 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B427, B611, B616, B817, B81C, B836, B83B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_143 proc near
F000:B5A0 51 push cx
F000:B5A1 52 push dx
F000:B5A2 8A F2 mov dh,dl
F000:B5A4 B2 07 mov dl,7
F000:B5A6 8B F2 mov si,dx
F000:B5A8 B5 02 mov ch,2
F000:B5AA 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B5AF E8 058A call sub_155 ; (BB3C)
F000:B5B2 72 48 jc short loc_820 ; Jump if carry Set
F000:B5B4 BE 0008 mov si,8
F000:B5B7 B5 01 mov ch,1
F000:B5B9 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:B5BE E8 057B call sub_155 ; (BB3C)
F000:B5C1 72 39 jc short loc_820 ; Jump if carry Set
F000:B5C3 BB 0042 mov bx,42h
F000:B5C6 B9 0002 mov cx,2
F000:B5C9 E8 05CA call sub_157 ; (BB96)
F000:B5CC 72 2E jc short loc_820 ; Jump if carry Set
F000:B5CE BB 0042 mov bx,42h
F000:B5D1 B4 40 mov ah,40h ; '@'
F000:B5D3 8A 17 mov dl,[bx]
F000:B5D5 80 E2 60 and dl,60h ; '`'
F000:B5D8 80 FA 60 cmp dl,60h ; '`'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 166

F000:B5DB F9 stc ; Set carry flag
F000:B5DC 74 1E jz short loc_820 ; Jump if zero
F000:B5DE 5A pop dx
F000:B5DF 52 push dx
F000:B5E0 32 F6 xor dh,dh ; Zero register
F000:B5E2 BB 0094 mov bx,94h
F000:B5E5 03 DA add bx,dx
F000:B5E7 C6 07 00 mov byte ptr [bx],0
F000:B5EA 8A CA mov cl,dl
F000:B5EC B2 01 mov dl,1
F000:B5EE D2 E2 shl dl,cl ; Shift w/zeros fill
F000:B5F0 08 16 003E or ds:data_34e,dl ; (C000:003E=39h)
F000:B5F4 B9 0043 mov cx,43h
F000:B5F7 E8 3A6E call sub_264 ; (F068)
F000:B5FA 32 E4 xor ah,ah ; Zero register
F000:B5FC loc_820: ; xref F000:B5B2, B5C1, B5CC, B5DC
F000:B5FC 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B600 5A pop dx
F000:B601 59 pop cx
F000:B602 C3 retn
sub_143 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B149, B700, BA5A, BA61
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_144 proc near
F000:B603 53 push bx
F000:B604 51 push cx
F000:B605 8A 26 003E mov ah,dsk_recal_stat ; (0040:003E=0)
F000:B609 8A CA mov cl,dl
F000:B60B FE C1 inc cl
F000:B60D D2 EC shr ah,cl ; Shift w/zeros fill
F000:B60F 72 0D jc short loc_821 ; Jump if carry Set
F000:B611 E8 FF8C call sub_143 ; (B5A0)
F000:B614 73 08 jnc short loc_821 ; Jump if carry=0
F000:B616 E8 FF87 call sub_143 ; (B5A0)
F000:B619 73 03 jnc short loc_821 ; Jump if carry=0
F000:B61B E9 00DC jmp loc_830 ; (B6FA)
F000:B61E loc_821: ; xref F000:B60F, B614, B619

F000:B61E BB 0094 mov bx,94h
F000:B621 32 F6 xor dh,dh ; Zero register
F000:B623 03 DA add bx,dx
F000:B625 BE 0090 mov si,90h
F000:B628 03 F2 add si,dx
F000:B62A 8A D5 mov dl,ch
F000:B62C F6 04 20 test byte ptr [si],20h ; ' '
F000:B62F 74 02 jz short loc_822 ; Jump if zero
F000:B631 02 D2 add dl,dl
F000:B633 loc_822: ; xref F000:B62F
F000:B633 38 17 cmp [bx],dl
F000:B635 8B 56 0E mov dx,[bp+0Eh]
F000:B638 75 0C jnz short loc_823 ; Jump if not zero
F000:B63A 80 3E 0041 40 cmp dsk_ret_code,40h ; (0040:0041=0) '@'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 167

F000:B63F 74 05 je short loc_823 ; Jump if equal
F000:B641 32 E4 xor ah,ah ; Zero register
F000:B643 E9 00B4 jmp loc_830 ; (B6FA)
F000:B646 loc_823: ; xref F000:B638, B63F
F000:B646 C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B649 0A F2 or dh,dl
F000:B64B B2 0F mov dl,0Fh
F000:B64D 8B F2 mov si,dx
F000:B64F 8A CD mov cl,ch
F000:B651 8B 56 0E mov dx,[bp+0Eh]
F000:B654 BB 0090 mov bx,90h
F000:B657 32 F6 xor dh,dh ; Zero register
F000:B659 03 DA add bx,dx
F000:B65B F6 07 20 test byte ptr [bx],20h ; ' '
F000:B65E 74 02 jz short loc_824 ; Jump if zero
F000:B660 02 C9 add cl,cl
F000:B662 loc_824: ; xref F000:B65E
F000:B662 8B F9 mov di,cx
F000:B664 B5 03 mov ch,3
F000:B666 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B66B E8 04CE call sub_155 ; (BB3C)
F000:B66E 73 03 jnc short loc_825 ; Jump if carry=0
F000:B670 E9 0083 jmp loc_829 ; (B6F6)
F000:B673 loc_825: ; xref F000:B66E
F000:B673 BE 0008 mov si,8
F000:B676 B5 01 mov ch,1
F000:B678 80 0E 003E 80 or dsk_recal_stat,80h ; (0040:003E=0)
F000:B67D E8 04BC call sub_155 ; (BB3C)
F000:B680 72 74 jc short loc_829 ; Jump if carry Set
F000:B682 BB 0042 mov bx,42h
F000:B685 B9 0002 mov cx,2
F000:B688 E8 050B call sub_157 ; (BB96)
F000:B68B 72 69 jc short loc_829 ; Jump if carry Set
F000:B68D BB 0042 mov bx,42h
F000:B690 B4 40 mov ah,40h ; '@'
F000:B692 8A 17 mov dl,[bx]
F000:B694 80 E2 60 and dl,60h ; '`'
F000:B697 80 FA 60 cmp dl,60h ; '`'
F000:B69A F9 stc ; Set carry flag
F000:B69B 74 59 jz short loc_829 ; Jump if zero
F000:B69D 8B 56 0E mov dx,[bp+0Eh]
F000:B6A0 59 pop cx
F000:B6A1 51 push cx
F000:B6A2 BE 0094 mov si,94h
F000:B6A5 32 F6 xor dh,dh ; Zero register
F000:B6A7 03 F2 add si,dx
F000:B6A9 88 2C mov [si],ch
F000:B6AB BB 0090 mov bx,90h
F000:B6AE 03 DA add bx,dx
F000:B6B0 8A 1F mov bl,[bx]
F000:B6B2 F6 C3 20 test bl,20h ; ' '
F000:B6B5 74 02 jz short loc_826 ; Jump if zero
F000:B6B7 00 2C add [si],ch
F000:B6B9 loc_826: ; xref F000:B6B5
F000:B6B9 1E push ds
F000:B6BA 33 F6 xor si,si ; Zero register
F000:B6BC 8E DE mov ds,si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 168

F000:B6BE C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B6C2 8A 44 09 mov al,[si+9]
F000:B6C5 1F pop ds
F000:B6C6 F6 06 003F 80 test dsk_motor_stat,80h ; (0040:003F=0)
F000:B6CB 74 19 jz short loc_827 ; Jump if zero
F000:B6CD 0A C0 or al,al ; Zero ?
F000:B6CF 75 15 jnz short loc_827 ; Jump if not zero
F000:B6D1 80 FB 17 cmp bl,17h
F000:B6D4 B0 0F mov al,0Fh
F000:B6D6 74 0E jz short loc_827 ; Jump if zero
F000:B6D8 80 E3 07 and bl,7
F000:B6DB B0 14 mov al,14h
F000:B6DD 74 07 jz short loc_827 ; Jump if zero
F000:B6DF 80 FB 03 cmp bl,3
F000:B6E2 74 02 je short loc_827 ; Jump if equal
F000:B6E4 B0 0F mov al,0Fh
F000:B6E6 loc_827: ; xref F000:B6CB, B6CF, B6D6, B6DD
; B6E2, B6F2
F000:B6E6 0A C0 or al,al ; Zero ?
F000:B6E8 74 0A jz short loc_828 ; Jump if zero
F000:B6EA B9 0043 mov cx,43h
F000:B6ED E8 3978 call sub_264 ; (F068)
F000:B6F0 FE C8 dec al
F000:B6F2 EB F2 jmp short loc_827 ; (B6E6)
F000:B6F4 loc_828: ; xref F000:B6E8
F000:B6F4 32 E4 xor ah,ah ; Zero register
F000:B6F6 loc_829: ; xref F000:B670, B680, B68B, B69B
F000:B6F6 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B6FA loc_830: ; xref F000:B61B, B643
F000:B6FA 8B 56 0E mov dx,[bp+0Eh]
F000:B6FD 59 pop cx
F000:B6FE 5B pop bx
F000:B6FF C3 retn
sub_144 endp

F000:B700 loc_831: ; xref F000:B0D1
F000:B700 E8 FF00 call sub_144 ; (B603)
F000:B703 73 10 jnc short loc_833 ; Jump if carry=0
F000:B705 loc_832: ; xref F000:B7B2
F000:B705 B0 00 mov al,0
F000:B707 50 push ax
F000:B708 BB 0042 mov bx,42h
F000:B70B B9 0007 mov cx,7
F000:B70E E8 0485 call sub_157 ; (BB96)
F000:B711 58 pop ax
F000:B712 E9 00B2 jmp loc_843 ; (B7C7)
F000:B715 loc_833: ; xref F000:B703
F000:B715 1E push ds
F000:B716 33 F6 xor si,si ; Zero register
F000:B718 8E DE mov ds,si
F000:B71A C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B71E 8B 44 02 mov ax,[si+2]
F000:B721 25 FF00 and ax,0FF00h
F000:B724 8A C1 mov al,cl
F000:B726 89 46 00 mov [bp],ax
F000:B729 8B 5C 04 mov bx,[si+4]
F000:B72C 8A 4C 06 mov cl,[si+6]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 169

F000:B72F 1F pop ds
F000:B730 BE 0090 mov si,90h
F000:B733 32 F6 xor dh,dh ; Zero register
F000:B735 03 F2 add si,dx
F000:B737 8A 14 mov dl,[si]
F000:B739 80 E2 07 and dl,7
F000:B73C B6 1B mov dh,1Bh
F000:B73E 80 FA 05 cmp dl,5
F000:B741 74 0E je short loc_834 ; Jump if equal
F000:B743 80 3C 17 cmp byte ptr [si],17h
F000:B746 74 09 je short loc_834 ; Jump if equal
F000:B748 B6 23 mov dh,23h ; '#'
F000:B74A 80 FA 04 cmp dl,4
F000:B74D 74 02 je short loc_834 ; Jump if equal
F000:B74F B6 2A mov dh,2Ah ; '*'
F000:B751 loc_834: ; xref F000:B741, B746, B74D
F000:B751 8A FE mov bh,dh
F000:B753 8B 56 0E mov dx,[bp+0Eh]
F000:B756 51 push cx
F000:B757 8A CD mov cl,ch
F000:B759 8A EE mov ch,dh
F000:B75B 8B F9 mov di,cx
F000:B75D C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B760 0A F2 or dh,dl
F000:B762 B2 E6 mov dl,0E6h
F000:B764 8B 46 12 mov ax,[bp+12h]
F000:B767 80 FC 03 cmp ah,3
F000:B76A 75 02 jne short loc_835 ; Jump if not equal
F000:B76C B2 C5 mov dl,0C5h
F000:B76E loc_835: ; xref F000:B76A
F000:B76E 8B F2 mov si,dx
F000:B770 59 pop cx
F000:B771 B5 09 mov ch,9
F000:B773 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B778 80 FC 04 cmp ah,4
F000:B77B EB 30 jmp short loc_839 ; (B7AD)
F000:B77D 52 50 BA 61 04 E4 db 52h, 50h, 0BAh, 61h, 4, 0E4h
F000:B783 21 8A E0 0C 02 EB db 21h, 8Ah, 0E0h, 0Ch, 2, 0EBh
F000:B789 00 EB 00 db 0, 0EBh, 0
F000:B78C loc_836:
F000:B78C E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:B78E EC in al,dx ; port 0C5h
F000:B78F 8E C0 mov es,ax
F000:B791 24 FE and al,0FEh
F000:B793 EB 00 jmp short loc_837 ; (B795)
F000:B795 loc_837: ; xref F000:B793
F000:B795 EB 00 jmp short loc_838 ; (B797)
F000:B797 loc_838: ; xref F000:B795
F000:B797 EE out dx,al ; port 0C5h
F000:B798 58 pop ax
F000:B799 5A pop dx
F000:B79A E8 039F call sub_155 ; (BB3C)
F000:B79D 52 push dx
F000:B79E 50 push ax
F000:B79F BA 0461 mov dx,461h
F000:B7A2 8C C0 mov ax,es
F000:B7A4 EE out dx,al ; port 461h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 170

F000:B7A5 8A C4 mov al,ah
F000:B7A7 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:B7A9 58 pop ax
F000:B7AA 5A pop dx
F000:B7AB EB 03 jmp short loc_840 ; (B7B0)
F000:B7AD loc_839: ; xref F000:B77B
F000:B7AD E8 038C call sub_155 ; (BB3C)
F000:B7B0 loc_840: ; xref F000:B7AB
F000:B7B0 73 03 jnc short loc_841 ; Jump if carry=0
F000:B7B2 E9 FF50 jmp loc_832 ; (B705)
F000:B7B5 loc_841: ; xref F000:B7B0
F000:B7B5 BB 0042 mov bx,42h
F000:B7B8 B9 0007 mov cx,7
F000:B7BB E8 03D8 call sub_157 ; (BB96)
F000:B7BE 73 04 jnc short loc_842 ; Jump if carry=0
F000:B7C0 B0 00 mov al,0
F000:B7C2 EB 03 jmp short loc_843 ; (B7C7)
F000:B7C4 loc_842: ; xref F000:B7BE
F000:B7C4 E8 041C call sub_159 ; (BBE3)
F000:B7C7 loc_843: ; xref F000:B712, B7C2
F000:B7C7 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B7CB 8B 56 0E mov dx,[bp+0Eh]
F000:B7CE 8B 5E 0C mov bx,[bp+0Ch]
F000:B7D1 8B 4E 10 mov cx,[bp+10h]
F000:B7D4 E9 F8FD jmp loc_751 ; (B0D4)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B060
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_146 proc near
F000:B7D7 53 push bx
F000:B7D8 51 push cx
F000:B7D9 8B 56 0E mov dx,[bp+0Eh]
F000:B7DC BE 0090 mov si,90h
F000:B7DF 32 F6 xor dh,dh ; Zero register
F000:B7E1 03 F2 add si,dx
F000:B7E3 8A 34 mov dh,[si]
F000:B7E5 80 E6 07 and dh,7
F000:B7E8 75 0D jnz short loc_845 ; Jump if not zero
F000:B7EA C6 04 02 mov byte ptr [si],2
F000:B7ED EB 08 jmp short loc_845 ; (B7F7)
F000:B7EF loc_844: ; xref F000:B803, B80C
F000:B7EF E8 0202 call sub_149 ; (B9F4)
F000:B7F2 32 E4 xor ah,ah ; Zero register
F000:B7F4 E9 0147 jmp loc_865 ; (B93E)
F000:B7F7 loc_845: ; xref F000:B7E8, B7ED
F000:B7F7 E8 388A call sub_265 ; (F084)
F000:B7FA 75 28 jnz short loc_849 ; Jump if not zero
F000:B7FC 3C 01 cmp al,1
F000:B7FE 75 05 jne short loc_846 ; Jump if not equal
F000:B800 C6 04 93 mov byte ptr [si],93h
F000:B803 EB EA jmp short loc_844 ; (B7EF)
F000:B805 loc_846: ; xref F000:B7FE
F000:B805 3C 03 cmp al,3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 171

F000:B807 75 05 jne short loc_847 ; Jump if not equal
F000:B809 C6 04 97 mov byte ptr [si],97h
F000:B80C EB E1 jmp short loc_844 ; (B7EF)
F000:B80E loc_847: ; xref F000:B807
F000:B80E 3C 02 cmp al,2
F000:B810 74 12 je short loc_849 ; Jump if equal
F000:B812 80 26 008B F3 and byte ptr ds:data_53e,0F3h ; (C000:008B=74h)
F000:B817 E8 FD86 call sub_143 ; (B5A0)
F000:B81A 73 5E jnc short loc_853 ; Jump if carry=0
F000:B81C E8 FD81 call sub_143 ; (B5A0)
F000:B81F 73 59 jnc short loc_853 ; Jump if carry=0
F000:B821 loc_848: ; xref F000:B83E
F000:B821 E9 011E jmp loc_866 ; (B942)
F000:B824 loc_849: ; xref F000:B7FA, B810
F000:B824 B6 01 mov dh,1
F000:B826 E8 01F8 call sub_150 ; (BA21)
F000:B829 80 26 008B 33 and byte ptr ds:data_53e,33h ; (C000:008B=74h) '3'
F000:B82E 80 0E 008B 44 or byte ptr ds:data_53e,44h ; (C000:008B=74h) 'D'
F000:B833 8B 56 0E mov dx,[bp+0Eh]
F000:B836 E8 FD67 call sub_143 ; (B5A0)
F000:B839 73 05 jnc short loc_850 ; Jump if carry=0
F000:B83B E8 FD62 call sub_143 ; (B5A0)
F000:B83E 72 E1 jc loc_848 ; Jump if carry Set
F000:B840 loc_850: ; xref F000:B839
F000:B840 B9 0005 mov cx,5

F000:B843 locloop_851: ; xref F000:B871
F000:B843 51 push cx
F000:B844 8A F2 mov dh,dl
F000:B846 B2 4A mov dl,4Ah ; 'J'
F000:B848 8B F2 mov si,dx
F000:B84A 8A D6 mov dl,dh
F000:B84C B5 02 mov ch,2
F000:B84E 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B853 E8 02E6 call sub_155 ; (BB3C)
F000:B856 72 6E jc short loc_857 ; Jump if carry Set
F000:B858 BB 0042 mov bx,42h
F000:B85B B9 0007 mov cx,7
F000:B85E E8 0335 call sub_157 ; (BB96)
F000:B861 72 63 jc short loc_857 ; Jump if carry Set
F000:B863 BB 0042 mov bx,42h
F000:B866 F6 07 C0 test byte ptr [bx],0C0h
F000:B869 75 05 jnz short loc_852 ; Jump if not zero
F000:B86B B4 74 mov ah,74h ; 't'
F000:B86D E9 00B4 jmp loc_864 ; (B924)
F000:B870 loc_852: ; xref F000:B869
F000:B870 59 pop cx
F000:B871 E2 D0 loop locloop_851 ; Loop if cx > 0

F000:B873 B4 80 mov ah,80h
F000:B875 F6 07 08 test byte ptr [bx],8
F000:B878 75 59 jnz short loc_859 ; Jump if not zero
F000:B87A loc_853: ; xref F000:B81A, B81F
F000:B87A 32 F6 xor dh,dh ; Zero register
F000:B87C E8 01A2 call sub_150 ; (BA21)
F000:B87F 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B884 8B 56 0E mov dx,[bp+0Eh]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 172

F000:B887 B9 0005 mov cx,5

F000:B88A locloop_854: ; xref F000:B8CA
F000:B88A 51 push cx
F000:B88B 8A F2 mov dh,dl
F000:B88D B2 4A mov dl,4Ah ; 'J'
F000:B88F 8B F2 mov si,dx
F000:B891 8A D6 mov dl,dh
F000:B893 B5 02 mov ch,2
F000:B895 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B89A E8 029F call sub_155 ; (BB3C)
F000:B89D 72 27 jc short loc_857 ; Jump if carry Set
F000:B89F BB 0042 mov bx,42h
F000:B8A2 B9 0007 mov cx,7
F000:B8A5 E8 02EE call sub_157 ; (BB96)
F000:B8A8 72 1C jc short loc_857 ; Jump if carry Set
F000:B8AA BB 0042 mov bx,42h
F000:B8AD F6 07 C0 test byte ptr [bx],0C0h
F000:B8B0 75 17 jnz short loc_858 ; Jump if not zero
F000:B8B2 50 push ax
F000:B8B3 E8 37CE call sub_265 ; (F084)
F000:B8B6 75 09 jnz short loc_855 ; Jump if not zero
F000:B8B8 3C 04 cmp al,4
F000:B8BA 58 pop ax
F000:B8BB 75 05 jnz short loc_856 ; Jump if not zero
F000:B8BD B4 17 mov ah,17h
F000:B8BF EB 63 jmp short loc_864 ; (B924)
F000:B8C1 loc_855: ; xref F000:B8B6
F000:B8C1 58 pop ax
F000:B8C2 loc_856: ; xref F000:B8BB
F000:B8C2 B4 15 mov ah,15h
F000:B8C4 EB 5E jmp short loc_864 ; (B924)
F000:B8C6 loc_857: ; xref F000:B856, B861, B89D, B8A8
; B8FE, B909
F000:B8C6 59 pop cx
F000:B8C7 EB 75 jmp short loc_865 ; (B93E)
F000:B8C9 loc_858: ; xref F000:B8B0
F000:B8C9 59 pop cx
F000:B8CA E2 BE loop locloop_854 ; Loop if cx > 0

F000:B8CC B4 80 mov ah,80h
F000:B8CE F6 07 08 test byte ptr [bx],8
F000:B8D1 74 03 jz short loc_860 ; Jump if zero
F000:B8D3 loc_859: ; xref F000:B878
F000:B8D3 F9 stc ; Set carry flag
F000:B8D4 EB 68 jmp short loc_865 ; (B93E)
F000:B8D6 loc_860: ; xref F000:B8D1
F000:B8D6 B6 02 mov dh,2
F000:B8D8 E8 0146 call sub_150 ; (BA21)
F000:B8DB 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B8E0 80 0E 008B 80 or byte ptr ds:data_53e,80h ; (C000:008B=74h)
F000:B8E5 8B 56 0E mov dx,[bp+0Eh]
F000:B8E8 B9 0005 mov cx,5

F000:B8EB locloop_861: ; xref F000:B914
F000:B8EB 51 push cx
F000:B8EC 8A F2 mov dh,dl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 173

F000:B8EE B2 4A mov dl,4Ah ; 'J'
F000:B8F0 8B F2 mov si,dx
F000:B8F2 8A D6 mov dl,dh
F000:B8F4 B5 02 mov ch,2
F000:B8F6 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B8FB E8 023E call sub_155 ; (BB3C)
F000:B8FE 72 C6 jc loc_857 ; Jump if carry Set
F000:B900 BB 0042 mov bx,42h
F000:B903 B9 0007 mov cx,7
F000:B906 E8 028D call sub_157 ; (BB96)
F000:B909 72 BB jc loc_857 ; Jump if carry Set
F000:B90B BB 0042 mov bx,42h
F000:B90E F6 07 C0 test byte ptr [bx],0C0h
F000:B911 74 0F jz short loc_863 ; Jump if zero
F000:B913 59 pop cx
F000:B914 E2 D5 loop locloop_861 ; Loop if cx > 0

F000:B916 B4 80 mov ah,80h
F000:B918 F6 07 08 test byte ptr [bx],8
F000:B91B 75 02 jnz short loc_862 ; Jump if not zero
F000:B91D B4 02 mov ah,2
F000:B91F loc_862: ; xref F000:B91B
F000:B91F F9 stc ; Set carry flag
F000:B920 EB 1C jmp short loc_865 ; (B93E)
F000:B922 loc_863: ; xref F000:B911
F000:B922 B4 97 mov ah,97h
F000:B924 loc_864: ; xref F000:B86D, B8BF, B8C4
F000:B924 59 pop cx
F000:B925 32 F6 xor dh,dh ; Zero register
F000:B927 BB 0090 mov bx,90h
F000:B92A 03 DA add bx,dx
F000:B92C 88 27 mov [bx],ah
F000:B92E B0 04 mov al,4
F000:B930 F6 E2 mul dl ; ax = reg * al
F000:B932 8A C8 mov cl,al
F000:B934 B0 02 mov al,2
F000:B936 D2 E0 shl al,cl ; Shift w/zeros fill
F000:B938 08 06 008F or ds:data_54e,al ; (C000:008F=38h)
F000:B93C 32 E4 xor ah,ah ; Zero register
F000:B93E loc_865: ; xref F000:B7F4, B8C7, B8D4, B920
F000:B93E 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B942 loc_866: ; xref F000:B821
F000:B942 8B 56 0E mov dx,[bp+0Eh]
F000:B945 59 pop cx
F000:B946 5B pop bx
F000:B947 C3 retn
sub_146 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AF60, AFCE, B044, B113, B424
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_147 proc near
F000:B948 52 push dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 174

F000:B949 51 push cx
F000:B94A FA cli ; Disable interrupts
F000:B94B C6 06 0040 FF mov dsk_motor_tmr,0FFh ; (0040:0040=0F8h)
F000:B950 80 26 003F CF and dsk_motor_stat,0CFh ; (0040:003F=0)
F000:B955 8A EA mov ch,dl
F000:B957 C0 E2 04 shl dl,4 ; Shift w/zeros fill
F000:B95A 08 16 003F or dsk_motor_stat,dl ; (0040:003F=0)
F000:B95E 8A CD mov cl,ch
F000:B960 8A 16 003F mov dl,dsk_motor_stat ; (0040:003F=0)
F000:B964 FE C1 inc cl
F000:B966 D2 EA shr dl,cl ; Shift w/zeros fill
F000:B968 72 4F jc short loc_869 ; Jump if carry Set
F000:B96A B2 01 mov dl,1
F000:B96C FE C9 dec cl
F000:B96E D2 E2 shl dl,cl ; Shift w/zeros fill
F000:B970 08 16 003F or dsk_motor_stat,dl ; (0040:003F=0)
F000:B974 FB sti ; Enable interrupts
F000:B975 A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:B978 C0 C8 04 ror al,4 ; Rotate
F000:B97B 0C 0C or al,0Ch
F000:B97D BA 03F2 mov dx,3F2h
F000:B980 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:B981 B8 90FD mov ax,90FDh
F000:B984 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:B986 72 3E jc short loc_870 ; Jump if carry Set
F000:B988 8A 26 003F mov ah,dsk_motor_stat ; (0040:003F=0)
F000:B98C 1E push ds
F000:B98D 56 push si
F000:B98E 33 F6 xor si,si ; Zero register
F000:B990 8E DE mov ds,si
F000:B992 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B996 8A 44 0A mov al,[si+0Ah]
F000:B999 5E pop si
F000:B99A 1F pop ds
F000:B99B D0 E4 shl ah,1 ; Shift w/zeros fill
F000:B99D 73 08 jnc short loc_867 ; Jump if carry=0
F000:B99F 3C 08 cmp al,8
F000:B9A1 73 0A jae short loc_868 ; Jump if above or =
F000:B9A3 B0 08 mov al,8
F000:B9A5 EB 06 jmp short loc_868 ; (B9AD)
F000:B9A7 loc_867: ; xref F000:B99D
F000:B9A7 3C 05 cmp al,5
F000:B9A9 73 02 jae short loc_868 ; Jump if above or =
F000:B9AB B0 05 mov al,5
F000:B9AD loc_868: ; xref F000:B9A1, B9A5, B9A9, B9B5
F000:B9AD B9 208E mov cx,208Eh
F000:B9B0 E8 36B5 call sub_264 ; (F068)
F000:B9B3 FE C8 dec al
F000:B9B5 75 F6 jnz loc_868 ; Jump if not zero
F000:B9B7 EB 0D jmp short loc_870 ; (B9C6)
F000:B9B9 loc_869: ; xref F000:B968
F000:B9B9 FB sti ; Enable interrupts
F000:B9BA A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:B9BD C0 C8 04 ror al,4 ; Rotate
F000:B9C0 0C 0C or al,0Ch
F000:B9C2 BA 03F2 mov dx,3F2h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 175

F000:B9C5 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:B9C6 loc_870: ; xref F000:B986, B9B7
F000:B9C6 59 pop cx
F000:B9C7 5A pop dx
F000:B9C8 C3 retn
sub_147 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B04D, B0D4, B11B, B197
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_148 proc near
F000:B9C9 50 push ax
F000:B9CA 1E push ds
F000:B9CB 33 DB xor bx,bx ; Zero register
F000:B9CD 8E DB mov ds,bx
F000:B9CF C5 1E 0078 lds bx,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B9D3 8A 67 02 mov ah,[bx+2]
F000:B9D6 8A 47 04 mov al,[bx+4]

F000:B9D9 FE C0 inc al
F000:B9DB 1F pop ds
F000:B9DC BB 0042 mov bx,42h
F000:B9DF 3A 6F 03 cmp ch,[bx+3]
F000:B9E2 75 08 jne short loc_871 ; Jump if not equal
F000:B9E4 3A 77 04 cmp dh,[bx+4]
F000:B9E7 75 03 jne short loc_871 ; Jump if not equal
F000:B9E9 8A 47 05 mov al,[bx+5]
F000:B9EC loc_871: ; xref F000:B9E2, B9E7
F000:B9EC 88 26 0040 mov ds:data_36e,ah ; (C000:0040=0)
F000:B9F0 8A D8 mov bl,al
F000:B9F2 58 pop ax
F000:B9F3 C3 retn
sub_148 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B067, B120, B7EF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_149 proc near
F000:B9F4 56 push si
F000:B9F5 BE 0090 mov si,90h
F000:B9F8 32 F6 xor dh,dh ; Zero register
F000:B9FA 03 F2 add si,dx
F000:B9FC 8A 34 mov dh,[si]
F000:B9FE 8A 16 008B mov dl,ds:data_53e ; (C000:008B=74h)
F000:BA02 81 E2 C0C0 and dx,0C0C0h
F000:BA06 3A D6 cmp dl,dh
F000:BA08 74 12 je short loc_872 ; Jump if equal
F000:BA0A 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:BA0F 08 36 008B or ds:data_53e,dh ; (C000:008B=74h)
F000:BA13 80 E6 C0 and dh,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 176

F000:BA16 C0 C6 02 rol dh,2 ; Rotate
F000:BA19 E8 0005 call sub_150 ; (BA21)
F000:BA1C loc_872: ; xref F000:BA08
F000:BA1C 5E pop si
F000:BA1D 8B 56 0E mov dx,[bp+0Eh]
F000:BA20 C3 retn
sub_149 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B39C, B3FC, B826, B87C, B8D8, BA19
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_150 proc near
F000:BA21 50 push ax
F000:BA22 8A C6 mov al,dh
F000:BA24 BA 03F7 mov dx,3F7h
F000:BA27 EE out dx,al ; port 3F7h, dsk0 config ctrl
F000:BA28 58 pop ax
F000:BA29 C3 retn
sub_150 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:AF65, B047, B116
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_151 proc near
F000:BA2A 51 push cx
F000:BA2B E8 3656 call sub_265 ; (F084)
F000:BA2E B4 00 mov ah,0
F000:BA30 75 04 jnz short loc_873 ; Jump if not zero
F000:BA32 FE C8 dec al
F000:BA34 74 3C jz short loc_874 ; Jump if zero
F000:BA36 loc_873: ; xref F000:BA30
F000:BA36 8A 04 mov al,[si]
F000:BA38 24 07 and al,7
F000:BA3A 74 36 jz short loc_874 ; Jump if zero
F000:BA3C 3C 03 cmp al,3
F000:BA3E 74 32 je short loc_874 ; Jump if equal
F000:BA40 E8 0286 call sub_162 ; (BCC9)
F000:BA43 73 32 jnc short loc_875 ; Jump if carry=0
F000:BA45 BA 03F7 mov dx,3F7h
F000:BA48 EC in al,dx ; port 3F7h, dsk0 status C
F000:BA49 D0 E0 shl al,1 ; Shift w/zeros fill
F000:BA4B 73 2A jnc short loc_875 ; Jump if carry=0
F000:BA4D 80 24 EF and byte ptr [si],0EFh
F000:BA50 E8 F479 call sub_135 ; (AECC)
F000:BA53 72 22 jc short loc_875 ; Jump if carry Set
F000:BA55 8B 56 0E mov dx,[bp+0Eh]
F000:BA58 B5 01 mov ch,1
F000:BA5A E8 FBA6 call sub_144 ; (B603)
F000:BA5D 72 18 jc short loc_875 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 177

F000:BA5F B5 00 mov ch,0
F000:BA61 E8 FB9F call sub_144 ; (B603)
F000:BA64 72 11 jc short loc_875 ; Jump if carry Set
F000:BA66 B4 06 mov ah,6
F000:BA68 BA 03F7 mov dx,3F7h
F000:BA6B EC in al,dx ; port 3F7h, dsk0 status C
F000:BA6C D0 E0 shl al,1 ; Shift w/zeros fill
F000:BA6E 73 02 jnc short loc_874 ; Jump if carry=0
F000:BA70 B4 80 mov ah,80h
F000:BA72 loc_874: ; xref F000:BA34, BA3A, BA3E, BA6E
F000:BA72 0A E4 or ah,ah ; Zero ?
F000:BA74 74 01 jz short loc_875 ; Jump if zero
F000:BA76 F9 stc ; Set carry flag
F000:BA77 loc_875: ; xref F000:BA43, BA4B, BA53, BA5D
; BA64, BA74
F000:BA77 8B 56 0E mov dx,[bp+0Eh]
F000:BA7A 59 pop cx
F000:BA7B C3 retn
sub_151 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B0C8, B143
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_152 proc near
F000:BA7C 50 push ax
F000:BA7D 52 push dx
F000:BA7E FA cli ; Disable interrupts
F000:BA7F 8A C4 mov al,ah
F000:BA81 E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:BA83 EB 00 jmp short loc_876 ; (BA85)
F000:BA85 loc_876: ; xref F000:BA83
F000:BA85 EB 00 jmp short loc_877 ; (BA87)
F000:BA87 loc_877: ; xref F000:BA85
F000:BA87 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:BA89 EB 00 jmp short loc_878 ; (BA8B)
F000:BA8B loc_878: ; xref F000:BA89
F000:BA8B EB 00 jmp short loc_879 ; (BA8D)
F000:BA8D loc_879: ; xref F000:BA8B
F000:BA8D 8A C1 mov al,cl
F000:BA8F E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
F000:BA91 EB 00 jmp short loc_880 ; (BA93)
F000:BA93 loc_880: ; xref F000:BA91
F000:BA93 EB 00 jmp short loc_881 ; (BA95)
F000:BA95 loc_881: ; xref F000:BA93
F000:BA95 8A C5 mov al,ch
F000:BA97 E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
F000:BA99 EB 00 jmp short loc_882 ; (BA9B)
F000:BA9B loc_882: ; xref F000:BA99
F000:BA9B EB 00 jmp short loc_883 ; (BA9D)
F000:BA9D loc_883: ; xref F000:BA9B
F000:BA9D 8A C3 mov al,bl
F000:BA9F E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
F000:BAA1 EB 00 jmp short loc_884 ; (BAA3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 178

F000:BAA3 loc_884: ; xref F000:BAA1
F000:BAA3 EB 00 jmp short loc_885 ; (BAA5)
F000:BAA5 loc_885: ; xref F000:BAA3
F000:BAA5 8A C7 mov al,bh
F000:BAA7 E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
F000:BAA9 EB 00 jmp short loc_886 ; (BAAB)
F000:BAAB loc_886: ; xref F000:BAA9
F000:BAAB EB 00 jmp short loc_887 ; (BAAD)
F000:BAAD loc_887: ; xref F000:BAAB
F000:BAAD 8C C0 mov ax,es
F000:BAAF E6 81 out 81h,al ; port 81h, DMA page reg ch 2
F000:BAB1 EB 00 jmp short loc_888 ; (BAB3)
F000:BAB3 loc_888: ; xref F000:BAB1
F000:BAB3 EB 00 jmp short loc_889 ; (BAB5)
F000:BAB5 loc_889: ; xref F000:BAB3
F000:BAB5 B0 02 mov al,2
F000:BAB7 E6 0A out 0Ah,al ; port 0Ah, DMA-1 mask reg bit
F000:BAB9 FB sti ; Enable interrupts
F000:BABA 5A pop dx
F000:BABB 58 pop ax
F000:BABC C3 retn

sub_152 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B0A9, B13C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_153 proc near
F000:BABD 51 push cx
F000:BABE 33 C0 xor ax,ax ; Zero register
F000:BAC0 8C C1 mov cx,es
F000:BAC2 D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAC4 D0 D0 rcl al,1 ; Rotate thru carry
F000:BAC6 D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAC8 D0 D0 rcl al,1 ; Rotate thru carry
F000:BACA D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BACC D0 D0 rcl al,1 ; Rotate thru carry
F000:BACE D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAD0 D0 D0 rcl al,1 ; Rotate thru carry
F000:BAD2 8B 5E 0C mov bx,[bp+0Ch]
F000:BAD5 03 D9 add bx,cx
F000:BAD7 15 0000 adc ax,0
F000:BADA 8E C0 mov es,ax
F000:BADC 59 pop cx
F000:BADD 8B C1 mov ax,cx
F000:BADF 03 C3 add ax,bx
F000:BAE1 73 02 jnc short loc_ret_890 ; Jump if carry=0
F000:BAE3 B4 09 mov ah,9

F000:BAE5 loc_ret_890: ; xref F000:BAE1
F000:BAE5 C3 retn
sub_153 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 179

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BB48, BB4C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_154 proc near
F000:BAE6 8B C6 mov ax,si
F000:BAE8 8A E0 mov ah,al
F000:BAEA E8 007C call sub_156 ; (BB69)
F000:BAED FE CD dec ch
F000:BAEF 76 4A jbe short loc_ret_891 ; Jump if below or =
F000:BAF1 8B C6 mov ax,si
F000:BAF3 E8 0073 call sub_156 ; (BB69)
F000:BAF6 FE CD dec ch
F000:BAF8 76 41 jbe short loc_ret_891 ; Jump if below or =
F000:BAFA 8B C7 mov ax,di
F000:BAFC 8A E0 mov ah,al
F000:BAFE E8 0068 call sub_156 ; (BB69)
F000:BB01 FE CD dec ch
F000:BB03 76 36 jbe short loc_ret_891 ; Jump if below or =
F000:BB05 8B C7 mov ax,di
F000:BB07 E8 005F call sub_156 ; (BB69)
F000:BB0A FE CD dec ch
F000:BB0C 76 2D jbe short loc_ret_891 ; Jump if below or =
F000:BB0E 8B 46 00 mov ax,[bp]
F000:BB11 8A E0 mov ah,al
F000:BB13 E8 0053 call sub_156 ; (BB69)
F000:BB16 FE CD dec ch
F000:BB18 76 21 jbe short loc_ret_891 ; Jump if below or =
F000:BB1A 8B 46 00 mov ax,[bp]
F000:BB1D E8 0049 call sub_156 ; (BB69)
F000:BB20 FE CD dec ch
F000:BB22 76 17 jbe short loc_ret_891 ; Jump if below or =
F000:BB24 8A E3 mov ah,bl
F000:BB26 E8 0040 call sub_156 ; (BB69)
F000:BB29 FE CD dec ch
F000:BB2B 76 0E jbe short loc_ret_891 ; Jump if below or =
F000:BB2D 8A E7 mov ah,bh
F000:BB2F E8 0037 call sub_156 ; (BB69)
F000:BB32 FE CD dec ch
F000:BB34 76 05 jbe short loc_ret_891 ; Jump if below or =
F000:BB36 8A E1 mov ah,cl
F000:BB38 E8 002E call sub_156 ; (BB69)

F000:BB3B loc_ret_891: ; xref F000:BAEF, BAF8, BB03, BB0C
; BB18, BB22, BB2B, BB34
F000:BB3B C3 retn
sub_154 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B089, B180, B5AF, B5BE, B66B, B67D, B79A
; B7AD, B853, B89A, B8FB, BCC3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 180


sub_155 proc near
F000:BB3C F6 06 003E 80 test byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:BB41 74 09 jz short loc_892 ; Jump if zero
F000:BB43 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:BB48 E8 FF9B call sub_154 ; (BAE6)
F000:BB4B C3 retn
F000:BB4C loc_892: ; xref F000:BB41
F000:BB4C E8 FF97 call sub_154 ; (BAE6)
F000:BB4F 72 0F jc short loc_ret_894 ; Jump if carry Set
F000:BB51 B8 9001 mov ax,9001h
F000:BB54 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:BB56 FB sti ; Enable interrupts
F000:BB57 72 05 jc short loc_893 ; Jump if carry Set
F000:BB59 E8 017A call sub_163 ; (BCD6)
F000:BB5C 73 03 jnc short loc_895 ; Jump if carry=0
F000:BB5E loc_893: ; xref F000:BB57
F000:BB5E B4 80 mov ah,80h

F000:BB60 loc_ret_894: ; xref F000:BB4F
F000:BB60 C3 retn
F000:BB61 loc_895: ; xref F000:BB5C
F000:BB61 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:BB66 32 E4 xor ah,ah ; Zero register
F000:BB68 C3 retn
sub_155 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B48F, B496, B49F, B4B2, B4D2, B4D9, BAEA
; BAF3, BAFE, BB07, BB13, BB1D, BB26, BB2F
; BB38, BC4A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_156 proc near
F000:BB69 51 push cx
F000:BB6A 52 push dx
F000:BB6B B9 0002 mov cx,2
F000:BB6E E8 34F7 call sub_264 ; (F068)
F000:BB71 BA 03F4 mov dx,3F4h
F000:BB74 50 push ax
F000:BB75 B4 40 mov ah,40h ; '@'
F000:BB77 33 C9 xor cx,cx ; Zero register
F000:BB79 E8 33DE call sub_260 ; (EF5A)
F000:BB7C 72 12 jc short loc_896 ; Jump if carry Set
F000:BB7E B4 80 mov ah,80h
F000:BB80 33 C9 xor cx,cx ; Zero register
F000:BB82 E8 33F9 call sub_261 ; (EF7E)
F000:BB85 72 09 jc short loc_896 ; Jump if carry Set
F000:BB87 58 pop ax
F000:BB88 BA 03F5 mov dx,3F5h
F000:BB8B 8A C4 mov al,ah
F000:BB8D EE out dx,al ; port 3F5h, dsk0 controlr data
; al = 0Fh, Seek
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 181

F000:BB8E EB 03 jmp short loc_897 ; (BB93)
F000:BB90 loc_896: ; xref F000:BB7C, BB85
F000:BB90 58 pop ax
F000:BB91 B4 80 mov ah,80h
F000:BB93 loc_897: ; xref F000:BB8E
F000:BB93 5A pop dx
F000:BB94 59 pop cx
F000:BB95 C3 retn
sub_156 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B155, B18B, B5C9, B688, B70E, B7BB, B85E
; B8A5, B906
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_157 proc near
F000:BB96 52 push dx

F000:BB97 locloop_898: ; xref F000:BBA1
F000:BB97 51 push cx
F000:BB98 E8 001F call sub_158 ; (BBBA)
F000:BB9B 59 pop cx
F000:BB9C 72 1A jc short loc_900 ; Jump if carry Set
F000:BB9E 88 07 mov [bx],al
F000:BBA0 43 inc bx
F000:BBA1 E2 F4 loop locloop_898 ; Loop if cx > 0

F000:BBA3 B9 0002 mov cx,2
F000:BBA6 E8 34BF call sub_264 ; (F068)
F000:BBA9 BA 03F4 mov dx,3F4h
F000:BBAC EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BBAD A8 10 test al,10h
F000:BBAF 74 05 jz short loc_899 ; Jump if zero
F000:BBB1 B4 20 mov ah,20h ; ' '
F000:BBB3 F9 stc ; Set carry flag
F000:BBB4 EB 02 jmp short loc_900 ; (BBB8)
F000:BBB6 loc_899: ; xref F000:BBAF
F000:BBB6 32 E4 xor ah,ah ; Zero register
F000:BBB8 loc_900: ; xref F000:BB9C, BBB4
F000:BBB8 5A pop dx
F000:BBB9 C3 retn
sub_157 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B4B7, B4BE, B4DE, BB98, BC4F, BC58
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_158 proc near
F000:BBBA 52 push dx
F000:BBBB B9 0002 mov cx,2
F000:BBBE E8 34A7 call sub_264 ; (F068)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 182

F000:BBC1 BA 03F4 mov dx,3F4h
F000:BBC4 B4 80 mov ah,80h
F000:BBC6 33 C9 xor cx,cx ; Zero register
F000:BBC8 E8 33B3 call sub_261 ; (EF7E)
F000:BBCB B4 80 mov ah,80h
F000:BBCD 72 12 jc short loc_904 ; Jump if carry Set
F000:BBCF EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BBD0 A8 40 test al,40h ; '@'
F000:BBD2 75 05 jnz short loc_901 ; Jump if not zero
F000:BBD4 B4 20 mov ah,20h ; ' '
F000:BBD6 F9 stc ; Set carry flag
F000:BBD7 EB 08 jmp short loc_904 ; (BBE1)
F000:BBD9 loc_901: ; xref F000:BBD2
F000:BBD9 EB 00 jmp short loc_902 ; (BBDB)
F000:BBDB loc_902: ; xref F000:BBD9
F000:BBDB EB 00 jmp short loc_903 ; (BBDD)
F000:BBDD loc_903: ; xref F000:BBDB
F000:BBDD BA 03F5 mov dx,3F5h
F000:BBE0 EC in al,dx ; port 3F5h, dsk0 controlr data
F000:BBE1 loc_904: ; xref F000:BBCD, BBD7
F000:BBE1 5A pop dx
F000:BBE2 C3 retn
sub_158 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B190, B7C4
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_159 proc near
F000:BBE3 BB 0042 mov bx,42h
F000:BBE6 8B 1F mov bx,[bx]
F000:BBE8 F6 C3 C0 test bl,0C0h
F000:BBEB B4 00 mov ah,0
F000:BBED 74 33 jz short loc_ret_905 ; Jump if zero
F000:BBEF F6 C3 40 test bl,40h ; '@'
F000:BBF2 B4 20 mov ah,20h ; ' '
F000:BBF4 74 2C jz short loc_ret_905 ; Jump if zero
F000:BBF6 F6 C7 01 test bh,1
F000:BBF9 B4 02 mov ah,2
F000:BBFB 75 25 jnz short loc_ret_905 ; Jump if not zero
F000:BBFD F6 C7 02 test bh,2
F000:BC00 B4 03 mov ah,3
F000:BC02 75 1E jnz short loc_ret_905 ; Jump if not zero
F000:BC04 F6 C7 04 test bh,4
F000:BC07 B4 04 mov ah,4
F000:BC09 75 17 jnz short loc_ret_905 ; Jump if not zero
F000:BC0B F6 C7 10 test bh,10h
F000:BC0E B4 08 mov ah,8
F000:BC10 75 10 jnz short loc_ret_905 ; Jump if not zero
F000:BC12 F6 C7 20 test bh,20h ; ' '
F000:BC15 B4 10 mov ah,10h
F000:BC17 75 09 jnz short loc_ret_905 ; Jump if not zero
F000:BC19 F6 C7 80 test bh,80h
F000:BC1C B4 04 mov ah,4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 183

F000:BC1E 75 02 jnz short loc_ret_905 ; Jump if not zero
F000:BC20 B4 20 mov ah,20h ; ' '

F000:BC22 loc_ret_905: ; xref F000:BBED, BBF4, BBFB, BC02
; BC09, BC10, BC17, BC1E
F000:BC22 C3 retn
sub_159 endp

F000:BC23 loc_906: ; xref F000:AED1
F000:BC23 E8 0048 call sub_160 ; (BC6E)
F000:BC26 72 43 jc short loc_910 ; Jump if carry Set
F000:BC28 BA 03F4 mov dx,3F4h
F000:BC2B EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BC2C A8 80 test al,80h
F000:BC2E 74 04 jz short loc_907 ; Jump if zero
F000:BC30 A8 40 test al,40h ; '@'
F000:BC32 74 14 jz short loc_909 ; Jump if zero
F000:BC34 loc_907: ; xref F000:BC2E
F000:BC34 E8 0037 call sub_160 ; (BC6E)
F000:BC37 BA 03F4 mov dx,3F4h
F000:BC3A EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BC3B A8 80 test al,80h
F000:BC3D 74 04 jz short loc_908 ; Jump if zero
F000:BC3F A8 40 test al,40h ; '@'
F000:BC41 74 05 jz short loc_909 ; Jump if zero
F000:BC43 loc_908: ; xref F000:BC3D, BC67
F000:BC43 B4 20 mov ah,20h ; ' '
F000:BC45 F9 stc ; Set carry flag
F000:BC46 EB 23 jmp short loc_910 ; (BC6B)
F000:BC48 loc_909: ; xref F000:BC32, BC41
F000:BC48 B4 08 mov ah,8
F000:BC4A E8 FF1C call sub_156 ; (BB69)
F000:BC4D 72 1C jc short loc_910 ; Jump if carry Set
F000:BC4F E8 FF68 call sub_158 ; (BBBA)
F000:BC52 72 17 jc short loc_910 ; Jump if carry Set
F000:BC54 A2 0042 mov dsk_status_1,al ; (0040:0042=0C0h)
F000:BC57 50 push ax
F000:BC58 E8 FF5F call sub_158 ; (BBBA)
F000:BC5B A2 0043 mov dsk_status_2,al ; (0040:0043=0)
F000:BC5E 59 pop cx
F000:BC5F 72 0A jc short loc_910 ; Jump if carry Set
F000:BC61 80 E1 C0 and cl,0C0h
F000:BC64 80 F9 C0 cmp cl,0C0h
F000:BC67 75 DA jne loc_908 ; Jump if not equal
F000:BC69 32 E4 xor ah,ah ; Zero register
F000:BC6B loc_910: ; xref F000:BC26, BC46, BC4D, BC52
; BC5F
F000:BC6B E9 F266 jmp loc_707 ; (AED4)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BC23, BC34
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_160 proc near
F000:BC6E FA cli ; Disable interrupts
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 184

F000:BC6F 80 26 003F 7F and dsk_motor_stat,7Fh ; (0040:003F=0)
F000:BC74 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:BC79 A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:BC7C C0 C0 04 rol al,4 ; Rotate
F000:BC7F 24 FB and al,0FBh
F000:BC81 0C 08 or al,8
F000:BC83 BA 03F2 mov dx,3F2h
F000:BC86 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:BC87 B9 0001 mov cx,1
F000:BC8A E8 33DB call sub_264 ; (F068)
F000:BC8D 0C 0C or al,0Ch
F000:BC8F EE out dx,al ; port 3F2h, dsk0 contrl output
F000:BC90 B8 9001 mov ax,9001h
F000:BC93 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:BC95 FB sti ; Enable interrupts
F000:BC96 72 03 jc short loc_911 ; Jump if carry Set
F000:BC98 E8 003B call sub_163 ; (BCD6)
F000:BC9B loc_911: ; xref F000:BC96
F000:BC9B B4 80 mov ah,80h
F000:BC9D 72 07 jc short loc_ret_912 ; Jump if carry Set
F000:BC9F 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:BCA4 32 E4 xor ah,ah ; Zero register

F000:BCA6 loc_ret_912: ; xref F000:BC9D
F000:BCA6 C3 retn
sub_160 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B123
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_161 proc near
F000:BCA7 loc_913: ; xref F000:AED6
F000:BCA7 1E push ds
F000:BCA8 33 DB xor bx,bx ; Zero register
F000:BCAA 8E DB mov ds,bx
F000:BCAC C5 1E 0078 lds bx,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:BCB0 B0 03 mov al,3
F000:BCB2 8A 27 mov ah,[bx]
F000:BCB4 8B F0 mov si,ax
F000:BCB6 8A 47 01 mov al,[bx+1]
F000:BCB9 8B F8 mov di,ax
F000:BCBB B5 03 mov ch,3
F000:BCBD 1F pop ds
F000:BCBE 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:BCC3 E8 FE76 call sub_155 ; (BB3C)
F000:BCC6 E9 F210 jmp loc_708 ; (AED9)
sub_161 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 185

; Called from: F000:AF17, AF5A, AFC9, BA40
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_162 proc near
F000:BCC9 F9 stc ; Set carry flag
F000:BCCA C3 retn
sub_162 endp

F000:BCCB E8 B6 33 75 04 3C db 0E8h, 0B6h, 33h, 75h, 4, 3Ch
F000:BCD1 03 74 01 F9 C3 db 3, 74h, 1, 0F9h, 0C3h

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B4AB, BB59, BC98
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_163 proc near
F000:BCD6 BB 003E mov bx,3Eh
F000:BCD9 33 C9 xor cx,cx ; Zero register
F000:BCDB E8 32C4 call sub_262 ; (EFA2)
F000:BCDE 73 05 jnc short loc_ret_914 ; Jump if carry=0
F000:BCE0 33 C9 xor cx,cx ; Zero register
F000:BCE2 E8 32BD call sub_262 ; (EFA2)

F000:BCE5 loc_ret_914: ; xref F000:BCDE
F000:BCE5 C3 retn
sub_163 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:97CF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_164 proc near
F000:BCE6 E8 D11E call sub_31 ; (8E07)
F000:BCE9 FA cli ; Disable interrupts
F000:BCEA 55 push bp
F000:BCEB B9 004A mov cx,4Ah
F000:BCEE 2B E1 sub sp,cx
F000:BCF0 8B EC mov bp,sp
F000:BCF2 BC FD00 mov sp,0FD00h
F000:BCF5 55 push bp

F000:BCF6 locloop_915: ; xref F000:BCFB
F000:BCF6 C6 46 00 00 mov byte ptr [bp],0
F000:BCFA 45 inc bp
F000:BCFB E2 F9 loop locloop_915 ; Loop if cx > 0

F000:BCFD 5D pop bp
F000:BCFE B0 8E mov al,8Eh

F000:BD00 E8 319C call sub_257 ; (EE9F)
F000:BD03 A8 C0 test al,0C0h
F000:BD05 75 16 jnz short loc_917 ; Jump if not zero
F000:BD07 33 FF xor di,di ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 186

F000:BD09 B4 90 mov ah,90h
F000:BD0B loc_916: ; xref F000:BD19
F000:BD0B 8A C4 mov al,ah
F000:BD0D E8 318F call sub_257 ; (EE9F)
F000:BD10 88 43 10 mov [bp+di+10h],al
F000:BD13 47 inc di
F000:BD14 FE C4 inc ah
F000:BD16 80 FC C0 cmp ah,0C0h
F000:BD19 75 F0 jne loc_916 ; Jump if not equal
F000:BD1B EB 00 jmp short loc_917 ; (BD1D)
F000:BD1D loc_917: ; xref F000:BD05, BD1B
F000:BD1D FB sti ; Enable interrupts
F000:BD1E B4 0F mov ah,0Fh
F000:BD20 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:BD22 3C 07 cmp al,7
F000:BD24 74 02 je short loc_918 ; Jump if equal
F000:BD26 B0 03 mov al,3
F000:BD28 loc_918: ; xref F000:BD24
F000:BD28 B4 00 mov ah,0
F000:BD2A CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:BD2C B7 00 mov bh,0
F000:BD2E B4 03 mov ah,3
F000:BD30 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BD32 80 E5 9F and ch,9Fh
F000:BD35 80 CD 20 or ch,20h ; ' '
F000:BD38 B4 01 mov ah,1
F000:BD3A CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BD3C 2E: A0 E058 mov al,cs:data_149 ; (F000:E058=0FFh)
F000:BD40 0A C0 or al,al ; Zero ?
F000:BD42 BB C838 mov bx,0C838h
F000:BD45 74 09 jz short loc_919 ; Jump if zero
F000:BD47 BB C828 mov bx,0C828h
F000:BD4A BE D812 mov si,0D812h
F000:BD4D E8 0926 call sub_182 ; (C676)
F000:BD50 loc_919: ; xref F000:BD45
F000:BD50 BE D827 mov si,0D827h
F000:BD53 E8 0920 call sub_182 ; (C676)
F000:BD56 BE D83B mov si,0D83Bh
F000:BD59 E8 091A call sub_182 ; (C676)
F000:BD5C loc_920: ; xref F000:BD6E
F000:BD5C 83 C3 04 add bx,4
F000:BD5F loc_921: ; xref F000:BD70
F000:BD5F 2E: 8B 07 mov ax,cs:[bx]
F000:BD62 89 46 00 mov [bp],ax
F000:BD65 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:BD69 FF D0 call ax ;*
F000:BD6B 8B 5E 00 mov bx,[bp]
F000:BD6E 73 EC jnc loc_920 ; Jump if carry=0
F000:BD70 74 ED jz loc_921 ; Jump if zero
F000:BD72 0A C0 or al,al ; Zero ?
F000:BD74 74 17 jz short loc_922 ; Jump if zero
F000:BD76 FE C8 dec al
F000:BD78 74 27 jz short loc_923 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 187

F000:BD7A 1E push ds
F000:BD7B 33 C0 xor ax,ax ; Zero register
F000:BD7D 8E D8 mov ds,ax
assume ds:seg_a
F000:BD7F A1 0467 mov ax,@gen_io_ptr_ ; (0000:0467=522h)
F000:BD82 A3 0413 mov main_ram_size_,ax ; (0000:0413=280h)
F000:BD85 1F pop ds
F000:BD86 B8 0003 mov ax,3
F000:BD89 FF D0 call ax ;*
F000:BD8B EB 14 jmp short loc_923 ; (BDA1)
F000:BD8D loc_922: ; xref F000:BD74
F000:BD8D B7 00 mov bh,0
F000:BD8F B4 03 mov ah,3
F000:BD91 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BD93 80 E5 9F and ch,9Fh
F000:BD96 B4 01 mov ah,1
F000:BD98 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BD9A 8B E5 mov sp,bp
F000:BD9C 83 C4 4A add sp,4Ah
F000:BD9F 5D pop bp
F000:BDA0 C3 retn
F000:BDA1 loc_923: ; xref F000:BD78, BD8B
F000:BDA1 B4 0F mov ah,0Fh
F000:BDA3 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:BDA5 B4 00 mov ah,0
F000:BDA7 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:BDA9 FA cli ; Disable interrupts
F000:BDAA FC cld ; Clear direction
F000:BDAB B8 268A mov ax,268Ah
F000:BDAE E8 30FD call sub_258 ; (EEAE)
F000:BDB1 B8 828B mov ax,828Bh
F000:BDB4 E8 30F7 call sub_258 ; (EEAE)
F000:BDB7 B0 8D mov al,8Dh
F000:BDB9 E8 30E3 call sub_257 ; (EE9F)
F000:BDBC B0 8C mov al,8Ch
F000:BDBE E8 30DE call sub_257 ; (EE9F)
F000:BDC1 FB sti ; Enable interrupts
F000:BDC2 BB 0007 mov bx,7
F000:BDC5 BE D84E mov si,0D84Eh
F000:BDC8 E8 08AB call sub_182 ; (C676)
F000:BDCB B2 00 mov dl,0
F000:BDCD E8 0962 call sub_190 ; (C732)
F000:BDD0 B2 4E mov dl,4Eh ; 'N'
F000:BDD2 E8 095D call sub_190 ; (C732)
F000:BDD5 B6 00 mov dh,0
F000:BDD7 E8 096B call sub_191 ; (C745)
F000:BDDA B8 0EC9 mov ax,0EC9h
F000:BDDD CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDDF BA 004E mov dx,4Eh
F000:BDE2 B0 BB mov al,0BBh
F000:BDE4 E8 09AE call sub_195 ; (C795)
F000:BDE7 B6 02 mov dh,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 188

F000:BDE9 E8 0959 call sub_191 ; (C745)
F000:BDEC B8 0ECC mov ax,0ECCh
F000:BDEF CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDF1 B6 18 mov dh,18h
F000:BDF3 E8 094F call sub_191 ; (C745)
F000:BDF6 B8 0EC8 mov ax,0EC8h
F000:BDF9 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDFB BA 024E mov dx,24Eh
F000:BDFE B0 B9 mov al,0B9h
F000:BE00 E8 0992 call sub_195 ; (C795)
F000:BE03 BA 0228 mov dx,228h
F000:BE06 B0 CB mov al,0CBh
F000:BE08 E8 098A call sub_195 ; (C795)
F000:BE0B BA 064E mov dx,64Eh
F000:BE0E B0 B9 mov al,0B9h
F000:BE10 E8 0982 call sub_195 ; (C795)
F000:BE13 BA 0628 mov dx,628h
F000:BE16 B0 C8 mov al,0C8h
F000:BE18 E8 097A call sub_195 ; (C795)
F000:BE1B B8 09CD mov ax,9CDh
F000:BE1E B9 0025 mov cx,25h
F000:BE21 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:BE23 E8 133B call sub_210 ; (D161)
F000:BE26 E8 0667 call sub_177 ; (C490)
F000:BE29 B6 12 mov dh,12h
F000:BE2B E8 0926 call sub_192 ; (C754)
F000:BE2E B6 16 mov dh,16h
F000:BE30 E8 0921 call sub_192 ; (C754)
F000:BE33 E8 1837 call sub_221 ; (D66D)
F000:BE36 B4 05 mov ah,5
F000:BE38 CD 1A int 1Ah ; Real time clock ah=func 05h
; set date cx=year, dx=mon/day
F000:BE3A E8 186A call sub_222 ; (D6A7)
F000:BE3D B4 03 mov ah,3
F000:BE3F CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:BE41 80 66 14 F3 and byte ptr [bp+14h],0F3h
F000:BE45 80 4E 14 01 or byte ptr [bp+14h],1
F000:BE49 BB 0007 mov bx,7
F000:BE4C BA 033E mov dx,33Eh
F000:BE4F 1E push ds
F000:BE50 33 C0 xor ax,ax ; Zero register
F000:BE52 8E D8 mov ds,ax
F000:BE54 A1 0467 mov ax,@gen_io_ptr_ ; (0000:0467=522h)
F000:BE57 1F pop ds
F000:BE58 89 46 15 mov [bp+15h],ax
F000:BE5B E8 0920 call sub_194 ; (C77E)
F000:BE5E BA 043E mov dx,43Eh
F000:BE61 B4 88 mov ah,88h
F000:BE63 CD 15 int 15h ; General services, ah=func 88h
; get extended mem size/1Kb= ax
F000:BE65 89 46 17 mov [bp+17h],ax
F000:BE68 E8 0913 call sub_194 ; (C77E)
F000:BE6B CD 11 int 11h ; Put equipment bits in ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 189

F000:BE6D 80 66 14 FD and byte ptr [bp+14h],0FDh
F000:BE71 24 02 and al,2
F000:BE73 74 04 jz short loc_924 ; Jump if zero
F000:BE75 80 4E 14 02 or byte ptr [bp+14h],2
F000:BE79 loc_924: ; xref F000:BE73
F000:BE79 8A D0 mov dl,al
F000:BE7B 9C pushf ; Push flags
F000:BE7C FA cli ; Disable interrupts
F000:BE7D B8 F000 mov ax,seg_d
F000:BE80 50 push ax
F000:BE81 9D popf ; Pop flags
F000:BE82 9C pushf ; Push flags
F000:BE83 58 pop ax
F000:BE84 80 E4 F0 and ah,0F0h
F000:BE87 74 0E jz short loc_925 ; Jump if zero
F000:BE89 66| 33 C0 xor eax,eax ; Zero register
F000:BE8C CD 11 int 11h ; Put equipment bits in ax
F000:BE8E 66| C1 E0 08 shl eax,8 ; Shift w/zeros fill
F000:BE92 73 03 jnc short loc_925 ; Jump if carry=0
F000:BE94 80 CA 01 or dl,1
F000:BE97 loc_925: ; xref F000:BE87, BE92
F000:BE97 9D popf ; Pop flags
F000:BE98 8A C2 mov al,dl
F000:BE9A BE C7E8 mov si,0C7E8h
F000:BE9D E8 093C call sub_198 ; (C7DC)
F000:BEA0 BA 053D mov dx,53Dh
F000:BEA3 E8 07C9 call sub_181 ; (C66F)
F000:BEA6 1E push ds
F000:BEA7 33 C0 xor ax,ax ; Zero register
F000:BEA9 8E D8 mov ds,ax
F000:BEAB A1 0490 mov ax,word ptr hdsk0_media_st_ ; (0000:0490=702h)
F000:BEAE 1F pop ds
F000:BEAF 24 07 and al,7
F000:BEB1 74 10 jz short loc_926 ; Jump if zero
F000:BEB3 3C 02 cmp al,2
F000:BEB5 74 0C je short loc_926 ; Jump if equal
F000:BEB7 3C 03 cmp al,3
F000:BEB9 B0 01 mov al,1
F000:BEBB 74 06 jz short loc_926 ; Jump if zero
F000:BEBD 8A 46 10 mov al,[bp+10h]
F000:BEC0 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:BEC3 loc_926: ; xref F000:BEB1, BEB5, BEBB
F000:BEC3 50 push ax
F000:BEC4 BA 0516 mov dx,516h
F000:BEC7 E8 0572 call sub_174 ; (C43C)
F000:BECA 58 pop ax
F000:BECB 86 C4 xchg al,ah
F000:BECD 24 07 and al,7
F000:BECF 74 0F jz short loc_927 ; Jump if zero
F000:BED1 3C 02 cmp al,2
F000:BED3 74 0B je short loc_927 ; Jump if equal
F000:BED5 3C 03 cmp al,3
F000:BED7 B0 01 mov al,1
F000:BED9 74 05 jz short loc_927 ; Jump if zero
F000:BEDB 8A 46 10 mov al,[bp+10h]
F000:BEDE 24 0F and al,0Fh
F000:BEE0 loc_927: ; xref F000:BECF, BED3, BED9
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 190

F000:BEE0 50 push ax
F000:BEE1 BA 0616 mov dx,616h
F000:BEE4 E8 0555 call sub_174 ; (C43C)
F000:BEE7 58 pop ax
F000:BEE8 80 66 14 3F and byte ptr [bp+14h],3Fh ; '?'
F000:BEEC 0A C0 or al,al ; Zero ?
F000:BEEE 74 08 jz short loc_928 ; Jump if zero
F000:BEF0 0A E4 or ah,ah ; Zero ?
F000:BEF2 74 04 jz short loc_928 ; Jump if zero
F000:BEF4 80 4E 14 40 or byte ptr [bp+14h],40h ; '@'
F000:BEF8 loc_928: ; xref F000:BEEE, BEF2
F000:BEF8 C0 E4 04 shl ah,4 ; Shift w/zeros fill
F000:BEFB 0A C4 or al,ah
F000:BEFD 88 46 10 mov [bp+10h],al
F000:BF00 C7 46 06 0000 mov word ptr [bp+6],0
F000:BF05 8A 46 12 mov al,[bp+12h]
F000:BF08 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:BF0B 24 0F and al,0Fh
F000:BF0D 3C 0F cmp al,0Fh
F000:BF0F 75 03 jne short loc_929 ; Jump if not equal
F000:BF11 8A 46 19 mov al,[bp+19h]
F000:BF14 loc_929: ; xref F000:BF0F
F000:BF14 BA 0816 mov dx,816h
F000:BF17 E8 036B call sub_166 ; (C285)
F000:BF1A C7 46 06 0009 mov word ptr [bp+6],9
F000:BF1F 8A 46 12 mov al,[bp+12h]
F000:BF22 24 0F and al,0Fh
F000:BF24 3C 0F cmp al,0Fh
F000:BF26 75 03 jne short loc_930 ; Jump if not equal
F000:BF28 8A 46 1A mov al,[bp+1Ah]
F000:BF2B loc_930: ; xref F000:BF26
F000:BF2B BA 0916 mov dx,916h
F000:BF2E E8 0354 call sub_166 ; (C285)
F000:BF31 CD 11 int 11h ; Put equipment bits in ax
F000:BF33 1E push ds
F000:BF34 33 F6 xor si,si ; Zero register
F000:BF36 8E DE mov ds,si
F000:BF38 8C CE mov si,cs
F000:BF3A 39 36 0042 cmp vectr_10h_seg,si ; (0000:0042=0D3D1h)
F000:BF3E 1F pop ds
F000:BF3F 74 02 jz short loc_931 ; Jump if zero
F000:BF41 B0 00 mov al,0
F000:BF43 loc_931: ; xref F000:BF3F
F000:BF43 24 30 and al,30h ; '0'
F000:BF45 80 66 14 CF and byte ptr [bp+14h],0CFh
F000:BF49 08 46 14 or [bp+14h],al
F000:BF4C F6 46 37 02 test byte ptr [bp+37h],2
F000:BF50 75 02 jnz short loc_932 ; Jump if not zero
F000:BF52 B0 40 mov al,40h ; '@'
F000:BF54 loc_932: ; xref F000:BF50
F000:BF54 C0 C0 04 rol al,4 ; Rotate
F000:BF57 BE C7F0 mov si,0C7F0h
F000:BF5A E8 087F call sub_198 ; (C7DC)
F000:BF5D BA 0A16 mov dx,0A16h
F000:BF60 E8 070C call sub_181 ; (C66F)
F000:BF63 F6 46 37 01 test byte ptr [bp+37h],1
F000:BF67 BE DA7F mov si,0DA7Fh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 191

F000:BF6A 74 03 jz short loc_933 ; Jump if zero
F000:BF6C BE DA6E mov si,0DA6Eh
F000:BF6F loc_933: ; xref F000:BF6A
F000:BF6F BA 0B16 mov dx,0B16h
F000:BF72 E8 06FA call sub_181 ; (C66F)
F000:BF75 E8 07F3 call sub_193 ; (C76B)
F000:BF78 F6 46 38 10 test byte ptr [bp+38h],10h
F000:BF7C BE DAC7 mov si,0DAC7h
F000:BF7F 74 03 jz short loc_934 ; Jump if zero
F000:BF81 BE DAC2 mov si,0DAC2h
F000:BF84 loc_934: ; xref F000:BF7F
F000:BF84 BA 0D16 mov dx,0D16h
F000:BF87 E8 06E5 call sub_181 ; (C66F)
F000:BF8A F6 46 38 40 test byte ptr [bp+38h],40h ; '@'
F000:BF8E BE DA9C mov si,0DA9Ch
F000:BF91 74 03 jz short loc_935 ; Jump if zero
F000:BF93 BE DA90 mov si,0DA90h
F000:BF96 loc_935: ; xref F000:BF91
F000:BF96 BA 0E16 mov dx,0E16h
F000:BF99 E8 06D3 call sub_181 ; (C66F)
F000:BF9C E8 1202 call sub_211 ; (D1A1)
F000:BF9F BB C848 mov bx,0C848h
F000:BFA2 EB 03 jmp short loc_937 ; (BFA7)
F000:BFA4 loc_936: ; xref F000:BFCA
F000:BFA4 83 C3 04 add bx,4
F000:BFA7 loc_937: ; xref F000:BFA2, BFCC
F000:BFA7 2E: 8B 07 mov ax,cs:[bx]
F000:BFAA 89 46 00 mov [bp],ax
F000:BFAD loc_938: ; xref F000:C002
F000:BFAD 53 push bx
F000:BFAE B7 00 mov bh,0
F000:BFB0 B4 03 mov ah,3
F000:BFB2 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BFB4 80 E5 9F and ch,9Fh
F000:BFB7 80 CD 20 or ch,20h ; ' '
F000:BFBA B4 01 mov ah,1
F000:BFBC CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BFBE 5B pop bx
F000:BFBF 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:BFC3 53 push bx
F000:BFC4 FF D0 call ax ;*
F000:BFC6 58 pop ax
F000:BFC7 8B 5E 00 mov bx,[bp]
F000:BFCA 73 D8 jnc loc_936 ; Jump if carry=0
F000:BFCC 74 D9 jz loc_937 ; Jump if zero
F000:BFCE 50 push ax
F000:BFCF B7 00 mov bh,0
F000:BFD1 B4 03 mov ah,3
F000:BFD3 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BFD5 80 E5 9F and ch,9Fh
F000:BFD8 B4 01 mov ah,1
F000:BFDA CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BFDC BE DE70 mov si,0DE70h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 192

F000:BFDF BA 1406 mov dx,1406h
F000:BFE2 E8 068A call sub_181 ; (C66F)
F000:BFE5 5B pop bx
F000:BFE6 loc_939: ; xref F000:BFFD, C022
F000:BFE6 B4 00 mov ah,0
F000:BFE8 CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:BFEA 3C 79 cmp al,79h ; 'y'
F000:BFEC 74 36 je short loc_944 ; Jump if equal
F000:BFEE 3C 59 cmp al,59h ; 'Y'
F000:BFF0 74 32 je short loc_944 ; Jump if equal
F000:BFF2 3C 6E cmp al,6Eh ; 'n'
F000:BFF4 74 0E je short loc_941 ; Jump if equal
F000:BFF6 3C 4E cmp al,4Eh ; 'N'
F000:BFF8 74 0A je short loc_941 ; Jump if equal
F000:BFFA 80 FC 01 cmp ah,1
F000:BFFD 75 E7 jne loc_939 ; Jump if not equal
F000:BFFF loc_940: ; xref F000:C00E
F000:BFFF E8 048E call sub_177 ; (C490)
F000:C002 EB A9 jmp short loc_938 ; (BFAD)
F000:C004 loc_941: ; xref F000:BFF4, BFF8
F000:C004 B4 0E mov ah,0Eh
F000:C006 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C008 loc_942: ; xref F000:C012
F000:C008 B4 00 mov ah,0
F000:C00A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C00C 3C 0D cmp al,0Dh
F000:C00E 74 EF je loc_940 ; Jump if equal
F000:C010 3C 08 cmp al,8
F000:C012 75 F4 jne loc_942 ; Jump if not equal
F000:C014 loc_943: ; xref F000:C034
F000:C014 B4 0E mov ah,0Eh
F000:C016 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C018 B8 0E20 mov ax,0E20h
F000:C01B CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C01D B8 0E08 mov ax,0E08h
F000:C020 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C022 EB C2 jmp short loc_939 ; (BFE6)
F000:C024 loc_944: ; xref F000:BFEC, BFF0
F000:C024 B4 0E mov ah,0Eh
F000:C026 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C028 loc_945: ; xref F000:C032
F000:C028 B4 00 mov ah,0
F000:C02A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C02C 3C 0D cmp al,0Dh
F000:C02E 74 06 je short loc_946 ; Jump if equal
F000:C030 3C 08 cmp al,8
F000:C032 75 F4 jne loc_945 ; Jump if not equal
F000:C034 EB DE jmp short loc_943 ; (C014)
F000:C036 loc_946: ; xref F000:C02E
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 193

F000:C036 E8 11BA call sub_212 ; (D1F3)
F000:C039 FA cli ; Disable interrupts
F000:C03A BE 0010 mov si,10h
F000:C03D B0 90 mov al,90h
F000:C03F loc_947: ; xref F000:C04D
F000:C03F 8A 22 mov ah,[bp+si]
F000:C041 3C B2 cmp al,0B2h
F000:C043 74 03 je short loc_948 ; Jump if equal
F000:C045 E8 2E66 call sub_258 ; (EEAE)
F000:C048 loc_948: ; xref F000:C043
F000:C048 46 inc si
F000:C049 FE C0 inc al
F000:C04B 3C C0 cmp al,0C0h
F000:C04D 75 F0 jne loc_947 ; Jump if not equal
F000:C04F 33 C9 xor cx,cx ; Zero register
F000:C051 33 D2 xor dx,dx ; Zero register
F000:C053 B8 9090 mov ax,9090h
F000:C056 loc_949: ; xref F000:C063
F000:C056 E8 2E46 call sub_257 ; (EE9F)
F000:C059 8A C8 mov cl,al
F000:C05B 03 D1 add dx,cx
F000:C05D FE C4 inc ah
F000:C05F 8A C4 mov al,ah
F000:C061 3C AE cmp al,0AEh
F000:C063 75 F1 jne loc_949 ; Jump if not equal
F000:C065 8A E6 mov ah,dh
F000:C067 E8 2E44 call sub_258 ; (EEAE)
F000:C06A 8A E2 mov ah,dl
F000:C06C B0 AF mov al,0AFh
F000:C06E E8 2E3D call sub_258 ; (EEAE)
F000:C071 B8 008E mov ax,8Eh
F000:C074 E8 2E37 call sub_258 ; (EEAE)
F000:C077 B8 008F mov ax,8Fh
F000:C07A E8 2E31 call sub_258 ; (EEAE)
F000:C07D 1E push ds
F000:C07E 33 C0 xor ax,ax ; Zero register
F000:C080 8E D8 mov ds,ax
F000:C082 A2 0472 mov byte ptr warm_boot_flag_,al ; (0000:0472=0)
F000:C085 1F pop ds
F000:C086 EA F000FFF0 jmp far ptr power_on_reset ; (FFF0)
sub_164 endp

F000:C08B BE 12 D8 EB 08 BE db 0BEh, 12h, 0D8h, 0EBh, 8, 0BEh
F000:C091 27 D8 EB 03 BE 3B db 27h, 0D8h, 0EBh, 3, 0BEh, 3Bh
F000:C097 D8 56 E8 CD 05 E8 db 0D8h, 56h, 0E8h, 0CDh, 5, 0E8h
F000:C09D 23 06 5E 9C E8 D2 db 23h, 6, 5Eh, 9Ch, 0E8h, 0D2h
F000:C0A3 05 9D 2E 8A 04 C3 db 5, 9Dh, 2Eh, 8Ah, 4, 0C3h
F000:C0A9 8A 46 14 24 30 F6 db 8Ah, 46h, 14h, 24h, 30h, 0F6h
F000:C0AF 46 37 02 75 02 B0 db 46h, 37h, 2, 75h, 2, 0B0h
F000:C0B5 40 C0 C0 04 BE FA db 40h, 0C0h, 0C0h, 4, 0BEh, 0FAh
F000:C0BB C7 E8 1D 07 8B DE db 0C7h, 0E8h, 1Dh, 7, 8Bh, 0DEh
F000:C0C1 BE 30 DC BA 16 0A db 0BEh, 30h, 0DCh, 0BAh, 16h, 0Ah
F000:C0C7 E8 8F 03 9C 80 66 db 0E8h, 8Fh, 3, 9Ch, 80h, 66h
F000:C0CD 37 FD 0A C0 74 04 db 37h, 0FDh, 0Ah, 0C0h, 74h, 4
F000:C0D3 80 4E 37 02 db 80h, 4Eh, 37h, 2
F000:C0D7 loc_950:
F000:C0D7 24 30 and al,30h ; '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 194

F000:C0D9 80 66 14 CF and byte ptr [bp+14h],0CFh
F000:C0DD 08 46 14 or [bp+14h],al
F000:C0E0 9D popf ; Pop flags
F000:C0E1 C3 retn
F000:C0E2 BF 37 00 BE 5B DD db 0BFh, 37h, 0, 0BEh, 5Bh, 0DDh
F000:C0E8 BA 16 0B B0 01 EB db 0BAh, 16h, 0Bh, 0B0h, 1, 0EBh
F000:C0EE 00 84 03 BB 10 C9 db 0, 84h, 3, 0BBh, 10h, 0C9h
F000:C0F4 74 21 BB 08 C9 EB db 74h, 21h, 0BBh, 8, 0C9h, 0EBh
F000:C0FA 1C 03 C1 7E C1 03 db 1Ch, 3, 0C1h, 7Eh, 0C1h, 3
F000:C100 C1 7E C1 FB C0 83 db 0C1h, 7Eh, 0C1h, 0FBh, 0C0h, 83h
F000:C106 C1 FB C0 83 C1 84 db 0C1h, 0FBh, 0C0h, 83h, 0C1h, 84h
F000:C10C 03 BB 03 C1 74 05 db 3, 0BBh, 3, 0C1h, 74h, 5
F000:C112 BB FB C0 EB 00 db 0BBh, 0FBh, 0C0h, 0EBh, 0
F000:C117 loc_951:
F000:C117 57 push di
F000:C118 50 push ax
F000:C119 E8 033D call sub_175 ; (C459)
F000:C11C 59 pop cx
F000:C11D 5F pop di
F000:C11E 9C pushf ; Push flags
F000:C11F F6 D1 not cl
F000:C121 20 0B and [bp+di],cl
F000:C123 0A C0 or al,al ; Zero ?
F000:C125 74 04 jz short loc_952 ; Jump if zero
F000:C127 F6 D1 not cl
F000:C129 08 0B or [bp+di],cl
F000:C12B loc_952: ; xref F000:C125
F000:C12B 9D popf ; Pop flags
F000:C12C C3 retn
F000:C12D 56 E8 31 05 E8 84 db 56h, 0E8h, 31h, 5, 0E8h, 84h
F000:C133 05 5E 9C E8 36 05 db 5, 5Eh, 9Ch, 0E8h, 36h, 5
F000:C139 9D 2E 8A 04 C3 46 db 9Dh, 2Eh, 8Ah, 4, 0C3h, 46h
F000:C13F C1 65 C1 46 C1 65 db 0C1h, 65h, 0C1h, 46h, 0C1h, 65h
F000:C145 C1 3E C1 6A C1 3E db 0C1h, 3Eh, 0C1h, 6Ah, 0C1h, 3Eh
F000:C14B C1 6A C1 BF 38 00 db 0C1h, 6Ah, 0C1h, 0BFh, 38h, 0
F000:C151 BE AD DD BA 16 0D db 0BEh, 0ADh, 0DDh, 0BAh, 16h, 0Dh
F000:C157 B0 10 84 03 BB 3E db 0B0h, 10h, 84h, 3, 0BBh, 3Eh
F000:C15D C1 74 B7 BB 46 C1 db 0C1h, 74h, 0B7h, 0BBh, 46h, 0C1h
F000:C163 EB B2 BE C7 DA EB db 0EBh, 0B2h, 0BEh, 0C7h, 0DAh, 0EBh
F000:C169 C3 BE C2 DA EB BE db 0C3h, 0BEh, 0C2h, 0DAh, 0EBh, 0BEh
F000:C16F BF 38 00 BE 2E DE db 0BFh, 38h, 0, 0BEh, 2Eh, 0DEh
F000:C175 BA 16 0C B0 20 E8 db 0BAh, 16h, 0Ch, 0B0h, 20h, 0E8h
F000:C17B 8E FF C3 BE 90 DA db 8Eh, 0FFh, 0C3h, 0BEh, 90h, 0DAh
F000:C181 EB AA BE 9C DA EB db 0EBh, 0AAh, 0BEh, 9Ch, 0DAh, 0EBh
F000:C187 A5 BF 38 00 BE 2E db 0A5h, 0BFh, 38h, 0, 0BEh, 2Eh
F000:C18D DE BA 16 0E B0 40 db 0DEh, 0BAh, 16h, 0Eh, 0B0h, 40h
F000:C193 E9 75 FF 8A 46 10 db 0E9h, 75h, 0FFh, 8Ah, 46h, 10h
F000:C199 C0 E8 04 BA 16 05 db 0C0h, 0E8h, 4, 0BAh, 16h, 5
F000:C19F E8 A6 02 9C 80 66 db 0E8h, 0A6h, 2, 9Ch, 80h, 66h
F000:C1A5 10 0F C0 E0 04 EB db 10h, 0Fh, 0C0h, 0E0h, 4, 0EBh
F000:C1AB 0E 8A 46 10 BA 16 db 0Eh, 8Ah, 46h, 10h, 0BAh, 16h
F000:C1B1 06 E8 93 02 9C 80 db 6, 0E8h, 93h, 2, 9Ch, 80h
F000:C1B7 66 10 F0 50 8A 66 db 66h, 10h, 0F0h, 50h, 8Ah, 66h
F000:C1BD 10 08 46 10 80 66 db 10h, 8, 46h, 10h, 80h, 66h
F000:C1C3 14 3F 0A C0 74 08 db 14h, 3Fh, 0Ah, 0C0h, 74h, 8
F000:C1C9 0A E4 74 04 80 4E db 0Ah, 0E4h, 74h, 4, 80h, 4Eh
F000:C1CF 14 db 14h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 195

F000:C1D0 40 db 40h
F000:C1D1 loc_953:
F000:C1D1 58 pop ax
F000:C1D2 9D popf ; Pop flags
F000:C1D3 C3 retn
F000:C1D4 C7 46 06 00 00 8A db 0C7h, 46h, 6, 0, 0, 8Ah
F000:C1DA 46 12 C0 E8 04 24 db 46h, 12h, 0C0h, 0E8h, 4, 24h
F000:C1E0 0F 3C 0F 75 03 8A db 0Fh, 3Ch, 0Fh, 75h, 3, 8Ah
F000:C1E6 46 19 BA 16 08 E8 db 46h, 19h, 0BAh, 16h, 8, 0E8h
F000:C1EC 50 00 9C 3C 0F 73 db 50h, 0, 9Ch, 3Ch, 0Fh, 73h
F000:C1F2 10 C0 E0 04 80 66 db 10h, 0C0h, 0E0h, 4, 80h, 66h
F000:C1F8 12 0F 08 46 12 C6 db 12h, 0Fh, 8, 46h, 12h, 0C6h
F000:C1FE 46 19 00 9D C3 db 46h, 19h, 0, 9Dh, 0C3h
F000:C203 loc_954:
F000:C203 80 4E 12 F0 or byte ptr [bp+12h],0F0h
F000:C207 88 46 19 mov [bp+19h],al
F000:C20A 9D popf ; Pop flags
F000:C20B C3 retn
F000:C20C C7 46 06 09 00 8A db 0C7h, 46h, 6, 9, 0, 8Ah
F000:C212 46 12 24 0F 3C 0F db 46h, 12h, 24h, 0Fh, 3Ch, 0Fh
F000:C218 75 03 8A 46 1A BA db 75h, 3, 8Ah, 46h, 1Ah, 0BAh
F000:C21E 16 09 E8 1B 00 9C db 16h, 9, 0E8h, 1Bh, 0, 9Ch
F000:C224 3C 0F 73 0D 80 66 db 3Ch, 0Fh, 73h, 0Dh, 80h, 66h
F000:C22A 12 F0 08 46 12 C6 db 12h, 0F0h, 8, 46h, 12h, 0C6h
F000:C230 46 1A 00 9D C3 db 46h, 1Ah, 0, 9Dh, 0C3h
F000:C235 loc_955:
F000:C235 80 4E 12 0F or byte ptr [bp+12h],0Fh
F000:C239 88 46 1A mov [bp+1Ah],al
F000:C23C 9D popf ; Pop flags
F000:C23D C3 retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_165 proc near
F000:C23E C6 46 09 FF mov byte ptr [bp+9],0FFh
F000:C242 89 56 04 mov [bp+4],dx
F000:C245 BE DCD4 mov si,0DCD4h
F000:C248 E8 023A call sub_176 ; (C485)
F000:C24B loc_956: ; xref F000:C26C, C270, C27A, C27E
F000:C24B 88 46 08 mov [bp+8],al
F000:C24E E8 003E call sub_167 ; (C28F)
F000:C251 8A 46 08 mov al,[bp+8]
F000:C254 9C pushf ; Push flags
F000:C255 73 29 jnc short loc_959 ; Jump if carry=0
F000:C257 74 27 jz short loc_959 ; Jump if zero
F000:C259 80 FC 01 cmp ah,1
F000:C25C 74 22 je short loc_959 ; Jump if equal
F000:C25E 9D popf ; Pop flags
F000:C25F 80 FC 49 cmp ah,49h ; 'I'
F000:C262 74 0E je short loc_958 ; Jump if equal
F000:C264 loc_957: ; xref F000:C268
F000:C264 FE C0 inc al
F000:C266 3C 0F cmp al,0Fh
F000:C268 74 FA je loc_957 ; Jump if equal
F000:C26A 3C 30 cmp al,30h ; '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 196

F000:C26C 75 DD jne loc_956 ; Jump if not equal
F000:C26E B0 00 mov al,0
F000:C270 EB D9 jmp short loc_956 ; (C24B)
F000:C272 loc_958: ; xref F000:C262, C276
F000:C272 FE C8 dec al
F000:C274 3C 0F cmp al,0Fh
F000:C276 74 FA je loc_958 ; Jump if equal
F000:C278 3C FF cmp al,0FFh
F000:C27A 75 CF jne loc_956 ; Jump if not equal
F000:C27C B0 2F mov al,2Fh ; '/'
F000:C27E EB CB jmp short loc_956 ; (C24B)
F000:C280 loc_959: ; xref F000:C255, C257, C25C
F000:C280 E8 020D call sub_177 ; (C490)
F000:C283 9D popf ; Pop flags
F000:C284 C3 retn
sub_165 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BF17, BF2E
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_166 proc near
F000:C285 C6 46 09 00 mov byte ptr [bp+9],0
F000:C289 89 56 04 mov [bp+4],dx
F000:C28C 88 46 08 mov [bp+8],al

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C24E

sub_167:
F000:C28F B4 00 mov ah,0
F000:C291 8A 46 08 mov al,[bp+8]
F000:C294 3C 2F cmp al,2Fh ; '/'
F000:C296 75 3D jne short loc_963 ; Jump if not equal
F000:C298 E8 0149 call sub_171 ; (C3E4)
F000:C29B 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C29F 74 28 je short loc_962 ; Jump if equal
F000:C2A1 BB C938 mov bx,0C938h
F000:C2A4 50 push ax
F000:C2A5 loc_960: ; xref F000:C2C6
F000:C2A5 83 C3 04 add bx,4
F000:C2A8 loc_961: ; xref F000:C2C1
F000:C2A8 58 pop ax
F000:C2A9 2E: 8B 07 mov ax,cs:[bx]
F000:C2AC 89 46 02 mov [bp+2],ax
F000:C2AF 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:C2B3 FF D0 call ax ;*
F000:C2B5 9C pushf ; Push flags
F000:C2B6 50 push ax
F000:C2B7 E8 012A call sub_171 ; (C3E4)
F000:C2BA 58 pop ax
F000:C2BB 8B 5E 02 mov bx,[bp+2]
F000:C2BE 80 FC 4B cmp ah,4Bh ; 'K'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 197

F000:C2C1 74 E5 je loc_961 ; Jump if equal
F000:C2C3 80 FC 4D cmp ah,4Dh ; 'M'
F000:C2C6 74 DD je loc_960 ; Jump if equal
F000:C2C8 9D popf ; Pop flags
F000:C2C9 loc_962: ; xref F000:C29F
F000:C2C9 9C pushf ; Push flags
F000:C2CA BE DB54 mov si,0DB54h
F000:C2CD 8B 56 04 mov dx,[bp+4]
F000:C2D0 E8 039C call sub_181 ; (C66F)
F000:C2D3 9D popf ; Pop flags
F000:C2D4 C3 retn
F000:C2D5 loc_963: ; xref F000:C296
F000:C2D5 3C 00 cmp al,0
F000:C2D7 75 26 jne short loc_965 ; Jump if not equal
F000:C2D9 E8 0136 call sub_172 ; (C412)
F000:C2DC BE DA7F mov si,0DA7Fh
F000:C2DF 8B 56 04 mov dx,[bp+4]
F000:C2E2 E8 037D call sub_179 ; (C662)
F000:C2E5 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C2E9 74 03 je short loc_964 ; Jump if equal
F000:C2EB E8 03CA call sub_183 ; (C6B8)
F000:C2EE loc_964: ; xref F000:C2E9
F000:C2EE 9C pushf ; Push flags
F000:C2EF 50 push ax
F000:C2F0 E8 012D call sub_173 ; (C420)
F000:C2F3 58 pop ax
F000:C2F4 BE DA7F mov si,0DA7Fh
F000:C2F7 8B 56 04 mov dx,[bp+4]
F000:C2FA E8 0372 call sub_181 ; (C66F)
F000:C2FD 9D popf ; Pop flags
F000:C2FE C3 retn
F000:C2FF loc_965: ; xref F000:C2D7
F000:C2FF 50 push ax
F000:C300 E8 010F call sub_172 ; (C412)
F000:C303 B8 0E20 mov ax,0E20h
F000:C306 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C308 58 pop ax
F000:C309 50 push ax
F000:C30A E8 040D call sub_188 ; (C71A)
F000:C30D 58 pop ax
F000:C30E 48 dec ax
F000:C30F C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:C312 05 E401 add ax,0E401h
F000:C315 53 push bx
F000:C316 8B D8 mov bx,ax
F000:C318 2E: 8B 07 mov ax,cs:[bx]
F000:C31B 89 46 40 mov [bp+40h],ax
F000:C31E 2E: 8A 47 02 mov al,cs:[bx+2]
F000:C322 88 46 42 mov [bp+42h],al
F000:C325 2E: 8B 47 05 mov ax,cs:[bx+5]
F000:C329 89 46 43 mov [bp+43h],ax
F000:C32C 2E: 8B 47 0C mov ax,cs:[bx+0Ch]
F000:C330 89 46 45 mov [bp+45h],ax
F000:C333 2E: 8A 47 0E mov al,cs:[bx+0Eh]
F000:C337 88 46 47 mov [bp+47h],al
F000:C33A 5B pop bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 198

F000:C33B E8 001F call sub_168 ; (C35D)
F000:C33E 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C342 74 03 je short loc_966 ; Jump if equal
F000:C344 E8 0371 call sub_183 ; (C6B8)
F000:C347 loc_966: ; xref F000:C342
F000:C347 9C pushf ; Push flags
F000:C348 50 push ax
F000:C349 E8 00D4 call sub_173 ; (C420)
F000:C34C B8 0E20 mov ax,0E20h
F000:C34F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C351 8A 46 08 mov al,[bp+8]
F000:C354 E8 03C1 call sub_187 ; (C718)
F000:C357 E8 0008 call sub_169 ; (C362)
F000:C35A 58 pop ax
F000:C35B 9D popf ; Pop flags
F000:C35C C3 retn
sub_166 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C33B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_168 proc near
F000:C35D BB 0070 mov bx,70h
F000:C360 EB 03 jmp short loc_967 ; (C365)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C357, C40E

sub_169:
F000:C362 BB 0007 mov bx,7
F000:C365 loc_967: ; xref F000:C360
F000:C365 8A 46 47 mov al,[bp+47h]
F000:C368 B4 00 mov ah,0
F000:C36A 8A 56 42 mov dl,[bp+42h]
F000:C36D F6 E2 mul dl ; ax = reg * al
F000:C36F 8B 56 40 mov dx,[bp+40h]
F000:C372 F7 E2 mul dx ; dx:ax = reg * ax
F000:C374 B9 0800 mov cx,800h
F000:C377 3B D1 cmp dx,cx
F000:C379 72 05 jb short loc_968 ; Jump if below
F000:C37B B8 FFFF mov ax,0FFFFh
F000:C37E EB 0C jmp short loc_969 ; (C38C)
F000:C380 loc_968: ; xref F000:C379
F000:C380 F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:C382 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:C384 3B CA cmp cx,dx
F000:C386 77 04 ja short loc_969 ; Jump if above
F000:C388 40 inc ax
F000:C389 75 01 jnz short loc_969 ; Jump if not zero
F000:C38B 48 dec ax
F000:C38C loc_969: ; xref F000:C37E, C386, C389
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 199

F000:C38C 89 46 48 mov [bp+48h],ax
F000:C38F 8B 56 04 mov dx,[bp+4]
F000:C392 80 C2 12 add dl,12h
F000:C395 8B 46 40 mov ax,[bp+40h]
F000:C398 E8 003A call sub_170 ; (C3D5)
F000:C39B 8A 46 42 mov al,[bp+42h]
F000:C39E B4 00 mov ah,0
F000:C3A0 E8 0032 call sub_170 ; (C3D5)
F000:C3A3 8B 46 43 mov ax,[bp+43h]
F000:C3A6 E8 002C call sub_170 ; (C3D5)
F000:C3A9 8B 46 45 mov ax,[bp+45h]
F000:C3AC E8 0026 call sub_170 ; (C3D5)
F000:C3AF 8A 46 47 mov al,[bp+47h]
F000:C3B2 B4 00 mov ah,0
F000:C3B4 E8 001E call sub_170 ; (C3D5)
F000:C3B7 8B 46 48 mov ax,[bp+48h]
F000:C3BA 40 inc ax
F000:C3BB 75 10 jnz short loc_971 ; Jump if not zero
F000:C3BD B4 02 mov ah,2
F000:C3BF CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C3C1 B9 0005 mov cx,5

F000:C3C4 locloop_970: ; xref F000:C3C9
F000:C3C4 B8 0E3F mov ax,0E3Fh
F000:C3C7 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C3C9 E2 F9 loop locloop_970 ; Loop if cx > 0

F000:C3CB EB 04 jmp short loc_972 ; (C3D1)
F000:C3CD loc_971: ; xref F000:C3BB
F000:C3CD 48 dec ax
F000:C3CE E8 0004 call sub_170 ; (C3D5)
F000:C3D1 loc_972: ; xref F000:C3CB
F000:C3D1 E8 0332 call sub_186 ; (C706)
F000:C3D4 C3 retn
sub_168 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C398, C3A0, C3A6, C3AC, C3B4, C3CE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_170 proc near
F000:C3D5 52 push dx
F000:C3D6 50 push ax
F000:C3D7 B4 02 mov ah,2
F000:C3D9 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C3DB 58 pop ax
F000:C3DC E8 033B call sub_188 ; (C71A)
F000:C3DF 5A pop dx
F000:C3E0 80 C2 06 add dl,6
F000:C3E3 C3 retn
sub_170 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 200



;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C298, C2B7
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_171 proc near
F000:C3E4 E8 0039 call sub_173 ; (C420)
F000:C3E7 BE DB54 mov si,0DB54h
F000:C3EA E8 0275 call sub_179 ; (C662)
F000:C3ED 8B 76 06 mov si,[bp+6]
F000:C3F0 8B 42 1B mov ax,[bp+si+1Bh]
F000:C3F3 89 46 40 mov [bp+40h],ax
F000:C3F6 8A 42 1D mov al,[bp+si+1Dh]
F000:C3F9 88 46 42 mov [bp+42h],al
F000:C3FC 8B 42 1E mov ax,[bp+si+1Eh]
F000:C3FF 89 46 43 mov [bp+43h],ax
F000:C402 8B 42 21 mov ax,[bp+si+21h]
F000:C405 89 46 45 mov [bp+45h],ax
F000:C408 8A 42 23 mov al,[bp+si+23h]
F000:C40B 88 46 47 mov [bp+47h],al
F000:C40E E8 FF51 call sub_169 ; (C362)
F000:C411 C3 retn
sub_171 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C2D9, C300
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_172 proc near
F000:C412 BE DA46 mov si,0DA46h
F000:C415 BA 0727 mov dx,727h
F000:C418 E8 0247 call sub_179 ; (C662)
F000:C41B BB 0070 mov bx,70h
F000:C41E EB 0C jmp short loc_973 ; (C42C)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C2F0, C349, C3E4

sub_173:
F000:C420 BE DA46 mov si,0DA46h
F000:C423 BA 0727 mov dx,727h
F000:C426 E8 0246 call sub_181 ; (C66F)
F000:C429 BB 0007 mov bx,7
F000:C42C loc_973: ; xref F000:C41E
F000:C42C 8B 56 04 mov dx,[bp+4]
F000:C42F B4 02 mov ah,2
F000:C431 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C433 B9 0038 mov cx,38h
F000:C436 B8 0920 mov ax,920h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 201

F000:C439 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C43B C3 retn
sub_172 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BEC7, BEE4
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_174 proc near
F000:C43C 24 0F and al,0Fh
F000:C43E BE C804 mov si,0C804h
F000:C441 E8 0398 call sub_198 ; (C7DC)
F000:C444 E8 0228 call sub_181 ; (C66F)
F000:C447 C3 retn
sub_174 endp

F000:C448 24 0F BE 0E C8 E8 db 24h, 0Fh, 0BEh, 0Eh, 0C8h, 0E8h
F000:C44E 8C 03 8B DE BE 82 db 8Ch, 3, 8Bh, 0DEh, 0BEh, 82h
F000:C454 DC E8 01 00 C3 db 0DCh, 0E8h, 1, 0, 0C3h

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C119
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_175 proc near
F000:C459 E8 0029 call sub_176 ; (C485)
F000:C45C loc_974: ; xref F000:C47C
F000:C45C 83 C3 04 add bx,4
F000:C45F loc_975: ; xref F000:C47E
F000:C45F 2E: 8B 07 mov ax,cs:[bx]
F000:C462 89 46 02 mov [bp+2],ax
F000:C465 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:C469 FF D0 call ax ;*
F000:C46B 9C pushf ; Push flags
F000:C46C 73 12 jnc short loc_976 ; Jump if carry=0
F000:C46E 74 10 jz short loc_976 ; Jump if zero
F000:C470 80 FC 01 cmp ah,1
F000:C473 74 0B je short loc_976 ; Jump if equal
F000:C475 9D popf ; Pop flags
F000:C476 8B 5E 02 mov bx,[bp+2]
F000:C479 80 FC 51 cmp ah,51h ; 'Q'
F000:C47C 74 DE je loc_974 ; Jump if equal
F000:C47E EB DF jmp short loc_975 ; (C45F)
F000:C480 loc_976: ; xref F000:C46C, C46E, C473
F000:C480 E8 000D call sub_177 ; (C490)
F000:C483 9D popf ; Pop flags
F000:C484 C3 retn
sub_175 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 202

; SUBROUTINE
;
; Called from: F000:C248, C459, D48F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_176 proc near
F000:C485 50 push ax
F000:C486 52 push dx
F000:C487 BA 1301 mov dx,1301h
F000:C48A E8 01D5 call sub_179 ; (C662)
F000:C48D 5A pop dx
F000:C48E 58 pop ax
F000:C48F C3 retn
sub_176 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE26, BFFF, C280, C480, D49C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_177 proc near
F000:C490 50 push ax
F000:C491 53 push bx
F000:C492 51 push cx
F000:C493 52 push dx
F000:C494 BA 1301 mov dx,1301h
F000:C497 BB 0070 mov bx,70h
F000:C49A loc_977: ; xref F000:C4AB
F000:C49A B4 02 mov ah,2
F000:C49C CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C49E B9 0031 mov cx,31h
F000:C4A1 B8 0920 mov ax,920h
F000:C4A4 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C4A6 FE C6 inc dh
F000:C4A8 80 FE 16 cmp dh,16h
F000:C4AB 75 ED jne loc_977 ; Jump if not equal
F000:C4AD 5A pop dx
F000:C4AE 59 pop cx
F000:C4AF 5B pop bx
F000:C4B0 58 pop ax
F000:C4B1 C3 retn
sub_177 endp

F000:C4B2 BE CC DA E9 75 FC db 0BEh, 0CCh, 0DAh, 0E9h, 75h, 0FCh
F000:C4B8 BE DD DA E9 6F FC db 0BEh, 0DDh, 0DAh, 0E9h, 6Fh, 0FCh
F000:C4BE BE EE DA E9 69 FC db 0BEh, 0EEh, 0DAh, 0E9h, 69h, 0FCh
F000:C4C4 BE FF DA E9 63 FC db 0BEh, 0FFh, 0DAh, 0E9h, 63h, 0FCh
F000:C4CA BE 43 DB E9 5D FC db 0BEh, 43h, 0DBh, 0E9h, 5Dh, 0FCh
F000:C4D0 BE 32 DB E9 57 FC db 0BEh, 32h, 0DBh, 0E9h, 57h, 0FCh
F000:C4D6 BE 21 DB E9 51 FC db 0BEh, 21h, 0DBh, 0E9h, 51h, 0FCh
F000:C4DC BE 10 DB E9 4B FC db 0BEh, 10h, 0DBh, 0E9h, 4Bh, 0FCh
F000:C4E2 BE 6E DA E9 45 FC db 0BEh, 6Eh, 0DAh, 0E9h, 45h, 0FCh
F000:C4E8 BE 7F DA E9 3F FC db 0BEh, 7Fh, 0DAh, 0E9h, 3Fh, 0FCh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 203

F000:C4EE BA 12 00 BE 05 00 db 0BAh, 12h, 0, 0BEh, 5, 0
F000:C4F4 E8 70 00 E3 06 8B db 0E8h, 70h, 0, 0E3h, 6, 8Bh
F000:C4FA 76 06 89 52 1B 9C db 76h, 6, 89h, 52h, 1Bh, 9Ch
F000:C500 80 FC 4B 75 02 B4 db 80h, 0FCh, 4Bh, 75h, 2, 0B4h
F000:C506 48 db 48h
F000:C507 loc_978:
F000:C507 9D popf ; Pop flags
F000:C508 C3 retn
F000:C509 BA 18 00 BE 03 00 db 0BAh, 18h, 0, 0BEh, 3, 0
F000:C50F E8 55 00 E3 52 8B db 0E8h, 55h, 0, 0E3h, 52h, 8Bh
F000:C515 76 06 88 52 1D 80 db 76h, 6, 88h, 52h, 1Dh, 80h
F000:C51B FA 08 C6 42 20 00 db 0FAh, 8, 0C6h, 42h, 20h, 0
F000:C521 76 43 C6 42 20 08 db 76h, 43h, 0C6h, 42h, 20h, 8
F000:C527 C3 BA 1E 00 BE 05 db 0C3h, 0BAh, 1Eh, 0, 0BEh, 5
F000:C52D 00 E8 36 00 E3 33 db 0, 0E8h, 36h, 0, 0E3h, 33h
F000:C533 8B 76 06 89 52 1E db 8Bh, 76h, 6, 89h, 52h, 1Eh
F000:C539 C3 BA 24 00 BE 05 db 0C3h, 0BAh, 24h, 0, 0BEh, 5
F000:C53F 00 E8 24 00 E3 21 db 0, 0E8h, 24h, 0, 0E3h, 21h
F000:C545 8B 76 06 89 52 21 db 8Bh, 76h, 6, 89h, 52h, 21h
F000:C54B C3 BA 2A 00 BE 03 db 0C3h, 0BAh, 2Ah, 0, 0BEh, 3
F000:C551 00 E8 12 00 E3 06 db 0, 0E8h, 12h, 0, 0E3h, 6
F000:C557 8B 76 06 88 52 23 db 8Bh, 76h, 6, 88h, 52h, 23h
F000:C55D 9C 80 FC 4D 75 02 db 9Ch, 80h, 0FCh, 4Dh, 75h, 2
F000:C563 B4 db 0B4h
F000:C564 50 db 50h
F000:C565 loc_979:
F000:C565 9D popf ; Pop flags
F000:C566 C3 retn
F000:C567 03 56 04 8B CE 52 db 3, 56h, 4, 8Bh, 0CEh, 52h
F000:C56D 4A 41 41 51 52 B6 db 4Ah, 41h, 41h, 51h, 52h, 0B6h
F000:C573 07 BB 70 00 E8 28 db 7, 0BBh, 70h, 0, 0E8h, 28h
F000:C579 0F 5A 59 B3 F0 E8 db 0Fh, 5Ah, 59h, 0B3h, 0F0h, 0E8h
F000:C57F 21 0F B4 03 CD 10 db 21h, 0Fh, 0B4h, 3, 0CDh, 10h
F000:C585 5A 51 B4 01 80 E5 db 5Ah, 51h, 0B4h, 1, 80h, 0E5h
F000:C58B 9F CD 10 db 9Fh, 0CDh, 10h
F000:C58E loc_980: ; xref F000:C600, C60D, C619
F000:C58E 52 push dx
F000:C58F B4 02 mov ah,2
F000:C591 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C593 33 FF xor di,di ; Zero register
F000:C595 loc_981: ; xref F000:C5A0, C5AA, C5B1, C5E2
F000:C595 B4 00 mov ah,0
F000:C597 CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C599 80 FC 0E cmp ah,0Eh
F000:C59C 75 15 jne short loc_983 ; Jump if not equal
F000:C59E 0B FF or di,di ; Zero ?
F000:C5A0 74 F3 jz loc_981 ; Jump if zero
F000:C5A2 4F dec di
F000:C5A3 B9 0001 mov cx,1
F000:C5A6 loc_982: ; xref F000:C5F8
F000:C5A6 B4 0E mov ah,0Eh
F000:C5A8 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C5AA E3 E9 jcxz loc_981 ; Jump if cx=0
F000:C5AC B8 0920 mov ax,920h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 204

F000:C5AF CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C5B1 EB E2 jmp short loc_981 ; (C595)
F000:C5B3 loc_983: ; xref F000:C59C
F000:C5B3 80 FC 4D cmp ah,4Dh ; 'M'
F000:C5B6 74 4F je short loc_988 ; Jump if equal
F000:C5B8 80 FC 50 cmp ah,50h ; 'P'
F000:C5BB 74 4A je short loc_988 ; Jump if equal
F000:C5BD 80 FC 4B cmp ah,4Bh ; 'K'
F000:C5C0 74 38 je short loc_986 ; Jump if equal
F000:C5C2 80 FC 48 cmp ah,48h ; 'H'
F000:C5C5 74 33 je short loc_986 ; Jump if equal
F000:C5C7 80 FC 49 cmp ah,49h ; 'I'
F000:C5CA 74 47 je short loc_990 ; Jump if equal
F000:C5CC 80 FC 51 cmp ah,51h ; 'Q'
F000:C5CF 74 42 je short loc_990 ; Jump if equal
F000:C5D1 80 FC 01 cmp ah,1
F000:C5D4 74 3D je short loc_990 ; Jump if equal
F000:C5D6 80 FC 1C cmp ah,1Ch
F000:C5D9 75 09 jne short loc_985 ; Jump if not equal
F000:C5DB B4 4D mov ah,4Dh ; 'M'
F000:C5DD EB 28 jmp short loc_988 ; (C607)
F000:C5DF loc_984: ; xref F000:C5E6, C5EA, C5EE
F000:C5DF E8 01D3 call sub_197 ; (C7B5)
F000:C5E2 EB B1 jmp short loc_981 ; (C595)
F000:C5E4 loc_985: ; xref F000:C5D9
F000:C5E4 3C 30 cmp al,30h ; '0'
F000:C5E6 72 F7 jb loc_984 ; Jump if below
F000:C5E8 3C 39 cmp al,39h ; '9'
F000:C5EA 77 F3 ja loc_984 ; Jump if above
F000:C5EC 3B F7 cmp si,di
F000:C5EE 74 EF je loc_984 ; Jump if equal
F000:C5F0 88 43 0A mov [bp+di+0Ah],al
F000:C5F3 47 inc di
F000:C5F4 8B CE mov cx,si
F000:C5F6 2B CF sub cx,di
F000:C5F8 EB AC jmp short loc_982 ; (C5A6)
F000:C5FA loc_986: ; xref F000:C5C0, C5C5
F000:C5FA E8 002F call sub_178 ; (C62C)
F000:C5FD E3 03 jcxz short loc_987 ; Jump if cx=0
F000:C5FF 5A pop dx
F000:C600 EB 8C jmp short loc_980 ; (C58E)
F000:C602 loc_987: ; xref F000:C5FD
F000:C602 3B E4 cmp sp,sp
F000:C604 F9 stc ; Set carry flag
F000:C605 EB 18 jmp short loc_992 ; (C61F)
F000:C607 loc_988: ; xref F000:C5B6, C5BB, C5DD
F000:C607 E8 0022 call sub_178 ; (C62C)
F000:C60A E3 04 jcxz short loc_989 ; Jump if cx=0
F000:C60C 5A pop dx
F000:C60D E9 FF7E jmp loc_980 ; (C58E)
F000:C610 loc_989: ; xref F000:C60A
F000:C610 F8 clc ; Clear carry flag
F000:C611 EB 0C jmp short loc_992 ; (C61F)
F000:C613 loc_990: ; xref F000:C5CA, C5CF, C5D4
F000:C613 E8 0016 call sub_178 ; (C62C)
F000:C616 E3 04 jcxz short loc_991 ; Jump if cx=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 205

F000:C618 5A pop dx
F000:C619 E9 FF72 jmp loc_980 ; (C58E)
F000:C61C loc_991: ; xref F000:C616
F000:C61C 0B E4 or sp,sp ; Zero ?
F000:C61E F9 stc ; Set carry flag
F000:C61F loc_992: ; xref F000:C605, C611
F000:C61F 59 pop cx
F000:C620 59 pop cx
F000:C621 50 push ax
F000:C622 9C pushf ; Push flags
F000:C623 B4 01 mov ah,1
F000:C625 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:C627 9D popf ; Pop flags
F000:C628 58 pop ax
F000:C629 8B CF mov cx,di
F000:C62B C3 retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C5FA, C607, C613
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_178 proc near
F000:C62C 50 push ax
F000:C62D 56 push si
F000:C62E 8B CF mov cx,di
F000:C630 E3 2D jcxz short loc_995 ; Jump if cx=0
F000:C632 33 F6 xor si,si ; Zero register
F000:C634 33 C0 xor ax,ax ; Zero register

F000:C636 locloop_993: ; xref F000:C64A
F000:C636 BA 000A mov dx,0Ah
F000:C639 F7 E2 mul dx ; dx:ax = reg * ax
F000:C63B 70 1D jo short loc_994 ; Jump if overflow=1
F000:C63D 8A 52 0A mov dl,[bp+si+0Ah]
F000:C640 46 inc si
F000:C641 80 EA 30 sub dl,30h ; '0'
F000:C644 B6 00 mov dh,0
F000:C646 03 C2 add ax,dx
F000:C648 72 10 jc short loc_994 ; Jump if carry Set
F000:C64A E2 EA loop locloop_993 ; Loop if cx > 0

F000:C64C 8B D0 mov dx,ax
F000:C64E 5E pop si
F000:C64F 56 push si
F000:C650 83 FE 05 cmp si,5
F000:C653 74 0A je short loc_995 ; Jump if equal
F000:C655 3D 00FF cmp ax,0FFh
F000:C658 76 05 jbe short loc_995 ; Jump if below or =
F000:C65A loc_994: ; xref F000:C63B, C648
F000:C65A E8 0158 call sub_197 ; (C7B5)
F000:C65D 8B CF mov cx,di
F000:C65F loc_995: ; xref F000:C630, C653, C658
F000:C65F 5E pop si
F000:C660 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 206

F000:C661 C3 retn
sub_178 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C2E2, C3EA, C418, C48A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_179 proc near
F000:C662 53 push bx
F000:C663 BB 0070 mov bx,70h
F000:C666 52 push dx
F000:C667 EB 19 jmp short loc_997 ; (C682)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_180:
F000:C669 53 push bx
F000:C66A BB 0070 mov bx,70h
F000:C66D EB 0B jmp short loc_996 ; (C67A)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:BEA3, BF60, BF72, BF87, BF99, BFE2, C2D0
; C2FA, C426, C444, C77A, D167, D170, D179
; D186, D190, D19D

sub_181:
F000:C66F 53 push bx
F000:C670 BB 0007 mov bx,7
F000:C673 52 push dx
F000:C674 EB 0C jmp short loc_997 ; (C682)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:BD4D, BD53, BD59, BDC8

sub_182:
F000:C676 53 push bx
F000:C677 BB 0007 mov bx,7
F000:C67A loc_996: ; xref F000:C66D
F000:C67A 52 push dx
F000:C67B 2E: 8B 14 mov dx,cs:[si]
F000:C67E 86 D6 xchg dl,dh
F000:C680 46 inc si
F000:C681 46 inc si
F000:C682 loc_997: ; xref F000:C667, C674
F000:C682 51 push cx
F000:C683 50 push ax
F000:C684 loc_998: ; xref F000:C696, C69E, C6A6, C6B1
F000:C684 B4 02 mov ah,2
F000:C686 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C688 2E: 8A 04 mov al,cs:[si]
F000:C68B 46 inc si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 207

F000:C68C 0A C0 or al,al ; Zero ?
F000:C68E 74 23 jz short loc_1002 ; Jump if zero
F000:C690 3C 0D cmp al,0Dh
F000:C692 75 04 jne short loc_999 ; Jump if not equal
F000:C694 B2 01 mov dl,1
F000:C696 EB EC jmp short loc_998 ; (C684)
F000:C698 loc_999: ; xref F000:C692
F000:C698 3C 0A cmp al,0Ah
F000:C69A 75 04 jne short loc_1000 ; Jump if not equal
F000:C69C FE C6 inc dh
F000:C69E EB E4 jmp short loc_998 ; (C684)
F000:C6A0 loc_1000: ; xref F000:C69A
F000:C6A0 3C 08 cmp al,8
F000:C6A2 75 04 jne short loc_1001 ; Jump if not equal
F000:C6A4 FE CA dec dl
F000:C6A6 EB DC jmp short loc_998 ; (C684)
F000:C6A8 loc_1001: ; xref F000:C6A2
F000:C6A8 B4 09 mov ah,9
F000:C6AA B9 0001 mov cx,1
F000:C6AD CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C6AF FE C2 inc dl
F000:C6B1 EB D1 jmp short loc_998 ; (C684)
F000:C6B3 loc_1002: ; xref F000:C68E
F000:C6B3 58 pop ax
F000:C6B4 59 pop cx
F000:C6B5 5A pop dx
F000:C6B6 5B pop bx
F000:C6B7 C3 retn
sub_179 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C2EB, C344, D498
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_183 proc near
F000:C6B8 53 push bx
F000:C6B9 51 push cx
F000:C6BA BB 4951 mov bx,4951h
F000:C6BD B9 0101 mov cx,101h
F000:C6C0 EB 08 jmp short loc_1003 ; (C6CA)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_184:
F000:C6C2 53 push bx
F000:C6C3 51 push cx
F000:C6C4 BB 1C1C mov bx,1C1Ch
F000:C6C7 B9 1C1C mov cx,1C1Ch
F000:C6CA loc_1003: ; xref F000:C6C0, C6F5
F000:C6CA B4 00 mov ah,0
F000:C6CC CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C6CE 80 FC 4D cmp ah,4Dh ; 'M'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 208

F000:C6D1 74 2B je short loc_1006 ; Jump if equal
F000:C6D3 80 FC 50 cmp ah,50h ; 'P'
F000:C6D6 74 26 je short loc_1006 ; Jump if equal
F000:C6D8 80 FC 4B cmp ah,4Bh ; 'K'
F000:C6DB 74 20 je short loc_1005 ; Jump if equal
F000:C6DD 80 FC 48 cmp ah,48h ; 'H'
F000:C6E0 74 1B je short loc_1005 ; Jump if equal
F000:C6E2 3A E7 cmp ah,bh
F000:C6E4 74 15 je short loc_1004 ; Jump if equal
F000:C6E6 3A E3 cmp ah,bl
F000:C6E8 74 11 je short loc_1004 ; Jump if equal
F000:C6EA 3A E5 cmp ah,ch
F000:C6EC 74 0D je short loc_1004 ; Jump if equal
F000:C6EE 3A E1 cmp ah,cl
F000:C6F0 74 09 je short loc_1004 ; Jump if equal
F000:C6F2 80 FC 1C cmp ah,1Ch
F000:C6F5 75 D3 jne loc_1003 ; Jump if not equal
F000:C6F7 B4 4D mov ah,4Dh ; 'M'
F000:C6F9 EB 03 jmp short loc_1006 ; (C6FE)
F000:C6FB loc_1004: ; xref F000:C6E4, C6E8, C6EC, C6F0
F000:C6FB 0B E4 or sp,sp ; Zero ?
F000:C6FD loc_1005: ; xref F000:C6DB, C6E0
F000:C6FD F9 stc ; Set carry flag
F000:C6FE loc_1006: ; xref F000:C6D1, C6D6, C6F9
F000:C6FE 59 pop cx
F000:C6FF 5B pop bx
F000:C700 C3 retn
sub_183 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C790
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_185 proc near
F000:C701 B8 0E4B mov ax,0E4Bh
F000:C704 EB 03 jmp short loc_1007 ; (C709)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C3D1

sub_186:
F000:C706 B8 0E4D mov ax,0E4Dh
F000:C709 loc_1007: ; xref F000:C704
F000:C709 50 push ax
F000:C70A B8 0E20 mov ax,0E20h
F000:C70D CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C70F 58 pop ax
F000:C710 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C712 B8 0E42 mov ax,0E42h
F000:C715 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 209

F000:C717 C3 retn
sub_185 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C354
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_187 proc near
F000:C718 B4 00 mov ah,0

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C30A, C3DC, C78D

sub_188:
F000:C71A B9 000A mov cx,0Ah

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:C726

sub_189:
F000:C71D 33 D2 xor dx,dx ; Zero register
F000:C71F F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:C721 0B C0 or ax,ax ; Zero ?
F000:C723 74 05 jz short loc_1008 ; Jump if zero
F000:C725 52 push dx
F000:C726 E8 FFF4 call sub_189 ; (C71D)
F000:C729 5A pop dx
F000:C72A loc_1008: ; xref F000:C723
F000:C72A 8B C2 mov ax,dx
F000:C72C 0D 0E30 or ax,0E30h
F000:C72F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C731 C3 retn
sub_187 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BDCD, BDD2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_190 proc near
F000:C732 B6 01 mov dh,1
F000:C734 loc_1009: ; xref F000:C742
F000:C734 B4 02 mov ah,2
F000:C736 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C738 B8 0EBA mov ax,0EBAh
F000:C73B CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C73D FE C6 inc dh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 210

F000:C73F 80 FE 18 cmp dh,18h
F000:C742 75 F0 jne loc_1009 ; Jump if not equal
F000:C744 C3 retn
sub_190 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BDD7, BDE9, BDF3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_191 proc near
F000:C745 B2 00 mov dl,0
F000:C747 B4 02 mov ah,2
F000:C749 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C74B B8 09CD mov ax,9CDh
F000:C74E B9 004F mov cx,4Fh
F000:C751 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C753 C3 retn
sub_191 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE2B, BE30
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_192 proc near
F000:C754 B2 00 mov dl,0
F000:C756 B0 C7 mov al,0C7h
F000:C758 E8 003A call sub_195 ; (C795)
F000:C75B B8 09C4 mov ax,9C4h
F000:C75E B9 0031 mov cx,31h
F000:C761 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C763 B2 32 mov dl,32h ; '2'
F000:C765 B0 D7 mov al,0D7h
F000:C767 E8 002B call sub_195 ; (C795)
F000:C76A C3 retn
sub_192 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BF75
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_193 proc near
F000:C76B F6 46 38 20 test byte ptr [bp+38h],20h ; ' '
F000:C76F BE DA9C mov si,0DA9Ch
F000:C772 74 03 jz short loc_1010 ; Jump if zero
F000:C774 BE DA90 mov si,0DA90h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 211

F000:C777 loc_1010: ; xref F000:C772
F000:C777 BA 0C16 mov dx,0C16h
F000:C77A E8 FEF2 call sub_181 ; (C66F)
F000:C77D C3 retn
sub_193 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE5B, BE68
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_194 proc near
F000:C77E 51 push cx
F000:C77F 50 push ax
F000:C780 B4 02 mov ah,2
F000:C782 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C784 B9 000C mov cx,0Ch
F000:C787 B8 0920 mov ax,920h
F000:C78A CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C78C 58 pop ax
F000:C78D E8 FF8A call sub_188 ; (C71A)
F000:C790 E8 FF6E call sub_185 ; (C701)
F000:C793 59 pop cx
F000:C794 C3 retn
sub_194 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BDE4, BE00, BE08, BE10, BE18, C758, C767
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_195 proc near
F000:C795 50 push ax
F000:C796 B4 02 mov ah,2
F000:C798 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C79A 58 pop ax
F000:C79B B4 0E mov ah,0Eh
F000:C79D CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C79F C3 retn
sub_195 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:92DF, 9800
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_196 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 212

F000:C7A0 33 F6 xor si,si ; Zero register
F000:C7A2 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:C7A4 3D 55AA cmp ax,55AAh
F000:C7A7 75 0B jne short loc_ret_1012 ; Jump if not equal
F000:C7A9 B9 37FF mov cx,37FFh
F000:C7AC 8B F8 mov di,ax

F000:C7AE locloop_1011: ; xref F000:C7B2
F000:C7AE 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:C7B0 33 F8 xor di,ax
F000:C7B2 E2 FA loop locloop_1011 ; Loop if cx > 0


F000:C7B4 loc_ret_1012: ; xref F000:C7A7
F000:C7B4 C3 retn
sub_196 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C5DF, C65A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_197 proc near
F000:C7B5 53 push bx
F000:C7B6 BB 00D0 mov bx,0D0h
F000:C7B9 B9 0030 mov cx,30h
F000:C7BC E4 61 in al,61h ; port 61h, 8255 port B, read
F000:C7BE 8A E0 mov ah,al
F000:C7C0 24 FE and al,0FEh

F000:C7C2 locloop_1013: ; xref F000:C7D4
F000:C7C2 51 push cx
F000:C7C3 0C 02 or al,2
F000:C7C5 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7C7 8B CB mov cx,bx

F000:C7C9 locloop_1014: ; xref F000:C7C9
F000:C7C9 E2 FE loop locloop_1014 ; Loop if cx > 0

F000:C7CB 24 FD and al,0FDh
F000:C7CD E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7CF 8B CB mov cx,bx

F000:C7D1 locloop_1015: ; xref F000:C7D1
F000:C7D1 E2 FE loop locloop_1015 ; Loop if cx > 0

F000:C7D3 59 pop cx
F000:C7D4 E2 EC loop locloop_1013 ; Loop if cx > 0

F000:C7D6 8A C4 mov al,ah
F000:C7D8 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7DA 5B pop bx
F000:C7DB C3 retn
sub_197 endp

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 213


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE9D, BF5A, C441
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_198 proc near
F000:C7DC 50 push ax
F000:C7DD 32 E4 xor ah,ah ; Zero register
F000:C7DF D1 E0 shl ax,1 ; Shift w/zeros fill
F000:C7E1 03 F0 add si,ax
F000:C7E3 2E: 8B 34 mov si,cs:[si]
F000:C7E6 58 pop ax
F000:C7E7 C3 retn
sub_198 endp

F000:C7E8 7F DA A8 DA 6E DA db 7Fh, 0DAh, 0A8h, 0DAh, 6Eh, 0DAh
F000:C7EE B0 DA 43 DB 32 DB db 0B0h, 0DAh, 43h, 0DBh, 32h, 0DBh
F000:C7F4 21 DB 10 DB 7F DA db 21h, 0DBh, 10h, 0DBh, 7Fh, 0DAh
F000:C7FA F0 C8 E8 C8 F8 C8 db 0F0h, 0C8h, 0E8h, 0C8h, 0F8h, 0C8h
F000:C800 E0 C8 00 C9 7F DA db 0E0h, 0C8h, 0, 0C9h, 7Fh, 0DAh
F000:C806 CC DA DD DA EE DA db 0CCh, 0DAh, 0DDh, 0DAh, 0EEh, 0DAh
F000:C80C FF DA D8 C8 B8 C8 db 0FFh, 0DAh, 0D8h, 0C8h, 0B8h, 0C8h
F000:C812 C0 C8 C8 C8 D0 C8 db 0C0h, 0C8h, 0C8h, 0C8h, 0D0h, 0C8h
F000:C818 28 C8 8B C0 20 C8 db 28h, 0C8h, 8Bh, 0C0h, 20h, 0C8h
F000:C81E 90 C0 18 C8 95 C0 db 90h, 0C0h, 18h, 0C8h, 95h, 0C0h
F000:C824 28 C8 8B C0 20 C8 db 28h, 0C8h, 8Bh, 0C0h, 20h, 0C8h
F000:C82A 90 C0 18 C8 95 C0 db 90h, 0C0h, 18h, 0C8h, 95h, 0C0h
F000:C830 38 C8 90 C0 38 C8 db 38h, 0C8h, 90h, 0C0h, 38h, 0C8h
F000:C836 90 C0 30 C8 95 C0 db 90h, 0C0h, 30h, 0C8h, 95h, 0C0h
F000:C83C 30 C8 95 C0 B0 C8 db 30h, 0C8h, 95h, 0C0h, 0B0h, 0C8h
F000:C842 88 C1 48 C8 E2 D2 db 88h, 0C1h, 48h, 0C8h, 0E2h, 0D2h
F000:C848 40 C8 8C D2 50 C8 db 40h, 0C8h, 8Ch, 0D2h, 50h, 0C8h
F000:C84E 38 D3 48 C8 E2 D2 db 38h, 0D3h, 48h, 0C8h, 0E2h, 0D2h
F000:C854 58 C8 9E D3 50 C8 db 58h, 0C8h, 9Eh, 0D3h, 50h, 0C8h
F000:C85A 38 D3 60 C8 FC D3 db 38h, 0D3h, 60h, 0C8h, 0FCh, 0D3h
F000:C860 58 C8 9E D3 68 C8 db 58h, 0C8h, 9Eh, 0D3h, 68h, 0C8h
F000:C866 5A D4 60 C8 FC D3 db 5Ah, 0D4h, 60h, 0C8h, 0FCh, 0D3h
F000:C86C 70 C8 96 C1 68 C8 db 70h, 0C8h, 96h, 0C1h, 68h, 0C8h
F000:C872 5A D4 78 C8 AC C1 db 5Ah, 0D4h, 78h, 0C8h, 0ACh, 0C1h
F000:C878 70 C8 96 C1 80 C8 db 70h, 0C8h, 96h, 0C1h, 80h, 0C8h
F000:C87E D4 C1 78 C8 AC C1 db 0D4h, 0C1h, 78h, 0C8h, 0ACh, 0C1h
F000:C884 88 C8 0C C2 80 C8 db 88h, 0C8h, 0Ch, 0C2h, 80h, 0C8h
F000:C88A D4 C1 90 C8 A9 C0 db 0D4h, 0C1h, 90h, 0C8h, 0A9h, 0C0h
F000:C890 88 C8 0C C2 98 C8 db 88h, 0C8h, 0Ch, 0C2h, 98h, 0C8h
F000:C896 E2 C0 90 C8 A9 C0 db 0E2h, 0C0h, 90h, 0C8h, 0A9h, 0C0h
F000:C89C A0 C8 6F C1 98 C8 db 0A0h, 0C8h, 6Fh, 0C1h, 98h, 0C8h
F000:C8A2 E2 C0 A8 C8 4E C1 db 0E2h, 0C0h, 0A8h, 0C8h, 4Eh, 0C1h
F000:C8A8 A0 C8 6F C1 B0 C8 db 0A0h, 0C8h, 6Fh, 0C1h, 0B0h, 0C8h
F000:C8AE 88 C1 A8 C8 4E C1 db 88h, 0C1h, 0A8h, 0C8h, 4Eh, 0C1h
F000:C8B4 40 C8 8C D2 D8 C8 db 40h, 0C8h, 8Ch, 0D2h, 0D8h, 0C8h
F000:C8BA C4 C4 C0 C8 B2 C4 db 0C4h, 0C4h, 0C0h, 0C8h, 0B2h, 0C4h
F000:C8C0 B8 C8 E8 C4 C8 C8 db 0B8h, 0C8h, 0E8h, 0C4h, 0C8h, 0C8h
F000:C8C6 B8 C4 C0 C8 B2 C4 db 0B8h, 0C4h, 0C0h, 0C8h, 0B2h, 0C4h
F000:C8CC D0 C8 BE C4 C8 C8 db 0D0h, 0C8h, 0BEh, 0C4h, 0C8h, 0C8h
F000:C8D2 B8 C4 D8 C8 C4 C4 db 0B8h, 0C4h, 0D8h, 0C8h, 0C4h, 0C4h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 214

F000:C8D8 D0 C8 BE C4 B8 C8 db 0D0h, 0C8h, 0BEh, 0C4h, 0B8h, 0C8h
F000:C8DE E8 C4 00 C9 D6 C4 db 0E8h, 0C4h, 0, 0C9h, 0D6h, 0C4h
F000:C8E4 E8 C8 DC C4 E0 C8 db 0E8h, 0C8h, 0DCh, 0C4h, 0E0h, 0C8h
F000:C8EA E8 C4 F0 C8 D0 C4 db 0E8h, 0C4h, 0F0h, 0C8h, 0D0h, 0C4h
F000:C8F0 E8 C8 DC C4 F8 C8 db 0E8h, 0C8h, 0DCh, 0C4h, 0F8h, 0C8h
F000:C8F6 CA C4 F0 C8 D0 C4 db 0CAh, 0C4h, 0F0h, 0C8h, 0D0h, 0C4h
F000:C8FC 00 C9 D6 C4 F8 C8 db 0, 0C9h, 0D6h, 0C4h, 0F8h, 0C8h
F000:C902 CA C4 E0 C8 E8 C4 db 0CAh, 0C4h, 0E0h, 0C8h, 0E8h, 0C4h
F000:C908 10 C9 E2 C4 10 C9 db 10h, 0C9h, 0E2h, 0C4h, 10h, 0C9h
F000:C90E E2 C4 08 C9 E8 C4 db 0E2h, 0C4h, 8, 0C9h, 0E8h, 0C4h
F000:C914 08 C9 E8 C4 38 C9 db 8, 0C9h, 0E8h, 0C4h, 38h, 0C9h
F000:C91A 4C C5 20 C9 09 C5 db 4Ch, 0C5h, 20h, 0C9h, 9, 0C5h
F000:C920 18 C9 EE C4 28 C9 db 18h, 0C9h, 0EEh, 0C4h, 28h, 0C9h
F000:C926 28 C5 20 C9 09 C5 db 28h, 0C5h, 20h, 0C9h, 9, 0C5h
F000:C92C 30 C9 3A C5 28 C9 db 30h, 0C9h, 3Ah, 0C5h, 28h, 0C9h
F000:C932 28 C5 38 C9 4C C5 db 28h, 0C5h, 38h, 0C9h, 4Ch, 0C5h
F000:C938 30 C9 3A C5 18 C9 db 30h, 0C9h, 3Ah, 0C5h, 18h, 0C9h
F000:C93E EE C4 BD C9 BD C9 db 0EEh, 0C4h, 0BDh, 0C9h, 0BDh, 0C9h
F000:C944 BD C9 0C CA 32 CA db 0BDh, 0C9h, 0Ch, 0CAh, 32h, 0CAh
F000:C94A BD C9 C4 C9 B3 CA db 0BDh, 0C9h, 0C4h, 0C9h, 0B3h, 0CAh
F000:C950 A5 C9 63 CA 9A C9 db 0A5h, 0C9h, 63h, 0CAh, 9Ah, 0C9h
F000:C956 9A C9 9A C9 9A C9 db 9Ah, 0C9h, 9Ah, 0C9h, 9Ah, 0C9h
F000:C95C 9A C9 9A C9 BD C9 db 9Ah, 0C9h, 9Ah, 0C9h, 0BDh, 0C9h
F000:C962 A1 C9 db 0A1h, 0C9h


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 15h ±±±±±
;
; GENERAL SERVICES
;
; On old PCs this function is only used for cassette servicing.
; Additional functions have been added for advanced features with
; newer equipment.
;
; Called with: ah = function code
;
; Returns: CF = 0 if successful
; CF = 1 if failure or function not supported
;
; Functions:
; ah = 0 Cassette motor set on
; ah = 1 Cassette motor set off
; ah = 2 Read cx bytes from cassette, es:bx = ptr to load area
; ah = 3 Write cx bytes to cassette, es:bx = ptr to read area
; ah = 0Fh Disk format hook, called from disk format routines
; after a cylinder access completed. Called with:
; al = 1-undergoing surface analysis, 2-if formating
; ah = 21h Error log (PS 2), al = 0 to read, al = 1 to write
;
; *** LAP TOP MACHINES ONLY - 40h to 44h ***
; ah = 40h Systems info in cx, bx - al = 0 to read, 1 to write
; for modem info in bx - al = 2 to read, 3 to write
; ah = 41h Wait for an event, dx = i/o port to read or use es:di
; as ptr to user event. al = type of event 0-4,11-14
; bh = event mask, bl = # of 55ms counts to timeout
; ah = 42h Power off, al = 0 or 1 for mode of power off
; ah = 43h Get system status in al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 215

; 7 6 5 4 3 2 1 0
; low extrn bad pwr up modem ports LCD
; battery pwr time alarm on on missing
; ah = 44h Modem power, al = 0 turn off, al = 1 turn on
;

; *** FUNCTIONS IN RECENT BIOS VERSIONS ONLY ***
; ah = 4Fh Keyboard input hook, called every keystroke with
; al = scan code. CF = 1 to change or use the scan
; code in al. CF = 0 to ignore the key.
; ah = 80h Open device number bx, in process number cx.
; ah = 81h Close device number bx, in process number cx.
; ah = 82h Terminate device number bx
; ah = 83h Wait for timeout, and set bit 15 at ptr es:bx when
; timed out. al = 0 to set wait period cx:dx uSec,
; al = 1 to stop timeout timer.
; ah = 84h Game port read, dx = 0 to read switches into al
; high nibble, dx = 1 to read linear position
; (Unit 1: ax = x, bx = y Unit 2: cx = x, dx = y)
; ah = 85h Get system request key state, al = 0 down, al = 1 up
; ah = 86h Wait cx:dx microseconds before return
; ah = 87h Transfer cx words to/from memory above 1 meg
; es:si ptr to table with source & destination ptrs:
; es:si -> zeros db 16dup(0)
; src_seg_limit dw ? ; 1-64K bytes
; scr_ptr_low dw ? ; 0-64K range
; scr_ptr_high db ? ; 0-16 Meg range
; scr_rights db 93h ; r/w access
; scr_zero dw 0
; dst_seg_limit dw ? ; 1-64K bytes
; dst_ptr_low dw ? ; 0-64K range
; dst_ptr_high db ? ; 0-16 Meg range
; dst_rights db 93h ; r/w access
; dst_zero dw 0
; zeros2 db 16dup(0)
; Notes:
; cx = 32K words max xfer, ptr_low & ptr_high form
; a 24 bit physical address (do not use a segment)
; Return codes: al = 0 if ok, al = 1 parity error
; al = 2 other errors, al = 3 gate addr line 20 bad
; ah = 88h Get extended memory size (above 1 Meg boundary)
; ax = (number of bytes / 1024)
; ah = 89h Go to protected mode of operation. es:si ptr to table
; comprised of 8 groups of 8 byte ptr sub-arrays. Each.
; group is formed from 8 bytes as follows:
; seg_limit dw ? ; 1-64K bytes
; ptr_low dw ? ; 0-64K range
; ptr_high db ? ; 0-16 Meg range
; rights db 93h ; read/write access
; zero dw 0 ; set to zero
; Ptr_low & high form a 24 bit physical address.
;
; The 8 groups are as follows:
; es:si -> Group_1 Set to all zero
; Group_2 ptr to beginning of Group_1
; Group_3 ptr to Interrupt Descript Table IDT
; Group_4 ptr to present DS segment
; Group_5 ptr to present ES segment
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 216

; Group_6 ptr to present SS segment
; Group_7 ptr to present CS segment
; Group_8 ptr where to jump to when done
; Also: bh & bl set as offset from beginning of IDT to
; spot where 1st & 2nd set of 8 hardware interrupts begin.
; Returns ah = 0 if ok, regs changed: ax,bp,ds,es,ss,cs
; ah = 90h Device busy - used to signal DOS when it must wait.
; Type 0 Disk timeout 0FCh Hard disk timeout
; codes 1 Floppy timeout (PS 2 only)
; (al) 2 Keyboard no timeout 0FDh Floppy motor timeout
; 3 Mouse timeout 0FEh Printer timeout
; 80h Local area network (es:bx = network cntrl block
; Returns CF = 0 if failure, 1 if minimum wait time occurred
; ah = 91h Interrupt done - used to signal DOS when hardware done
; al = type code (Device busy type codes)
; ah = C0h Get ROM system information table ptr in es:bx. See data
; area starting at byte "sys_info_size".
;
; *** PS 2 & COMPATIBLES ONLY - C1h to C4h ***
; ah = C1h Get Extended BIOS data area segment in es
; ah = C2h Mouse support (BIOS). Sub-function code in al
; al = 0 if bh = 0 mouse off, bh = 1 mouse on
; al = 1 reset mouse & parameters, returns bh = 0
; bl altered on return
; al = 2 Set number of updates per second in bh,
; bh = 0 - 10 updates/sec 4 - 80 updates/sec
; 1 - 20 updates/sec 5 - 100 updates/sec
; 2 - 40 updates/sec 6 - 200 updates/sec
; 3 - 60 updates/sec
; al = 3 Set resolution in counts per millimeter:
; bh = 0 - 1 cnts per mm 2 - 4 cnts per mm
; 1 - 2 cnts per mm 3 - 8 cnts per mm
; al = 4 Get device type, bh = 0
; al = 5 Initialize pointing device interface data size
; bh = size 1 to 8 (1 to 8 bytes)
; al = 6 Additional sub-functions in bh:
; bh = 0 Get status, cl = cnts per mm (see al=3)
; dl = updates/sec in hex, bl = status:
; bit 6 = mode (0=stream, 1=remote)
; 5 = 0 disabled, 1 enabled
; 4 = scaling (0=1:1, 1=2:1)
; 2 = Left button pressed
; 0 = right button pressed
; bh = 1 Set scaling to 1:1
; bh = 2 Set scaling to 2:1
; al = 7 Set location to "call far" when data available
; in es:bx
; Return code for all sub-functions in al:
; al = 0 successful 3 interface error
; 1 bad function call 4 resend
; 2 invalid input 5 no far call installed
; ah = C3h Watchdog timer mode al = 0 disable, al = 1 enable,
; bx = set counter value 1 to FFh
; ah = C4h Bus option select (POS) subfunction in al,
; al = 0 Get base POS adapter register address in dx
; 1 Enable setup for slot bl
; 2 Adapter enable
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 217


F000:C964 int_15h_servics proc near ; xref F000:F859
F000:C964 80 FC 87 cmp ah,87h
F000:C967 75 04 jne short loc_1016 ; Jump if not equal
F000:C969 50 push ax
F000:C96A E9 0146 jmp loc_1027 ; (CAB3)
F000:C96D loc_1016: ; xref F000:C967
F000:C96D FB sti ; Enable interrupts
F000:C96E 50 push ax
F000:C96F 8A C4 mov al,ah
F000:C971 2C 80 sub al,80h
F000:C973 78 25 js short loc_1018 ; Jump if sign=1
F000:C975 3C 12 cmp al,12h
F000:C977 73 3B jae short loc_1019 ; Jump if above or =
F000:C979 32 E4 xor ah,ah ; Zero register
F000:C97B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:C97D 05 C940 add ax,0C940h
F000:C980 55 push bp
F000:C981 8B E8 mov bp,ax
F000:C983 2E: 8B 46 00 mov ax,cs:[bp]
F000:C987 5D pop bp
F000:C988 FF E0 jmp ax ;*Register jump
F000:C98A loc_1017: ; xref F000:C9B6
F000:C98A 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:C990 74 08 jz short loc_1018 ; Jump if zero
F000:C992 3C 42 cmp al,42h ; 'B'
F000:C994 75 04 jne short loc_1018 ; Jump if not equal
F000:C996 58 pop ax
F000:C997 E9 AD8C jmp $-5271h
F000:C99A loc_1018: ; xref F000:C973, C990, C994
F000:C99A 58 pop ax
F000:C99B B4 86 mov ah,86h
F000:C99D F9 stc ; Set carry flag
F000:C99E CA 0002 retf 2 ; Return far
int_15h_servics endp

F000:C9A1 58 B4 00 CF 58 B0 db 58h, 0B4h, 0, 0CFh, 58h, 0B0h
F000:C9A7 31 FA E8 F3 24 8A db 31h, 0FAh, 0E8h, 0F3h, 24h, 8Ah
F000:C9AD E0 B0 30 E8 EC 24 db 0E0h, 0B0h, 30h, 0E8h, 0ECh, 24h
F000:C9B3 CF db 0CFh
F000:C9B4 loc_1019: ; xref F000:C977
F000:C9B4 3C 40 cmp al,40h ; '@'
F000:C9B6 75 D2 jne loc_1017 ; Jump if not equal
F000:C9B8 BB E6F5 mov bx,0E6F5h
F000:C9BB 0E push cs
F000:C9BC 07 pop es
F000:C9BD F8 clc ; Clear carry flag
F000:C9BE loc_1020: ; xref F000:CA0A
F000:C9BE 58 pop ax
F000:C9BF B4 00 mov ah,0
F000:C9C1 CA 0002 retf 2 ; Return far
F000:C9C4 53 06 6A 40 07 BB db 53h, 6, 6Ah, 40h, 7, 0BBh
F000:C9CA A0 00 E8 1B 02 72 db 0A0h, 0, 0E8h, 1Bh, 2, 72h
F000:C9D0 37 51 52 1E 53 06 db 37h, 51h, 52h, 1Eh, 53h, 6
F000:C9D6 1F BB 04 00 E8 3F db 1Fh, 0BBh, 4, 0, 0E8h, 3Fh
F000:C9DC 02 51 52 B3 04 E8 db 2, 51h, 52h, 0B3h, 4, 0E8h
F000:C9E2 38 02 51 52 B3 03 db 38h, 2, 51h, 52h, 0B3h, 3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 218

F000:C9E8 E8 31 02 58 03 D0 db 0E8h, 31h, 2, 58h, 3, 0D0h
F000:C9EE 58 13 C8 58 03 D0 db 58h, 13h, 0C8h, 58h, 3, 0D0h
F000:C9F4 58 13 C8 5B 87 CA db 58h, 13h, 0C8h, 5Bh, 87h, 0CAh
F000:C9FA loc_1021: ; xref F000:CA00
F000:C9FA E8 25A5 call sub_262 ; (EFA2)
F000:C9FD 73 03 jnc short loc_1022 ; Jump if carry=0
F000:C9FF 4A dec dx
F000:CA00 79 F8 jns loc_1021 ; Jump if not sign
F000:CA02 loc_1022: ; xref F000:C9FD
F000:CA02 C6 07 00 mov byte ptr [bx],0
F000:CA05 1F pop ds
F000:CA06 5A pop dx
F000:CA07 59 pop cx
F000:CA08 07 pop es
F000:CA09 5B pop bx
F000:CA0A EB B2 jmp short loc_1020 ; (C9BE)
F000:CA0C 58 50 0A C0 74 1B db 58h, 50h, 0Ah, 0C0h, 74h, 1Bh
F000:CA12 3C 01 F9 75 A7 FA db 3Ch, 1, 0F9h, 75h, 0A7h, 0FAh
F000:CA18 E8 5A 24 24 BF E8 db 0E8h, 5Ah, 24h, 24h, 0BFh, 0E8h
F000:CA1E 61 24 1E 6A 40 1F db 61h, 24h, 1Eh, 6Ah, 40h, 1Fh
F000:CA24 C6 06 A0 00 00 FB db 0C6h, 6, 0A0h, 0, 0, 0FBh
F000:CA2A 1F EB 91 E8 BA 01 db 1Fh, 0EBh, 91h, 0E8h, 0BAh, 1
F000:CA30 EB 8C D0 EA 74 03 db 0EBh, 8Ch, 0D0h, 0EAh, 74h, 3
F000:CA36 E9 61 FF 58 BA 01 db 0E9h, 61h, 0FFh, 58h, 0BAh, 1
F000:CA3C 02 72 05 EC 24 F0 db 2, 72h, 5, 0ECh, 24h, 0F0h
F000:CA42 EB 1C db 0EBh, 1Ch
F000:CA44 loc_1023:
F000:CA44 B3 01 mov bl,1
F000:CA46 E8 01DB call sub_203 ; (CC24)
F000:CA49 D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA4B 51 push cx
F000:CA4C E8 01D5 call sub_203 ; (CC24)
F000:CA4F D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA51 51 push cx
F000:CA52 E8 01CF call sub_203 ; (CC24)
F000:CA55 D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA57 51 push cx
F000:CA58 E8 01C9 call sub_203 ; (CC24)
F000:CA5B 5A pop dx
F000:CA5C 5B pop bx
F000:CA5D 58 pop ax
F000:CA5E 87 CA xchg cx,dx

F000:CA60 loc_ret_1024:
F000:CA60 CA 0002 retf 2 ; Return far
F000:CA63 FA E8 B4 C4 58 75 db 0FAh, 0E8h, 0B4h, 0C4h, 58h, 75h
F000:CA69 3F E8 73 24 06 1F db 3Fh, 0E8h, 73h, 24h, 6, 1Fh
F000:CA6F 56 53 83 C6 38 E8 db 56h, 53h, 83h, 0C6h, 38h, 0E8h
F000:CA75 52 01 5B 5E 58 83 db 52h, 1, 5Bh, 5Eh, 58h, 83h
F000:CA7B C4 02 6A 30 50 0F db 0C4h, 2, 6Ah, 30h, 50h, 0Fh
F000:CA81 01 54 08 0F 01 5C db 1, 54h, 8, 0Fh, 1, 5Ch
F000:CA87 10 0F 01 E0 25 1F db 10h, 0Fh, 1, 0E0h, 25h, 1Fh
F000:CA8D 00 0C 01 90 0F 01 db 0, 0Ch, 1, 90h, 0Fh, 1
F000:CA93 F0 EA 99 CA 38 00 db 0F0h, 0EAh, 99h, 0CAh, 38h, 0
F000:CA99 B0 28 8E D0 B0 18 db 0B0h, 28h, 8Eh, 0D0h, 0B0h, 18h
F000:CA9F 8E D8 B0 20 8E C0 db 8Eh, 0D8h, 0B0h, 20h, 8Eh, 0C0h
F000:CAA5 33 C0 EB 04 F9 B8 db 33h, 0C0h, 0EBh, 4, 0F9h, 0B8h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 219

F000:CAAB FF FF db 0FFh, 0FFh

F000:CAAD loc_ret_1025:
F000:CAAD CA 0002 retf 2 ; Return far
F000:CAB0 loc_1026: ; xref F000:CAB8
F000:CAB0 E9 0105 jmp loc_1032 ; (CBB8)
F000:CAB3 loc_1027: ; xref F000:C96A
F000:CAB3 FA cli ; Disable interrupts
F000:CAB4 E8 C483 call sub_46 ; (8F3A)
F000:CAB7 58 pop ax
F000:CAB8 75 F6 jnz loc_1026 ; Jump if not zero
F000:CABA 60 pusha ; Save all regs
F000:CABB 06 push es
F000:CABC 1E push ds
F000:CABD B0 02 mov al,2
F000:CABF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CAC1 B8 0040 mov ax,seg_b
F000:CAC4 8E D8 mov ds,ax
F000:CAC6 B8 098F mov ax,98Fh
F000:CAC9 E8 23C6 call sub_256 ; (EE92)
assume ds:seg_b
F000:CACC 89 26 0067 mov @gen_io_ptr,sp ; (0040:0067=522h)
F000:CAD0 8C D0 mov ax,ss
F000:CAD2 A3 0069 mov @gen_io_seg,ax ; (0040:0069=9087h)
F000:CAD5 8C C0 mov ax,es
F000:CAD7 8E D8 mov ds,ax
F000:CAD9 E8 0105 call sub_201 ; (CBE1)
F000:CADC 03 C6 add ax,si
F000:CADE 80 D3 00 adc bl,0
F000:CAE1 32 FF xor bh,bh ; Zero register
F000:CAE3 83 C6 08 add si,8
F000:CAE6 E8 00E9 call sub_200 ; (CBD2)
F000:CAE9 0F 01 14 lgdt qword ptr [si] ; Load global des tbl
F000:CAEC 83 C6 18 add si,18h
F000:CAEF E8 00D7 call sub_199 ; (CBC9)
F000:CAF2 8C D0 mov ax,ss
F000:CAF4 E8 00EA call sub_201 ; (CBE1)
F000:CAF7 B7 93 mov bh,93h
F000:CAF9 83 C6 08 add si,8
F000:CAFC E8 00D3 call sub_200 ; (CBD2)
F000:CAFF 2E: 0F 01 1E E270 lidt qword ptr cs:data_153 ; (F000:E270=100h) Load int des table
F000:CB05 0F 01 E0 smsw ax ; Store machine stat
F000:CB08 25 001F and ax,1Fh
F000:CB0B 0C 01 or al,1
F000:CB0D 90 nop ;
F000:CB0E 90 nop ;
F000:CB0F 0F 01 F0 lmsw ax ; Load machine status
;* This jump is a protected mode jump to flush the pre-fetch queue -
;* - the segment selector was ignored.
F000:CB12 EA 0020CB17 jmp far ptr loc_1028 ; (CB17)
F000:CB17 loc_1028: ; xref F000:CB12
F000:CB17 B0 28 mov al,28h ; '('
F000:CB19 8E D0 mov ss,ax
F000:CB1B B0 10 mov al,10h
F000:CB1D 8E D8 mov ds,ax
F000:CB1F B0 18 mov al,18h
F000:CB21 8E C0 mov es,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 220

F000:CB23 33 F6 xor si,si ; Zero register
F000:CB25 33 FF xor di,di ; Zero register
F000:CB27 FC cld ; Clear direction
F000:CB28 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:CB2A 66| F3/ A5 rep movsd ; Rep when cx >0 Mov [si] to es:[di]
F000:CB2D 73 01 jnc short loc_1029 ; Jump if carry=0
F000:CB2F A5 movsw ; Mov [si] to es:[di]
F000:CB30 loc_1029: ; xref F000:CB2D
F000:CB30 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:CB32 A8 C0 test al,0C0h
F000:CB34 74 17 jz short loc_1030 ; Jump if zero
F000:CB36 83 EE 04 sub si,4
F000:CB39 8B 04 mov ax,[si]
F000:CB3B 89 04 mov [si],ax
F000:CB3D 8B 44 02 mov ax,[si+2]
F000:CB40 89 44 02 mov [si+2],ax
F000:CB43 8B 04 mov ax,[si]
F000:CB45 8B 44 02 mov ax,[si+2]
F000:CB48 E8 C2F8 call sub_33 ; (8E43)
F000:CB4B B4 01 mov ah,1
F000:CB4D loc_1030: ; xref F000:CB34
F000:CB4D 8A C4 mov al,ah
F000:CB4F E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CB51 B8 008F mov ax,8Fh
F000:CB54 E8 233B call sub_256 ; (EE92)
F000:CB57 2E: 0F 01 16 E268 lgdt qword ptr cs:data_152 ; (F000:E268=60h) Load global des tbl
F000:CB5D B8 0040 mov ax,seg_b
F000:CB60 8E D8 mov ds,ax
F000:CB62 8E C0 mov es,ax
F000:CB64 8E D0 mov ss,ax
F000:CB66 66| C1 C8 10 ror eax,10h ; Rotate
F000:CB6A 8B C8 mov cx,ax
F000:CB6C 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:CB6F 66| 25 7FFFFFFE and eax,7FFFFFFEh
F000:CB75 90 nop ;
F000:CB76 90 nop ;
F000:CB77 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:CB7A EA F000CB7F jmp far ptr loc_1031 ; (CB7F)
F000:CB7F loc_1031: ; xref F000:CB7A
F000:CB7F 2E: 0F 01 1E E2B8 lidt qword ptr cs:data_157 ; (F000:E2B8=0FFFFh) Load int des tabl
F000:CB85 2E: 0F 01 16 E2A0 lgdt qword ptr cs:data_155 ; (F000:E2A0=0FFFFh) Load global des t
F000:CB8B 8B C1 mov ax,cx
F000:CB8D 66| C1 C8 10 ror eax,10h ; Rotate
F000:CB91 B8 0040 mov ax,seg_b
F000:CB94 8E D8 mov ds,ax
F000:CB96 A1 0069 mov ax,@gen_io_seg ; (0040:0069=9087h)
F000:CB99 8E D0 mov ss,ax
F000:CB9B 8B 26 0067 mov sp,@gen_io_ptr ; (0040:0067=522h)
F000:CB9F E8 C355 call sub_44 ; (8EF7)
F000:CBA2 E8 C36F call sub_45 ; (8F14)
F000:CBA5 B0 0D mov al,0Dh
F000:CBA7 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:CBA9 1F pop ds
F000:CBAA 07 pop es
F000:CBAB 61 popa ; Restore all regs
F000:CBAC 86 C4 xchg al,ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 221

F000:CBAE E4 80 in al,80h ; port 80h, diagnostc chkpoint
F000:CBB0 86 C4 xchg al,ah
F000:CBB2 74 0C jz short loc_1033 ; Jump if zero
F000:CBB4 0A E4 or ah,ah ; Zero ?
F000:CBB6 75 08 jnz short loc_1033 ; Jump if not zero
F000:CBB8 loc_1032: ; xref F000:CAB0
F000:CBB8 B4 03 mov ah,3
F000:CBBA 86 C4 xchg al,ah
F000:CBBC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CBBE 86 C4 xchg al,ah
F000:CBC0 loc_1033: ; xref F000:CBB2, CBB6
F000:CBC0 84 E4 test ah,ah
F000:CBC2 74 01 jz short loc_1034 ; Jump if zero
F000:CBC4 F9 stc ; Set carry flag
F000:CBC5 loc_1034: ; xref F000:CBC2
F000:CBC5 FB sti ; Enable interrupts
F000:CBC6 CA 0002 retf 2 ; Return far

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CAEF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_199 proc near
F000:CBC9 BB 9B0F mov bx,9B0Fh
F000:CBCC 33 C0 xor ax,ax ; Zero register
F000:CBCE E8 0001 call sub_200 ; (CBD2)
F000:CBD1 C3 retn
sub_199 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CAE6, CAFC, CBCE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_200 proc near
F000:CBD2 89 44 02 mov [si+2],ax
F000:CBD5 89 5C 04 mov [si+4],bx
F000:CBD8 33 C0 xor ax,ax ; Zero register
F000:CBDA 89 44 06 mov [si+6],ax
F000:CBDD 48 dec ax
F000:CBDE 89 04 mov [si],ax
F000:CBE0 C3 retn
sub_200 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CAD9, CAF4
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_201 proc near
F000:CBE1 8A DC mov bl,ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 222

F000:CBE3 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:CBE6 C0 EB 04 shr bl,4 ; Shift w/zeros fill
F000:CBE9 C3 retn
sub_201 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_202 proc near
F000:CBEA 1E push ds
F000:CBEB 6A 40 push 40h
F000:CBED 1F pop ds
F000:CBEE FA cli ; Disable interrupts
F000:CBEF F6 06 00A0 01 test timer_clk_flag,1 ; (0040:00A0=0)
F000:CBF4 F9 stc ; Set carry flag
F000:CBF5 75 22 jnz short loc_1035 ; Jump if not zero
F000:CBF7 E8 2270 call sub_251 ; (EE6A)
F000:CBFA C6 06 00A0 01 mov timer_clk_flag,1 ; (0040:00A0=0)
F000:CBFF 89 1E 0098 mov @timer_wait_off,bx ; (0040:0098=0)
F000:CC03 8C 06 009A mov @timer_wait_seg,es ; (0040:009A=0)
F000:CC07 89 16 009C mov timer_clk_low,dx ; (0040:009C=0)
F000:CC0B 89 0E 009E mov timer_clk_hi,cx ; (0040:009E=0)
F000:CC0F E8 2263 call sub_252 ; (EE75)
F000:CC12 24 7F and al,7Fh
F000:CC14 0C 40 or al,40h ; '@'
F000:CC16 E8 2268 call sub_254 ; (EE81)
F000:CC19 loc_1035: ; xref F000:CBF5
F000:CC19 FB sti ; Enable interrupts
F000:CC1A 1F pop ds
F000:CC1B C3 retn
sub_202 endp

F000:CC1C loc_1036: ; xref F000:CC21
F000:CC1C D1 E9 shr cx,1 ; Shift w/zeros fill
F000:CC1E D1 DA rcr dx,1 ; Rotate thru carry
F000:CC20 4B dec bx
F000:CC21 75 F9 jnz loc_1036 ; Jump if not zero
F000:CC23 C3 retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CA46, CA4C, CA52, CA58
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_203 proc near
F000:CC24 FA cli ; Disable interrupts
F000:CC25 E8 002C call sub_204 ; (CC54)
F000:CC28 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:CC29 50 push ax
F000:CC2A B9 0100 mov cx,100h
F000:CC2D 8A E3 mov ah,bl
F000:CC2F E8 2328 call sub_260 ; (EF5A)
F000:CC32 58 pop ax
F000:CC33 72 12 jc short loc_1038 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 223

F000:CC35 8B C8 mov cx,ax
F000:CC37 E8 001A call sub_204 ; (CC54)
F000:CC3A 3B C8 cmp cx,ax
F000:CC3C 73 01 jae short loc_1037 ; Jump if above or =
F000:CC3E 40 inc ax
F000:CC3F loc_1037: ; xref F000:CC3C
F000:CC3F 2B C8 sub cx,ax
F000:CC41 C1 E9 04 shr cx,4 ; Shift w/zeros fill
F000:CC44 80 E5 01 and ch,1
F000:CC47 loc_1038: ; xref F000:CC33
F000:CC47 FB sti ; Enable interrupts
F000:CC48 51 push cx
F000:CC49 B9 0100 mov cx,100h
F000:CC4C B4 0F mov ah,0Fh
F000:CC4E E8 2309 call sub_260 ; (EF5A)
F000:CC51 F8 clc ; Clear carry flag
F000:CC52 59 pop cx
F000:CC53 C3 retn
sub_203 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CC25, CC37
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_204 proc near
F000:CC54 B0 00 mov al,0
F000:CC56 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:CC58 EB 00 jmp short loc_1039 ; (CC5A)
F000:CC5A loc_1039: ; xref F000:CC58
F000:CC5A EB 00 jmp short loc_1040 ; (CC5C)
F000:CC5C loc_1040: ; xref F000:CC5A
F000:CC5C E4 40 in al,40h ; port 40h, 8253 timer 0 clock
F000:CC5E 86 C4 xchg al,ah
F000:CC60 EB 00 jmp short loc_1041 ; (CC62)
F000:CC62 loc_1041: ; xref F000:CC60
F000:CC62 EB 00 jmp short loc_1042 ; (CC64)
F000:CC64 loc_1042: ; xref F000:CC62
F000:CC64 E4 40 in al,40h ; port 40h, 8253 timer 0 clock
F000:CC66 86 C4 xchg al,ah
F000:CC68 C3 retn
sub_204 endp

F000:CC69 00 db 0
F000:CC6A loc_1043: ; xref F000:ABB4
F000:CC6A E6 0D out 0Dh,al ; port 0Dh, DMA-1 master clear
F000:CC6C EB 00 jmp short loc_1044 ; (CC6E)
F000:CC6E loc_1044: ; xref F000:CC6C
F000:CC6E EB 00 jmp short loc_1045 ; (CC70)
F000:CC70 loc_1045: ; xref F000:CC6E
F000:CC70 E6 DA out 0DAh,al ; port 0DAh, DMA-2 master clear
F000:CC72 B0 04 mov al,4
F000:CC74 EB 00 jmp short loc_1046 ; (CC76)
F000:CC76 loc_1046: ; xref F000:CC74
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 224

F000:CC76 EB 00 jmp short loc_1047 ; (CC78)
F000:CC78 loc_1047: ; xref F000:CC76
F000:CC78 E6 08 out 8,al ; port 8, DMA-1 command reg
F000:CC7A EB 00 jmp short loc_1048 ; (CC7C)
F000:CC7C loc_1048: ; xref F000:CC7A
F000:CC7C EB 00 jmp short loc_1049 ; (CC7E)
F000:CC7E loc_1049: ; xref F000:CC7C
F000:CC7E E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:CC80 33 DB xor bx,bx ; Zero register
F000:CC82 BA 007F mov dx,7Fh
F000:CC85 B9 0010 mov cx,10h

F000:CC88 locloop_1050: ; xref F000:CC8C
F000:CC88 42 inc dx
F000:CC89 E8 00F6 call sub_208 ; (CD82)
F000:CC8C E1 FA loopz locloop_1050 ; Loop if zf=1, cx>0

F000:CC8E B0 50 mov al,50h ; 'P'
F000:CC90 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CC92 E8 A9D9 call $-5624h
F000:CC95 B0 51 mov al,51h ; 'Q'
F000:CC97 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CC99 EB 00 jmp short loc_1051 ; (CC9B)
F000:CC9B loc_1051: ; xref F000:CC99
F000:CC9B EB 00 jmp short loc_1052 ; (CC9D)
F000:CC9D loc_1052: ; xref F000:CC9B
F000:CC9D E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:CC9F EB 00 jmp short loc_1053 ; (CCA1)
F000:CCA1 loc_1053: ; xref F000:CC9F
F000:CCA1 EB 00 jmp short loc_1054 ; (CCA3)
F000:CCA3 loc_1054: ; xref F000:CCA1
F000:CCA3 E6 D8 out 0D8h,al ; port 0D8h, DMA-2 clr byte ptr
F000:CCA5 4B dec bx
F000:CCA6 BA FFFF mov dx,0FFFFh
F000:CCA9 B9 0008 mov cx,8
F000:CCAC 51 push cx


F000:CCAD locloop_1055: ; xref F000:CCB1
F000:CCAD 42 inc dx
F000:CCAE E8 00D1 call sub_208 ; (CD82)
F000:CCB1 E1 FA loopz locloop_1055 ; Loop if zf=1, cx>0

F000:CCB3 B0 52 mov al,52h ; 'R'
F000:CCB5 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCB7 BA 00BE mov dx,0BEh
F000:CCBA 59 pop cx

F000:CCBB locloop_1056: ; xref F000:CCC0
F000:CCBB 42 inc dx
F000:CCBC 42 inc dx
F000:CCBD E8 00C2 call sub_208 ; (CD82)
F000:CCC0 E1 F9 loopz locloop_1056 ; Loop if zf=1, cx>0

F000:CCC2 B0 53 mov al,53h ; 'S'
F000:CCC4 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCC6 E8 A9F2 call $-560Bh
F000:CCC9 B0 54 mov al,54h ; 'T'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 225

F000:CCCB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCCD 68 CCD4 push 0CCD4h
F000:CCD0 68 FA4E push 0FA4Eh
F000:CCD3 C3 retn
F000:CCD4 B0 55 E6 80 EB 00 db 0B0h, 55h, 0E6h, 80h, 0EBh, 0
F000:CCDA EB 00 db 0EBh, 0
F000:CCDC loc_1057:
F000:CCDC E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:CCDE EB 00 jmp short loc_1058 ; (CCE0)
F000:CCE0 loc_1058: ; xref F000:CCDE
F000:CCE0 EB 00 jmp short loc_1059 ; (CCE2)
F000:CCE2 loc_1059: ; xref F000:CCE0
F000:CCE2 E6 D8 out 0D8h,al ; port 0D8h, DMA-2 clr byte ptr
F000:CCE4 B0 00 mov al,0
F000:CCE6 EB 00 jmp short loc_1060 ; (CCE8)
F000:CCE8 loc_1060: ; xref F000:CCE6
F000:CCE8 EB 00 jmp short loc_1061 ; (CCEA)
F000:CCEA loc_1061: ; xref F000:CCE8
F000:CCEA E6 08 out 8,al ; port 8, DMA-1 command reg
F000:CCEC EB 00 jmp short loc_1062 ; (CCEE)
F000:CCEE loc_1062: ; xref F000:CCEC
F000:CCEE EB 00 jmp short loc_1063 ; (CCF0)
F000:CCF0 loc_1063: ; xref F000:CCEE
F000:CCF0 E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:CCF2 E8 003E call sub_205 ; (CD33)
F000:CCF5 B0 56 mov al,56h ; 'V'
F000:CCF7 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCF9 B0 00 mov al,0
F000:CCFB E6 D2 out 0D2h,al ; port 0D2h, DMA-2 request reg
F000:CCFD EB 00 jmp short loc_1064 ; (CCFF)
F000:CCFF loc_1064: ; xref F000:CCFD
F000:CCFF EB 00 jmp short loc_1065 ; (CD01)
F000:CD01 loc_1065: ; xref F000:CCFF
F000:CD01 E6 D4 out 0D4h,al ; port 0D4h, DMA-2 mask reg bit
F000:CD03 EB 13 jmp short loc_1066 ; (CD18)
F000:CD05 90 BE 76 7D E9 88 db 90h, 0BEh, 76h, 7Dh, 0E9h, 88h
F000:CD0B C0 BE 5C 7D E9 82 db 0C0h, 0BEh, 5Ch, 7Dh, 0E9h, 82h
F000:CD11 C0 BE 69 7D E9 7C db 0C0h, 0BEh, 69h, 7Dh, 0E9h, 7Ch
F000:CD17 C0 db 0C0h
F000:CD18 loc_1066: ; xref F000:CD03
F000:CD18 FA cli ; Disable interrupts
F000:CD19 BB 0870 mov bx,870h
F000:CD1C E8 21BD call sub_259 ; (EEDC)
F000:CD1F B0 57 mov al,57h ; 'W'
F000:CD21 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CD23 B0 FA mov al,0FAh
F000:CD25 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FAh, IRQ0 & 2 only
F000:CD27 B0 FF mov al,0FFh
F000:CD29 EB 00 jmp short loc_1067 ; (CD2B)
F000:CD2B loc_1067: ; xref F000:CD29
F000:CD2B EB 00 jmp short loc_1068 ; (CD2D)
F000:CD2D loc_1068: ; xref F000:CD2B
F000:CD2D E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:CD2F FB sti ; Enable interrupts
F000:CD30 E9 C65B jmp loc_326 ; (938E)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 226


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CCF2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_205 proc near
F000:CD33 EB 00 jmp short loc_1069 ; (CD35)
F000:CD35 loc_1069: ; xref F000:CD33
F000:CD35 EB 00 jmp short loc_1070 ; (CD37)
F000:CD37 loc_1070: ; xref F000:CD35
F000:CD37 B0 C0 mov al,0C0h
F000:CD39 E6 D6 out 0D6h,al ; port 0D6h, DMA-2 mode reg
F000:CD3B B0 40 mov al,40h ; '@'
F000:CD3D EB 00 jmp short loc_1071 ; (CD3F)
F000:CD3F loc_1071: ; xref F000:CD3D
F000:CD3F EB 00 jmp short loc_1072 ; (CD41)
F000:CD41 loc_1072: ; xref F000:CD3F
F000:CD41 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:CD43 E8 0007 call sub_206 ; (CD4D)
F000:CD46 E8 0004 call sub_206 ; (CD4D)
F000:CD49 E8 0001 call sub_206 ; (CD4D)
F000:CD4C C3 retn
sub_205 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CD43, CD46, CD49
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_206 proc near
F000:CD4D EB 00 jmp short loc_1073 ; (CD4F)
F000:CD4F loc_1073: ; xref F000:CD4D
F000:CD4F EB 00 jmp short loc_1074 ; (CD51)
F000:CD51 loc_1074: ; xref F000:CD4F
F000:CD51 40 inc ax
F000:CD52 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:CD54 EB 00 jmp short loc_1075 ; (CD56)
F000:CD56 loc_1075: ; xref F000:CD54
F000:CD56 EB 00 jmp short loc_1076 ; (CD58)
F000:CD58 loc_1076: ; xref F000:CD56
F000:CD58 E6 D6 out 0D6h,al ; port 0D6h, DMA-2 mode reg
F000:CD5A C3 retn
sub_206 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CD85, CD8D, CD95, CD9D
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_207 proc near
F000:CD5B 50 push ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 227

F000:CD5C EE out dx,al ; port 3BCh, MDA printer-1 data
F000:CD5D EB 00 jmp short loc_1077 ; (CD5F)
F000:CD5F loc_1077: ; xref F000:CD5D
F000:CD5F EB 00 jmp short loc_1078 ; (CD61)
F000:CD61 loc_1078: ; xref F000:CD5F
F000:CD61 86 C4 xchg al,ah
F000:CD63 0B DB or bx,bx ; Zero ?
F000:CD65 74 09 jz short loc_1082 ; Jump if zero
F000:CD67 EB 00 jmp short loc_1079 ; (CD69)
F000:CD69 loc_1079: ; xref F000:CD67
F000:CD69 EE out dx,al ; port 3BCh, MDA printer-1 data
F000:CD6A EB 00 jmp short loc_1080 ; (CD6C)
F000:CD6C loc_1080: ; xref F000:CD6A
F000:CD6C EB 00 jmp short loc_1081 ; (CD6E)
F000:CD6E loc_1081: ; xref F000:CD6C
F000:CD6E EB 00 jmp short loc_1082 ; (CD70)
F000:CD70 loc_1082: ; xref F000:CD65, CD6E
F000:CD70 EC in al,dx ; port 3BCh, MDA printer-1 data
F000:CD71 3A C4 cmp al,ah
F000:CD73 58 pop ax
F000:CD74 75 0B jnz short loc_ret_1085 ; Jump if not zero
F000:CD76 0B DB or bx,bx ; Zero ?
F000:CD78 74 07 jz short loc_ret_1085 ; Jump if zero
F000:CD7A EB 00 jmp short loc_1083 ; (CD7C)
F000:CD7C loc_1083: ; xref F000:CD7A
F000:CD7C EB 00 jmp short loc_1084 ; (CD7E)
F000:CD7E loc_1084: ; xref F000:CD7C
F000:CD7E EC in al,dx ; port 3BCh, MDA printer-1 data
F000:CD7F 3A C4 cmp al,ah

F000:CD81 loc_ret_1085: ; xref F000:CD74, CD78
F000:CD81 C3 retn
sub_207 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9840, CC89, CCAE, CCBD
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_208 proc near
F000:CD82 B8 AA55 mov ax,0AA55h
F000:CD85 E8 FFD3 call sub_207 ; (CD5B)
F000:CD88 75 18 jnz short loc_ret_1086 ; Jump if not zero
F000:CD8A B8 55AA mov ax,55AAh
F000:CD8D E8 FFCB call sub_207 ; (CD5B)
F000:CD90 75 10 jnz short loc_ret_1086 ; Jump if not zero
F000:CD92 B8 CC0F mov ax,0CC0Fh
F000:CD95 E8 FFC3 call sub_207 ; (CD5B)
F000:CD98 75 08 jnz short loc_ret_1086 ; Jump if not zero
F000:CD9A B8 0000 mov ax,0
F000:CD9D E8 FFBB call sub_207 ; (CD5B)
F000:CDA0 75 00 jnz short loc_ret_1086 ; Jump if not zero

F000:CDA2 loc_ret_1086: ; xref F000:CD88, CD90, CD98, CDA0
F000:CDA2 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 228

sub_208 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:91A7
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_209 proc near
F000:CDA3 FA cli ; Disable interrupts
F000:CDA4 FC cld ; Clear direction
F000:CDA5 F7 C5 4000 test bp,4000h
F000:CDA9 74 01 jz short loc_1087 ; Jump if zero
F000:CDAB C3 retn
F000:CDAC loc_1087: ; xref F000:CDA9
F000:CDAC 06 push es
F000:CDAD 1E push ds
F000:CDAE E6 FB out 0FBh,al ; port 0FBh
F000:CDB0 B0 B8 mov al,0B8h
F000:CDB2 E8 20D4 call sub_255 ; (EE89)
F000:CDB5 A8 80 test al,80h
F000:CDB7 75 09 jnz short loc_1088 ; Jump if not zero
F000:CDB9 B0 03 mov al,3
F000:CDBB E8 29BB call sub_267 ; (F779)
F000:CDBE A8 1F test al,1Fh
F000:CDC0 74 6F jz short loc_1090 ; Jump if zero
F000:CDC2 loc_1088: ; xref F000:CDB7
F000:CDC2 B8 0F0F mov ax,0F0Fh
F000:CDC5 E8 29B1 call sub_267 ; (F779)
F000:CDC8 50 push ax
F000:CDC9 B8 1010 mov ax,1010h
F000:CDCC E8 29AA call sub_267 ; (F779)
F000:CDCF 50 push ax
F000:CDD0 B8 1111 mov ax,1111h
F000:CDD3 E8 29A3 call sub_267 ; (F779)
F000:CDD6 50 push ax
F000:CDD7 B8 1212 mov ax,1212h
F000:CDDA E8 299C call sub_267 ; (F779)
F000:CDDD 50 push ax
F000:CDDE B8 550F mov ax,550Fh
F000:CDE1 E8 2984 call sub_266 ; (F768)
F000:CDE4 B8 5510 mov ax,5510h
F000:CDE7 E8 297E call sub_266 ; (F768)
F000:CDEA B8 5511 mov ax,5511h
F000:CDED E8 2978 call sub_266 ; (F768)
F000:CDF0 B8 5512 mov ax,5512h
F000:CDF3 E8 2972 call sub_266 ; (F768)
F000:CDF6 06 push es
F000:CDF7 B8 C000 mov ax,0C000h
F000:CDFA 8E C0 mov es,ax
F000:CDFC B9 0004 mov cx,4
F000:CDFF FA cli ; Disable interrupts
F000:CE00 FC cld ; Clear direction

F000:CE01 locloop_1089: ; xref F000:CE0D
F000:CE01 51 push cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 229

F000:CE02 E8 DF92 call sub_131 ; (AD97)
F000:CE05 8C C0 mov ax,es
F000:CE07 80 C4 10 add ah,10h
F000:CE0A 8E C0 mov es,ax
F000:CE0C 59 pop cx
F000:CE0D E2 F2 loop locloop_1089 ; Loop if cx > 0

F000:CE0F 07 pop es
F000:CE10 58 pop ax
F000:CE11 86 C4 xchg al,ah
F000:CE13 E8 2952 call sub_266 ; (F768)
F000:CE16 58 pop ax
F000:CE17 86 C4 xchg al,ah
F000:CE19 E8 294C call sub_266 ; (F768)
F000:CE1C 58 pop ax
F000:CE1D 86 C4 xchg al,ah
F000:CE1F E8 2946 call sub_266 ; (F768)
F000:CE22 58 pop ax
F000:CE23 86 C4 xchg al,ah
F000:CE25 E8 2940 call sub_266 ; (F768)
F000:CE28 B0 8E mov al,8Eh
F000:CE2A E8 205C call sub_255 ; (EE89)
F000:CE2D A8 C0 test al,0C0h
F000:CE2F 74 03 jz short loc_1091 ; Jump if zero
F000:CE31 loc_1090: ; xref F000:CDC0
F000:CE31 E9 00D9 jmp loc_1098 ; (CF0D)
F000:CE34 loc_1091: ; xref F000:CE2F
F000:CE34 B0 B8 mov al,0B8h
F000:CE36 E8 2050 call sub_255 ; (EE89)
F000:CE39 50 push ax
F000:CE3A 24 48 and al,48h ; 'H'
F000:CE3C 3C 40 cmp al,40h ; '@'
F000:CE3E 74 03 je short loc_1092 ; Jump if equal
F000:CE40 EB 57 jmp short loc_1093 ; (CE99)
F000:CE42 90 db 90h
F000:CE43 loc_1092: ; xref F000:CE3E
F000:CE43 B8 0012 mov ax,12h
F000:CE46 E8 291F call sub_266 ; (F768)
F000:CE49 B9 1000 mov cx,1000h
F000:CE4C 8E C1 mov es,cx
F000:CE4E B9 8000 mov cx,8000h
F000:CE51 33 F6 xor si,si ; Zero register
F000:CE53 33 FF xor di,di ; Zero register
F000:CE55 2E: F3/ A5 rep movs word ptr es:[di],word ptr cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:CE58 B9 8000 mov cx,8000h
F000:CE5B 33 F6 xor si,si ; Zero register
F000:CE5D 33 FF xor di,di ; Zero register
F000:CE5F 2E: F3/ A7 repe cmps word ptr cs:[si],word ptr es:[di] ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:CE62 75 35 jnz short loc_1093 ; Jump if not zero
F000:CE64 06 push es
F000:CE65 B8 CE6A mov ax,0CE6Ah
F000:CE68 50 push ax
F000:CE69 CB retf ; Return far
F000:CE6A B8 12 FF E8 F8 28 db 0B8h, 12h, 0FFh, 0E8h, 0F8h, 28h
F000:CE70 B9 00 F0 8E C1 B9 db 0B9h, 0, 0F0h, 8Eh, 0C1h, 0B9h
F000:CE76 00 80 33 F6 33 FF db 0, 80h, 33h, 0F6h, 33h, 0FFh
F000:CE7C 2E F3 A5 B9 00 80 db 2Eh, 0F3h, 0A5h, 0B9h, 0, 80h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 230

F000:CE82 33 F6 33 FF 2E F3 db 33h, 0F6h, 33h, 0FFh, 2Eh, 0F3h
F000:CE88 A7 B8 12 AA 74 02 db 0A7h, 0B8h, 12h, 0AAh, 74h, 2
F000:CE8E B4 00 E8 D5 28 06 db 0B4h, 0, 0E8h, 0D5h, 28h, 6
F000:CE94 B8 99 CE 50 CB db 0B8h, 99h, 0CEh, 50h, 0CBh
F000:CE99 loc_1093: ; xref F000:CE40, CE62
F000:CE99 58 pop ax
F000:CE9A 24 28 and al,28h ; '('
F000:CE9C 3C 20 cmp al,20h ; ' '
F000:CE9E 74 03 je short loc_1094 ; Jump if equal
F000:CEA0 EB 6B jmp short loc_1098 ; (CF0D)
F000:CEA2 90 db 90h
F000:CEA3 loc_1094: ; xref F000:CE9E
F000:CEA3 BA C000 mov dx,0C000h
F000:CEA6 8E DA mov ds,dx
F000:CEA8 B6 C8 mov dh,0C8h
F000:CEAA 33 C9 xor cx,cx ; Zero register
F000:CEAC loc_1095: ; xref F000:CECA
F000:CEAC 81 3E 0000 AA55 cmp word ptr ds:rom_chk_word,0AA55h ; (C000:0000=0AA55h)
F000:CEB2 52 push dx
F000:CEB3 BA 0080 mov dx,80h
F000:CEB6 75 09 jnz short loc_1096 ; Jump if not zero
F000:CEB8 B1 FF mov cl,0FFh
F000:CEBA 8A 16 0002 mov dl,ds:rom_chk_size ; (C000:0002=40h)
F000:CEBE C1 E2 05 shl dx,5 ; Shift w/zeros fill
F000:CEC1 loc_1096: ; xref F000:CEB6
F000:CEC1 8C D8 mov ax,ds
F000:CEC3 03 C2 add ax,dx
F000:CEC5 8E D8 mov ds,ax
F000:CEC7 5A pop dx
F000:CEC8 3B C2 cmp ax,dx
F000:CECA 72 E0 jb loc_1095 ; Jump if below
F000:CECC E3 3F jcxz short loc_1098 ; Jump if cx=0
F000:CECE B9 C000 mov cx,0C000h
F000:CED1 8E D9 mov ds,cx
F000:CED3 B9 1000 mov cx,1000h
F000:CED6 8E C1 mov es,cx
F000:CED8 B9 8000 mov cx,8000h
F000:CEDB 33 F6 xor si,si ; Zero register
F000:CEDD 33 FF xor di,di ; Zero register
F000:CEDF F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:CEE1 B8 0F0F mov ax,0F0Fh
F000:CEE4 E8 2881 call sub_266 ; (F768)
F000:CEE7 B9 1000 mov cx,1000h
F000:CEEA 8E D9 mov ds,cx
F000:CEEC B9 C000 mov cx,0C000h
F000:CEEF 8E C1 mov es,cx
F000:CEF1 B9 8000 mov cx,8000h
F000:CEF4 33 F6 xor si,si ; Zero register
F000:CEF6 33 FF xor di,di ; Zero register
F000:CEF8 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:CEFA B9 8000 mov cx,8000h
F000:CEFD 33 F6 xor si,si ; Zero register
F000:CEFF 33 FF xor di,di ; Zero register
F000:CF01 F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:CF03 B8 0A0F mov ax,0A0Fh
F000:CF06 74 02 jz short loc_1097 ; Jump if zero
F000:CF08 B4 00 mov ah,0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 231

F000:CF0A loc_1097: ; xref F000:CF06
F000:CF0A E8 285B call sub_266 ; (F768)
F000:CF0D loc_1098: ; xref F000:CE31, CEA0, CECC
F000:CF0D E6 F9 out 0F9h,al ; port 0F9h
F000:CF0F 1F pop ds
F000:CF10 07 pop es
F000:CF11 C3 retn
sub_209 endp

F000:CF12 32 ED B0 6A BC 1C db 32h, 0EDh, 0B0h, 6Ah, 0BCh, 1Ch
F000:CF18 CF E9 7D 28 1E CF db 0CFh, 0E9h, 7Dh, 28h, 1Eh, 0CFh
F000:CF1E A8 08 75 03 E9 65 db 0A8h, 8, 75h, 3, 0E9h, 65h
F000:CF24 01 8A C8 A8 01 74 db 1, 8Ah, 0C8h, 0A8h, 1, 74h
F000:CF2A 37 24 FE 8A E0 B0 db 37h, 24h, 0FEh, 8Ah, 0E0h, 0B0h
F000:CF30 6A 90 BC 38 CF E9 db 6Ah, 90h, 0BCh, 38h, 0CFh, 0E9h
F000:CF36 4E 28 3A CF B8 6F db 4Eh, 28h, 3Ah, 0CFh, 0B8h, 6Fh
F000:CF3C 6E 90 BC 44 CF E9 db 6Eh, 90h, 0BCh, 44h, 0CFh, 0E9h
F000:CF42 55 28 46 CF 86 C4 db 55h, 28h, 46h, 0CFh, 86h, 0C4h
F000:CF48 BC 4E CF E9 4B 28 db 0BCh, 4Eh, 0CFh, 0E9h, 4Bh, 28h
F000:CF4E 50 CF 40 40 8B D0 db 50h, 0CFh, 40h, 40h, 8Bh, 0D0h
F000:CF54 EC A8 F8 75 09 8A db 0ECh, 0A8h, 0F8h, 75h, 9, 8Ah
F000:CF5A C1 24 FE 8A C8 80 db 0C1h, 24h, 0FEh, 8Ah, 0C8h, 80h
F000:CF60 CD 02 db 0CDh, 2
F000:CF62 loc_1099:
F000:CF62 8A C1 mov al,cl
F000:CF64 A8 10 test al,10h
F000:CF66 74 41 jz short loc_1100 ; Jump if zero
F000:CF68 24 CF and al,0CFh
F000:CF6A 8A E0 mov ah,al
F000:CF6C B0 6A mov al,6Ah ; 'j'
F000:CF6E BC CF74 mov sp,0CF74h
F000:CF71 E9 2812 jmp loc_1443 ; (F786)
F000:CF74 76 CF B8 78 77 90 db 76h, 0CFh, 0B8h, 78h, 77h, 90h
F000:CF7A BC 80 CF E9 19 28 db 0BCh, 80h, 0CFh, 0E9h, 19h, 28h
F000:CF80 82 CF 86 C4 BC 8A db 82h, 0CFh, 86h, 0C4h, 0BCh, 8Ah
F000:CF86 CF E9 0F 28 8C CF db 0CFh, 0E9h, 0Fh, 28h, 8Ch, 0CFh
F000:CF8C 05 04 00 8B D0 32 db 5, 4, 0, 8Bh, 0D0h, 32h
F000:CF92 E4 90 BC 9A CF E9 db 0E4h, 90h, 0BCh, 9Ah, 0CFh, 0E9h
F000:CF98 98 27 9C CF 0A E4 db 98h, 27h, 9Ch, 0CFh, 0Ah, 0E4h
F000:CF9E 74 09 8A C1 24 CF db 74h, 9, 8Ah, 0C1h, 24h, 0CFh
F000:CFA4 8A C8 80 CD 10 db 8Ah, 0C8h, 80h, 0CDh, 10h
F000:CFA9 loc_1100: ; xref F000:CF66
F000:CFA9 8A E1 mov ah,cl
F000:CFAB B0 6A mov al,6Ah ; 'j'
F000:CFAD 90 nop ;
F000:CFAE BC CFB4 mov sp,0CFB4h
F000:CFB1 E9 27D2 jmp loc_1443 ; (F786)
F000:CFB4 B6 CF B0 69 BC BE db 0B6h, 0CFh, 0B0h, 69h, 0BCh, 0BEh
F000:CFBA CF E9 DB 27 C0 CF db 0CFh, 0E9h, 0DBh, 27h, 0C0h, 0CFh
F000:CFC0 8A C8 A8 10 74 3D db 8Ah, 0C8h, 0A8h, 10h, 74h, 3Dh
F000:CFC6 24 EF 8A E0 B0 69 db 24h, 0EFh, 8Ah, 0E0h, 0B0h, 69h
F000:CFCC BC D2 CF E9 B4 27 db 0BCh, 0D2h, 0CFh, 0E9h, 0B4h, 27h
F000:CFD2 D4 CF B8 72 71 90 db 0D4h, 0CFh, 0B8h, 72h, 71h, 90h
F000:CFD8 BC DE CF E9 BB 27 db 0BCh, 0DEh, 0CFh, 0E9h, 0BBh, 27h
F000:CFDE E0 CF 86 C4 BC E8 db 0E0h, 0CFh, 86h, 0C4h, 0BCh, 0E8h
F000:CFE4 CF E9 B1 27 EA CF db 0CFh, 0E9h, 0B1h, 27h, 0EAh, 0CFh
F000:CFEA 8B D0 32 E4 BC F4 db 8Bh, 0D0h, 32h, 0E4h, 0BCh, 0F4h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 232

F000:CFF0 CF E9 3E 27 F6 CF db 0CFh, 0E9h, 3Eh, 27h, 0F6h, 0CFh
F000:CFF6 0A E4 74 09 8A C1 db 0Ah, 0E4h, 74h, 9, 8Ah, 0C1h
F000:CFFC 24 EF 8A C8 80 CD db 24h, 0EFh, 8Ah, 0C8h, 80h, 0CDh
F000:D002 04 8A C1 A8 04 74 db 4, 8Ah, 0C1h, 0A8h, 4, 74h
F000:D008 37 24 FB 8A E0 B0 db 37h, 24h, 0FBh, 8Ah, 0E0h, 0B0h
F000:D00E 69 90 BC 16 D0 E9 db 69h, 90h, 0BCh, 16h, 0D0h, 0E9h
F000:D014 70 27 18 D0 B8 6C db 70h, 27h, 18h, 0D0h, 0B8h, 6Ch
F000:D01A 6B 90 BC 22 D0 E9 db 6Bh, 90h, 0BCh, 22h, 0D0h, 0E9h
F000:D020 77 27 24 D0 86 C4 db 77h, 27h, 24h, 0D0h, 86h, 0C4h
F000:D026 BC 2C D0 E9 6D 27 db 0BCh, 2Ch, 0D0h, 0E9h, 6Dh, 27h
F000:D02C 2E D0 40 40 8B D0 db 2Eh, 0D0h, 40h, 40h, 8Bh, 0D0h
F000:D032 EC A8 F8 75 09 8A db 0ECh, 0A8h, 0F8h, 75h, 9, 8Ah
F000:D038 C1 24 FB 8A C8 80 db 0C1h, 24h, 0FBh, 8Ah, 0C8h, 80h
F000:D03E CD 01 db 0CDh, 1
F000:D040 loc_1101:
F000:D040 8A C1 mov al,cl
F000:D042 A8 02 test al,2
F000:D044 74 37 jz short loc_1102 ; Jump if zero
F000:D046 24 FD and al,0FDh
F000:D048 8A E0 mov ah,al
F000:D04A B0 69 mov al,69h ; 'i'
F000:D04C BC D052 mov sp,0D052h
F000:D04F E9 2734 jmp loc_1443 ; (F786)
F000:D052 54 D0 B8 75 74 90 db 54h, 0D0h, 0B8h, 75h, 74h, 90h
F000:D058 BC 5E D0 E9 3B 27 db 0BCh, 5Eh, 0D0h, 0E9h, 3Bh, 27h
F000:D05E 60 D0 86 C4 BC 68 db 60h, 0D0h, 86h, 0C4h, 0BCh, 68h
F000:D064 D0 E9 31 27 6A D0 db 0D0h, 0E9h, 31h, 27h, 6Ah, 0D0h
F000:D06A 05 04 00 8B D0 EC db 5, 4, 0, 8Bh, 0D0h, 0ECh
F000:D070 3C FF 74 09 8A C1 db 3Ch, 0FFh, 74h, 9, 8Ah, 0C1h
F000:D076 24 FD 8A C8 80 CD db 24h, 0FDh, 8Ah, 0C8h, 80h, 0CDh
F000:D07C 08 db 8
F000:D07D loc_1102: ; xref F000:D044
F000:D07D 8A E1 mov ah,cl
F000:D07F B0 69 mov al,69h ; 'i'
F000:D081 90 nop ;
F000:D082 BC D088 mov sp,0D088h
F000:D085 E9 26FE jmp loc_1443 ; (F786)
F000:D088 8A D0 8A E5 B0 C0 db 8Ah, 0D0h, 8Ah, 0E5h, 0B0h, 0C0h
F000:D08E BC 94 D0 E9 FE 1D db 0BCh, 94h, 0D0h, 0E9h, 0FEh, 1Dh
F000:D094 96 D0 E9 20 24 00 db 96h, 0D0h, 0E9h, 20h, 24h, 0
F000:D09A 04 data_132 db 4 ; Data table (indexed access)
; xref F000:D54C
F000:D09B 02 00 05 03 01 06 db 2, 0, 5, 3, 1, 6
F000:D0A1 00 data_133 db 0 ; Data table (indexed access)
; xref F000:D585
F000:D0A2 03 03 06 01 04 06 db 3, 3, 6, 1, 4, 6
F000:D0A8 02 05 00 03 05 C9 db 2, 5, 0, 3, 5, 0C9h
F000:D0AE CD CD CD D1 CD CD db 0CDh, 0CDh, 0CDh, 0D1h, 0CDh, 0CDh
F000:D0B4 CD D1 CD CD CD D1 db 0CDh, 0D1h, 0CDh, 0CDh, 0CDh, 0D1h
F000:D0BA CD CD CD D1 CD CD db 0CDh, 0CDh, 0CDh, 0D1h, 0CDh, 0CDh
F000:D0C0 CD D1 CD CD CD D1 db 0CDh, 0D1h, 0CDh, 0CDh, 0CDh, 0D1h
F000:D0C6 CD CD CD B9 00 BA db 0CDh, 0CDh, 0CDh, 0B9h, 0, 0BAh
F000:D0CC 53 75 6E B3 4D 6F db 53h, 75h, 6Eh, 0B3h, 4Dh, 6Fh
F000:D0D2 6E B3 54 75 65 B3 db 6Eh, 0B3h, 54h, 75h, 65h, 0B3h
F000:D0D8 57 65 64 B3 54 68 db 57h, 65h, 64h, 0B3h, 54h, 68h
F000:D0DE 75 B3 46 72 69 B3 db 75h, 0B3h, 46h, 72h, 69h, 0B3h
F000:D0E4 53 61 74 BA 00 CC db 53h, 61h, 74h, 0BAh, 0, 0CCh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 233

F000:D0EA CD CD CD D8 CD CD db 0CDh, 0CDh, 0CDh, 0D8h, 0CDh, 0CDh
F000:D0F0 CD D8 CD CD CD D8 db 0CDh, 0D8h, 0CDh, 0CDh, 0CDh, 0D8h
F000:D0F6 CD CD CD D8 CD CD db 0CDh, 0CDh, 0CDh, 0D8h, 0CDh, 0CDh
F000:D0FC CD D8 CD CD CD D8 db 0CDh, 0D8h, 0CDh, 0CDh, 0CDh, 0D8h
F000:D102 CD CD CD B9 00 BA db 0CDh, 0CDh, 0CDh, 0B9h, 0, 0BAh
F000:D108 20 20 20 B3 20 20 db 20h, 20h, 20h, 0B3h, 20h, 20h
F000:D10E 20 B3 20 20 20 B3 db 20h, 0B3h, 20h, 20h, 20h, 0B3h
F000:D114 20 20 20 B3 20 20 db 20h, 20h, 20h, 0B3h, 20h, 20h
F000:D11A 20 B3 20 20 20 B3 db 20h, 0B3h, 20h, 20h, 20h, 0B3h
F000:D120 20 20 20 BA 00 C7 db 20h, 20h, 20h, 0BAh, 0, 0C7h
F000:D126 C4 C4 C4 C5 C4 C4 db 0C4h, 0C4h, 0C4h, 0C5h, 0C4h, 0C4h
F000:D12C C4 C5 C4 C4 C4 C5 db 0C4h, 0C5h, 0C4h, 0C4h, 0C4h, 0C5h
F000:D132 C4 C4 C4 C5 C4 C4 db 0C4h, 0C4h, 0C4h, 0C5h, 0C4h, 0C4h
F000:D138 C4 C5 C4 C4 C4 C5 db 0C4h, 0C5h, 0C4h, 0C4h, 0C4h, 0C5h
F000:D13E C4 C4 C4 B6 00 CA db 0C4h, 0C4h, 0C4h, 0B6h, 0, 0CAh
F000:D144 CD CD CD CF CD CD db 0CDh, 0CDh, 0CDh, 0CFh, 0CDh, 0CDh
F000:D14A CD CF CD CD CD CF db 0CDh, 0CFh, 0CDh, 0CDh, 0CDh, 0CFh
F000:D150 CD CD CD CF CD CD db 0CDh, 0CDh, 0CDh, 0CFh, 0CDh, 0CDh
F000:D156 CD CF CD CD CD CF db 0CDh, 0CFh, 0CDh, 0CDh, 0CDh, 0CFh
F000:D15C CD CD CD BC 00 db 0CDh, 0CDh, 0CDh, 0BCh, 0

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE23
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_210 proc near
F000:D161 BE D0AD mov si,0D0ADh
F000:D164 BA 0A32 mov dx,0A32h
F000:D167 E8 F505 call sub_181 ; (C66F)
F000:D16A BE D0CB mov si,0D0CBh
F000:D16D BA 0B32 mov dx,0B32h
F000:D170 E8 F4FC call sub_181 ; (C66F)
F000:D173 BE D0E9 mov si,0D0E9h
F000:D176 BA 0C32 mov dx,0C32h
F000:D179 E8 F4F3 call sub_181 ; (C66F)
F000:D17C BA 0D32 mov dx,0D32h
F000:D17F B9 0006 mov cx,6

F000:D182 locloop_1103: ; xref F000:D196
F000:D182 BE D107 mov si,0D107h
F000:D185 52 push dx
F000:D186 E8 F4E6 call sub_181 ; (C66F)
F000:D189 5A pop dx
F000:D18A FE C6 inc dh
F000:D18C BE D125 mov si,0D125h
F000:D18F 52 push dx
F000:D190 E8 F4DC call sub_181 ; (C66F)
F000:D193 5A pop dx
F000:D194 FE C6 inc dh
F000:D196 E2 EA loop locloop_1103 ; Loop if cx > 0

F000:D198 BE D143 mov si,0D143h
F000:D19B FE CE dec dh
F000:D19D E8 F4CF call sub_181 ; (C66F)
F000:D1A0 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 234

sub_210 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BF9C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_211 proc near
F000:D1A1 FA cli ; Disable interrupts
F000:D1A2 50 push ax
F000:D1A3 1E push ds
F000:D1A4 33 C0 xor ax,ax ; Zero register
F000:D1A6 8E D8 mov ds,ax
F000:D1A8 B8 D222 mov ax,0D222h
assume ds:seg_a
F000:D1AB 87 06 0040 xchg ax,vectr_10h_off ; (0000:0040=2E7h)
F000:D1AF A3 0280 mov ds:data_9e,ax ; (0000:0280=0)
F000:D1B2 8C C8 mov ax,cs
F000:D1B4 87 06 0042 xchg ax,vectr_10h_seg ; (0000:0042=0D3D1h)
F000:D1B8 A3 0282 mov ds:data_10e,ax ; (0000:0282=0)
F000:D1BB B8 D232 mov ax,0D232h
F000:D1BE 87 06 0068 xchg ax,ds:data_4e ; (0000:0068=0FE6Eh)
F000:D1C2 A3 0284 mov ds:data_11e,ax ; (0000:0284=0)
F000:D1C5 8C C8 mov ax,cs
F000:D1C7 87 06 006A xchg ax,ds:data_5e ; (0000:006A=0F000h)
F000:D1CB A3 0286 mov ds:data_12e,ax ; (0000:0286=0)
F000:D1CE B8 D252 mov ax,0D252h
F000:D1D1 87 06 0070 xchg ax,ds:data_6e ; (0000:0070=3C0h)
F000:D1D5 A3 0288 mov ds:data_13e,ax ; (0000:0288=0)
F000:D1D8 8C C8 mov ax,cs
F000:D1DA 87 06 0072 xchg ax,ds:data_7e ; (0000:0072=0D3D1h)
F000:D1DE A3 028A mov ds:data_14e,ax ; (0000:028A=0)
F000:D1E1 A1 046C mov ax,timer_low_ ; (0000:046C=0C319h)
F000:D1E4 2D 0011 sub ax,11h
F000:D1E7 A3 028C mov ds:data_15e,ax ; (0000:028C=0)
F000:D1EA 33 C0 xor ax,ax ; Zero register
F000:D1EC A3 028E mov ds:data_16e,ax ; (0000:028E=0)
F000:D1EF 1F pop ds
F000:D1F0 58 pop ax
F000:D1F1 FB sti ; Enable interrupts
F000:D1F2 C3 retn
sub_211 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:C036
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_212 proc near
F000:D1F3 FA cli ; Disable interrupts
F000:D1F4 50 push ax
F000:D1F5 1E push ds
F000:D1F6 33 C0 xor ax,ax ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 235

F000:D1F8 8E D8 mov ds,ax
F000:D1FA A1 0280 mov ax,ds:data_9e ; (0000:0280=0)
F000:D1FD A3 0040 mov vectr_10h_off,ax ; (0000:0040=2E7h)
F000:D200 A1 0282 mov ax,ds:data_10e ; (0000:0282=0)
F000:D203 A3 0042 mov vectr_10h_seg,ax ; (0000:0042=0D3D1h)
F000:D206 A1 0284 mov ax,ds:data_11e ; (0000:0284=0)
F000:D209 A3 0068 mov ds:data_4e,ax ; (0000:0068=0FE6Eh)
F000:D20C A1 0286 mov ax,ds:data_12e ; (0000:0286=0)
F000:D20F A3 006A mov ds:data_5e,ax ; (0000:006A=0F000h)
F000:D212 A1 0288 mov ax,ds:data_13e ; (0000:0288=0)
F000:D215 A3 0070 mov ds:data_6e,ax ; (0000:0070=3C0h)
F000:D218 A1 028A mov ax,ds:data_14e ; (0000:028A=0)
F000:D21B A3 0072 mov ds:data_7e,ax ; (0000:0072=0D3D1h)
F000:D21E 1F pop ds
F000:D21F 58 pop ax
F000:D220 FB sti ; Enable interrupts
F000:D221 C3 retn
sub_212 endp

F000:D222 50 1E 33 C0 8E D8 db 50h, 1Eh, 33h, 0C0h, 8Eh, 0D8h
F000:D228 FE 06 8E 02 1F 58 db 0FEh, 6, 8Eh, 2, 1Fh, 58h
F000:D22E CD A0 EB 0E 50 1E db 0CDh, 0A0h, 0EBh, 0Eh, 50h, 1Eh
F000:D234 33 C0 8E D8 FE 06 db 33h, 0C0h, 8Eh, 0D8h, 0FEh, 6
F000:D23A 8E 02 1F 58 CD A1 db 8Eh, 2, 1Fh, 58h, 0CDh, 0A1h
F000:D240 9C FA 50 1E 33 C0 db 9Ch, 0FAh, 50h, 1Eh, 33h, 0C0h
F000:D246 8E D8 FE 0E 8E 02 db 8Eh, 0D8h, 0FEh, 0Eh, 8Eh, 2
F000:D24C 1F 58 9D CA 02 00 db 1Fh, 58h, 9Dh, 0CAh, 2, 0
F000:D252 50 1E 33 C0 8E D8 db 50h, 1Eh, 33h, 0C0h, 8Eh, 0D8h
F000:D258 A1 6C 04 2B 06 8C db 0A1h, 6Ch, 4, 2Bh, 6, 8Ch
F000:D25E 02 3D 12 00 72 09 db 2, 3Dh, 12h, 0, 72h, 9
F000:D264 01 06 8C 02 C6 06 db 1, 6, 8Ch, 2, 0C6h, 6
F000:D26A 8F 02 FF 80 3E 8E db 8Fh, 2, 0FFh, 80h, 3Eh, 8Eh
F000:D270 02 00 75 11 80 3E db 2, 0, 75h, 11h, 80h, 3Eh
F000:D276 8F 02 FF 75 0A 60 db 8Fh, 2, 0FFh, 75h, 0Ah, 60h
F000:D27C E8 93 02 61 C6 06 db 0E8h, 93h, 2, 61h, 0C6h, 6
F000:D282 8F 02 00 db 8Fh, 2, 0
F000:D285 loc_1104:
F000:D285 1F pop ds
F000:D286 58 pop ax
F000:D287 CD A2 int 0A2h
F000:D289 CA 0002 retf 2 ; Return far
F000:D28C loc_1105: ; xref F000:D2C7, D2E0
F000:D28C BA 031B mov dx,31Bh
F000:D28F B9 0005 mov cx,5
F000:D292 E8 01F2 call sub_213 ; (D487)
F000:D295 9C pushf ; Push flags
F000:D296 73 07 jnc short loc_1106 ; Jump if carry=0
F000:D298 74 05 jz short loc_1106 ; Jump if zero
F000:D29A 80 FC 01 cmp ah,1
F000:D29D 75 0B jne short loc_1107 ; Jump if not equal
F000:D29F loc_1106: ; xref F000:D296, D298
F000:D29F BA 031B mov dx,31Bh
F000:D2A2 B9 0005 mov cx,5
F000:D2A5 E8 01F4 call sub_215 ; (D49C)
F000:D2A8 9D popf ; Pop flags
F000:D2A9 C3 retn
F000:D2AA loc_1107: ; xref F000:D29D
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 236

F000:D2AA 9D popf ; Pop flags
F000:D2AB 80 FC 49 cmp ah,49h ; 'I'
F000:D2AE 74 19 je short loc_1110 ; Jump if equal
F000:D2B0 E8 03BA call sub_221 ; (D66D)
F000:D2B3 8A C6 mov al,dh
F000:D2B5 3C 12 cmp al,12h
F000:D2B7 75 04 jne short loc_1108 ; Jump if not equal
F000:D2B9 B0 01 mov al,1
F000:D2BB EB 05 jmp short loc_1109 ; (D2C2)
F000:D2BD loc_1108: ; xref F000:D2B7
F000:D2BD 0A C0 or al,al ; Zero ?
F000:D2BF FE C0 inc al
F000:D2C1 27 daa ; Decimal adjust
F000:D2C2 loc_1109: ; xref F000:D2BB
F000:D2C2 8A F0 mov dh,al
F000:D2C4 E8 01F8 call sub_218 ; (D4BF)
F000:D2C7 EB C3 jmp short loc_1105 ; (D28C)
F000:D2C9 loc_1110: ; xref F000:D2AE
F000:D2C9 E8 03A1 call sub_221 ; (D66D)
F000:D2CC 8A C6 mov al,dh
F000:D2CE 3C 01 cmp al,1
F000:D2D0 75 04 jne short loc_1111 ; Jump if not equal
F000:D2D2 B0 12 mov al,12h
F000:D2D4 EB 05 jmp short loc_1112 ; (D2DB)
F000:D2D6 loc_1111: ; xref F000:D2D0
F000:D2D6 0A C0 or al,al ; Zero ?
F000:D2D8 FE C8 dec al
F000:D2DA 2F das ; Decimal adjust
F000:D2DB loc_1112: ; xref F000:D2D4
F000:D2DB 8A F0 mov dh,al
F000:D2DD E8 01DF call sub_218 ; (D4BF)
F000:D2E0 EB AA jmp short loc_1105 ; (D28C)
F000:D2E2 loc_1113: ; xref F000:D31D, D336
F000:D2E2 BA 031F mov dx,31Fh

F000:D2E5 B9 0004 mov cx,4
F000:D2E8 E8 019C call sub_213 ; (D487)
F000:D2EB 9C pushf ; Push flags
F000:D2EC 73 07 jnc short loc_1114 ; Jump if carry=0
F000:D2EE 74 05 jz short loc_1114 ; Jump if zero
F000:D2F0 80 FC 01 cmp ah,1
F000:D2F3 75 0B jne short loc_1115 ; Jump if not equal
F000:D2F5 loc_1114: ; xref F000:D2EC, D2EE
F000:D2F5 BA 031F mov dx,31Fh
F000:D2F8 B9 0004 mov cx,4
F000:D2FB E8 019E call sub_215 ; (D49C)
F000:D2FE 9D popf ; Pop flags
F000:D2FF C3 retn
F000:D300 loc_1115: ; xref F000:D2F3
F000:D300 9D popf ; Pop flags
F000:D301 80 FC 49 cmp ah,49h ; 'I'
F000:D304 74 19 je short loc_1118 ; Jump if equal
F000:D306 E8 0364 call sub_221 ; (D66D)
F000:D309 8A C2 mov al,dl
F000:D30B 3C 31 cmp al,31h ; '1'
F000:D30D 75 04 jne short loc_1116 ; Jump if not equal
F000:D30F B0 01 mov al,1
F000:D311 EB 05 jmp short loc_1117 ; (D318)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 237

F000:D313 loc_1116: ; xref F000:D30D
F000:D313 0A C0 or al,al ; Zero ?
F000:D315 FE C0 inc al
F000:D317 27 daa ; Decimal adjust
F000:D318 loc_1117: ; xref F000:D311
F000:D318 8A D0 mov dl,al
F000:D31A E8 01A2 call sub_218 ; (D4BF)
F000:D31D EB C3 jmp short loc_1113 ; (D2E2)
F000:D31F loc_1118: ; xref F000:D304
F000:D31F E8 034B call sub_221 ; (D66D)
F000:D322 8A C2 mov al,dl
F000:D324 3C 01 cmp al,1
F000:D326 75 04 jne short loc_1119 ; Jump if not equal
F000:D328 B0 32 mov al,32h ; '2'
F000:D32A EB 05 jmp short loc_1120 ; (D331)
F000:D32C loc_1119: ; xref F000:D326
F000:D32C 0A C0 or al,al ; Zero ?
F000:D32E FE C8 dec al
F000:D330 2F das ; Decimal adjust
F000:D331 loc_1120: ; xref F000:D32A
F000:D331 8A D0 mov dl,al
F000:D333 E8 0184 call sub_217 ; (D4BA)
F000:D336 EB AA jmp short loc_1113 ; (D2E2)
F000:D338 loc_1121: ; xref F000:D37B, D39C
F000:D338 BA 0322 mov dx,322h
F000:D33B B9 0006 mov cx,6
F000:D33E E8 0146 call sub_213 ; (D487)
F000:D341 9C pushf ; Push flags
F000:D342 73 07 jnc short loc_1122 ; Jump if carry=0
F000:D344 74 05 jz short loc_1122 ; Jump if zero
F000:D346 80 FC 01 cmp ah,1
F000:D349 75 0B jne short loc_1123 ; Jump if not equal
F000:D34B loc_1122: ; xref F000:D342, D344
F000:D34B BA 0322 mov dx,322h
F000:D34E B9 0006 mov cx,6
F000:D351 E8 0148 call sub_215 ; (D49C)
F000:D354 9D popf ; Pop flags
F000:D355 C3 retn
F000:D356 loc_1123: ; xref F000:D349
F000:D356 9D popf ; Pop flags
F000:D357 80 FC 49 cmp ah,49h ; 'I'
F000:D35A 74 21 je short loc_1127 ; Jump if equal
F000:D35C E8 030E call sub_221 ; (D66D)
F000:D35F 8B C1 mov ax,cx
F000:D361 3D 2099 cmp ax,2099h
F000:D364 75 05 jne short loc_1124 ; Jump if not equal
F000:D366 B8 1901 mov ax,1901h
F000:D369 EB 0B jmp short loc_1126 ; (D376)
F000:D36B loc_1124: ; xref F000:D364
F000:D36B 3D 1999 cmp ax,1999h
F000:D36E 75 02 jne short loc_1125 ; Jump if not equal
F000:D370 B4 20 mov ah,20h ; ' '
F000:D372 loc_1125: ; xref F000:D36E
F000:D372 0B C0 or ax,ax ; Zero ?
F000:D374 40 inc ax
F000:D375 27 daa ; Decimal adjust
F000:D376 loc_1126: ; xref F000:D369
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 238

F000:D376 8B C8 mov cx,ax
F000:D378 E8 0144 call sub_218 ; (D4BF)
F000:D37B EB BB jmp short loc_1121 ; (D338)
F000:D37D loc_1127: ; xref F000:D35A
F000:D37D E8 02ED call sub_221 ; (D66D)
F000:D380 8B C1 mov ax,cx
F000:D382 3D 1901 cmp ax,1901h
F000:D385 75 05 jne short loc_1128 ; Jump if not equal
F000:D387 B8 2099 mov ax,2099h
F000:D38A EB 0B jmp short loc_1130 ; (D397)
F000:D38C loc_1128: ; xref F000:D385
F000:D38C 3D 2000 cmp ax,2000h
F000:D38F 75 02 jne short loc_1129 ; Jump if not equal
F000:D391 B4 1A mov ah,1Ah
F000:D393 loc_1129: ; xref F000:D38F
F000:D393 0B C0 or ax,ax ; Zero ?
F000:D395 48 dec ax
F000:D396 2F das ; Decimal adjust
F000:D397 loc_1130: ; xref F000:D38A
F000:D397 8B C8 mov cx,ax
F000:D399 E8 0123 call sub_218 ; (D4BF)
F000:D39C EB 9A jmp short loc_1121 ; (D338)
F000:D39E loc_1131: ; xref F000:D3DD, D3FA
F000:D39E BA 0416 mov dx,416h
F000:D3A1 B9 0004 mov cx,4
F000:D3A4 E8 00E5 call sub_214 ; (D48C)
F000:D3A7 9C pushf ; Push flags
F000:D3A8 73 07 jnc short loc_1132 ; Jump if carry=0
F000:D3AA 74 05 jz short loc_1132 ; Jump if zero
F000:D3AC 80 FC 01 cmp ah,1
F000:D3AF 75 0B jne short loc_1133 ; Jump if not equal
F000:D3B1 loc_1132: ; xref F000:D3A8, D3AA
F000:D3B1 BA 0416 mov dx,416h
F000:D3B4 B9 0004 mov cx,4
F000:D3B7 E8 00E2 call sub_215 ; (D49C)
F000:D3BA 9D popf ; Pop flags
F000:D3BB C3 retn
F000:D3BC loc_1133: ; xref F000:D3AF
F000:D3BC 9D popf ; Pop flags
F000:D3BD 80 FC 49 cmp ah,49h ; 'I'
F000:D3C0 74 1D je short loc_1136 ; Jump if equal
F000:D3C2 E8 02E2 call sub_222 ; (D6A7)
F000:D3C5 8A C5 mov al,ch
F000:D3C7 3C 23 cmp al,23h ; '#'
F000:D3C9 75 04 jne short loc_1134 ; Jump if not equal
F000:D3CB B0 00 mov al,0
F000:D3CD EB 05 jmp short loc_1135 ; (D3D4)
F000:D3CF loc_1134: ; xref F000:D3C9
F000:D3CF 0A C0 or al,al ; Zero ?
F000:D3D1 FE C0 inc al
F000:D3D3 27 daa ; Decimal adjust
F000:D3D4 loc_1135: ; xref F000:D3CD
F000:D3D4 8A E8 mov ch,al
F000:D3D6 B4 03 mov ah,3
F000:D3D8 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D3DA E8 0135 call sub_219 ; (D512)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 239

F000:D3DD EB BF jmp short loc_1131 ; (D39E)
F000:D3DF loc_1136: ; xref F000:D3C0
F000:D3DF E8 02C5 call sub_222 ; (D6A7)
F000:D3E2 8A C5 mov al,ch
F000:D3E4 3C 00 cmp al,0
F000:D3E6 75 04 jne short loc_1137 ; Jump if not equal
F000:D3E8 B0 23 mov al,23h ; '#'
F000:D3EA EB 05 jmp short loc_1138 ; (D3F1)
F000:D3EC loc_1137: ; xref F000:D3E6
F000:D3EC 0A C0 or al,al ; Zero ?
F000:D3EE FE C8 dec al
F000:D3F0 2F das ; Decimal adjust
F000:D3F1 loc_1138: ; xref F000:D3EA
F000:D3F1 8A E8 mov ch,al
F000:D3F3 B4 03 mov ah,3
F000:D3F5 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D3F7 E8 0118 call sub_219 ; (D512)
F000:D3FA EB A2 jmp short loc_1131 ; (D39E)
F000:D3FC loc_1139: ; xref F000:D43B, D458
F000:D3FC BA 041B mov dx,41Bh
F000:D3FF B9 0004 mov cx,4
F000:D402 E8 0087 call sub_214 ; (D48C)
F000:D405 9C pushf ; Push flags
F000:D406 73 07 jnc short loc_1140 ; Jump if carry=0
F000:D408 74 05 jz short loc_1140 ; Jump if zero
F000:D40A 80 FC 01 cmp ah,1
F000:D40D 75 0B jne short loc_1141 ; Jump if not equal
F000:D40F loc_1140: ; xref F000:D406, D408
F000:D40F BA 041B mov dx,41Bh
F000:D412 B9 0004 mov cx,4
F000:D415 E8 0084 call sub_215 ; (D49C)
F000:D418 9D popf ; Pop flags
F000:D419 C3 retn
F000:D41A loc_1141: ; xref F000:D40D
F000:D41A 9D popf ; Pop flags
F000:D41B 80 FC 49 cmp ah,49h ; 'I'
F000:D41E 74 1D je short loc_1144 ; Jump if equal
F000:D420 E8 0284 call sub_222 ; (D6A7)
F000:D423 8A C1 mov al,cl
F000:D425 3C 59 cmp al,59h ; 'Y'
F000:D427 75 04 jne short loc_1142 ; Jump if not equal
F000:D429 B0 00 mov al,0
F000:D42B EB 05 jmp short loc_1143 ; (D432)
F000:D42D loc_1142: ; xref F000:D427
F000:D42D 0A C0 or al,al ; Zero ?
F000:D42F FE C0 inc al
F000:D431 27 daa ; Decimal adjust
F000:D432 loc_1143: ; xref F000:D42B
F000:D432 8A C8 mov cl,al
F000:D434 B4 03 mov ah,3
F000:D436 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D438 E8 00D7 call sub_219 ; (D512)
F000:D43B EB BF jmp short loc_1139 ; (D3FC)
F000:D43D loc_1144: ; xref F000:D41E
F000:D43D E8 0267 call sub_222 ; (D6A7)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 240

F000:D440 8A C1 mov al,cl
F000:D442 3C 00 cmp al,0
F000:D444 75 04 jne short loc_1145 ; Jump if not equal
F000:D446 B0 59 mov al,59h ; 'Y'
F000:D448 EB 05 jmp short loc_1146 ; (D44F)
F000:D44A loc_1145: ; xref F000:D444
F000:D44A 0A C0 or al,al ; Zero ?
F000:D44C FE C8 dec al
F000:D44E 2F das ; Decimal adjust
F000:D44F loc_1146: ; xref F000:D448
F000:D44F 8A C8 mov cl,al
F000:D451 B4 03 mov ah,3
F000:D453 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D455 E8 00BA call sub_219 ; (D512)
F000:D458 EB A2 jmp short loc_1139 ; (D3FC)
F000:D45A loc_1147: ; xref F000:D485
F000:D45A BA 0420 mov dx,420h
F000:D45D B9 0004 mov cx,4
F000:D460 E8 0029 call sub_214 ; (D48C)
F000:D463 9C pushf ; Push flags
F000:D464 73 07 jnc short loc_1148 ; Jump if carry=0
F000:D466 74 05 jz short loc_1148 ; Jump if zero
F000:D468 80 FC 01 cmp ah,1
F000:D46B 75 0B jne short loc_1149 ; Jump if not equal
F000:D46D loc_1148: ; xref F000:D464, D466
F000:D46D BA 0420 mov dx,420h
F000:D470 B9 0004 mov cx,4
F000:D473 E8 0026 call sub_215 ; (D49C)
F000:D476 9D popf ; Pop flags
F000:D477 C3 retn
F000:D478 loc_1149: ; xref F000:D46B
F000:D478 9D popf ; Pop flags
F000:D479 E8 022B call sub_222 ; (D6A7)
F000:D47C B6 00 mov dh,0
F000:D47E B4 03 mov ah,3
F000:D480 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D482 E8 008D call sub_219 ; (D512)
F000:D485 EB D3 jmp short loc_1147 ; (D45A)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D292, D2E8, D33E
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_213 proc near
F000:D487 BE DB65 mov si,0DB65h
F000:D48A EB 03 jmp short loc_1150 ; (D48F)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D3A4, D402, D460

sub_214:
F000:D48C BE DBB8 mov si,0DBB8h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 241

F000:D48F loc_1150: ; xref F000:D48A
F000:D48F E8 EFF3 call sub_176 ; (C485)
F000:D492 BB 0070 mov bx,70h
F000:D495 E8 000A call sub_216 ; (D4A2)
F000:D498 E8 F21D call sub_183 ; (C6B8)
F000:D49B C3 retn
sub_213 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D2A5, D2FB, D351, D3B7, D415, D473
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_215 proc near
F000:D49C E8 EFF1 call sub_177 ; (C490)
F000:D49F BB 0007 mov bx,7

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D495

sub_216:
F000:D4A2 50 push ax

F000:D4A3 locloop_1151: ; xref F000:D4B6
F000:D4A3 B4 02 mov ah,2
F000:D4A5 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D4A7 FE C2 inc dl
F000:D4A9 B4 08 mov ah,8
F000:D4AB CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:D4AD 51 push cx
F000:D4AE B9 0001 mov cx,1
F000:D4B1 B4 09 mov ah,9
F000:D4B3 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:D4B5 59 pop cx
F000:D4B6 E2 EB loop locloop_1151 ; Loop if cx > 0

F000:D4B8 58 pop ax
F000:D4B9 C3 retn
sub_215 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D333
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_217 proc near
F000:D4BA 51 push cx
F000:D4BB B5 00 mov ch,0
F000:D4BD EB 03 jmp short loc_1152 ; (D4C2)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 242


;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D2C4, D2DD, D31A, D378, D399

sub_218:
F000:D4BF 51 push cx

F000:D4C0 B5 01 mov ch,1
F000:D4C2 loc_1152: ; xref F000:D4BD
F000:D4C2 80 FE 02 cmp dh,2
F000:D4C5 74 1B je short loc_1156 ; Jump if equal
F000:D4C7 80 FE 08 cmp dh,8
F000:D4CA 73 0B jae short loc_1154 ; Jump if above or =
F000:D4CC F6 C6 01 test dh,1
F000:D4CF 75 0B jnz short loc_1155 ; Jump if not zero
F000:D4D1 loc_1153: ; xref F000:D4DA
F000:D4D1 B0 30 mov al,30h ; '0'
F000:D4D3 3A D0 cmp dl,al
F000:D4D5 EB 29 jmp short loc_1158 ; (D500)
F000:D4D7 loc_1154: ; xref F000:D4CA
F000:D4D7 F6 C6 01 test dh,1
F000:D4DA 75 F5 jnz loc_1153 ; Jump if not zero
F000:D4DC loc_1155: ; xref F000:D4CF
F000:D4DC B0 31 mov al,31h ; '1'
F000:D4DE 3A D0 cmp dl,al
F000:D4E0 EB 1E jmp short loc_1158 ; (D500)
F000:D4E2 loc_1156: ; xref F000:D4C5
F000:D4E2 8A C1 mov al,cl
F000:D4E4 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:D4E7 B4 0A mov ah,0Ah
F000:D4E9 F6 E4 mul ah ; ax = reg * al
F000:D4EB 8A E1 mov ah,cl
F000:D4ED 80 E4 0F and ah,0Fh
F000:D4F0 02 C4 add al,ah
F000:D4F2 A8 03 test al,3
F000:D4F4 74 06 jz short loc_1157 ; Jump if zero
F000:D4F6 B0 28 mov al,28h ; '('
F000:D4F8 3A D0 cmp dl,al
F000:D4FA EB 04 jmp short loc_1158 ; (D500)
F000:D4FC loc_1157: ; xref F000:D4F4
F000:D4FC B0 29 mov al,29h ; ')'
F000:D4FE 3A D0 cmp dl,al
F000:D500 loc_1158: ; xref F000:D4D5, D4E0, D4FA
F000:D500 76 08 jbe short loc_1160 ; Jump if below or =
F000:D502 0A ED or ch,ch ; Zero ?
F000:D504 74 02 jz short loc_1159 ; Jump if zero
F000:D506 B0 01 mov al,1
F000:D508 loc_1159: ; xref F000:D504
F000:D508 8A D0 mov dl,al
F000:D50A loc_1160: ; xref F000:D500
F000:D50A 59 pop cx
F000:D50B B4 05 mov ah,5
F000:D50D CD 1A int 1Ah ; Real time clock ah=func 05h
; set date cx=year, dx=mon/day
F000:D50F EB 01 jmp short loc_1161 ; (D512)
F000:D511 90 db 90h

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 243

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D3DA, D3F7, D438, D455, D482

sub_219:
F000:D512 loc_1161: ; xref F000:D50F
F000:D512 55 push bp
F000:D513 83 EC 0A sub sp,0Ah
F000:D516 8B EC mov bp,sp
F000:D518 B4 03 mov ah,3
F000:D51A B7 00 mov bh,0
F000:D51C CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D51E 52 push dx
F000:D51F 51 push cx
F000:D520 80 E5 9F and ch,9Fh
F000:D523 80 CD 20 or ch,20h ; ' '
F000:D526 B4 01 mov ah,1
F000:D528 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:D52A E8 0140 call sub_221 ; (D66D)
F000:D52D 89 4E 00 mov [bp],cx
F000:D530 89 56 02 mov [bp+2],dx
F000:D533 8B 46 00 mov ax,[bp]
F000:D536 E8 027E call sub_232 ; (D7B7)
F000:D539 89 46 04 mov [bp+4],ax
F000:D53C 2D 0769 sub ax,769h
F000:D53F 50 push ax
F000:D540 C1 E8 02 shr ax,2 ; Shift w/zeros fill
F000:D543 B9 0007 mov cx,7
F000:D546 99 cwd ; Word to double word
F000:D547 F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:D549 8B DA mov bx,dx
F000:D54B 2E: 8A 9F D09A mov bl,cs:data_132[bx] ; (F000:D09A=4)
F000:D550 58 pop ax
F000:D551 24 03 and al,3
F000:D553 02 D8 add bl,al
F000:D555 80 FB 06 cmp bl,6
F000:D558 76 03 jbe short loc_1162 ; Jump if below or =
F000:D55A 80 EB 07 sub bl,7
F000:D55D loc_1162: ; xref F000:D558
F000:D55D 8A 46 02 mov al,[bp+2]
F000:D560 98 cbw ; Convrt byte to word
F000:D561 E8 0253 call sub_232 ; (D7B7)
F000:D564 88 46 06 mov [bp+6],al
F000:D567 48 dec ax
F000:D568 50 push ax
F000:D569 8A 46 03 mov al,[bp+3]
F000:D56C 98 cbw ; Convrt byte to word
F000:D56D E8 0247 call sub_232 ; (D7B7)
F000:D570 88 46 07 mov [bp+7],al
F000:D573 48 dec ax
F000:D574 59 pop cx
F000:D575 3C 01 cmp al,1
F000:D577 76 07 jbe short loc_1163 ; Jump if below or =
F000:D579 F6 46 04 03 test byte ptr [bp+4],3
F000:D57D 75 01 jnz short loc_1163 ; Jump if not zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 244

F000:D57F 41 inc cx
F000:D580 loc_1163: ; xref F000:D577, D57D
F000:D580 86 D8 xchg bl,al
F000:D582 32 FF xor bh,bh ; Zero register
F000:D584 2E: 8A 9F D0A1 mov bl,cs:data_133[bx] ; (F000:D0A1=0)
F000:D589 02 C3 add al,bl
F000:D58B 3C 06 cmp al,6
F000:D58D 76 02 jbe short loc_1164 ; Jump if below or =
F000:D58F 2C 07 sub al,7
F000:D591 loc_1164: ; xref F000:D58D
F000:D591 86 C1 xchg al,cl
F000:D593 B2 07 mov dl,7
F000:D595 F6 F2 div dl ; al, ah rem = ax/reg
F000:D597 8A C4 mov al,ah
F000:D599 02 C1 add al,cl
F000:D59B 3C 06 cmp al,6
F000:D59D 76 02 jbe short loc_1165 ; Jump if below or =
F000:D59F 2C 07 sub al,7
F000:D5A1 loc_1165: ; xref F000:D59D
F000:D5A1 88 46 08 mov [bp+8],al
F000:D5A4 BA 0317 mov dx,317h
F000:D5A7 8A 46 08 mov al,[bp+8]
F000:D5AA BE DE9B mov si,0DE9Bh
F000:D5AD E8 01BB call sub_228 ; (D76B)
F000:D5B0 B8 0E2C mov ax,0E2Ch
F000:D5B3 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D5B5 BA 031C mov dx,31Ch
F000:D5B8 8A 46 07 mov al,[bp+7]
F000:D5BB 48 dec ax
F000:D5BC BE DEB7 mov si,0DEB7h
F000:D5BF E8 01A9 call sub_228 ; (D76B)
F000:D5C2 BA 0320 mov dx,320h
F000:D5C5 8A 46 02 mov al,[bp+2]
F000:D5C8 E8 01BA call sub_229 ; (D785)
F000:D5CB BA 0323 mov dx,323h
F000:D5CE 8A 46 01 mov al,[bp+1]
F000:D5D1 E8 01B1 call sub_229 ; (D785)
F000:D5D4 BA 0325 mov dx,325h
F000:D5D7 8A 46 00 mov al,[bp]
F000:D5DA E8 01A8 call sub_229 ; (D785)
F000:D5DD 8A 46 07 mov al,[bp+7]
F000:D5E0 BF 0020 mov di,20h
F000:D5E3 FE C8 dec al
F000:D5E5 74 03 jz short loc_1166 ; Jump if zero
F000:D5E7 E8 00E7 call sub_223 ; (D6D1)
F000:D5EA loc_1166: ; xref F000:D5E5
F000:D5EA 8A 46 06 mov al,[bp+6]
F000:D5ED FE C8 dec al
F000:D5EF 98 cbw ; Convrt byte to word
F000:D5F0 B1 07 mov cl,7
F000:D5F2 F6 F1 div cl ; al, ah rem = ax/reg
F000:D5F4 8A 46 08 mov al,[bp+8]
F000:D5F7 2A C4 sub al,ah
F000:D5F9 79 02 jns short loc_1167 ; Jump if not sign
F000:D5FB 04 07 add al,7
F000:D5FD loc_1167: ; xref F000:D5F9
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 245

F000:D5FD 32 E4 xor ah,ah ; Zero register
F000:D5FF 8B F7 mov si,di
F000:D601 2B F0 sub si,ax
F000:D603 BA 0D34 mov dx,0D34h
F000:D606 BB 0007 mov bx,7
F000:D609 B4 02 mov ah,2
F000:D60B CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D60D E8 00EE call sub_224 ; (D6FE)
F000:D610 8A 46 07 mov al,[bp+7]
F000:D613 E8 00BB call sub_223 ; (D6D1)
F000:D616 BE 0001 mov si,1
F000:D619 B3 0F mov bl,0Fh
F000:D61B E8 00E0 call sub_224 ; (D6FE)
F000:D61E BE 0001 mov si,1
F000:D621 BF 000F mov di,0Fh
F000:D624 B3 07 mov bl,7
F000:D626 E8 00D5 call sub_224 ; (D6FE)
F000:D629 E8 007B call sub_222 ; (D6A7)
F000:D62C 52 push dx
F000:D62D 51 push cx
F000:D62E 8A C5 mov al,ch
F000:D630 BA 0417 mov dx,417h
F000:D633 E8 014F call sub_229 ; (D785)
F000:D636 E8 0024 call sub_220 ; (D65D)
F000:D639 58 pop ax
F000:D63A BA 041C mov dx,41Ch
F000:D63D E8 0145 call sub_229 ; (D785)
F000:D640 E8 001A call sub_220 ; (D65D)
F000:D643 58 pop ax
F000:D644 8A C4 mov al,ah
F000:D646 BA 0421 mov dx,421h
F000:D649 E8 0139 call sub_229 ; (D785)
F000:D64C 59 pop cx
F000:D64D 5A pop dx
F000:D64E B7 00 mov bh,0
F000:D650 B4 02 mov ah,2
F000:D652 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D654 B4 01 mov ah,1
F000:D656 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:D658 83 C4 0A add sp,0Ah
F000:D65B 5D pop bp
F000:D65C C3 retn
sub_217 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D636, D640
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_220 proc near
F000:D65D B8 0E20 mov ax,0E20h
F000:D660 CD 10 int 10h ; Video display ah=functn 0Eh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 246

; write char al, teletype mode
F000:D662 B8 0E3A mov ax,0E3Ah
F000:D665 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D667 B8 0E20 mov ax,0E20h
F000:D66A CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D66C C3 retn
sub_220 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:BE33, D2B0, D2C9, D306, D31F, D35C, D37D
; D52A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_221 proc near
F000:D66D B4 04 mov ah,4
F000:D66F CD 1A int 1Ah ; Real time clock ah=func 04h
; read date cx=year, dx=mon/day
F000:D671 73 04 jnc short loc_1168 ; Jump if carry=0
F000:D673 B4 04 mov ah,4
F000:D675 CD 1A int 1Ah ; Real time clock ah=func 04h
; read date cx=year, dx=mon/day
F000:D677 loc_1168: ; xref F000:D671
F000:D677 8B C1 mov ax,cx
F000:D679 E8 0120 call sub_231 ; (D79C)
F000:D67C 73 22 jnc short loc_1169 ; Jump if carry=0
F000:D67E 3D 1901 cmp ax,1901h
F000:D681 72 1D jb short loc_1169 ; Jump if below
F000:D683 3D 2099 cmp ax,2099h
F000:D686 77 18 ja short loc_1169 ; Jump if above
F000:D688 8B C2 mov ax,dx
F000:D68A E8 010F call sub_231 ; (D79C)
F000:D68D 73 11 jnc short loc_1169 ; Jump if carry=0
F000:D68F 0A C0 or al,al ; Zero ?
F000:D691 74 0D jz short loc_1169 ; Jump if zero
F000:D693 0A E4 or ah,ah ; Zero ?
F000:D695 74 09 jz short loc_1169 ; Jump if zero
F000:D697 80 FC 12 cmp ah,12h
F000:D69A 77 04 ja short loc_1169 ; Jump if above
F000:D69C 3C 31 cmp al,31h ; '1'
F000:D69E 76 06 jbe short loc_ret_1170 ; Jump if below or =
F000:D6A0 loc_1169: ; xref F000:D67C, D681, D686, D68D
; D691, D695, D69A
F000:D6A0 B9 1980 mov cx,1980h
F000:D6A3 BA 0101 mov dx,101h

F000:D6A6 loc_ret_1170: ; xref F000:D69E
F000:D6A6 C3 retn
sub_221 endp



;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 247

;
; Called from: F000:BE3A, D3C2, D3DF, D420, D43D, D479, D629
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_222 proc near
F000:D6A7 B4 02 mov ah,2
F000:D6A9 CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:D6AB 73 04 jnc short loc_1171 ; Jump if carry=0
F000:D6AD B4 02 mov ah,2
F000:D6AF CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:D6B1 loc_1171: ; xref F000:D6AB
F000:D6B1 8B C1 mov ax,cx
F000:D6B3 E8 00E6 call sub_231 ; (D79C)
F000:D6B6 73 14 jnc short loc_1172 ; Jump if carry=0
F000:D6B8 80 FC 23 cmp ah,23h ; '#'
F000:D6BB 77 0F ja short loc_1172 ; Jump if above
F000:D6BD 3C 59 cmp al,59h ; 'Y'
F000:D6BF 77 0B ja short loc_1172 ; Jump if above
F000:D6C1 8A C6 mov al,dh
F000:D6C3 E8 00D6 call sub_231 ; (D79C)
F000:D6C6 73 04 jnc short loc_1172 ; Jump if carry=0
F000:D6C8 3C 59 cmp al,59h ; 'Y'
F000:D6CA 76 04 jbe short loc_ret_1173 ; Jump if below or =
F000:D6CC loc_1172: ; xref F000:D6B6, D6BB, D6BF, D6C6
F000:D6CC 33 C9 xor cx,cx ; Zero register
F000:D6CE 33 D2 xor dx,dx ; Zero register

F000:D6D0 loc_ret_1173: ; xref F000:D6CA
F000:D6D0 C3 retn
sub_222 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D5E7, D613
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_223 proc near
F000:D6D1 3C 02 cmp al,2
F000:D6D3 75 0C jne short loc_1174 ; Jump if not equal
F000:D6D5 B4 1C mov ah,1Ch
F000:D6D7 F6 46 04 03 test byte ptr [bp+4],3
F000:D6DB 75 18 jnz short loc_1176 ; Jump if not zero
F000:D6DD FE C4 inc ah
F000:D6DF EB 14 jmp short loc_1176 ; (D6F5)
F000:D6E1 loc_1174: ; xref F000:D6D3
F000:D6E1 B4 1F mov ah,1Fh
F000:D6E3 3C 08 cmp al,8
F000:D6E5 73 08 jae short loc_1175 ; Jump if above or =
F000:D6E7 A8 01 test al,1
F000:D6E9 75 0A jnz short loc_1176 ; Jump if not zero
F000:D6EB FE CC dec ah
F000:D6ED EB 06 jmp short loc_1176 ; (D6F5)
F000:D6EF loc_1175: ; xref F000:D6E5
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 248

F000:D6EF A8 01 test al,1
F000:D6F1 74 02 jz short loc_1176 ; Jump if zero
F000:D6F3 FE CC dec ah
F000:D6F5 loc_1176: ; xref F000:D6DB, D6DF, D6E9, D6ED
; D6F1
F000:D6F5 FE C4 inc ah
F000:D6F7 32 C0 xor al,al ; Zero register
F000:D6F9 86 C4 xchg al,ah
F000:D6FB 8B F8 mov di,ax
F000:D6FD C3 retn
sub_223 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D60D, D61B, D626
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_224 proc near
F000:D6FE loc_1177: ; xref F000:D732
F000:D6FE 3B F7 cmp si,di
F000:D700 74 37 je short loc_ret_1182 ; Jump if equal
F000:D702 8B C6 mov ax,si
F000:D704 3A 46 06 cmp al,[bp+6]
F000:D707 75 0E jne short loc_1178 ; Jump if not equal
F000:D709 80 FB 0F cmp bl,0Fh
F000:D70C 75 09 jne short loc_1178 ; Jump if not equal
F000:D70E 53 push bx
F000:D70F B3 8F mov bl,8Fh
F000:D711 E8 0026 call sub_225 ; (D73A)
F000:D714 5B pop bx
F000:D715 EB 03 jmp short loc_1179 ; (D71A)
F000:D717 loc_1178: ; xref F000:D707, D70C
F000:D717 E8 0020 call sub_225 ; (D73A)
F000:D71A loc_1179: ; xref F000:D715
F000:D71A 46 inc si
F000:D71B B4 03 mov ah,3
F000:D71D CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D71F 80 FA 4E cmp dl,4Eh ; 'N'
F000:D722 75 10 jne short loc_1181 ; Jump if not equal
F000:D724 80 C6 02 add dh,2
F000:D727 80 FE 19 cmp dh,19h
F000:D72A 74 0D je short loc_ret_1182 ; Jump if equal
F000:D72C B2 34 mov dl,34h ; '4'
F000:D72E loc_1180: ; xref F000:D737
F000:D72E B4 02 mov ah,2
F000:D730 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D732 EB CA jmp short loc_1177 ; (D6FE)
F000:D734 loc_1181: ; xref F000:D722
F000:D734 80 C2 02 add dl,2
F000:D737 EB F5 jmp short loc_1180 ; (D72E)

F000:D739 loc_ret_1182: ; xref F000:D700, D72A
F000:D739 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 249

sub_224 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D711, D717
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_225 proc near
F000:D73A 3C 09 cmp al,9
F000:D73C 77 07 ja short loc_1183 ; Jump if above
F000:D73E 50 push ax
F000:D73F B0 20 mov al,20h ; ' '
F000:D741 E8 0015 call sub_227 ; (D759)
F000:D744 58 pop ax

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D751

sub_226:
F000:D745 loc_1183: ; xref F000:D73C
F000:D745 98 cbw ; Convrt byte to word
F000:D746 99 cwd ; Word to double word
F000:D747 B9 000A mov cx,0Ah
F000:D74A F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:D74C 0B C0 or ax,ax ; Zero ?
F000:D74E 74 05 jz short loc_1184 ; Jump if zero
F000:D750 52 push dx
F000:D751 E8 FFF1 call sub_226 ; (D745)
F000:D754 5A pop dx
F000:D755 loc_1184: ; xref F000:D74E
F000:D755 8A C2 mov al,dl
F000:D757 0C 30 or al,30h ; '0'

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D741

sub_227:
F000:D759 B4 09 mov ah,9
F000:D75B B9 0001 mov cx,1
F000:D75E CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:D760 B4 03 mov ah,3
F000:D762 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D764 FE C2 inc dl
F000:D766 B4 02 mov ah,2
F000:D768 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D76A C3 retn
sub_225 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 250

; SUBROUTINE
;
; Called from: F000:D5AD, D5BF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_228 proc near
F000:D76B 50 push ax
F000:D76C B4 02 mov ah,2
F000:D76E CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D770 58 pop ax
F000:D771 B4 04 mov ah,4
F000:D773 F6 E4 mul ah ; ax = reg * al
F000:D775 03 F0 add si,ax
F000:D777 B9 0003 mov cx,3

F000:D77A locloop_1185: ; xref F000:D782
F000:D77A 2E: 8A 04 mov al,cs:[si]
F000:D77D 46 inc si
F000:D77E B4 0E mov ah,0Eh
F000:D780 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D782 E2 F6 loop locloop_1185 ; Loop if cx > 0

F000:D784 C3 retn
sub_228 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D5C8, D5D1, D5DA, D633, D63D, D649
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_229 proc near
F000:D785 50 push ax
F000:D786 B4 02 mov ah,2
F000:D788 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D78A 58 pop ax
F000:D78B 50 push ax
F000:D78C C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:D78F E8 0001 call sub_230 ; (D793)
F000:D792 58 pop ax

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:D78F

sub_230:
F000:D793 25 000F and ax,0Fh
F000:D796 0D 0E30 or ax,0E30h
F000:D799 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D79B C3 retn
sub_229 endp

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 251


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D679, D68A, D6B3, D6C3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_231 proc near
F000:D79C 50 push ax
F000:D79D 25 0F0F and ax,0F0Fh
F000:D7A0 3C 0A cmp al,0Ah
F000:D7A2 73 11 jae short loc_1186 ; Jump if above or =
F000:D7A4 80 FC 0A cmp ah,0Ah
F000:D7A7 73 0C jae short loc_1186 ; Jump if above or =
F000:D7A9 58 pop ax
F000:D7AA 50 push ax
F000:D7AB 25 F0F0 and ax,0F0F0h
F000:D7AE 3C A0 cmp al,0A0h
F000:D7B0 73 03 jae short loc_1186 ; Jump if above or =
F000:D7B2 80 FC A0 cmp ah,0A0h
F000:D7B5 loc_1186: ; xref F000:D7A2, D7A7, D7B0
F000:D7B5 58 pop ax
F000:D7B6 C3 retn
sub_231 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:D536, D561, D56D
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_232 proc near
F000:D7B7 50 push ax
F000:D7B8 B9 0064 mov cx,64h
F000:D7BB 8A C4 mov al,ah
F000:D7BD C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:D7C0 24 0F and al,0Fh
F000:D7C2 D5 0A aad ; Ascii adjust
F000:D7C4 F7 E1 mul cx ; dx:ax = reg * ax
F000:D7C6 8B D0 mov dx,ax
F000:D7C8 58 pop ax
F000:D7C9 8A E0 mov ah,al
F000:D7CB C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:D7CE 24 0F and al,0Fh
F000:D7D0 D5 0A aad ; Ascii adjust
F000:D7D2 03 C2 add ax,dx
F000:D7D4 C3 retn
sub_232 endp

F000:D7D5 00 db 0
F000:D7D6 52 4F 4D 2D 42 49 db 'ROM-BIOS CHECKSUM ERROR', 0Dh, 0Ah
F000:D7DC 4F 53 20 43 48 45
F000:D7E2 43 4B 53 55 4D 20
F000:D7E8 45 52 52 4F 52 0D
F000:D7EE 0A
F000:D7EF 43 48 45 43 4B 20 db 'CHECK ROM (27256)?'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 252

F000:D7F5 52 4F 4D 20 28 32
F000:D7FB 37 32 35 36 29 3F
F000:D801 00 db 0
F000:D802 0D 0A 53 59 53 54 db 0Dh, 0Ah, 'SYSTEM HALTED'
F000:D808 45 4D 20 48 41 4C
F000:D80E 54 45 44
F000:D811 00 0D 1E db 0, 0Dh, 1Eh
F000:D814 20 52 55 4E 20 58 db ' RUN XCMOS SETUP '
F000:D81A 43 4D 4F 53 20 53
F000:D820 45 54 55 50 20
F000:D825 00 02 0C 1E db 0, 2, 0Ch, 1Eh
F000:D829 20 52 55 4E 20 43 db ' RUN CMOS SETUP '
F000:D82F 4D 4F 53 20 53 45
F000:D835 54 55 50 20
F000:D839 00 01 0B 1E db 0, 1, 0Bh, 1Eh
F000:D83D 20 45 58 49 54 20 db ' EXIT FOR BOOT '
F000:D843 46 4F 52 20 42 4F
F000:D849 4F 54 20
F000:D84C 00 00 01 01 db 0, 0, 1, 1
F000:D850 20 20 20 20 20 20 db ' CMOS SETUP (C) Copyrigh'
F000:D856 20 20 20 43 4D 4F
F000:D85C 53 20 53 45 54 55
F000:D862 50 20 28 43 29 20
F000:D868 43 6F 70 79 72 69
F000:D86E 67 68
F000:D870 74 20 31 39 38 35 db 't 1985-1990, American Megatrends'
F000:D876 2D 31 39 39 30 2C
F000:D87C 20 41 6D 65 72 69
F000:D882 63 61 6E 20 4D 65
F000:D888 67 61 74 72 65 6E
F000:D88E 64 73
F000:D890 20 49 6E 63 2E 2C db ' Inc.,', 0Dh, 0Ah, 0Ah, ' Date ('
F000:D896 0D 0A 0A 20 44 61
F000:D89C 74 65 20 28
F000:D8A0 6D 6E 2F 64 61 74 db 'mn/date/year): '
F000:D8A6 65 2F 79 65 61 72
F000:D8AC 29 3A 20 20 20 20
F000:D8B2 20 20 20 20 20 20
F000:D8B8 20 20 20 20 20 20
F000:D8BE 20 20
F000:D8C0 BA db 0BAh
F000:D8C1 20 42 61 73 65 20 db ' Base memory size :', 0Dh, 0Ah, ' '
F000:D8C7 6D 65 6D 6F 72 79
F000:D8CD 20 73 69 7A 65 20
F000:D8D3 20 3A 0D 0A 20
F000:D8D8 54 69 6D 65 20 28 db 'Time (hour/min/sec): '
F000:D8DE 68 6F 75 72 2F 6D
F000:D8E4 69 6E 2F 73 65 63
F000:D8EA 29 3A 20 20 20 20
F000:D8F0 20 20 20 20 20 20
F000:D8F6 20 20
F000:D8F8 20 20 20 20 20 20 db ' '
F000:D8FE BA db 0BAh
F000:D8FF 20 45 78 74 2E 20 db ' Ext. memory size :', 0Dh, 0Ah, ' '
F000:D905 6D 65 6D 6F 72 79
F000:D90B 20 73 69 7A 65 20
F000:D911 20 3A 0D 0A 20
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 253

F000:D916 46 6C 6F 70 70 79 db 'Floppy drive A: : '
F000:D91C 20 64 72 69 76 65
F000:D922 20 41 3A 20 20 20
F000:D928 20 3A 20 20 20 20
F000:D92E 20 20 20 20 20 20
F000:D934 20 20
F000:D936 20 20 20 20 20 20 db ' '
F000:D93C BA db 0BAh
F000:D93D 20 4E 75 6D 65 72 db ' Numeric processor :', 0Dh, 0Ah, ' '
F000:D943 69 63 20 70 72 6F
F000:D949 63 65 73 73 6F 72
F000:D94F 20 3A 0D 0A 20
F000:D954 46 6C 6F 70 70 79 db 'Floppy drive B: :', 0Dh, 0Ah, 0Ah
F000:D95A 20 64 72 69 76 65
F000:D960 20 42 3A 20 20 20
F000:D966 20 3A 0D 0A 0A
F000:D96B 20 48 61 72 64 20 db ' Hard disk C: type :', 0Dh, 0Ah
F000:D971 64 69 73 6B 20 43
F000:D977 3A 20 74 79 70 65
F000:D97D 20 20 3A 0D 0A
F000:D982 20 48 61 72 64 20 db ' Hard disk D: type :', 0Dh, 0Ah
F000:D988 64 69 73 6B 20 44
F000:D98E 3A 20 74 79 70 65
F000:D994 20 20 3A 0D 0A
F000:D999 20 50 72 69 6D 61 db ' Primary display :', 0Dh, 0Ah
F000:D99F 72 79 20 64 69 73
F000:D9A5 70 6C 61 79 20 20
F000:D9AB 20 20 3A 0D 0A
F000:D9B0 20 4B 65 79 62 6F db ' Keyboard '
F000:D9B6 61 72 64 20

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:F2AD
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_233 proc near
F000:D9BA 20 20 and [bx+si],ah
F000:D9BC 20 20 and [bx+si],ah
F000:D9BE 20 20 and [bx+si],ah
F000:D9C0 20 20 and [bx+si],ah
F000:D9C2 20 20 and [bx+si],ah
F000:D9C4 3A 0D cmp cl,[di]
F000:D9C6 0A 20 or ah,[bx+si]
F000:D9C8 56 push si
F000:D9C9 69 64 65 206F imul sp,word ptr [si+65h],206Fh ; reg = data * value
F000:D9CE 42 inc dx
F000:D9CF 49 dec cx
F000:D9D0 4F dec di
F000:D9D1 53 push bx
F000:D9D2 20 73 68 and [bp+di+68h],dh
F000:D9D5 61 popa ; Restore all regs
F000:D9D6 64: 6F outs dx,word ptr fs:[si] ; Out [si] to port dx
F000:D9D8 77 20 ;* ja short loc_1187 ;*Jump if above
F000:D9D8 77 20 db 77h, 20h
F000:D9DA 20 3A and [bp+si],bh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 254

F000:D9DC 0D 200A or ax,200Ah
F000:D9DF 53 push bx
F000:D9E0 63 72 61 arpl word ptr [bp+si+61h],si ; Adjust req priv lev
F000:D9E3 74 63 jz short loc_1189 ; Jump if zero
F000:D9E5 68 5220 push 5220h
F000:D9E8 41 inc cx
F000:D9E9 4D dec bp
F000:D9EA 20 6F 70 and [bx+70h],ch
F000:D9ED 74 69 jz short loc_1190 ; Jump if zero
F000:D9EF 6F outsw ; Out [si] to port dx
F000:D9F0 6E outsb ; Out [si] to port dx
F000:D9F1 20 3A and [bp+si],bh
F000:D9F3 0D 200A or ax,200Ah
F000:D9F6 4D dec bp
F000:D9F7 61 popa ; Restore all regs
F000:D9F8 69 6E 20 4942 imul bp,word ptr [bp+20h],4942h ; reg = data * value
F000:D9FD 4F dec di
F000:D9FE 53 push bx
F000:D9FF 20 73 68 and [bp+di+68h],dh
F000:DA02 61 popa ; Restore all regs
F000:DA03 64: 6F outs dx,word ptr fs:[si] ; Out [si] to port dx
F000:DA05 77 20 ;* ja short loc_1188 ;*Jump if above
F000:DA05 77 20 db 77h, 20h
F000:DA07 20 20 and [bx+si],ah
F000:DA09 3A 0D cmp cl,[di]
F000:DA0B 0A 0A or cl,[bp+si]
F000:DA0D 0A 0A or cl,[bp+si]
F000:DA0F 0A 0A or cl,[bp+si]
F000:DA11 0A 0A or cl,[bp+si]
F000:DA13 0A 20 or ah,[bx+si]
F000:DA15 45 inc bp
F000:DA16 53 push bx
F000:DA17 43 inc bx
F000:DA18 20 3D and [di],bh
F000:DA1A 20 45 78 and [di+78h],al
F000:DA1D 69 74 2C 1920 imul si,word ptr [si+2Ch],1920h ; reg = data * value
F000:DA22 20 1A and [bp+si],bl
F000:DA24 20 18 and [bx+si],bl
F000:DA26 20 1B and [bp+di],bl
F000:DA28 20 3D and [di],bh
F000:DA2A 20 53 65 and [bp+di+65h],dl
F000:DA2D 6C insb ; Port dx to es:[di]
F000:DA2E 65: 63 74 2C arpl word ptr gs:[si+2Ch],si ; Adjust req priv lev
F000:DA32 20 50 67 and [bx+si+67h],dl
F000:DA35 55 push bp
F000:DA36 70 2F jo short loc_1191 ; Jump if overflow=1
F000:DA38 50 push ax
F000:DA39 67 44 6E 20 3D 20 db 'gDn = Modify'
F000:DA3F 4D 6F 64 69 66 79
F000:DA45 00 20 43 db 0, 20h, 43h
F000:DA48 loc_1189: ; xref F000:D9E3
F000:DA48 79 6C jns short loc_1192 ; Jump if not sign
F000:DA4A 6E outsb ; Out [si] to port dx
F000:DA4B 20 20 and [bx+si],ah
F000:DA4D 48 dec ax
F000:DA4E 65 61 64 20 20 57 db 'ead WPcom'
F000:DA54 50 63 6F 6D
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 255

F000:DA58 loc_1190: ; xref F000:D9ED
F000:DA58 20 4C 5A and [si+5Ah],cl
F000:DA5B 6F outsw ; Out [si] to port dx
F000:DA5C 6E outsb ; Out [si] to port dx
F000:DA5D 65: 20 53 65 and gs:[bp+di+65h],dl
F000:DA61 63 74 20 arpl word ptr [si+20h],si ; Adjust req priv lev
F000:DA64 20 53 69 and [bp+di+69h],dl
F000:DA67 loc_1191: ; xref F000:DA36
F000:DA67 7A 65 jp short loc_1193 ; Jump if parity=1
F000:DA69 20 20 and [bx+si],ah
F000:DA6B 20 20 and [bx+si],ah
F000:DA6D 00 20 add [bx+si],ah
F000:DA6F 49 dec cx
F000:DA70 6E outsb ; Out [si] to port dx
F000:DA71 73 74 jnc short loc_1194 ; Jump if carry=0
F000:DA73 61 popa ; Restore all regs
F000:DA74 6C insb ; Port dx to es:[di]
F000:DA75 6C insb ; Port dx to es:[di]
F000:DA76 65 64 20 20 20 20 db 65h, 64h, 20h, 20h, 20h, 20h
F000:DA7C 20 00 01 db 20h, 0, 1
F000:DA7F 20 4E 6F 74 20 49 db ' Not Installed '
F000:DA85 6E 73 74 61 6C 6C
F000:DA8B 65 64 20
F000:DA8E 00 00 db 0, 0
F000:DA90 20 45 6E 61 62 6C db ' Enabled '
F000:DA96 65 64 20 20
F000:DA9A 00 01 db 0, 1
F000:DA9C 20 44 69 73 61 62 db ' Disabled '
F000:DAA2 6C 65 64 20
F000:DAA6 00 00 20 57 65 69 db 0, 0, 20h, 57h, 65h, 69h
F000:DAAC 74 65 6B 00 db 74h, 65h, 6Bh, 0
F000:DAB0 20 49 6E 73 74 61 db 20h, 49h, 6Eh, 73h, 74h, 61h
F000:DAB6 loc_1192: ; xref F000:DA48
F000:DAB6 6C insb ; Port dx to es:[di]
F000:DAB7 6C insb ; Port dx to es:[di]
F000:DAB8 65 64 2C 57 65 69 db 'ed,Weitek'
F000:DABE 74 65 6B
F000:DAC1 00 20 32 20 00 01 db 0, 20h, 32h, 20h, 0, 1
F000:DAC7 20 31 20 00 00 db 20h, 31h, 20h, 0, 0
F000:DACC 20 33 db 20h, 33h
F000:DACE loc_1193: ; xref F000:DA67
F000:DACE 36: 30 20 xor ss:[bx+si],ah
F000:DAD1 20 4B 42 and [bp+di+42h],cl
F000:DAD4 2C 20 sub al,20h ; ' '
F000:DAD6 35 22AC xor ax,22ACh
F000:DAD9 20 20 and [bx+si],ah
F000:DADB 00 01 add [bx+di],al
F000:DADD 20 31 and [bx+di],dh
F000:DADF 2E: 32 20 xor ah,cs:[bx+si]
F000:DAE2 20 4D 42 and [di+42h],cl
F000:DAE5 2C 20 sub al,20h ; ' '
F000:DAE7 loc_1194: ; xref F000:DA71
F000:DAE7 35 22AC xor ax,22ACh
F000:DAEA 20 20 and [bx+si],ah
F000:DAEC 00 02 add [bp+si],al
F000:DAEE 20 37 and [bx],dh
F000:DAF0 32 30 xor dh,[bx+si]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 256

F000:DAF2 20 20 and [bx+si],ah
F000:DAF4 4B dec bx
F000:DAF5 42 inc dx
F000:DAF6 2C 20 sub al,20h ; ' '
F000:DAF8 33 AB 2022 xor bp,[bp+di+2022h]
F000:DAFC 20 00 and [bx+si],al
F000:DAFE 03 20 add sp,[bx+si]
F000:DB00 31 2E 3434 xor ds:data_27e,bp ; (02F8:3434=1703h)
F000:DB04 20 4D 42 and [di+42h],cl
F000:DB07 2C 20 sub al,20h ; ' '
F000:DB09 33 AB 2022 xor bp,[bp+di+2022h]
F000:DB0D 20 00 and [bx+si],al
F000:DB0F 04 20 add al,20h ; ' '
F000:DB11 4D dec bp
F000:DB12 6F outsw ; Out [si] to port dx
F000:DB13 6E outsb ; Out [si] to port dx
F000:DB14 6F outsw ; Out [si] to port dx
F000:DB15 63 68 72 arpl word ptr [bx+si+72h],bp ; Adjust req priv lev
F000:DB18 6F outsw ; Out [si] to port dx
F000:DB19 6D insw ; Port dx to es:[di]
F000:DB1A 65: 20 20 and gs:[bx+si],ah
F000:DB1D 20 20 and [bx+si],ah
F000:DB1F 00 31 add [bx+di],dh
F000:DB21 20 43 6F and [bp+di+6Fh],al
F000:DB24 6C insb ; Port dx to es:[di]
F000:DB25 6F outsw ; Out [si] to port dx
F000:DB26 72 20 jc short $+22h ; Jump if carry Set
F000:DB28 38 30 cmp [bx+si],dh
F000:DB2A 78 32 js short $+34h ; Jump if sign=1
F000:DB2C 35 2020 xor ax,2020h
F000:DB2F 20 00 and [bx+si],al
F000:DB31 21 20 and [bx+si],sp
F000:DB33 43 inc bx
F000:DB34 6F outsw ; Out [si] to port dx
F000:DB35 6C insb ; Port dx to es:[di]
F000:DB36 6F outsw ; Out [si] to port dx
F000:DB37 72 20 jc short $+22h ; Jump if carry Set
F000:DB39 34 30 xor al,30h ; '0'
F000:DB3B 78 32 js short $+34h ; Jump if sign=1
F000:DB3D 35 2020 xor ax,2020h
F000:DB40 20 00 and [bx+si],al
F000:DB42 11 20 adc [bx+si],sp
F000:DB44 56 push si
F000:DB45 47 inc di
F000:DB46 41 inc cx
F000:DB47 20 6F 72 and [bx+72h],ch
F000:DB4A 20 45 47 and [di+47h],al
F000:DB4D 41 inc cx
F000:DB4E 20 20 and [bx+si],ah
F000:DB50 20 20 and [bx+si],ah
F000:DB52 00 01 add [bx+di],al
F000:DB54 20 34 and [si],dh
F000:DB56 37 aaa ; Ascii adjust
F000:DB57 20 3D and [di],bh
F000:DB59 20 55 53 and [di+53h],dl
F000:DB5C 45 inc bp
F000:DB5D 52 push dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 257

F000:DB5E 20 54 59 and [si+59h],dl
F000:DB61 50 push ax
F000:DB62 45 inc bp
F000:DB63 20 00 and [bx+si],al
F000:DB65 20 4D 6F and [di+6Fh],cl
F000:DB68 6E outsb ; Out [si] to port dx
F000:DB69 74 68 jz short $+6Ah ; Jump if zero
F000:DB6B 20 3A and [bp+si],bh
F000:DB6D 20 4A 61 and [bp+si+61h],cl
F000:DB70 6E outsb ; Out [si] to port dx
F000:DB71 2C 20 sub al,20h ; ' '
F000:DB73 46 inc si
F000:DB74 65: 62 2C bound bp,dword ptr gs:[si]
F000:DB77 2E 2E 2E 2E 2E 44 db '.....Dec', 0Dh, 0Ah, ' Date : 0'
F000:DB7D 65 63 0D 0A 20 44
F000:DB83 61 74 65 20 20 3A
F000:DB89 20 30
F000:DB8B 31 2C 20 30 32 2C db '1, 02, 03,...31', 0Dh, 0Ah, ' Ye'
F000:DB91 20 30 33 2C 2E 2E
F000:DB97 2E 33 31 0D 0A 20
F000:DB9D 59 65
F000:DB9F 61 72 20 20 3A 20 db 'ar : 1901, 1902,...2099'
F000:DBA5 31 39 30 31 2C 20
F000:DBAB 31 39 30 32 2C 2E
F000:DBB1 2E 2E 32 30 39 39
F000:DBB7 00 db 0
F000:DBB8 20 54 69 6D 65 20 db ' Time is 24 hour format:-', 0Dh, 0Ah
F000:DBBE 69 73 20 32 34 20
F000:DBC4 68 6F 75 72 20 66
F000:DBCA 6F 72 6D 61 74 3A
F000:DBD0 2D 0D 0A
F000:DBD3 20 48 6F 75 72 3A db ' Hour:(00-23), Minute:(00-59), S'
F000:DBD9 28 30 30 2D 32 33
F000:DBDF 29 2C 20 4D 69 6E
F000:DBE5 75 74 65 3A 28 30
F000:DBEB 30 2D 35 39 29 2C
F000:DBF1 20 53
F000:DBF3 65 63 6F 6E 64 3A db 'econd:(00-59)', 0Dh, 0Ah, ' (1:3'
F000:DBF9 28 30 30 2D 35 39
F000:DBFF 29 0D 0A 20 28 31
F000:DC05 3A 33
F000:DC07 30 20 41 4D 20 3D db '0 AM = 01:30:00), (1:30 PM = 1'
F000:DC0D 20 30 31 3A 33 30
F000:DC13 3A 30 30 29 2C 20
F000:DC19 20 20 28 31 3A 33
F000:DC1F 30 20 50 4D 20 3D
F000:DC25 20 31
F000:DC27 33 3A 33 30 3A 30 db '3:30:00)'
F000:DC2D 30 29
F000:DC2F 00 db 0
F000:DC30 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Monochr'
F000:DC36 6E 73 3A 2D 0D 0A
F000:DC3C 20 4D 6F 6E 6F 63
F000:DC42 68 72
F000:DC44 6F 6D 65 2C 20 20 db 'ome, Color 40x25,', 0Dh, 0Ah, ' '
F000:DC4A 43 6F 6C 6F 72 20
F000:DC50 34 30 78 32 35 2C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 258

F000:DC56 0D 0A 20
F000:DC59 56 47 41 20 6F 72 db 'VGA or EGA, Color 80x25, Not I'
F000:DC5F 20 45 47 41 2C 20
F000:DC65 20 43 6F 6C 6F 72
F000:DC6B 20 38 30 78 32 35
F000:DC71 2C 20 20 4E 6F 74
F000:DC77 20 49
F000:DC79 6E 73 74 61 6C 6C db 'nstalled'
F000:DC7F 65 64
F000:DC81 00 db 0
F000:DC82 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' 360 KB '
F000:DC88 6E 73 3A 2D 0D 0A
F000:DC8E 20 33 36 30 20 4B
F000:DC94 42 20
F000:DC96 35 db '5'
F000:DC97 AC db 0ACh
F000:DC98 loc_1195:
F000:DC98 22 2C and ch,[si]
F000:DC9A 20 20 and [bx+si],ah
F000:DC9C 31 2E 2032 xor ds:data_26e,bp ; (02F8:2032=26C1h)
F000:DCA0 20 4D 42 and [di+42h],cl
F000:DCA3 20 35 and [di],dh
F000:DCA5 AC lodsb ; String [si] to al
F000:DCA6 22 2C and ch,[si]
F000:DCA8 0D 200A or ax,200Ah
F000:DCAB 37 aaa ; Ascii adjust
F000:DCAC 32 30 xor dh,[bx+si]
F000:DCAE 20 4B 42 and [bp+di+42h],cl
F000:DCB1 20 33 and [bp+di],dh
F000:DCB3 AB stosw ; Store ax to es:[di]
F000:DCB4 22 2C and ch,[si]
F000:DCB6 20 20 and [bx+si],ah
F000:DCB8 31 2E 3434 xor ds:data_27e,bp ; (02F8:3434=1703h)
F000:DCBC 20 4D 42 and [di+42h],cl
F000:DCBF 20 33 and [bp+di],dh
F000:DCC1 AB stosw ; Store ax to es:[di]
F000:DCC2 22 2C and ch,[si]
F000:DCC4 20 20 and [bx+si],ah
F000:DCC6 4E dec si
F000:DCC7 6F outsw ; Out [si] to port dx
F000:DCC8 74 20 jz short $+22h ; Jump if zero
F000:DCCA 49 dec cx
F000:DCCB 6E outsb ; Out [si] to port dx
F000:DCCC 73 74 jnc short $+76h ; Jump if carry=0
F000:DCCE 61 popa ; Restore all regs
F000:DCCF 6C insb ; Port dx to es:[di]
F000:DCD0 6C insb ; Port dx to es:[di]
F000:DCD1 65 64 00 db 65h, 64h, 0
F000:DCD4 20 46 49 58 45 44 db ' FIXED type = 01...46, USER '
F000:DCDA 20 74 79 70 65 20
F000:DCE0 3D 20 30 31 2E 2E
F000:DCE6 2E 34 36 2C 20 55
F000:DCEC 53 45 52 20
F000:DCF0 loc_1196:
F000:DCF0 64 65 66 69 6E 65 db 'defined type = 47,', 0Dh, 0Ah, ' '
F000:DCF6 64 20 74 79 70 65
F000:DCFC 20 3D 20 34 37 2C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 259

F000:DD02 0D 0A 20
F000:DD05 46 6F 72 20 74 79 db 'For type 47 Enter: Cyln,Head,WPc'
F000:DD0B 70 65 20 34 37 20
F000:DD11 45 6E 74 65 72 3A
F000:DD17 20 43 79 6C 6E 2C
F000:DD1D 48 65 61 64 2C 57
F000:DD23 50 63
F000:DD25 6F 6D 2C 4C 5A 6F db 'om,LZone,Sec,', 0Dh, 0Ah, ' (WPc'
F000:DD2B 6E 65 2C 53 65 63
F000:DD31 2C 0D 0A 20 28 57
F000:DD37 50 63
F000:DD39 6F 6D 20 69 73 20 db 'om is 0 for ALL, 65535 for NONE'
F000:DD3F 30 20 66 6F 72 20
F000:DD45 41 4C 4C 2C 20 20
F000:DD4B 36 35 35 33 35 20
F000:DD51 66 6F 72 20 4E 4F
F000:DD57 4E 45
F000:DD59 29 db ')'
F000:DD5A 00 db 0
F000:DD5B 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Install'
F000:DD61 6E 73 3A 2D 0D 0A
F000:DD67 20 49 6E 73 74 61
F000:DD6D 6C 6C
F000:DD6F 65 64 20 20 20 20 db 'ed : Test keyboard', 0Dh, 0Ah
F000:DD75 20 3A 20 54 65 73
F000:DD7B 74 20 6B 65 79 62
F000:DD81 6F 61 72 64 0D 0A
F000:DD87 20 4E 6F 74 20 49 db ' Not Installed : Do not test key'
F000:DD8D 6E 73 74 61 6C 6C
F000:DD93 65 64 20 3A 20 44
F000:DD99 6F 20 6E 6F 74 20
F000:DD9F 74 65 73 74 20 6B
F000:DDA5 65 79
F000:DDA7 62 6F 61 72 64 db 'board'
F000:DDAC 00 db 0
F000:DDAD 20 49 66 20 72 65 db ' If required, BIOS will use 256 '
F000:DDB3 71 75 69 72 65 64
F000:DDB9 2C 20 42 49 4F 53
F000:DDBF 20 77 69 6C 6C 20
F000:DDC5 75 73 65 20 32 35
F000:DDCB 36 20
F000:DDCD 62 79 74 65 73 20 db 'bytes of RAM', 0Dh, 0Ah, ' (1) :'
F000:DDD3 6F 66 20 52 41 4D
F000:DDD9 0D 0A 20 28 31 29
F000:DDDF 20 3A
F000:DDE1 20 55 73 69 6E 67 db ' Using BIOS stack area at 0030:0'
F000:DDE7 20 42 49 4F 53 20
F000:DDED 73 74 61 63 6B 20
F000:DDF3 61 72 65 61 20 61
F000:DDF9 74 20 30 30 33 30
F000:DDFF 3A 30
F000:DE01 30 30 30 0D 0A 20 db '000', 0Dh, 0Ah, ' (2) : Reducing'
F000:DE07 28 32 29 20 3A 20
F000:DE0D 52 65 64 75 63 69
F000:DE13 6E 67
F000:DE15 20 62 61 73 65 20 db ' base memory size by 1KB'
F000:DE1B 6D 65 6D 6F 72 79
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 260

F000:DE21 20 73 69 7A 65 20
F000:DE27 62 79 20 31 4B 42
F000:DE2D 00 db 0
F000:DE2E 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Enabled'
F000:DE34 6E 73 3A 2D 0D 0A
F000:DE3A 20 45 6E 61 62 6C
F000:DE40 65 64
F000:DE42 20 20 3A 20 53 68 db ' : Shadow RAM ON', 0Dh, 0Ah, ' '
F000:DE48 61 64 6F 77 20 52
F000:DE4E 41 4D 20 4F 4E 0D
F000:DE54 0A 20
F000:DE56 44 69 73 61 62 6C db 'Disabled : Shadow RAM OFF'
F000:DE5C 65 64 20 3A 20 53
F000:DE62 68 61 64 6F 77 20
F000:DE68 52 41 4D 20 4F 46
F000:DE6E 46
F000:DE6F 00 db 0
F000:DE70 20 57 72 69 74 65 db ' Write data into CMOS and exit ('
F000:DE76 20 64 61 74 61 20
F000:DE7C 69 6E 74 6F 20 43
F000:DE82 4D 4F 53 20 61 6E
F000:DE88 64 20 65 78 69 74
F000:DE8E 20 28
F000:DE90 59 2F 4E 29 3F 20 db 'Y/N)? '
F000:DE96 20 20
F000:DE98 08 08 00 53 75 6E db 8, 8, 0, 53h, 75h, 6Eh
F000:DE9E 00 4D 6F 6E 00 54 db 0, 4Dh, 6Fh, 6Eh, 0, 54h
F000:DEA4 75 65 00 57 65 64 db 75h, 65h, 0, 57h, 65h, 64h
F000:DEAA 00 54 68 75 00 46 db 0, 54h, 68h, 75h, 0, 46h
F000:DEB0 72 69 00 53 61 74 db 72h, 69h, 0, 53h, 61h, 74h
F000:DEB6 00 4A 61 6E 00 46 db 0, 4Ah, 61h, 6Eh, 0, 46h
F000:DEBC 65 62 00 4D 61 72 db 65h, 62h, 0, 4Dh, 61h, 72h
F000:DEC2 00 41 70 72 00 4D db 0, 41h, 70h, 72h, 0, 4Dh
F000:DEC8 61 79 00 4A 75 6E db 61h, 79h, 0, 4Ah, 75h, 6Eh
F000:DECE 00 4A 75 6C 00 41 db 0, 4Ah, 75h, 6Ch, 0, 41h
F000:DED4 75 67 00 53 65 70 db 75h, 67h, 0, 53h, 65h, 70h
F000:DEDA 00 4F 63 74 00 4E db 0, 4Fh, 63h, 74h, 0, 4Eh
F000:DEE0 6F 76 00 db 6Fh, 76h, 0
F000:DEE3 44 65 63 db 44h, 65h, 63h
F000:DEE6 011A[00] db 282 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:E000 int_18h_entry: ; xref F000:FF13
F000:E000 EA F000E005 jmp far ptr int_18h_basic ; (E005)

sub_233 endp


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 18h ±±±±±
;
; ROM BASIC

F000:E005 int_18h_basic proc near ; xref F000:E000
F000:E005 E9 AF9F jmp loc_288 ; (8FA7)
F000:E008 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 261

F000:E00E 49 42 4D 20 43 4F db 'IBM COMPATIBLE IBM IS A TRADEMAR'
F000:E014 4D 50 41 54 49 42
F000:E01A 4C 45 20 49 42 4D
F000:E020 20 49 53 20 41 20
F000:E026 54 52 41 44 45 4D
F000:E02C 41 52
F000:E02E 4B 20 4F 46 20 49 db 'K OF INTERNATIONAL BUSINESS MACH'
F000:E034 4E 54 45 52 4E 41
F000:E03A 54 49 4F 4E 41 4C
F000:E040 20 42 55 53 49 4E
F000:E046 45 53 53 20 4D 41
F000:E04C 43 48
F000:E04E 49 4E 45 53 20 43 db 'INES CORP.'
F000:E054 4F 52 50 2E
F000:E058 FF data_149 db 0FFh ; Data table (indexed access)
; xref F000:BD3D
F000:E059 00 00 db 0, 0
F000:E05B loc_1197: ; xref F000:97C5, 9CBD, F9F3, FFF0
F000:E05B E9 A00E jmp system_reset ; (806C)
F000:E05E F1 A3 02 71 83 A5 db 0F1h, 0A3h, 2, 71h, 83h, 0A5h
F000:E064 A5 C5 A6 A6 71 44 db 0A5h, 0C5h, 0A6h, 0A6h, 71h, 44h
F000:E06A C5 B6 F5 66 B5 A6 db 0C5h, 0B6h, 0F5h, 66h, 0B5h, 0A6h
F000:E070 71 04 56 A5 52 71 db 71h, 4, 56h, 0A5h, 52h, 71h
F000:E076 82 03 F2 C2 32 71 db 82h, 3, 0F2h, 0C2h, 32h, 71h
F000:E07C 82 03 F2 D2 40 10 db 82h, 3, 0F2h, 0D2h, 40h, 10h
F000:E082 C2 03 72 71 71 D4 db 0C2h, 3, 72h, 71h, 71h, 0D4h
F000:E088 85 36 36 C5 07 71 db 85h, 36h, 36h, 0C5h, 7, 71h
F000:E08E 94 66 85 B5 32 71 db 94h, 66h, 85h, 0B5h, 32h, 71h
F000:E094 C4 76 76 C5 96 71 db 0C4h, 76h, 76h, 0C5h, 96h, 71h
F000:E09A 44 66 56 B6 A5 36 db 44h, 66h, 56h, 0B6h, 0A5h, 36h
F000:E0A0 85 06 96 32 40 10 db 85h, 6, 96h, 32h, 40h, 10h
F000:E0A6 71 54 C5 E6 71 14 db 71h, 54h, 0C5h, 0E6h, 71h, 14h
F000:E0AC C5 96 A6 C5 07 71 db 0C5h, 96h, 0A6h, 0C5h, 7, 71h
F000:E0B2 42 71 72 E2 72 B2 db 42h, 71h, 72h, 0E2h, 72h, 0B2h
F000:E0B8 A2 32 40 10 F1 92 db 0A2h, 32h, 40h, 10h, 0F1h, 92h
F000:E0BE 72 82 02 71 E2 B2 db 72h, 82h, 2, 71h, 0E2h, 0B2h
F000:E0C4 B2 42 03 82 92 D2 db 0B2h, 42h, 3, 82h, 92h, 0D2h
F000:E0CA 52 28 43 29 31 39 db 'R(C)1985-1990, American Megatren'
F000:E0D0 38 35 2D 31 39 39
F000:E0D6 30 2C 20 41 6D 65
F000:E0DC 72 69 63 61 6E 20
F000:E0E2 4D 65 67 61 74 72
F000:E0E8 65 6E
F000:E0EA 64 73 20 49 6E 63 db 'ds Inc.,All Rights Reserved.1346'
F000:E0F0 2E 2C 41 6C 6C 20
F000:E0F6 52 69 67 68 74 73
F000:E0FC 20 52 65 73 65 72
F000:E102 76 65 64 2E 31 33
F000:E108 34 36
F000:E10A 20 4F 61 6B 62 72 db ' Oakbrook Drive, Suite-120, Norc'
F000:E110 6F 6F 6B 20 44 72
F000:E116 69 76 65 2C 20 53
F000:E11C 75 69 74 65 2D 31
F000:E122 32 30 2C 20 4E 6F
F000:E128 72 63
F000:E12A 72 6F 73 73 2C 20 db 'ross, GA-30093. Phone-(404)-263-'
F000:E130 47 41 2D 33 30 30
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 262

F000:E136 39 33 2E 20 50 68
F000:E13C 6F 6E 65 2D 28 34
F000:E142 30 34 29 2D 32 36
F000:E148 33 2D
F000:E14A 38 31 38 31 2E db '8181.'
F000:E14F 00 db 0
F000:E150 loc_1198: ; xref F000:AA4D, AB63, AD04
F000:E150 FA cli ; Disable interrupts
F000:E151 E8 AD8E call sub_43 ; (8EE2)
F000:E154 E9 1862 jmp loc_1501 ; (F9B9)
F000:E157 B0 FE E6 64 db 0B0h, 0FEh, 0E6h, 64h
F000:E15B loc_1199: ; xref F000:E15C
F000:E15B F4 hlt ; Halt processor
F000:E15C EB FD jmp short loc_1199 ; (E15B)
F000:E15E 00 00 50 E1 20 00 db 0, 0, 50h, 0E1h, 20h, 0
F000:E164 00 87 00 00 50 E1 db 0, 87h, 0, 0, 50h, 0E1h
F000:E16A 20 00 00 87 00 00 db 20h, 0, 0, 87h, 0, 0
F000:E170 50 E1 20 00 00 87 db 50h, 0E1h, 20h, 0, 0, 87h
F000:E176 00 00 50 E1 20 00 db 0, 0, 50h, 0E1h, 20h, 0
F000:E17C 00 87 00 00 50 E1 db 0, 87h, 0, 0, 50h, 0E1h
F000:E182 20 00 00 87 00 00 db 20h, 0, 0, 87h, 0, 0
F000:E188 50 E1 20 00 00 db 50h, 0E1h, 20h, 0, 0
F000:E18D loc_1200:
F000:E18D 87 00 xchg ax,[bx+si]
F000:E18F 00 50 E1 add [bx+si-1Fh],dl
F000:E192 20 00 and [bx+si],al
F000:E194 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E198 50 push ax
F000:E199 E1 20 ;* loopz short locloop_1204 ;*Loop if zf=1, cx>0

F000:E199 E1 20 db 0E1h, 20h
F000:E19B loc_1201:
F000:E19B 00 00 add [bx+si],al
F000:E19D 87 00 xchg ax,[bx+si]
F000:E19F 00 A8 20FE add ds:data_25e[bx+si],ch ; (0040:20FE=16h)
F000:E1A3 00 00 add [bx+si],al
F000:E1A5 87 00 xchg ax,[bx+si]
F000:E1A7 00 50 E1 add [bx+si-1Fh],dl
F000:E1AA 20 00 and [bx+si],al
F000:E1AC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1B0 50 push ax
F000:E1B1 E1 20 loopz short locloop_1206 ; Loop if zf=1, cx>0


F000:E1B3 locloop_1203:
F000:E1B3 00 00 add [bx+si],al
F000:E1B5 87 00 xchg ax,[bx+si]
F000:E1B7 00 50 E1 add [bx+si-1Fh],dl
F000:E1BA 20 00 and [bx+si],al
F000:E1BC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1C0 50 push ax
F000:E1C1 E1 20 loopz short locloop_1208 ; Loop if zf=1, cx>0

F000:E1C3 00 00 add [bx+si],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 263

F000:E1C5 87 00 xchg ax,[bx+si]
F000:E1C7 00 50 E1 add [bx+si-1Fh],dl
F000:E1CA 20 00 and [bx+si],al
F000:E1CC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1D0 50 push ax
F000:E1D1 E1 20 loopz short locloop_1210 ; Loop if zf=1, cx>0


F000:E1D3 locloop_1206: ; xref F000:E1B1
F000:E1D3 00 00 add [bx+si],al
F000:E1D5 87 00 xchg ax,[bx+si]
F000:E1D7 00 53 FF add [bp+di-1],dl
F000:E1DA 20 00 and [bx+si],al
F000:E1DC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1E0 50 push ax
F000:E1E1 E1 20 loopz short locloop_1211 ; Loop if zf=1, cx>0


F000:E1E3 locloop_1208: ; xref F000:E1C1
F000:E1E3 00 00 add [bx+si],al
F000:E1E5 87 00 xchg ax,[bx+si]
F000:E1E7 00 50 E1 add [bx+si-1Fh],dl
F000:E1EA 20 00 and [bx+si],al
F000:E1EC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1F0 50 push ax
F000:E1F1 E1 20 loopz short locloop_1213 ; Loop if zf=1, cx>0


F000:E1F3 locloop_1210: ; xref F000:E1D1
F000:E1F3 00 00 add [bx+si],al
F000:E1F5 87 00 xchg ax,[bx+si]
F000:E1F7 00 50 E1 add [bx+si-1Fh],dl
F000:E1FA 20 00 and [bx+si],al
F000:E1FC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E200 50 push ax
F000:E201 E1 20 loopz short locloop_1215 ; Loop if zf=1, cx>0


F000:E203 locloop_1211: ; xref F000:E1E1
F000:E203 00 00 add [bx+si],al
F000:E205 87 00 xchg ax,[bx+si]
F000:E207 00 50 E1 add [bx+si-1Fh],dl
F000:E20A 20 00 and [bx+si],al
F000:E20C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E210 50 push ax
F000:E211 E1 20 loopz short locloop_1217 ; Loop if zf=1, cx>0


F000:E213 locloop_1213: ; xref F000:E1F1
F000:E213 00 00 add [bx+si],al
F000:E215 87 00 xchg ax,[bx+si]
F000:E217 00 50 E1 add [bx+si-1Fh],dl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 264

F000:E21A 20 00 and [bx+si],al
F000:E21C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E220 50 push ax
F000:E221 E1 20 loopz short locloop_1219 ; Loop if zf=1, cx>0


F000:E223 locloop_1215: ; xref F000:E201
F000:E223 00 00 add [bx+si],al
F000:E225 87 00 xchg ax,[bx+si]
F000:E227 00 50 E1 add [bx+si-1Fh],dl
F000:E22A 20 00 and [bx+si],al
F000:E22C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E230 50 push ax
F000:E231 E1 20 loopz short locloop_1221 ; Loop if zf=1, cx>0


F000:E233 locloop_1217: ; xref F000:E211
F000:E233 00 00 add [bx+si],al
F000:E235 87 00 xchg ax,[bx+si]
F000:E237 00 50 E1 add [bx+si-1Fh],dl
F000:E23A 20 00 and [bx+si],al
F000:E23C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E240 50 push ax
F000:E241 E1 20 ;* loopz short locloop_1222 ;*Loop if zf=1, cx>0

F000:E241 E1 20 db 0E1h, 20h

F000:E243 locloop_1219: ; xref F000:E221
F000:E243 00 00 add [bx+si],al
F000:E245 87 00 xchg ax,[bx+si]
F000:E247 00 50 E1 add [bx+si-1Fh],dl
F000:E24A 20 00 and [bx+si],al
F000:E24C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E250 50 push ax
F000:E251 E1 20 ;* loopz short locloop_1224 ;*Loop if zf=1, cx>0

F000:E251 E1 20 db 0E1h, 20h

F000:E253 locloop_1221: ; xref F000:E231
F000:E253 00 00 add [bx+si],al
F000:E255 87 00 xchg ax,[bx+si]
F000:E257 00 50 E1 add [bx+si-1Fh],dl
F000:E25A 20 00 and [bx+si],al
F000:E25C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E260 00 00 add [bx+si],al
F000:E262 00 00 add [bx+si],al
F000:E264 00 00 add [bx+si],al
F000:E266 00 00 add [bx+si],al
F000:E268 0060 E260 930F data_152 dw 60h, 0E260h, 930Fh ; xref F000:CB58, F9BA
F000:E26E 0000 dw 0
F000:E270 0100 E160 000F data_153 dw 100h, 0E160h, 0Fh ; xref F000:CB00
F000:E276 0000 dw 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 265

F000:E278 00 FC 00 04 00 93 db 0, 0FCh, 0, 4, 0, 93h
F000:E27E 00 00 FF FF 00 00 db 0, 0, 0FFh, 0FFh, 0, 0
F000:E284 0F 9B 00 00 00 01 db 0Fh, 9Bh, 0, 0, 0, 1
F000:E28A 00 03 00 93 00 00 db 0, 3, 0, 93h, 0, 0
F000:E290 FF FF 00 00 0F 9B db 0FFh, 0FFh, 0, 0, 0Fh, 9Bh
F000:E296 000A[00] db 10 dup (0)
F000:E2A0 FFFF 0000 9300 data_155 dw 0FFFFh, 0, 9300h ; xref F000:CB86, F9E8
F000:E2A6 0000 dw 0
F000:E2A8 0010[00] db 16 dup (0)
F000:E2B8 FFFF 0000 0000 data_157 dw 0FFFFh, 0, 0 ; xref F000:CB80, F9E2
F000:E2BE 0000 dw 0
F000:E2C0 BF data_158 db 0BFh ; xref F000:9139, 924A, 93BE, 93E5
; 9403, 9473, 974C, 9767
; 988B, C98B
F000:E2C1 00 00 db 0, 0


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:E2C3 int_2_entry:
F000:E2C3 E9 06C4 jmp int_2_NMI ; (E98A)
F000:E2C6 D8 E4 B3 BB 00 00 db 0D8h, 0E4h, 0B3h, 0BBh, 0, 0
F000:E2CC 00 00 00 00 db 0, 0, 0, 0
F000:E2D0 30 30 30 30 30 30 db '0000000000000000(C)1990 American'
F000:E2D6 30 30 30 30 30 30
F000:E2DC 30 30 30 30 28 43
F000:E2E2 29 31 39 39 30 20
F000:E2E8 41 6D 65 72 69 63
F000:E2EE 61 6E
F000:E2F0 20 4D 65 67 61 74 db ' Megatrends Inc.ROM-BIOS (C)1989'
F000:E2F6 72 65 6E 64 73 20
F000:E2FC 49 6E 63 2E 52 4F
F000:E302 4D 2D 42 49 4F 53
F000:E308 20 28 43 29 31 39
F000:E30E 38 39
F000:E310 20 41 6D 65 72 69 db ' American Megatrends Inc', 0Dh, 0Ah
F000:E316 63 61 6E 20 4D 65
F000:E31C 67 61 74 72 65 6E
F000:E322 64 73 20 49 6E 63
F000:E328 0D 0A
F000:E32A 0D 0A db 0Dh, 0Ah
F000:E32C 00 00 00 00 00 db 0, 0, 0, 0, 0

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û Hard Disk Information Tables Û
; Û Û
; Û Each sub-table contains a Û
; Û a set of 16 bytes for each Û
; Û particular disk type. Û
; Û Û
; Û Type number specified may Û
; Û differ with manufactures Û
; Û specification. The hard Û
; Û disk table shown here Û
; Û assumes the first entry Û
; Û is type 0. Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 266


F000:E331 0000 hdsk_cylinders dw 0 ; Number of cylinders, hdsk_type_0
F000:E333 00 hdsk_heads db 0 ; Number of heads
F000:E334 0000 hdsk_lo_wrt_cyl dw 0 ; Low write current cyl begin *
F000:E336 0000 hdsk_precompcyl dw 0 ; Write pre-compensation cylinder
F000:E338 00 hdsk_err_length db 0 ; Error correction burst length *
F000:E339 00 hdsk_misl_bits db 0 ; Miscellaneous bit functions:
; bits 0-2 disk option, XT only*
; 0-2 unused, all others
; 3 = 1 if > 8 heads
; 4 unused
; 5 = 1 for bad map at last
; cylinder + 1
; 6 or 7 = 1 no retries
F000:E33A 00 hdsk_timeout db 0 ; Normal timeout *
F000:E33B 00 hdsk_fmt_timout db 0 ; Format timeout *
F000:E33C 00 hdsk_chk_timout db 0 ; Check timeout *
F000:E33D 0000 hdsk_parkng_cyl dw 0 ; Parking cylinder number
F000:E33F 00 hdsk_sectr_trac db 0 ; Number of sectors per track
F000:E340 00 hdsk_unused db 0 ; Unused
; * indicates XT machines only
F000:E341 00 00 00 00 00 00 hdsk_type_1 db 0, 0, 0, 0, 0, 0
F000:E347 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E34D 00 00 00 00 db 0, 0, 0, 0
F000:E351 00 00 00 00 00 00 hdsk_type_2 db 0, 0, 0, 0, 0, 0
F000:E357 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E35D 00 00 00 00 db 0, 0, 0, 0
F000:E361 00 00 00 00 00 00 hdsk_type_3 db 0, 0, 0, 0, 0, 0
F000:E367 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E36D 00 00 00 00 db 0, 0, 0, 0
F000:E371 00 00 00 00 00 00 hdsk_type_4 db 0, 0, 0, 0, 0, 0
F000:E377 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E37D 00 00 00 00 db 0, 0, 0, 0
F000:E381 00 00 00 00 00 00 hdsk_type_5 db 0, 0, 0, 0, 0, 0
F000:E387 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E38D 00 00 00 00 db 0, 0, 0, 0
F000:E391 00 00 00 00 00 00 hdsk_type_6 db 0, 0, 0, 0, 0, 0
F000:E397 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E39D 00 00 00 00 db 0, 0, 0, 0
F000:E3A1 00 00 00 00 00 00 hdsk_type_7 db 0, 0, 0, 0, 0, 0
F000:E3A7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3AD 00 00 00 00 db 0, 0, 0, 0
F000:E3B1 00 00 00 00 00 00 hdsk_type_8 db 0, 0, 0, 0, 0, 0
F000:E3B7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3BD 00 00 00 00 db 0, 0, 0, 0
F000:E3C1 00 00 00 00 00 00 hdsk_type_9 db 0, 0, 0, 0, 0, 0
F000:E3C7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3CD 00 00 00 00 db 0, 0, 0, 0
F000:E3D1 00 00 00 00 00 00 hdsk_type_A db 0, 0, 0, 0, 0, 0
F000:E3D7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3DD 00 00 00 00 db 0, 0, 0, 0
F000:E3E1 00 00 00 00 00 00 hdsk_type_B db 0, 0, 0, 0, 0, 0
F000:E3E7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3ED 00 00 00 00 db 0, 0, 0, 0
F000:E3F1 00 00 00 00 00 00 hdsk_type_C db 0, 0, 0, 0, 0, 0
F000:E3F7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3FD 00 00 00 00 db 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 267

F000:E401 32 01 04 00 00 80 hdsk_type_D db 32h, 1, 4, 0, 0, 80h
F000:E407 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E40D 31 01 11 00 db 31h, 1, 11h, 0
F000:E411 67 02 04 00 00 2C hdsk_type_E db 67h, 2, 4, 0, 0, 2Ch
F000:E417 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E41D 67 02 11 00 db 67h, 2, 11h, 0
F000:E421 67 02 06 00 00 2C hdsk_type_F db 67h, 2, 6, 0, 0, 2Ch
F000:E427 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E42D 67 02 11 00 db 67h, 2, 11h, 0
F000:E431 AC 03 08 00 00 00 hdsk_type_10 db 0ACh, 3, 8, 0, 0, 0
F000:E437 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E43D AC 03 11 00 db 0ACh, 3, 11h, 0
F000:E441 AC 03 06 00 00 00 hdsk_type_11 db 0ACh, 3, 6, 0, 0, 0
F000:E447 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E44D AC 03 11 00 db 0ACh, 3, 11h, 0
F000:E451 67 02 04 00 00 FF hdsk_type_12 db 67h, 2, 4, 0, 0, 0FFh
F000:E457 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E45D 67 02 11 00 db 67h, 2, 11h, 0
F000:E461 CE 01 08 00 00 00 hdsk_type_13 db 0CEh, 1, 8, 0, 0, 0
F000:E467 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E46D FF 01 11 00 db 0FFh, 1, 11h, 0
F000:E471 DD 02 05 00 00 FF hdsk_type_14 db 0DDh, 2, 5, 0, 0, 0FFh
F000:E477 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E47D DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E481 84 03 0F 00 00 FF hdsk_type_15 db 84h, 3, 0Fh, 0, 0, 0FFh
F000:E487 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E48D 85 03 11 00 db 85h, 3, 11h, 0
F000:E491 34 03 03 00 00 FF hdsk_type_16 db 34h, 3, 3, 0, 0, 0FFh
F000:E497 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E49D 34 03 11 00 db 34h, 3, 11h, 0
F000:E4A1 57 03 05 00 00 FF hdsk_type_17 db 57h, 3, 5, 0, 0, 0FFh
F000:E4A7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4AD 57 03 11 00 db 57h, 3, 11h, 0
F000:E4B1 57 03 07 00 00 FF hdsk_type_18 db 57h, 3, 7, 0, 0, 0FFh
F000:E4B7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4BD 57 03 11 00 db 57h, 3, 11h, 0
F000:E4C1 32 01 08 00 00 80 hdsk_type_19 db 32h, 1, 8, 0, 0, 80h
F000:E4C7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4CD 3F 01 11 00 db 3Fh, 1, 11h, 0
F000:E4D1 DD 02 07 00 00 FF hdsk_type_1A db 0DDh, 2, 7, 0, 0, 0FFh
F000:E4D7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4DD DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E4E1 00 00 00 00 00 00 hdsk_type_1B db 0, 0, 0, 0, 0, 0
F000:E4E7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4ED 00 00 00 00 db 0, 0, 0, 0
F000:E4F1 64 02 04 00 00 00 hdsk_type_1C db 64h, 2, 4, 0, 0, 0
F000:E4F7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4FD 97 02 11 00 db 97h, 2, 11h, 0
F000:E501 D1 03 05 00 00 2C hdsk_type_1D db 0D1h, 3, 5, 0, 0, 2Ch
F000:E507 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E50D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E511 D1 03 07 00 00 FF hdsk_type_1E db 0D1h, 3, 7, 0, 0, 0FFh
F000:E517 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E51D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E521 00 04 07 00 00 00 hdsk_type_1F db 0, 4, 7, 0, 0, 0
F000:E527 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E52D FF 03 11 00 db 0FFh, 3, 11h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 268

F000:E531 DD 02 05 00 00 2C hdsk_type_20 db 0DDh, 2, 5, 0, 0, 2Ch
F000:E537 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E53D DC 02 11 00 db 0DCh, 2, 11h, 0
F000:E541 DD 02 07 00 00 2C hdsk_type_21 db 0DDh, 2, 7, 0, 0, 2Ch
F000:E547 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E54D DC 02 11 00 db 0DCh, 2, 11h, 0
F000:E551 DD 02 05 00 00 2C hdsk_type_22 db 0DDh, 2, 5, 0, 0, 2Ch
F000:E557 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E55D DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E561 32 01 04 00 00 00 hdsk_type_23 db 32h, 1, 4, 0, 0, 0
F000:E567 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E56D 50 01 11 00 db 50h, 1, 11h, 0
F000:E571 9D 03 07 00 00 00 hdsk_type_24 db 9Dh, 3, 7, 0, 0, 0
F000:E577 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E57D 9D 03 11 00 db 9Dh, 3, 11h, 0
F000:E581 9D 03 09 00 00 FF hdsk_type_25 db 9Dh, 3, 9, 0, 0, 0FFh
F000:E587 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E58D 9D 03 11 00 db 9Dh, 3, 11h, 0
F000:E591 F2 02 07 00 00 F2 hdsk_type_26 db 0F2h, 2, 7, 0, 0, 0F2h
F000:E597 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E59D F2 02 11 00 db 0F2h, 2, 11h, 0
F000:E5A1 F2 02 0B 00 00 FF hdsk_type_27 db 0F2h, 2, 0Bh, 0, 0, 0FFh

F000:E5A7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5AD F2 02 11 00 db 0F2h, 2, 11h, 0
F000:E5B1 BB 02 07 00 00 00 hdsk_type_28 db 0BBh, 2, 7, 0, 0, 0
F000:E5B7 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E5BD BB 02 11 00 db 0BBh, 2, 11h, 0
F000:E5C1 37 03 0A 00 00 FF hdsk_type_29 db 37h, 3, 0Ah, 0, 0, 0FFh
F000:E5C7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5CD 37 03 11 00 db 37h, 3, 11h, 0
F000:E5D1 96 03 07 00 00 96 hdsk_type_2A db 96h, 3, 7, 0, 0, 96h
F000:E5D7 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E5DD 96 03 11 00 db 96h, 3, 11h, 0
F000:E5E1 00 04 0B 00 00 FF hdsk_type_2B db 0, 4, 0Bh, 0, 0, 0FFh
F000:E5E7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5ED 00 04 11 00 db 0, 4, 11h, 0
F000:E5F1 00 04 0F 00 00 FF hdsk_type_2C db 0, 4, 0Fh, 0, 0, 0FFh
F000:E5F7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5FD 00 04 11 00 db 0, 4, 11h, 0
F000:E601 00 04 05 00 00 00 hdsk_type_2D db 0, 4, 5, 0, 0, 0
F000:E607 04 00 00 00 00 00 db 4, 0, 0, 0, 0, 0
F000:E60D 00 04 11 00 db 0, 4, 11h, 0
F000:E611 64 02 02 00 00 80 hdsk_type_2E db 64h, 2, 2, 0, 0, 80h
F000:E617 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E61D 64 02 11 00 db 64h, 2, 11h, 0
F000:E621 00 04 09 00 00 FF hdsk_type_2F db 0, 4, 9, 0, 0, 0FFh
F000:E627 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E62D 00 04 11 00 db 0, 4, 11h, 0
F000:E631 00 04 08 00 00 00 hdsk_type_30 db 0, 4, 8, 0, 0, 0
F000:E637 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E63D 00 04 11 00 db 0, 4, 11h, 0
F000:E641 67 02 08 00 00 80 hdsk_type_31 db 67h, 2, 8, 0, 0, 80h
F000:E647 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E64D 67 02 11 00 db 67h, 2, 11h, 0
F000:E651 DB 03 03 00 00 DB hdsk_type_32 db 0DBh, 3, 3, 0, 0, 0DBh
F000:E657 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E65D DB 03 11 00 db 0DBh, 3, 11h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 269

F000:E661 DB 03 07 00 00 DB hdsk_type_33 db 0DBh, 3, 7, 0, 0, 0DBh
F000:E667 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E66D DB 03 11 00 db 0DBh, 3, 11h, 0
F000:E671 34 03 06 00 00 34 hdsk_type_34 db 34h, 3, 6, 0, 0, 34h
F000:E677 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E67D 34 03 11 00 db 34h, 3, 11h, 0
F000:E681 D1 03 05 00 00 D1 hdsk_type_35 db 0D1h, 3, 5, 0, 0, 0D1h
F000:E687 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E68D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E691 D5 03 05 00 00 D5 hdsk_type_36 db 0D5h, 3, 5, 0, 0, 0D5h
F000:E697 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E69D D5 03 11 00 db 0D5h, 3, 11h, 0
F000:E6A1 3E 03 07 00 00 00 hdsk_type_37 db 3Eh, 3, 7, 0, 0, 0
F000:E6A7 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E6AD 3E 03 11 00 db 3Eh, 3, 11h, 0
F000:E6B1 3E 03 0A 00 00 FF hdsk_type_38 db 3Eh, 3, 0Ah, 0, 0, 0FFh
F000:E6B7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6BD 3E 03 11 00 db 3Eh, 3, 11h, 0
F000:E6C1 95 03 0F 00 00 FF hdsk_type_39 db 95h, 3, 0Fh, 0, 0, 0FFh
F000:E6C7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6CD 96 03 11 00 db 96h, 3, 11h, 0
F000:E6D1 C8 04 0F 00 00 FF hdsk_type_3A db 0C8h, 4, 0Fh, 0, 0, 0FFh
F000:E6D7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6DD C7 04 11 00 db 0C7h, 4, 11h, 0
F000:E6E1 0011[00] db 17 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:E6F2 int_19h_entry: ; xref F000:FF15
F000:E6F2 E9 A8CF jmp int_19h_bootup ; (8FC4)

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û System Configuration Table Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

F000:E6F5 0008 Config_tbl_size dw 8 ; Size of table in bytes
F000:E6F7 FC Config_model db 0FCh ; Model type
; 0F8h = 80386 model 70-80 types
; 0FCh = 80286 model 50-60 types
; also most 80286/80386
; compatibles
; 0FAh = 8088/86 model 25-30 type
F000:E6F8 01 Config_sub_mode db 1 ; Sub-Model type
F000:E6F9 00 Config_BIOS_rev db 0 ; BIOS revsion number
F000:E6FA 70 Config_features db 70h ; Feature information
; bit 7=1, hard disk uses DMA 3
; bit 6=1, dual interrupt chips
; bit 5=1, has real-time-clock
; bit 4=1, int 15h, ah=4Fh is
; supported (keyboard)
; bit 3=1, external wait support
; bit 2=1, has extended BIOS RAM
; bit 1=1, micro-channel
; bit 0=1, unused
F000:E6FB 00 00 00 00 Config_info_byt db 0, 0, 0, 0 ; Information bytes (future use)
F000:E6FF 002A[00] db 42 dup (0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 270


; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û Baud Rate Table Û
; Û Û
; Û Table of hex divsors for Û
; Û the serial ports. Table Û
; Û divisors for bauds 110 to Û
; Û 19,200. Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

F000:E729 0417 baud_rate_tbl dw 417h ; 110 Baud rate divisor
F000:E72B 0300 baud_150 dw 300h
F000:E72D 0180 baud_300 dw 180h
F000:E72F 00C0 baud_600 dw 0C0h
F000:E731 0060 baud_1200 dw 60h
F000:E733 0030 baud_2400 dw 30h
F000:E735 0018 baud_4800 dw 18h
F000:E737 000C baud_9600 dw 0Ch


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:E739 int_14h_entry: ; xref F000:FF0B
F000:E739 E9 11A6 jmp int_14h_RS232 ; (F8E2)
F000:E73C 89 71 61 60 09 41 db 89h, 71h, 61h, 60h, 9, 41h
F000:E742 71 91 F7 38 11 40 db 71h, 91h, 0F7h, 38h, 11h, 40h
F000:E748 80 C0 B8 C0 F7 01 db 80h, 0C0h, 0B8h, 0C0h, 0F7h, 1
F000:E74E 62 22 8A 42 12 02 db 62h, 22h, 8Ah, 42h, 12h, 2
F000:E754 6A F7 61 22 32 02 db 6Ah, 0F7h, 61h, 22h, 32h, 2
F000:E75A 9A 8A 22 6A 1A 92 db 9Ah, 8Ah, 22h, 6Ah, 1Ah, 92h
F000:E760 F7 41 6A 12 5F 47 db 0F7h, 41h, 6Ah, 12h, 5Fh, 47h
F000:E766 5F 47 FE D5 A5 3D db 5Fh, 47h, 0FEh, 0D5h, 0A5h, 3Dh
F000:E76C D1 45 D2 B8 02 90 db 0D1h, 45h, 0D2h, 0B8h, 2, 90h
F000:E772 60 DA 41 C4 76 E8 db 60h, 0DAh, 41h, 0C4h, 76h, 0E8h
F000:E778 8F 1D AD E0 19 83 db 8Fh, 1Dh, 0ADh, 0E0h, 19h, 83h
F000:E77E 5D 12 11 04 DA F4 db 5Dh, 12h, 11h, 4, 0DAh, 0F4h
F000:E784 C3 8D BE 72 FA D0 db 0C3h, 8Dh, 0BEh, 72h, 0FAh, 0D0h
F000:E78A E4 19 E7 B3 AF 90 db 0E4h, 19h, 0E7h, 0B3h, 0AFh, 90h
F000:E790 01 20 0E 0D DA 02 db 1, 20h, 0Eh, 0Dh, 0DAh, 2
F000:E796 C3 F4 E0 AF 10 D1 db 0C3h, 0F4h, 0E0h, 0AFh, 10h, 0D1h
F000:E79C FC 04 FD 43 79 CD db 0FCh, 4, 0FDh, 43h, 79h, 0CDh
F000:E7A2 31 BC FA 81 D6 CF db 31h, 0BCh, 0FAh, 81h, 0D6h, 0CFh
F000:E7A8 BF 54 89 DE BD 83 db 0BFh, 54h, 89h, 0DEh, 0BDh, 83h
F000:E7AE 1D A2 BC 53 C7 3B db 1Dh, 0A2h, 0BCh, 53h, 0C7h, 3Bh
F000:E7B4 BB F3 FD 43 77 DA db 0BBh, 0F3h, 0FDh, 43h, 77h, 0DAh
F000:E7BA B4 F4 90 38 02 1D db 0B4h, 0F4h, 90h, 38h, 2, 1Dh
F000:E7C0 80 F5 21 D7 79 D2 db 80h, 0F5h, 21h, 0D7h, 79h, 0D2h
F000:E7C6 4B F2 8D C7 B4 12 db 4Bh, 0F2h, 8Dh, 0C7h, 0B4h, 12h
F000:E7CC 99 F7 37 F1 7F F8 db 99h, 0F7h, 37h, 0F1h, 7Fh, 0F8h
F000:E7D2 FB 42 9F F8 42 89 db 0FBh, 42h, 9Fh, 0F8h, 42h, 89h
F000:E7D8 33 FD D8 DA 24 17 db 33h, 0FDh, 0D8h, 0DAh, 24h, 17h
F000:E7DE D7 BF 94 B8 7F 1F db 0D7h, 0BFh, 94h, 0B8h, 7Fh, 1Fh
F000:E7E4 97 CE 77 DC db 97h, 0CEh, 77h, 0DCh
F000:E7E8 0046[00] db 70 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 271


F000:E82E int_16h_entry: ; xref F000:FF0F
F000:E82E E9 B84B jmp int_16h_keybd ; (A07C)

int_18h_basic endp


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 0Eh ±±±±±
;
; FLOPPY DISK CONTROLLER (called by hardware 8259-1, IRQ 6)

F000:E831 int_0Eh_floppy proc near ; xref F000:EF57
F000:E831 FB sti ; Enable interrupts
F000:E832 50 push ax
F000:E833 1E push ds
F000:E834 6A 40 push 40h
F000:E836 1F pop ds
assume ds:seg_b
F000:E837 80 0E 003E 80 or dsk_recal_stat,80h ; (0040:003E=0)
F000:E83C B0 20 mov al,20h ; ' '
F000:E83E E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E840 B8 9101 mov ax,9101h
F000:E843 EB 18 jmp short loc_1227 ; (E85D)

int_0Eh_floppy endp


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 76h ±±±±±
;
; HARD DISK CONTROLLER (called by hardware 8259-2 IRQ 14)
;
; When the hard disk controller has completed its task, it signals
; completion though hardware activation of int 76h. The status in
; hdsk_int_flags is set to "done", a value of 0FFh. Interrupt 15,
; function 91h may also be called to signal the interrupt is done.

F000:E845 int_76h_hddone proc near ; xref F000:FF2F
F000:E845 FB sti ; Enable interrupts
F000:E846 50 push ax
F000:E847 1E push ds
F000:E848 6A 40 push 40h
F000:E84A 1F pop ds
F000:E84B C6 06 008E FF mov hdsk_int_flags,0FFh ; (0040:008E=0)
F000:E850 B0 20 mov al,20h ; ' '
F000:E852 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:E854 EB 00 jmp short loc_1225 ; (E856)
F000:E856 loc_1225: ; xref F000:E854
F000:E856 EB 00 jmp short loc_1226 ; (E858)
F000:E858 loc_1226: ; xref F000:E856
F000:E858 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E85A B8 9100 mov ax,9100h
F000:E85D loc_1227: ; xref F000:E843
F000:E85D 1F pop ds
F000:E85E CD 15 int 15h ; General services, ah=func 91h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 272

; interrupt complete, al=type
F000:E860 58 pop ax
F000:E861 CF iret ; Interrupt return
int_76h_hddone endp

F000:E862 001C[00] db 28 dup (0)
F000:E87E 52 3A 45 46 38 1D db 52h, 3Ah, 45h, 46h, 38h, 1Dh
F000:E884 2A 36 80 40 20 10 db 2Ah, 36h, 80h, 40h, 20h, 10h
F000:E88A 08 04 02 01 db 8, 4, 2, 1

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9CC0
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_234 proc near
F000:E88E FA cli ; Disable interrupts
F000:E88F 50 push ax
F000:E890 1E push ds
F000:E891 3C 4A cmp al,4Ah ; 'J'
F000:E893 75 05 jne short loc_1228 ; Jump if not equal
F000:E895 E8 0016 call sub_235 ; (E8AE)
F000:E898 EB 10 jmp short loc_1231 ; (E8AA)
F000:E89A loc_1228: ; xref F000:E893
F000:E89A 3C 4E cmp al,4Eh ; 'N'
F000:E89C 75 05 jne short loc_1229 ; Jump if not equal
F000:E89E E8 0012 call sub_236 ; (E8B3)
F000:E8A1 EB 07 jmp short loc_1231 ; (E8AA)
F000:E8A3 loc_1229: ; xref F000:E89C
F000:E8A3 3C 2B cmp al,2Bh ; '+'
F000:E8A5 75 03 jne short loc_1231 ; Jump if not equal
F000:E8A7 EB 00 jmp short loc_1230 ; (E8A9)
F000:E8A9 loc_1230: ; xref F000:E8A7
F000:E8A9 90 nop ;
F000:E8AA loc_1231: ; xref F000:E898, E8A1, E8A5
F000:E8AA 1F pop ds
F000:E8AB 58 pop ax
F000:E8AC FB sti ; Enable interrupts
F000:E8AD C3 retn
sub_234 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:E895
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_235 proc near
F000:E8AE BB 0000 mov bx,0
F000:E8B1 EB 03 jmp short loc_1232 ; (E8B6)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;

; Called from: F000:E89E

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 273

sub_236:
F000:E8B3 BB 0001 mov bx,1
F000:E8B6 loc_1232: ; xref F000:E8B1
F000:E8B6 BE E2C8 mov si,0E2C8h
assume ds:seg_a
F000:E8B9 F6 06 0017 03 test byte ptr vector_5h_seg+1,3 ; (0000:0017=0F0h)
F000:E8BE 74 09 jz short loc_1234 ; Jump if zero
F000:E8C0 3C 4A cmp al,4Ah ; 'J'
F000:E8C2 75 00 jne short loc_1233 ; Jump if not equal
F000:E8C4 loc_1233: ; xref F000:E8C2
F000:E8C4 BE E2CC mov si,0E2CCh
F000:E8C7 EB 03 jmp short loc_1235 ; (E8CC)
F000:E8C9 loc_1234: ; xref F000:E8BE
F000:E8C9 E9 008E jmp loc_1249 ; (E95A)
F000:E8CC loc_1235: ; xref F000:E8C7, E97D
F000:E8CC 2E: 8A 18 mov bl,cs:[bx+si]
F000:E8CF 0A DB or bl,bl ; Zero ?
F000:E8D1 75 03 jnz short loc_1237 ; Jump if not zero
F000:E8D3 loc_1236: ; xref F000:E8D9
F000:E8D3 E9 0082 jmp loc_1248 ; (E958)
F000:E8D6 loc_1237: ; xref F000:E8D1
F000:E8D6 E8 B63E call sub_70 ; (9F17)
F000:E8D9 75 F8 jnz loc_1236 ; Jump if not zero
F000:E8DB 8A C3 mov al,bl
F000:E8DD BA 00FB mov dx,0FBh
F000:E8E0 3C B4 cmp al,0B4h
F000:E8E2 74 13 je short loc_1238 ; Jump if equal
F000:E8E4 B6 04 mov dh,4
F000:E8E6 3C BC cmp al,0BCh
F000:E8E8 74 0D je short loc_1238 ; Jump if equal
F000:E8EA BA 00F7 mov dx,0F7h
F000:E8ED 3C B5 cmp al,0B5h
F000:E8EF 74 06 je short loc_1238 ; Jump if equal
F000:E8F1 B6 08 mov dh,8
F000:E8F3 3C BD cmp al,0BDh
F000:E8F5 75 0F jne short loc_1239 ; Jump if not equal
F000:E8F7 loc_1238: ; xref F000:E8E2, E8E8, E8EF
F000:E8F7 B8 3737 mov ax,3737h
F000:E8FA E8 05A2 call sub_257 ; (EE9F)
F000:E8FD 22 C2 and al,dl
F000:E8FF 0A C6 or al,dh
F000:E901 86 C4 xchg al,ah
F000:E903 E8 05A8 call sub_258 ; (EEAE)
F000:E906 loc_1239: ; xref F000:E8F5
F000:E906 E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:E908 EB 00 jmp short loc_1240 ; (E90A)
F000:E90A loc_1240: ; xref F000:E908
F000:E90A EB 00 jmp short loc_1241 ; (E90C)
F000:E90C loc_1241: ; xref F000:E90A
F000:E90C 8A D0 mov dl,al
F000:E90E E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:E910 EB 00 jmp short loc_1242 ; (E912)
F000:E912 loc_1242: ; xref F000:E910
F000:E912 EB 00 jmp short loc_1243 ; (E914)
F000:E914 loc_1243: ; xref F000:E912
F000:E914 8A F0 mov dh,al
F000:E916 B0 FD mov al,0FDh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 274

F000:E918 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:E91A EB 00 jmp short loc_1244 ; (E91C)
F000:E91C loc_1244: ; xref F000:E91A
F000:E91C EB 00 jmp short loc_1245 ; (E91E)
F000:E91E loc_1245: ; xref F000:E91C
F000:E91E B0 FF mov al,0FFh
F000:E920 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:E922 33 C0 xor ax,ax ; Zero register
F000:E924 8E D8 mov ds,ax
F000:E926 BE E93F mov si,0E93Fh
F000:E929 87 36 0024 xchg si,vector_9h_off ; (0000:0024=452h)
F000:E92D 8C CF mov di,cs
F000:E92F 87 3E 0026 xchg di,vector_9h_seg ; (0000:0026=0D3D1h)
F000:E933 B0 20 mov al,20h ; ' '
F000:E935 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E937 8A C3 mov al,bl
F000:E939 FB sti ; Enable interrupts
F000:E93A E6 64 out 64h,al ; port 64h, kybd cntrlr functn
F000:E93C loc_1246: ; xref F000:E93D
F000:E93C F4 hlt ; Halt processor
F000:E93D EB FD jmp short loc_1246 ; (E93C)
F000:E93F E4 60 89 3E 26 00 db 0E4h, 60h, 89h, 3Eh, 26h, 0
F000:E945 89 36 24 00 8A C6 db 89h, 36h, 24h, 0, 8Ah, 0C6h
F000:E94B E6 A1 EB 00 EB 00 db 0E6h, 0A1h, 0EBh, 0, 0EBh, 0
F000:E951 loc_1247:
F000:E951 8A C2 mov al,dl
F000:E953 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:E955 83 C4 06 add sp,6
F000:E958 loc_1248: ; xref F000:E8D3
F000:E958 FB sti ; Enable interrupts
F000:E959 C3 retn
F000:E95A loc_1249: ; xref F000:E8C9
F000:E95A 83 FB 00 cmp bx,0
F000:E95D 74 05 je short loc_1250 ; Jump if equal
F000:E95F B0 F5 mov al,0F5h
F000:E961 EB 03 jmp short loc_1251 ; (E966)
F000:E963 90 db 90h
F000:E964 loc_1250: ; xref F000:E95D
F000:E964 B0 F4 mov al,0F4h
F000:E966 loc_1251: ; xref F000:E961
F000:E966 E6 FB out 0FBh,al ; port 0FBh
F000:E968 EB 00 jmp short loc_1252 ; (E96A)
F000:E96A loc_1252: ; xref F000:E968
F000:E96A EB 00 jmp short loc_1253 ; (E96C)
F000:E96C loc_1253: ; xref F000:E96A
F000:E96C 52 push dx
F000:E96D 32 E4 xor ah,ah ; Zero register
F000:E96F 8B D0 mov dx,ax
F000:E971 EE out dx,al ; port 0F4h
F000:E972 EB 00 jmp short loc_1254 ; (E974)
F000:E974 loc_1254: ; xref F000:E972
F000:E974 EB 00 jmp short loc_1255 ; (E976)
F000:E976 loc_1255: ; xref F000:E974
F000:E976 E6 F9 out 0F9h,al ; port 0F9h
F000:E978 EB 00 jmp short loc_1256 ; (E97A)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 275

F000:E97A loc_1256: ; xref F000:E978
F000:E97A EB 00 jmp short loc_1257 ; (E97C)
F000:E97C loc_1257: ; xref F000:E97A
F000:E97C 5A pop dx
F000:E97D E9 FF4C jmp loc_1235 ; (E8CC)
sub_235 endp

F000:E980 0007[00] db 7 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:E987 int_9_entry: ; xref F000:FEF5
F000:E987 E9 B176 ;* jmp int_9_keyboard ;*(9B00)
F000:E987 E9 76 B1 db 0E9h, 76h, 0B1h


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 2 ±±±±±±±
;
; NON-MASKABLE HARDWARE INTERRUPT
;
; This function is called in the event of a memory parity error or may
; occur in the event of other hardware problems or failures (depends on
; the specific manufacturer's hardware). Displays the appropriate
; error message and halts the processor.

F000:E98A int_2_NMI proc near ; xref F000:E2C3
F000:E98A 50 push ax
F000:E98B B0 8D mov al,8Dh
F000:E98D E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:E98F E4 61 in al,61h ; port 61h, 8255 port B, read
F000:E991 A8 C0 test al,0C0h
F000:E993 75 0A jnz short loc_1260 ; Jump if not zero
F000:E995 B0 0D mov al,0Dh
F000:E997 EB 00 jmp short loc_1258 ; (E999)
F000:E999 loc_1258: ; xref F000:E997
F000:E999 EB 00 jmp short loc_1259 ; (E99B)
F000:E99B loc_1259: ; xref F000:E999
F000:E99B E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:E99D 58 pop ax
F000:E99E CF iret ; Interrupt return
int_2_NMI endp

F000:E99F loc_1260: ; xref F000:E993
F000:E99F 33 C0 xor ax,ax ; Zero register
F000:E9A1 8E D8 mov ds,ax
F000:E9A3 8B 16 0413 mov dx,main_ram_size_ ; (0000:0413=280h)
F000:E9A7 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:E9A9 FA cli ; Disable interrupts
F000:E9AA FC cld ; Clear direction
F000:E9AB E8 A495 call sub_33 ; (8E43)
F000:E9AE 33 DB xor bx,bx ; Zero register
F000:E9B0 33 F6 xor si,si ; Zero register
F000:E9B2 loc_1261: ; xref F000:E9CB
F000:E9B2 8E DB mov ds,bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 276

F000:E9B4 B9 8000 mov cx,8000h

F000:E9B7 locloop_1262: ; xref F000:E9C2
F000:E9B7 AD lodsw ; String [si] to ax
F000:E9B8 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:E9BA A8 80 test al,80h
F000:E9BC 75 15 jnz short loc_1263 ; Jump if not zero
F000:E9BE A8 40 test al,40h ; '@'
F000:E9C0 75 16 jnz short loc_1264 ; Jump if not zero
F000:E9C2 E2 F3 loop locloop_1262 ; Loop if cx > 0

F000:E9C4 81 C3 1000 add bx,1000h
F000:E9C8 83 EA 40 sub dx,40h
F000:E9CB 73 E5 jnc loc_1261 ; Jump if carry=0
F000:E9CD BE 7EA8 mov si,7EA8h
F000:E9D0 E9 A3C5 jmp loc_230 ; (8D98)
F000:E9D3 loc_1263: ; xref F000:E9BC
F000:E9D3 BF 7E69 mov di,7E69h
F000:E9D6 EB 03 jmp short loc_1265 ; (E9DB)
F000:E9D8 loc_1264: ; xref F000:E9C0
F000:E9D8 BF 7E7F mov di,7E7Fh
F000:E9DB loc_1265: ; xref F000:E9D6
F000:E9DB 87 F7 xchg si,di
F000:E9DD E8 A3D9 call sub_27 ; (8DB9)
F000:E9E0 BE 7E96 mov si,7E96h
F000:E9E3 E8 A3D3 call sub_27 ; (8DB9)
F000:E9E6 8C D8 mov ax,ds
F000:E9E8 E8 0015 call sub_237 ; (EA00)
F000:E9EB B0 3A mov al,3Ah ; ':'
F000:E9ED E8 A3E2 call sub_29 ; (8DD2)
F000:E9F0 8B C7 mov ax,di
F000:E9F2 E8 000B call sub_237 ; (EA00)
F000:E9F5 B0 29 mov al,29h ; ')'
F000:E9F7 E8 A3D8 call sub_29 ; (8DD2)
F000:E9FA BE EA25 mov si,0EA25h
F000:E9FD E9 A398 jmp loc_230 ; (8D98)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:E9E8, E9F2
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_237 proc near
F000:EA00 50 push ax
F000:EA01 8A C4 mov al,ah
F000:EA03 E8 0005 call sub_238 ; (EA0B)
F000:EA06 58 pop ax
F000:EA07 E8 0001 call sub_238 ; (EA0B)
F000:EA0A C3 retn
sub_237 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EA03, EA07
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 277

;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_238 proc near
F000:EA0B 50 push ax
F000:EA0C C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:EA0F E8 0005 call sub_239 ; (EA17)
F000:EA12 58 pop ax
F000:EA13 E8 0001 call sub_239 ; (EA17)
F000:EA16 C3 retn
sub_238 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EA0F, EA13
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_239 proc near
F000:EA17 24 0F and al,0Fh
F000:EA19 3C 0A cmp al,0Ah
F000:EA1B 72 02 jb short loc_1266 ; Jump if below
F000:EA1D 04 07 add al,7
F000:EA1F loc_1266: ; xref F000:EA1B
F000:EA1F 04 30 add al,30h ; '0'
F000:EA21 E8 A3AE call sub_29 ; (8DD2)
F000:EA24 C3 retn
sub_239 endp

F000:EA25 0D 0A 00 db 0Dh, 0Ah, 0


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 70h ±±±±±
;
; REAL-TIME CLOCK (called by hardware 8259-2, IRQ 8)
;
; This interrupt services the real-time clock hardware. The hardware
; supports 2 modes of operation, an interrupt at a specific 24 hour
; interval (i.e 9:42 am), or repeatedly every 0.976 ms (1,024 Khz).
; Both modes can operate at the same time if needed.
;
; In the 24 hour alarm mode, the interrupt is vectored here by hardware
; and interrupt 4Ah is called to alert the application program of the
; alarm. Int 4Ah is not handled by the BIOS other than to return, and
; is normally revectored by a particular application using the alarm.
;
; When repeating interrupt mode is active, the 32-bit microsecond
; counter consisting of timer_clk_low and timer_clk_hi is decremented
; by 976 us on every interrupt. When the timer reaches zero, the
; byte pointed to by the offset @timer_wait_off and and segment
; @timer_wait_seg is set to 80h (this pointer is set by an application
; program through int 1Ah function ah=6).

F000:EA28 int_70h_clock proc near ; xref F000:FF23
F000:EA28 1E push ds
F000:EA29 50 push ax
F000:EA2A 57 push di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 278

F000:EA2B loc_1267: ; xref F000:EA65, EA6D
F000:EA2B E8 044D call sub_253 ; (EE7B)
F000:EA2E A8 60 test al,60h ; '`'
F000:EA30 74 3D jz short loc_1269 ; Jump if zero
F000:EA32 8A E0 mov ah,al
F000:EA34 E8 043E call sub_252 ; (EE75)
F000:EA37 22 C4 and al,ah
F000:EA39 50 push ax
F000:EA3A A8 40 test al,40h ; '@'
F000:EA3C 74 24 jz short loc_1268 ; Jump if zero
F000:EA3E 6A 40 push 40h
F000:EA40 1F pop ds
assume ds:seg_b
F000:EA41 81 2E 009C 03D0 sub timer_clk_low,3D0h ; (0040:009C=0)
F000:EA47 83 1E 009E 00 sbb timer_clk_hi,0 ; (0040:009E=0)
F000:EA4C 73 14 jnc short loc_1268 ; Jump if carry=0
F000:EA4E E8 0424 call sub_252 ; (EE75)
F000:EA51 24 BF and al,0BFh
F000:EA53 E8 042B call sub_254 ; (EE81)
F000:EA56 C6 06 00A0 00 mov byte ptr ds:data_62e,0 ; (C000:00A0=6Fh)
F000:EA5B C5 3E 0098 lds di,dword ptr ds:data_61e ; (C000:0098=6175h) Load 32 bit ptr
F000:EA5F C6 05 80 mov byte ptr [di],80h
F000:EA62 loc_1268: ; xref F000:EA3C, EA4C
F000:EA62 58 pop ax
F000:EA63 A8 20 test al,20h ; ' '
F000:EA65 74 C4 jz loc_1267 ; Jump if zero
F000:EA67 FB sti ; Enable interrupts
F000:EA68 52 push dx
F000:EA69 CD 4A int 4Ah ; RTC Alarm occurred
F000:EA6B 5A pop dx
F000:EA6C FA cli ; Disable interrupts
F000:EA6D EB BC jmp short loc_1267 ; (EA2B)
F000:EA6F loc_1269: ; xref F000:EA30
F000:EA6F B0 20 mov al,20h ; ' '
F000:EA71 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EA73 EB 00 jmp short loc_1270 ; (EA75)
F000:EA75 loc_1270: ; xref F000:EA73
F000:EA75 EB 00 jmp short loc_1271 ; (EA77)
F000:EA77 loc_1271: ; xref F000:EA75
F000:EA77 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EA79 5F pop di
F000:EA7A 58 pop ax
F000:EA7B 1F pop ds
F000:EA7C CF iret ; Interrupt return
int_70h_clock endp



; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± unused ±±±±±
;
; Unused interrupt vector termination
;
; This routine processes invalid and unused interrupt requests. The
; hardware IRQ number is loaded into gen_int_occured, and the interrupt
; cleared. For software calls to an unused interrupt, a value 0FFh is
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 279

; loaded into gen_int_occured, and the routine returns to the caller
; without changing registers.
;
; Alternatively, some systems simply return (iret).

F000:EA7D int_unused proc near ; xref F000:EB26, FEF7, FEF9, FEFB
; FEFD, FF27, FF29, FF2B
F000:EA7D 50 push ax
F000:EA7E 52 push dx
F000:EA7F BA 0020 mov dx,20h
F000:EA82 E8 0041 call sub_241 ; (EAC6)
F000:EA85 74 20 jz short loc_1273 ; Jump if zero
F000:EA87 50 push ax
F000:EA88 B2 A0 mov dl,0A0h
F000:EA8A E8 0039 call sub_241 ; (EAC6)
F000:EA8D 74 0D jz short loc_1272 ; Jump if zero
F000:EA8F B2 A1 mov dl,0A1h
F000:EA91 E8 001F call sub_240 ; (EAB3)
F000:EA94 B0 20 mov al,20h ; ' '
F000:EA96 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EA98 58 pop ax
F000:EA99 40 inc ax
F000:EA9A EB 0B jmp short loc_1273 ; (EAA7)
F000:EA9C loc_1272: ; xref F000:EA8D
F000:EA9C 58 pop ax
F000:EA9D 24 FB and al,0FBh
F000:EA9F B2 21 mov dl,21h ; '!'
F000:EAA1 E8 000F call sub_240 ; (EAB3)
F000:EAA4 8A C4 mov al,ah
F000:EAA6 40 inc ax
F000:EAA7 loc_1273: ; xref F000:EA85, EA9A
F000:EAA7 48 dec ax
F000:EAA8 1E push ds
F000:EAA9 6A 40 push 40h
F000:EAAB 1F pop ds
F000:EAAC A2 006B mov gen_int_occured,al ; (0040:006B=0FFh)
F000:EAAF 1F pop ds
F000:EAB0 5A pop dx
F000:EAB1 58 pop ax
F000:EAB2 CF iret ; Interrupt return
int_unused endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EA91, EAA1
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_240 proc near
F000:EAB3 8A E0 mov ah,al
F000:EAB5 EC in al,dx ; port 0A1h, 8259-2 int IMR
F000:EAB6 0A C4 or al,ah
F000:EAB8 EB 00 jmp short loc_1274 ; (EABA)
F000:EABA loc_1274: ; xref F000:EAB8
F000:EABA EB 00 jmp short loc_1275 ; (EABC)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 280

F000:EABC loc_1275: ; xref F000:EABA
F000:EABC EE out dx,al ; port 0A1h, 8259-2 int comands
F000:EABD B0 20 mov al,20h ; ' '
F000:EABF 4A dec dx
F000:EAC0 EB 00 jmp short loc_1276 ; (EAC2)
F000:EAC2 loc_1276: ; xref F000:EAC0
F000:EAC2 EB 00 jmp short loc_1277 ; (EAC4)
F000:EAC4 loc_1277: ; xref F000:EAC2
F000:EAC4 EE out dx,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EAC5 C3 retn
sub_240 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EA82, EA8A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_241 proc near
F000:EAC6 B0 0B mov al,0Bh
F000:EAC8 EE out dx,al ; port 20h, 8259-1 int command
F000:EAC9 EB 00 jmp short loc_1278 ; (EACB)
F000:EACB loc_1278: ; xref F000:EAC9
F000:EACB EB 00 jmp short loc_1279 ; (EACD)
F000:EACD loc_1279: ; xref F000:EACB
F000:EACD EC in al,dx ; port 20h, 8259-1 int IRR/ISR
F000:EACE 0A C0 or al,al ; Zero ?
F000:EAD0 C3 retn
sub_241 endp

F000:EAD1 55 8B EC 50 53 1E db 55h, 8Bh, 0ECh, 50h, 53h, 1Eh
F000:EAD7 C5 5E 02 8A 07 3C db 0C5h, 5Eh, 2, 8Ah, 7, 3Ch
F000:EADD 9B 74 39 3C 2E 74 db 9Bh, 74h, 39h, 3Ch, 2Eh, 74h
F000:EAE3 14 3C 3E 74 10 3C db 14h, 3Ch, 3Eh, 74h, 10h, 3Ch
F000:EAE9 36 74 0C 3C 26 74 db 36h, 74h, 0Ch, 3Ch, 26h, 74h
F000:EAEF 08 3C 64 74 04 3C db 8, 3Ch, 64h, 74h, 4, 3Ch
F000:EAF5 65 75 01 43 80 3F db 65h, 75h, 1, 43h, 80h, 3Fh
F000:EAFB D8 72 24 43 8A 07 db 0D8h, 72h, 24h, 43h, 8Ah, 7
F000:EB01 43 8A E0 25 C0 07 db 43h, 8Ah, 0E0h, 25h, 0C0h, 7
F000:EB07 3C 00 75 05 80 FC db 3Ch, 0, 75h, 5, 80h, 0FCh
F000:EB0D 06 db 6
F000:EB0E 75 0A db 75h, 0Ah
F000:EB10 loc_1280:
F000:EB10 3C C0 cmp al,0C0h
F000:EB12 74 06 je short loc_1282 ; Jump if equal
F000:EB14 43 inc bx
F000:EB15 3C 40 cmp al,40h ; '@'
F000:EB17 74 01 je short loc_1282 ; Jump if equal
F000:EB19 loc_1281: ; xref F000:EB36
F000:EB19 43 inc bx
F000:EB1A loc_1282: ; xref F000:EB12, EB17
F000:EB1A 89 5E 02 mov [bp+2],bx
F000:EB1D 1F pop ds
F000:EB1E 5B pop bx
F000:EB1F 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 281

F000:EB20 5D pop bp
F000:EB21 CF iret ; Interrupt return
F000:EB22 loc_1283: ; xref F000:EB3B
F000:EB22 1F pop ds
F000:EB23 5B pop bx
F000:EB24 58 pop ax
F000:EB25 5D pop bp
F000:EB26 E9 FF54 jmp int_unused ; (EA7D)


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 6 ±±±±±±±
;
; BAD OPCODE DETECTED

F000:EB29 int_6_badopcode proc near
F000:EB29 55 push bp
F000:EB2A 8B EC mov bp,sp
F000:EB2C 50 push ax
F000:EB2D 53 push bx
F000:EB2E 1E push ds
F000:EB2F C5 5E 02 lds bx,dword ptr [bp+2] ; Load 32 bit ptr
F000:EB32 8B 07 mov ax,[bx]
F000:EB34 3C F0 cmp al,0F0h
F000:EB36 74 E1 je loc_1281 ; Jump if equal
F000:EB38 3D 050F cmp ax,50Fh
F000:EB3B 75 E5 jne loc_1283 ; Jump if not equal
F000:EB3D FA cli ; Disable interrupts
F000:EB3E FC cld ; Clear direction
F000:EB3F 33 C0 xor ax,ax ; Zero register
F000:EB41 8E D8 mov ds,ax
F000:EB43 8B C4 mov ax,sp
F000:EB45 05 000E add ax,0Eh
F000:EB48 24 F8 and al,0F8h
F000:EB4A B9 0020 mov cx,20h
F000:EB4D 2B C1 sub ax,cx
F000:EB4F 8B E0 mov sp,ax
F000:EB51 8B F8 mov di,ax
F000:EB53 8B E8 mov bp,ax
F000:EB55 8C D0 mov ax,ss
F000:EB57 8E C0 mov es,ax
F000:EB59 BE E270 mov si,0E270h
F000:EB5C 2E: F3/ A4 rep movs byte ptr es:[di],cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:EB5F 8B FD mov di,bp
F000:EB61 8A CC mov cl,ah
F000:EB63 C0 E9 04 shr cl,4 ; Shift w/zeros fill
F000:EB66 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:EB69 03 C7 add ax,di
F000:EB6B 80 D1 00 adc cl,0
F000:EB6E 83 C7 02 add di,2
F000:EB71 AB stosw ; Store ax to es:[di]
F000:EB72 8A C1 mov al,cl
F000:EB74 AA stosb ; Store al to es:[di]
F000:EB75 32 ED xor ch,ch ; Zero register
F000:EB77 83 C7 03 add di,3
F000:EB7A BE 0848 mov si,848h
F000:EB7D E8 0084 call sub_242 ; (EC04)
F000:EB80 8B D8 mov bx,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 282

F000:EB82 72 03 jc short loc_1284 ; Jump if carry Set
F000:EB84 80 CD 01 or ch,1
F000:EB87 loc_1284: ; xref F000:EB82
F000:EB87 83 C7 0C add di,0Ch
F000:EB8A BE 0836 mov si,836h
F000:EB8D E8 0074 call sub_242 ; (EC04)
F000:EB90 72 03 jc short loc_1285 ; Jump if carry Set
F000:EB92 80 CD 02 or ch,2
F000:EB95 loc_1285: ; xref F000:EB90
F000:EB95 8E C0 mov es,ax
F000:EB97 8E DB mov ds,bx
F000:EB99 66| C1 C8 10 ror eax,10h ; Rotate
F000:EB9D 50 push ax
F000:EB9E 0F 01 56 00 lgdt qword ptr [bp] ; Load global des tbl
F000:EBA2 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:EBA5 0C 01 or al,1
F000:EBA7 0F 22 C0 mov cr0,eax ; Mov reg-control reg
;* This jump is a protected mode jump to flush the pre-fetch queue -
;* - the segment selector was ignored.
F000:EBAA EA 0010EBAF jmp far ptr loc_1286 ; (EBAF)
F000:EBAF loc_1286: ; xref F000:EBAA
F000:EBAF D0 ED shr ch,1 ; Shift w/zeros fill
F000:EBB1 73 05 jnc short loc_1287 ; Jump if carry=0
F000:EBB3 BB 0008 mov bx,8
F000:EBB6 8E DB mov ds,bx
F000:EBB8 loc_1287: ; xref F000:EBB1
F000:EBB8 D0 ED shr ch,1 ; Shift w/zeros fill
F000:EBBA 73 05 jnc short loc_1288 ; Jump if carry=0
F000:EBBC BB 0018 mov bx,18h
F000:EBBF 8E C3 mov es,bx
F000:EBC1 loc_1288: ; xref F000:EBBA
F000:EBC1 24 FE and al,0FEh
F000:EBC3 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:EBC6 EA F000EBCB jmp far ptr loc_1289 ; (EBCB)
F000:EBCB loc_1289: ; xref F000:EBC6
F000:EBCB 58 pop ax
F000:EBCC 66| C1 C8 10 ror eax,10h ; Rotate
F000:EBD0 33 C0 xor ax,ax ; Zero register
F000:EBD2 8E D0 mov ss,ax
F000:EBD4 36: 8B 16 0818 mov dx,ss:data_18e ; (0000:0818=4EF0h)
F000:EBD9 36: 8B 1E 081A mov bx,ss:data_19e ; (0000:081A=7003h)
F000:EBDE 36: 8B 0E 0822 mov cx,ss:data_21e ; (0000:0822=1)
F000:EBE3 36: 8B 26 082C mov sp,ss:data_22e ; (0000:082C=2212h)
F000:EBE8 36: 8E 16 0820 mov ss,ss:data_20e ; (0000:0820=3)
F000:EBED 52 push dx
F000:EBEE 51 push cx
F000:EBEF 53 push bx
F000:EBF0 8E D0 mov ss,ax
F000:EBF2 BC 0826 mov sp,826h
F000:EBF5 61 popa ; Restore all regs
F000:EBF6 36: 8B 26 082C mov sp,ss:data_22e ; (0000:082C=2212h)
F000:EBFB 36: 8E 16 0820 mov ss,ss:data_20e ; (0000:0820=3)
F000:EC00 83 EC 06 sub sp,6
F000:EC03 CF iret ; Interrupt return
int_6_badopcode endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 283

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EB7D, EB8D
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_242 proc near
F000:EC04 8B 44 04 mov ax,[si+4]
F000:EC07 AB stosw ; Store ax to es:[di]
F000:EC08 AD lodsw ; String [si] to ax
F000:EC09 AB stosw ; Store ax to es:[di]
F000:EC0A 8A 0C mov cl,[si]
F000:EC0C 26: 88 0D mov es:[di],cl
F000:EC0F A8 0F test al,0Fh
F000:EC11 75 0E jnz short loc_ret_1290 ; Jump if not zero
F000:EC13 F6 C1 F0 test cl,0F0h
F000:EC16 75 09 jnz short loc_ret_1290 ; Jump if not zero
F000:EC18 C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:EC1B C0 E1 04 shl cl,4 ; Shift w/zeros fill
F000:EC1E 0A E1 or ah,cl
F000:EC20 F9 stc ; Set carry flag

F000:EC21 loc_ret_1290: ; xref F000:EC11, EC16
F000:EC21 C3 retn
sub_242 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EED5
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_243 proc near
F000:EC22 B0 20 mov al,20h ; ' '
F000:EC24 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EC26 EB 00 jmp short loc_1291 ; (EC28)
F000:EC28 loc_1291: ; xref F000:EC26
F000:EC28 EB 00 jmp short loc_1292 ; (EC2A)
F000:EC2A loc_1292: ; xref F000:EC28
F000:EC2A E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EC2C C3 retn
sub_243 endp

F000:EC2D 002C[00] db 44 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:EC59 int_13h_entry: ; xref F000:FF09
F000:EC59 E9 C1CA jmp int_13h_floppy ; (AE26)


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 5 ±±±±±±±
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 284

; PRINT SCREEN
;
; Send the present active display screen contents to the printer if
; the printer is idle and not out of paper. The status of the print
; screen function is in prn_screen_stat at 0050:0000. Control-Break
; will terminate an active print screen operation.

F000:EC5C int_5_prn_scrn proc near ; xref F000:FF54
F000:EC5C 60 pusha ; Save all regs
F000:EC5D 1E push ds
F000:EC5E 6A 40 push 40h
F000:EC60 1F pop ds
F000:EC61 B0 01 mov al,1
F000:EC63 86 06 0100 xchg al,prn_scrn_stat_b ; (0040:0100=0)
F000:EC67 3C 01 cmp al,1
F000:EC69 74 65 je short loc_1299 ; Jump if equal
F000:EC6B FB sti ; Enable interrupts
F000:EC6C 33 D2 xor dx,dx ; Zero register
F000:EC6E B4 02 mov ah,2
F000:EC70 CD 17 int 17h ; Printer dx=prn#, ah=func 12h
; read status, ah=return status
F000:EC72 80 F4 80 xor ah,80h
F000:EC75 F6 C4 A9 test ah,0A9h
F000:EC78 74 07 jz short loc_1293 ; Jump if zero
F000:EC7A E8 A18A call sub_31 ; (8E07)
F000:EC7D B1 FF mov cl,0FFh
F000:EC7F EB 4A jmp short loc_1298 ; (ECCB)
F000:EC81 loc_1293: ; xref F000:EC78
F000:EC81 E8 004F call sub_244 ; (ECD3)
F000:EC84 B4 0F mov ah,0Fh
F000:EC86 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:EC88 8A DC mov bl,ah
F000:EC8A B4 03 mov ah,3
F000:EC8C CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:EC8E 52 push dx
F000:EC8F 2B D2 sub dx,dx
F000:EC91 loc_1294: ; xref F000:ECAB, ECBB
F000:EC91 B4 02 mov ah,2
F000:EC93 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:EC95 B4 08 mov ah,8
F000:EC97 CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:EC99 22 C0 and al,al
F000:EC9B 75 02 jnz short loc_1295 ; Jump if not zero
F000:EC9D B0 20 mov al,20h ; ' '
F000:EC9F loc_1295: ; xref F000:EC9B
F000:EC9F E8 003C call sub_245 ; (ECDE)
F000:ECA2 F6 C4 29 test ah,29h ; ')'
F000:ECA5 75 1A jnz short loc_1296 ; Jump if not zero
F000:ECA7 FE C2 inc dl
F000:ECA9 3A D3 cmp dl,bl
F000:ECAB 75 E4 jne loc_1294 ; Jump if not equal
F000:ECAD 2A D2 sub dl,dl
F000:ECAF E8 0021 call sub_244 ; (ECD3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 285

F000:ECB2 FE C6 inc dh
F000:ECB4 A0 0084 mov al,video_rows ; (0040:0084=18h)
F000:ECB7 FE C0 inc al
F000:ECB9 3A F0 cmp dh,al
F000:ECBB 75 D4 jne loc_1294 ; Jump if not equal
F000:ECBD B1 00 mov cl,0
F000:ECBF EB 05 jmp short loc_1297 ; (ECC6)
F000:ECC1 loc_1296: ; xref F000:ECA5
F000:ECC1 E8 A143 call sub_31 ; (8E07)
F000:ECC4 B1 FF mov cl,0FFh
F000:ECC6 loc_1297: ; xref F000:ECBF
F000:ECC6 5A pop dx
F000:ECC7 B4 02 mov ah,2
F000:ECC9 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:ECCB loc_1298: ; xref F000:EC7F
F000:ECCB FA cli ; Disable interrupts
F000:ECCC 88 0E 0100 mov prn_scrn_stat_b,cl ; (0040:0100=0)
F000:ECD0 loc_1299: ; xref F000:EC69
F000:ECD0 1F pop ds
F000:ECD1 61 popa ; Restore all regs
F000:ECD2 CF iret ; Interrupt return
int_5_prn_scrn endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EC81, ECAF
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_244 proc near
F000:ECD3 B0 0D mov al,0Dh
F000:ECD5 E8 0006 call sub_245 ; (ECDE)
F000:ECD8 B0 0A mov al,0Ah
F000:ECDA E8 0001 call sub_245 ; (ECDE)
F000:ECDD C3 retn
sub_244 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EC9F, ECD5, ECDA
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_245 proc near
F000:ECDE 52 push dx
F000:ECDF 33 D2 xor dx,dx ; Zero register
F000:ECE1 32 E4 xor ah,ah ; Zero register
F000:ECE3 CD 17 int 17h ; Printer dx=prn#, ah=func 10h
; print char in al
F000:ECE5 5A pop dx
F000:ECE6 C3 retn
sub_245 endp


bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 286


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 8 ±±±±±±±
;
; TIMER TICKS (called by hardware 8259-1, IRQ 0)
;
; This is the primary timer used to control the clock and other key
; system resources. It is called indirectly by channel A of the 8253
; timer every 18.2 milliseconds. Every timer tick also calls int 1Ch
; for user needs (int 1Ch points to an iret instruction unless changed
; by a resident program). The timer interrupt is given the highest
; maskable interrupt priority upon power up.
;
; The main timing functions of int 8 include increment of a 32-bit
; time since powered on counter, timer_hi and timer_low, and after 24
; hours since powered on, timer_rolled is incremented.
;
; The last task of int 8 is turning off the floppy drive motor after
; 2 seconds of non-use. The counter dsk_motor_tmr is decremented upon
; each occurrence of int 8. When the count reaches zero, the motor is
; set off, and the motor running flags are cleared in dsk_motor_stat.

F000:ECE7 int_8_timer proc near ; xref F000:FEA5
F000:ECE7 FB sti ; Enable interrupts
F000:ECE8 1E push ds
F000:ECE9 6A 40 push 40h
F000:ECEB 1F pop ds
F000:ECEC 56 push si
F000:ECED 57 push di
F000:ECEE BE 006C mov si,6Ch
F000:ECF1 BF 006E mov di,6Eh
F000:ECF4 FF 04 inc word ptr [si]
F000:ECF6 75 02 jnz short loc_1300 ; Jump if not zero
F000:ECF8 FF 05 inc word ptr [di]
F000:ECFA loc_1300: ; xref F000:ECF6
F000:ECFA 83 3D 18 cmp word ptr [di],18h
F000:ECFD 75 12 jne short loc_1301 ; Jump if not equal
F000:ECFF 81 3C 00B0 cmp word ptr [si],0B0h
F000:ED03 75 0C jne short loc_1301 ; Jump if not equal
F000:ED05 C7 04 0000 mov word ptr [si],0
F000:ED09 C7 05 0000 mov word ptr [di],0
F000:ED0D C6 45 02 01 mov byte ptr [di+2],1
F000:ED11 loc_1301: ; xref F000:ECFD, ED03
F000:ED11 5F pop di
F000:ED12 5E pop si
F000:ED13 50 push ax
F000:ED14 52 push dx
F000:ED15 FE 0E 0040 dec dsk_motor_tmr ; (0040:0040=17h)
F000:ED19 75 0B jnz short loc_1302 ; Jump if not zero
F000:ED1B BA 03F2 mov dx,3F2h
F000:ED1E B0 0C mov al,0Ch
F000:ED20 80 26 003F F0 and dsk_motor_stat,0F0h ; (0040:003F=0)
F000:ED25 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:ED26 loc_1302: ; xref F000:ED19
F000:ED26 CD 1C int 1Ch ; Timer break (call each 18.2ms)
F000:ED28 FA cli ; Disable interrupts
F000:ED29 B0 20 mov al,20h ; ' '
F000:ED2B E6 20 out 20h,al ; port 20h, 8259-1 int command
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 287

; al = 20h, end of interrupt
F000:ED2D 5A pop dx
F000:ED2E 58 pop ax
F000:ED2F 1F pop ds
F000:ED30 CF iret ; Interrupt return
int_8_timer endp



; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 1Ah ±±±±±
;
; REAL-TIME CLOCK SERVICES
;
; Call with: ah = sub-function number
;
; Functions:
; ah = 0 Get system timer (increments every 54.92 ms from int 8)
; Returns: al = # of 24 hour periods since read/powered up
; cx:dx = 32 bit count
; ah = 1 Get system timer & reset 24 hour counter
; Returns: cx:dx = 32 bit count
;
; **** System must have CMOS clock for services 2-0Bh ****
; ah = 2 Get time in BCD format
; Returns: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 if daylight savings time operation off/on
; carry flag = 0 if clock ok, 1 if stopped
; ah = 3 Set time in BCD format
; Call with: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 if daylight savings time operation off/on
; ah = 4 Get date in BCD format
; Returns: cx = four digit year
; dh/dl = month/day
; carry flag = 0 if clock ok, 1 if stopped
; ah = 5 Set date in BCD format
; Call with: cx = four digit year
; dh/dl = month/day
; ah = 6 Set 24 hour alarm (alarm vectors to int 4Ah)
; Call with: ch/cl = hours/minutes
; dh = seconds
; ah = 7 Clear alarm
; ah = 9 Get alarm time & status
; Returns: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 alarm off/on
; ah = 0Ah Get days counter
; Returns: cx = number of days since 1-Jan-80
; ah = 0Bh Set days counter
; Call with: cx = number of days since 1-Jan-80

F000:ED31 int_1Ah_RTC proc near ; xref F000:FE6E
F000:ED31 FB sti ; Enable interrupts
F000:ED32 80 FC 08 cmp ah,8
F000:ED35 73 2B jae short loc_1307 ; Jump if above or =
F000:ED37 80 FC 01 cmp ah,1
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 288

F000:ED3A 77 2B ja short loc_1308 ; Jump if above
F000:ED3C 1E push ds
F000:ED3D 6A 40 push 40h
F000:ED3F 1F pop ds
F000:ED40 B0 00 mov al,0
F000:ED42 FA cli ; Disable interrupts
F000:ED43 74 0E jz short loc_1303 ; Jump if zero
F000:ED45 86 06 0070 xchg al,timer_rolled ; (0040:0070=0)
F000:ED49 8B 16 006C mov dx,timer_low ; (0040:006C=0C491h)
F000:ED4D 8B 0E 006E mov cx,timer_hi ; (0040:006E=0Fh)
F000:ED51 EB 0B jmp short loc_1304 ; (ED5E)
F000:ED53 loc_1303: ; xref F000:ED43
F000:ED53 A2 0070 mov timer_rolled,al ; (0040:0070=0)
F000:ED56 89 16 006C mov timer_low,dx ; (0040:006C=0C492h)
F000:ED5A 89 0E 006E mov timer_hi,cx ; (0040:006E=0Fh)
F000:ED5E loc_1304: ; xref F000:ED51
F000:ED5E 1F pop ds
F000:ED5F loc_1305: ; xref F000:EDD1, EDE5, EE0B
F000:ED5F F9 stc ; Set carry flag
F000:ED60 loc_1306: ; xref F000:EE17
F000:ED60 B4 00 mov ah,0
F000:ED62 loc_1307: ; xref F000:ED35
F000:ED62 FB sti ; Enable interrupts
F000:ED63 F5 cmc ; Complement carry
F000:ED64 CA 0002 retf 2 ; Return far
int_1Ah_RTC endp

F000:ED67 loc_1308: ; xref F000:ED3A
F000:ED67 8A C4 mov al,ah
F000:ED69 98 cbw ; Convrt byte to word
F000:ED6A 48 dec ax
F000:ED6B 48 dec ax
F000:ED6C 74 51 jz short loc_1311 ; Jump if zero
F000:ED6E 48 dec ax
F000:ED6F 74 33 jz short loc_1310 ; Jump if zero
F000:ED71 48 dec ax
F000:ED72 74 5F jz short loc_1312 ; Jump if zero
F000:ED74 48 dec ax
F000:ED75 74 0C jz short loc_1309 ; Jump if zero
F000:ED77 48 dec ax
F000:ED78 74 6E jz short loc_1313 ; Jump if zero
F000:ED7A FA cli ; Disable interrupts
F000:ED7B E8 00F7 call sub_252 ; (EE75)
F000:ED7E 24 57 and al,57h ; 'W'
F000:ED80 E9 0085 jmp loc_1314 ; (EE08)
F000:ED83 loc_1309: ; xref F000:ED75
F000:ED83 E8 0094 call sub_247 ; (EE1A)
F000:ED86 52 push dx
F000:ED87 B8 3209 mov ax,3209h
F000:ED8A B2 08 mov dl,8
F000:ED8C E8 00C9 call sub_250 ; (EE58)
F000:ED8F 5A pop dx
F000:ED90 8A E2 mov ah,dl
F000:ED92 B0 07 mov al,7
F000:ED94 E8 0117 call sub_258 ; (EEAE)
F000:ED97 B8 0006 mov ax,6
F000:ED9A E8 0111 call sub_258 ; (EEAE)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 289

F000:ED9D E8 00D5 call sub_252 ; (EE75)
F000:EDA0 24 7F and al,7Fh
F000:EDA2 EB 64 jmp short loc_1314 ; (EE08)
F000:EDA4 loc_1310: ; xref F000:ED6F
F000:EDA4 E8 0073 call sub_247 ; (EE1A)
F000:EDA7 52 push dx
F000:EDA8 B8 0402 mov ax,402h
F000:EDAB B2 00 mov dl,0
F000:EDAD E8 00A8 call sub_250 ; (EE58)
F000:EDB0 5A pop dx
F000:EDB1 E8 00C1 call sub_252 ; (EE75)
F000:EDB4 24 60 and al,60h ; '`'
F000:EDB6 0C 02 or al,2
F000:EDB8 80 E2 01 and dl,1
F000:EDBB 0A C2 or al,dl
F000:EDBD EB 49 jmp short loc_1314 ; (EE08)
F000:EDBF loc_1311: ; xref F000:ED6C
F000:EDBF E8 004C call sub_246 ; (EE0E)
F000:EDC2 B0 02 mov al,2
F000:EDC4 B9 0004 mov cx,4
F000:EDC7 E8 007D call sub_249 ; (EE47)
F000:EDCA E8 00A8 call sub_252 ; (EE75)
F000:EDCD 24 01 and al,1
F000:EDCF 8A D0 mov dl,al
F000:EDD1 EB 8C jmp short loc_1305 ; (ED5F)
F000:EDD3 loc_1312: ; xref F000:ED72
F000:EDD3 E8 0038 call sub_246 ; (EE0E)
F000:EDD6 B0 09 mov al,9
F000:EDD8 B9 0832 mov cx,832h
F000:EDDB E8 0069 call sub_249 ; (EE47)
F000:EDDE B0 07 mov al,7
F000:EDE0 E8 00BC call sub_257 ; (EE9F)
F000:EDE3 8A D0 mov dl,al
F000:EDE5 E9 FF77 jmp loc_1305 ; (ED5F)
F000:EDE8 loc_1313: ; xref F000:ED78
F000:EDE8 FA cli ; Disable interrupts
F000:EDE9 E8 0089 call sub_252 ; (EE75)
F000:EDEC FB sti ; Enable interrupts
F000:EDED A8 20 test al,20h ; ' '
F000:EDEF 75 24 jnz short loc_1316 ; Jump if not zero
F000:EDF1 E8 0026 call sub_247 ; (EE1A)
F000:EDF4 52 push dx
F000:EDF5 B8 0503 mov ax,503h
F000:EDF8 B2 01 mov dl,1
F000:EDFA E8 005B call sub_250 ; (EE58)
F000:EDFD 5A pop dx
F000:EDFE E8 0069 call sub_251 ; (EE6A)
F000:EE01 E8 0071 call sub_252 ; (EE75)
F000:EE04 24 7F and al,7Fh
F000:EE06 0C 20 or al,20h ; ' '
F000:EE08 loc_1314: ; xref F000:ED80, EDA2, EDBD
F000:EE08 E8 0076 call sub_254 ; (EE81)
F000:EE0B E9 FF51 jmp loc_1305 ; (ED5F)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 290

; Called from: F000:EDBF, EDD3
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_246 proc near
F000:EE0E E8 0027 call sub_248 ; (EE38)
F000:EE11 75 01 jnz short loc_1315 ; Jump if not zero
F000:EE13 C3 retn
F000:EE14 loc_1315: ; xref F000:EE11
F000:EE14 58 pop ax
F000:EE15 loc_1316: ; xref F000:EDEF
F000:EE15 33 C0 xor ax,ax ; Zero register
F000:EE17 E9 FF46 jmp loc_1306 ; (ED60)
sub_246 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:ED83, EDA4, EDF1
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_247 proc near
F000:EE1A 51 push cx
F000:EE1B E8 001A call sub_248 ; (EE38)
F000:EE1E 59 pop cx
F000:EE1F 74 16 jz short loc_ret_1317 ; Jump if zero
F000:EE21 B8 260A mov ax,260Ah
F000:EE24 90 nop ;
F000:EE25 E8 0086 call sub_258 ; (EEAE)
F000:EE28 B8 820B mov ax,820Bh
F000:EE2B E8 0080 call sub_258 ; (EEAE)
F000:EE2E E8 004A call sub_253 ; (EE7B)
F000:EE31 B0 0D mov al,0Dh

F000:EE33 E8 0069 call sub_257 ; (EE9F)
F000:EE36 90 nop ;

F000:EE37 loc_ret_1317: ; xref F000:EE1F
F000:EE37 C3 retn
sub_247 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EE0E, EE1B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_248 proc near
F000:EE38 B9 1000 mov cx,1000h

F000:EE3B locloop_1318: ; xref F000:EE44
F000:EE3B FB sti ; Enable interrupts
F000:EE3C B0 0A mov al,0Ah
F000:EE3E FA cli ; Disable interrupts
F000:EE3F E8 005D call sub_257 ; (EE9F)
F000:EE42 A8 80 test al,80h
F000:EE44 E0 F5 loopnz locloop_1318 ; Loop if zf=0, cx>0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 291


F000:EE46 C3 retn
sub_248 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EDC7, EDDB
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_249 proc near
F000:EE47 FA cli ; Disable interrupts
F000:EE48 E8 0054 call sub_257 ; (EE9F)
F000:EE4B 86 C1 xchg al,cl
F000:EE4D E8 004F call sub_257 ; (EE9F)
F000:EE50 86 C5 xchg al,ch
F000:EE52 E8 004A call sub_257 ; (EE9F)
F000:EE55 86 C6 xchg al,dh
F000:EE57 C3 retn
sub_249 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:ED8C, EDAD, EDFA
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_250 proc near
F000:EE58 51 push cx
F000:EE59 86 E1 xchg ah,cl
F000:EE5B FA cli ; Disable interrupts
F000:EE5C E8 004F call sub_258 ; (EEAE)
F000:EE5F 91 xchg ax,cx
F000:EE60 E8 004B call sub_258 ; (EEAE)
F000:EE63 92 xchg ax,dx
F000:EE64 E8 0047 call sub_258 ; (EEAE)
F000:EE67 90 nop ;
F000:EE68 59 pop cx
F000:EE69 C3 retn
sub_250 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CBF7, EDFE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_251 proc near
F000:EE6A E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:EE6C 24 FE and al,0FEh
F000:EE6E EB 00 jmp short loc_1319 ; (EE70)
F000:EE70 loc_1319: ; xref F000:EE6E
F000:EE70 EB 00 jmp short loc_1320 ; (EE72)
F000:EE72 loc_1320: ; xref F000:EE70
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 292

F000:EE72 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:EE74 C3 retn
sub_251 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CC0F, EA34, EA4E, ED7B, ED9D, EDB1, EDCA
; EDE9, EE01
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_252 proc near
F000:EE75 B0 0B mov al,0Bh
F000:EE77 E8 0025 call sub_257 ; (EE9F)
F000:EE7A C3 retn
sub_252 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:EA2B, EE2E
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_253 proc near
F000:EE7B B0 0C mov al,0Ch
F000:EE7D E8 001F call sub_257 ; (EE9F)
F000:EE80 C3 retn
sub_253 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CC16, EA53, EE08
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_254 proc near
F000:EE81 B4 0B mov ah,0Bh
F000:EE83 86 C4 xchg al,ah
F000:EE85 E8 0026 call sub_258 ; (EEAE)
F000:EE88 C3 retn
sub_254 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8F07, CDB2, CE2A, CE36, EEA8, EEC1
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_255 proc near
F000:EE89 loc_1321: ; xref F000:832D, F649
F000:EE89 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:EE8B EB 00 jmp short loc_1322 ; (EE8D)
F000:EE8D loc_1322: ; xref F000:EE8B
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 293

F000:EE8D EB 00 jmp short loc_1323 ; (EE8F)
F000:EE8F loc_1323: ; xref F000:EE8D
F000:EE8F E4 71 in al,71h ; port 71h, RTC clock/RAM data
F000:EE91 C3 retn
sub_255 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A9F3, AA47, AB46, AB4D, AB59, AD01, AD61
; CAC9, CB54, EEB8
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_256 proc near
F000:EE92 loc_1324: ; xref F000:F3DB
F000:EE92 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
F000:EE94 86 C4 xchg al,ah
F000:EE96 EB 00 jmp short loc_1325 ; (EE98)
F000:EE98 loc_1325: ; xref F000:EE96
F000:EE98 EB 00 jmp short loc_1326 ; (EE9A)
F000:EE9A loc_1326: ; xref F000:EE98
F000:EE9A E6 71 out 71h,al ; port 71h, RTC clock/RAM data
F000:EE9C 86 C4 xchg al,ah
F000:EE9E C3 retn
sub_256 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:8FF7, 91BD, 91CB, 925B, 927A, 92B0, 92BC
; 9337, 933F, 9463, 9484, 948D, 94B6, 94DA
; 94DF, 9543, 954C, 955B, 9560, 95E3, 9638
; 9834, 9839, 9894, 98FA, A8D7, A8E8, A925
; A954, A995, B1D9, B1E2, B297, B4F1, B4FA
; BD00, BD0D, BDB9, BDBE, C056, E8FA, EDE0
; EE33, EE3F, EE48, EE4D, EE52, EE77, EE7D
; F086, F08F
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_257 proc near
F000:EE9F 9C pushf ; Push flags
F000:EEA0 FA cli ; Disable interrupts
F000:EEA1 22 C0 and al,al
F000:EEA3 78 03 js short loc_1327 ; Jump if sign=1
F000:EEA5 0C 80 or al,80h
F000:EEA7 F9 stc ; Set carry flag
F000:EEA8 loc_1327: ; xref F000:EEA3
F000:EEA8 E8 FFDE call sub_255 ; (EE89)
F000:EEAB 50 push ax
F000:EEAC EB 0D jmp short loc_1329 ; (EEBB)

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;
; Called from: F000:91D2, 929C, 94F7, 9569, 9571, 963F, 97AD
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 294

; A95B, A99C, BDAE, BDB4, C045, C067, C06E
; C074, C07A, E903, ED94, ED9A, EE25, EE2B
; EE5C, EE60, EE64, EE85

sub_258:
F000:EEAE 9C pushf ; Push flags
F000:EEAF FA cli ; Disable interrupts
F000:EEB0 50 push ax
F000:EEB1 22 C0 and al,al
F000:EEB3 78 03 js short loc_1328 ; Jump if sign=1
F000:EEB5 0C 80 or al,80h
F000:EEB7 F9 stc ; Set carry flag
F000:EEB8 loc_1328: ; xref F000:EEB3
F000:EEB8 E8 FFD7 call sub_256 ; (EE92)
F000:EEBB loc_1329: ; xref F000:EEAC
F000:EEBB B0 0D mov al,0Dh
F000:EEBD 72 02 jc short loc_1330 ; Jump if carry Set
F000:EEBF 0C 80 or al,80h
F000:EEC1 loc_1330: ; xref F000:EEBD
F000:EEC1 E8 FFC5 call sub_255 ; (EE89)
F000:EEC4 58 pop ax
F000:EEC5 9D popf ; Pop flags
F000:EEC6 C3 retn
sub_257 endp



; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 71h ±±±±±
;
; LAN ADAPTER 1 (called by hardware 8259-2, IRQ 9)
;
; Calls interrupt 0Ah.

F000:EEC7 int_71h_LAN proc near ; xref F000:FF25
F000:EEC7 50 push ax
F000:EEC8 B0 20 mov al,20h ; ' '
F000:EECA E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EECC 58 pop ax
F000:EECD CD 0A int 0Ah ; Find int from 2nd controller
F000:EECF CF iret ; Interrupt return
int_71h_LAN endp



; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 75h ±±±±±
;
; MATH CO-PROCESSOR (called by hardware 8259-2 IRQ 13)
;
; The math co-processor 80287 invokes this interrupt. Int 75h calls
; the non-maskable interrupt int 2 to halt the system (80287 is not
; used if this vector is left pointing here). Programs which use
; the 80287 must re-vector this interrupt to use the 80287.

F000:EED0 int_75h_80287 proc near ; xref F000:FF2D
F000:EED0 50 push ax
F000:EED1 32 C0 xor al,al ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 295

F000:EED3 E6 F0 out 0F0h,al ; port 0F0h, 80287 clear busy
F000:EED5 E8 FD4A call sub_243 ; (EC22)
F000:EED8 58 pop ax
F000:EED9 CD 02 int 2 ; NMI (parity, etc.)
F000:EEDB CF iret ; Interrupt return
int_75h_80287 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CD1C
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_259 proc near
F000:EEDC loc_1331: ; xref F000:80B5
F000:EEDC B0 00 mov al,0
F000:EEDE E6 F1 out 0F1h,al ; port 0F1h, 80287 reset
F000:EEE0 loc_1332: ; xref F000:83BB
F000:EEE0 B0 11 mov al,11h
F000:EEE2 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 11h, initialize, 4 byte
F000:EEE4 EB 00 jmp short loc_1333 ; (EEE6)
F000:EEE6 loc_1333: ; xref F000:EEE4
F000:EEE6 EB 00 jmp short loc_1334 ; (EEE8)
F000:EEE8 loc_1334: ; xref F000:EEE6
F000:EEE8 E6 20 out 20h,al ; port 20h, 8259-1 int command
F000:EEEA EB 00 jmp short loc_1335 ; (EEEC)
F000:EEEC loc_1335: ; xref F000:EEEA
F000:EEEC EB 00 jmp short loc_1336 ; (EEEE)
F000:EEEE loc_1336: ; xref F000:EEEC
F000:EEEE 8A C3 mov al,bl
F000:EEF0 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 70h, inhibit IRQ12-14
F000:EEF2 EB 00 jmp short loc_1337 ; (EEF4)
F000:EEF4 loc_1337: ; xref F000:EEF2
F000:EEF4 EB 00 jmp short loc_1338 ; (EEF6)
F000:EEF6 loc_1338: ; xref F000:EEF4
F000:EEF6 8A C7 mov al,bh
F000:EEF8 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 8, inhibit IRQ3 rs232
F000:EEFA EB 00 jmp short loc_1339 ; (EEFC)
F000:EEFC loc_1339: ; xref F000:EEFA
F000:EEFC EB 00 jmp short loc_1340 ; (EEFE)
F000:EEFE loc_1340: ; xref F000:EEFC
F000:EEFE B0 02 mov al,2
F000:EF00 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 2, inhibit IRQ9
F000:EF02 EB 00 jmp short loc_1341 ; (EF04)
F000:EF04 loc_1341: ; xref F000:EF02
F000:EF04 EB 00 jmp short loc_1342 ; (EF06)
F000:EF06 loc_1342: ; xref F000:EF04
F000:EF06 B0 04 mov al,4
F000:EF08 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 4, inhibit IRQ2
F000:EF0A EB 00 jmp short loc_1343 ; (EF0C)
F000:EF0C loc_1343: ; xref F000:EF0A
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 296

F000:EF0C EB 00 jmp short loc_1344 ; (EF0E)
F000:EF0E loc_1344: ; xref F000:EF0C
F000:EF0E B0 01 mov al,1
F000:EF10 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 1, inhibit IRQ8 RTC
F000:EF12 EB 00 jmp short loc_1345 ; (EF14)
F000:EF14 loc_1345: ; xref F000:EF12
F000:EF14 EB 00 jmp short loc_1346 ; (EF16)
F000:EF16 loc_1346: ; xref F000:EF14
F000:EF16 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 1, inhibit IRQ0 timer
F000:EF18 EB 00 jmp short loc_1347 ; (EF1A)
F000:EF1A loc_1347: ; xref F000:EF18
F000:EF1A EB 00 jmp short loc_1348 ; (EF1C)
F000:EF1C loc_1348: ; xref F000:EF1A
F000:EF1C B0 FF mov al,0FFh
F000:EF1E E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:EF20 EB 00 jmp short loc_1349 ; (EF22)
F000:EF22 loc_1349: ; xref F000:EF20
F000:EF22 EB 00 jmp short loc_1350 ; (EF24)
F000:EF24 loc_1350: ; xref F000:EF22
F000:EF24 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:EF26 C3 retn
sub_259 endp

F000:EF27 0030[00] db 48 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:EF57 int_0Eh_entry: ; xref F000:FEFF
F000:EF57 E9 F8D7 jmp int_0Eh_floppy ; (E831)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A6CC, B560, BB79, CC2F, CC4E
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_260 proc near
F000:EF5A 50 push ax
F000:EF5B loc_1351: ; xref F000:EF79
F000:EF5B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF5C 84 C4 test al,ah
F000:EF5E 74 1C jz short loc_1357 ; Jump if zero
F000:EF60 loc_1352: ; xref F000:EF66
F000:EF60 EB 00 jmp short loc_1353 ; (EF62)
F000:EF62 loc_1353: ; xref F000:EF60
F000:EF62 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF64 A8 10 test al,10h
F000:EF66 74 F8 jz loc_1352 ; Jump if zero
F000:EF68 49 dec cx
F000:EF69 74 10 jz short loc_1356 ; Jump if zero
F000:EF6B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF6C 84 C4 test al,ah
F000:EF6E 74 0C jz short loc_1357 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 297

F000:EF70 loc_1354: ; xref F000:EF76
F000:EF70 EB 00 jmp short loc_1355 ; (EF72)
F000:EF72 loc_1355: ; xref F000:EF70
F000:EF72 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF74 A8 10 test al,10h
F000:EF76 75 F8 jnz loc_1354 ; Jump if not zero
F000:EF78 49 dec cx
F000:EF79 75 E0 jnz loc_1351 ; Jump if not zero
F000:EF7B loc_1356: ; xref F000:EF69
F000:EF7B F9 stc ; Set carry flag
F000:EF7C loc_1357: ; xref F000:EF5E, EF6E
F000:EF7C 58 pop ax
F000:EF7D C3 retn
sub_260 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:A756, BB82, BBC8
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_261 proc near
F000:EF7E 50 push ax
F000:EF7F loc_1358: ; xref F000:EF9D
F000:EF7F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF80 84 C4 test al,ah
F000:EF82 75 1C jnz short loc_1364 ; Jump if not zero
F000:EF84 loc_1359: ; xref F000:EF8A
F000:EF84 EB 00 jmp short loc_1360 ; (EF86)
F000:EF86 loc_1360: ; xref F000:EF84
F000:EF86 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF88 A8 10 test al,10h
F000:EF8A 74 F8 jz loc_1359 ; Jump if zero
F000:EF8C 49 dec cx
F000:EF8D 74 10 jz short loc_1363 ; Jump if zero
F000:EF8F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF90 84 C4 test al,ah
F000:EF92 75 0C jnz short loc_1364 ; Jump if not zero
F000:EF94 loc_1361: ; xref F000:EF9A
F000:EF94 EB 00 jmp short loc_1362 ; (EF96)
F000:EF96 loc_1362: ; xref F000:EF94
F000:EF96 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF98 A8 10 test al,10h
F000:EF9A 75 F8 jnz loc_1361 ; Jump if not zero
F000:EF9C 49 dec cx
F000:EF9D 75 E0 jnz loc_1358 ; Jump if not zero
F000:EF9F loc_1363: ; xref F000:EF8D
F000:EF9F F9 stc ; Set carry flag
F000:EFA0 loc_1364: ; xref F000:EF82, EF92
F000:EFA0 58 pop ax
F000:EFA1 C3 retn
sub_261 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 298

;
; Called from: F000:A735, BCDB, BCE2, C9FA
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_262 proc near
F000:EFA2 50 push ax
F000:EFA3 loc_1365: ; xref F000:EFC1
F000:EFA3 F6 07 80 test byte ptr [bx],80h
F000:EFA6 75 1C jnz short loc_1372 ; Jump if not zero
F000:EFA8 loc_1366: ; xref F000:EFAE
F000:EFA8 EB 00 jmp short loc_1367 ; (EFAA)
F000:EFAA loc_1367: ; xref F000:EFA8
F000:EFAA E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EFAC A8 10 test al,10h
F000:EFAE 74 F8 jz loc_1366 ; Jump if zero
F000:EFB0 49 dec cx
F000:EFB1 74 10 jz short loc_1371 ; Jump if zero
F000:EFB3 F6 07 80 test byte ptr [bx],80h
F000:EFB6 75 0C jnz short loc_1372 ; Jump if not zero
F000:EFB8 loc_1368: ; xref F000:EFBE
F000:EFB8 EB 00 jmp short loc_1369 ; (EFBA)
F000:EFBA loc_1369: ; xref F000:EFB8
F000:EFBA E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EFBC A8 10 test al,10h
F000:EFBE 75 F8 jnz loc_1368 ; Jump if not zero
F000:EFC0 49 dec cx
F000:EFC1 loc_1370:
F000:EFC1 75 E0 jnz loc_1365 ; Jump if not zero
F000:EFC3 loc_1371: ; xref F000:EFB1
F000:EFC3 F9 stc ; Set carry flag
F000:EFC4 loc_1372: ; xref F000:EFA6, EFB6
F000:EFC4 58 pop ax
F000:EFC5 C3 retn
sub_262 endp

F000:EFC6 00 db 0

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û Floppy Disk Parameters Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

F000:EFC7 DF dsk_info_1 db 0DFh ; hi nibble = stepping rate in ms
; lo nibble = head unload time, ms
; xref F000:FF1F
F000:EFC8 02 dsk_info_2 db 2 ; 2nd info byte bit 0 = 0 for DMA
F000:EFC9 25 dsk_motor_delay db 25h ; Delay after use for motor off
F000:EFCA 02 dsk_sectr_bytes db 2 ; Bytes per sector 0 = 128 bytes
; 1 = 256 bytes
; 2 = 512 bytes
; 3 = 1024 bytes
F000:EFCB 12 dsk_sector_trac db 12h ; Number of sectors per track
F000:EFCC 1B dsk_head_gap db 1Bh ; Gap Length
F000:EFCD FF dsk_data_length db 0FFh ; Data Length
F000:EFCE 54 dsk_format_gap db 54h ; Format Gap Length
F000:EFCF F6 dsk_format_byte db 0F6h ; Format write byte
F000:EFD0 0F dsk_settlg_time db 0Fh ; Head load time, in milliseconds
F000:EFD1 08 dsk_startup_tim db 8 ; Motor startup wait time * .125ms
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 299



; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:EFD2 int_17h_entry: ; xref F000:FF11
F000:EFD2 E9 0887 jmp int_17h_printer ; (F85C)
F000:EFD5 4A 23 52 0A 13 24 db 4Ah, 23h, 52h, 0Ah, 13h, 24h
F000:EFDB 24 34 A4 A4 0A 73 db 24h, 34h, 0A4h, 0A4h, 0Ah, 73h
F000:EFE1 34 AC 4C 84 2C A4 db 34h, 0ACh, 4Ch, 84h, 2Ch, 0A4h
F000:EFE7 0A 53 7C 24 7A 0A db 0Ah, 53h, 7Ch, 24h, 7Ah, 0Ah
F000:EFED 92 D2 CA B2 6A 0A db 92h, 0D2h, 0CAh, 0B2h, 6Ah, 0Ah
F000:EFF3 92 D2 CA BA 71 59 db 92h, 0D2h, 0CAh, 0BAh, 71h, 59h
F000:EFF9 B2 D2 8A 0A 0A BB db 0B2h, 0D2h, 8Ah, 0Ah, 0Ah, 0BBh
F000:EFFF 14 6C 6C 34 D4 0A db 14h, 6Ch, 6Ch, 34h, 0D4h, 0Ah
F000:F005 9B 84 14 2C 6A 0A db 9Bh, 84h, 14h, 2Ch, 6Ah, 0Ah
F000:F00B B3 8C 8C 34 9C 0A db 0B3h, 8Ch, 8Ch, 34h, 9Ch, 0Ah
F000:F011 73 84 7C AC 24 6C db 73h, 84h, 7Ch, 0ACh, 24h, 6Ch
F000:F017 14 54 9C 6A 71 59 db 14h, 54h, 9Ch, 6Ah, 71h, 59h
F000:F01D 0A 7B 34 C4 0A 5B db 0Ah, 7Bh, 34h, 0C4h, 0Ah, 5Bh
F000:F023 34 9C A4 34 D4 0A db 34h, 9Ch, 0A4h, 34h, 0D4h, 0Ah
F000:F029 72 0A 8A C2 8A AA db 72h, 0Ah, 8Ah, 0C2h, 8Ah, 0AAh
F000:F02F A2 6A 71 59 4A 9A db 0A2h, 6Ah, 71h, 59h, 4Ah, 9Ah
F000:F035 8A 92 52 0A C2 AA db 8Ah, 92h, 52h, 0Ah, 0C2h, 0AAh
F000:F03B AA 72 D2 92 9A BA db 0AAh, 72h, 0D2h, 92h, 9Ah, 0BAh
F000:F041 7A db 7Ah

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:9305
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_263 proc near
F000:F042 BE E300 mov si,0E300h
F000:F045 loc_1373: ; xref F000:F051
F000:F045 2E: 8A 04 mov al,cs:[si]
F000:F048 46 inc si
F000:F049 0A C0 or al,al ; Zero ?
F000:F04B 74 06 jz short loc_ret_1374 ; Jump if zero
F000:F04D B4 0E mov ah,0Eh
F000:F04F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:F051 EB F2 jmp short loc_1373 ; (F045)

F000:F053 loc_ret_1374: ; xref F000:F04B
F000:F053 C3 retn
sub_263 endp

F000:F054 0011[00] db 17 dup (0)


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:F065 int_10h_entry: ; xref F000:FF03
F000:F065 E9 94D4 jmp int_10h_video ; (853C)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 300

; SUBROUTINE
;
; Called from: F000:8E00, 8E27, 934E, 9357, 944A, 9453, 96E9
; 9725, 9793, 97B9, 97BF, A268, A57B, A6FB
; B5F7, B6ED, B9B0, BB6E, BBA6, BBBE, BC8A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_264 proc near
F000:F068 50 push ax
F000:F069 83 C1 02 add cx,2
F000:F06C loc_1375: ; xref F000:F072, F080
F000:F06C EB 00 jmp short loc_1376 ; (F06E)
F000:F06E loc_1376: ; xref F000:F06C
F000:F06E E4 61 in al,61h ; port 61h, 8255 port B, read
F000:F070 A8 10 test al,10h
F000:F072 74 F8 jz loc_1375 ; Jump if zero
F000:F074 49 dec cx
F000:F075 74 0B jz short loc_1379 ; Jump if zero
F000:F077 loc_1377: ; xref F000:F07D
F000:F077 EB 00 jmp short loc_1378 ; (F079)
F000:F079 loc_1378: ; xref F000:F077
F000:F079 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:F07B A8 10 test al,10h
F000:F07D 75 F8 jnz loc_1377 ; Jump if not zero
F000:F07F 49 dec cx
F000:F080 75 EA jnz loc_1375 ; Jump if not zero
F000:F082 loc_1379: ; xref F000:F075
F000:F082 58 pop ax
F000:F083 C3 retn
sub_264 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:B017, B038, B307, B7F7, B8B3, BA2B
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_265 proc near
F000:F084 B0 0E mov al,0Eh
F000:F086 E8 FE16 call sub_257 ; (EE9F)
F000:F089 A8 C0 test al,0C0h
F000:F08B 75 15 jnz short loc_ret_1382 ; Jump if not zero
F000:F08D B0 10 mov al,10h
F000:F08F E8 FE0D call sub_257 ; (EE9F)
F000:F092 0A D2 or dl,dl ; Zero ?
F000:F094 75 08 jnz short loc_1381 ; Jump if not zero
F000:F096 90 nop ;
F000:F097 90 nop ;
F000:F098 90 nop ;
F000:F099 90 nop ;
F000:F09A 90 nop ;
F000:F09B C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:F09E loc_1381: ; xref F000:F094
F000:F09E 24 0F and al,0Fh
F000:F0A0 3B E4 cmp sp,sp

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 301

F000:F0A2 loc_ret_1382: ; xref F000:F08B
F000:F0A2 C3 retn
sub_265 endp

F000:F0A3 00 db 0

; ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
; Û Video Hardware Registers Û
; ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ

F000:F0A4 38 28 2D 0A 1F 06 video_hdwr_tbl1 db 38h, 28h, 2Dh, 0Ah, 1Fh, 6 ; mode CGA 40 columns x 25 lines
; xref F000:FF1D
F000:F0AA 19 1C 02 07 06 07 db 19h, 1Ch, 2, 7, 6, 7
F000:F0B0 00 00 00 00 db 0, 0, 0, 0
F000:F0B4 71 50 5A 0A 1F 06 video_hdrw_tbl2 db 71h, 50h, 5Ah, 0Ah, 1Fh, 6 ; mode CGA 80 columns x 25 lines
F000:F0BA 19 1C 02 07 06 07 db 19h, 1Ch, 2, 7, 6, 7
F000:F0C0 00 00 00 00 db 0, 0, 0, 0
F000:F0C4 38 28 2D 0A 7F 06 video_hdwr_tbl3 db 38h, 28h, 2Dh, 0Ah, 7Fh, 6 ; mode CGA graphics
F000:F0CA 64 70 02 01 06 07 db 64h, 70h, 2, 1, 6, 7
F000:F0D0 00 00 00 00 db 0, 0, 0, 0
F000:F0D4 61 50 52 0F 19 06 video_hdwr_tbl4 db 61h, 50h, 52h, 0Fh, 19h, 6 ; mode MDA 80 columns x 25 lines
F000:F0DA 19 19 02 0D 0B 0C db 19h, 19h, 2, 0Dh, 0Bh, 0Ch
F000:F0E0 00 00 00 00 db 0, 0, 0, 0
F000:F0E4 0800 video_buf_size1 dw 800h ; Video buffer bytes CGA 40x25
F000:F0E6 1000 video_buf_size2 dw 1000h ; Video buffer bytes CGA 80x25
F000:F0E8 4000 video_buf_size3 dw 4000h ; Video buffer bytes CGA Graphics
F000:F0EA 4000 video_buf_size4 dw 4000h ; Video buffer bytes CGA Graphics
F000:F0EC 28 28 50 50 28 28 video_columntbl db 28h, 28h, 50h, 50h, 28h, 28h ; Video columns per modes 0-7
F000:F0F2 50 50 db 50h, 50h
F000:F0F4 2C 28 2D 29 2A 2E video_hdwr_mode db 2Ch, 28h, 2Dh, 29h, 2Ah, 2Eh ; Video hardware modes (0-7)
F000:F0FA 1E 29 db 1Eh, 29h
F000:F0FC 03 03 05 05 03 03 db 3, 3, 5, 5, 3, 3
F000:F102 03 04 01 03 02 FF db 3, 4, 1, 3, 2, 0FFh
F000:F108 03 17 04 00 05 7F db 3, 17h, 4, 0, 5, 7Fh
F000:F10E 06 00 07 FF 08 FD db 6, 0, 7, 0FFh, 8, 0FDh
F000:F114 09 FF 0A FD 0B 00 db 9, 0FFh, 0Ah, 0FDh, 0Bh, 0
F000:F11A 0C 00 0D 00 0E 00 db 0Ch, 0, 0Dh, 0, 0Eh, 0
F000:F120 0F 00 10 00 11 00 db 0Fh, 0, 10h, 0, 11h, 0
F000:F126 12 00 13 00 14 26 db 12h, 0, 13h, 0, 14h, 26h
F000:F12C 81 FC 82 00 84 00 db 81h, 0FCh, 82h, 0, 84h, 0
F000:F132 89 0E F8 03 87 F8 db 89h, 0Eh, 0F8h, 3, 87h, 0F8h
F000:F138 02 87 BC 03 83 F0 db 2, 87h, 0BCh, 3, 83h, 0F0h
F000:F13E 03 87 F0 01 07 00 db 3, 87h, 0F0h, 1, 7, 0
F000:F144 00 00 00 00 00 BC db 0, 0, 0, 0, 0, 0BCh
F000:F14A 03 78 03 BC 03 78 db 3, 78h, 3, 0BCh, 3, 78h
F000:F150 02 BC 03 78 03 BC db 2, 0BCh, 3, 78h, 3, 0BCh
F000:F156 03 00 00 db 3, 0, 0
F000:F159 03F8 data_169 dw 3F8h ; Data table (indexed access)
; xref F000:F5A0, F5C7
F000:F15B F8 02 F8 02 E8 03 db 0F8h, 2, 0F8h, 2, 0E8h, 3
F000:F161 F8 03 E8 03 E8 03 db 0F8h, 3, 0E8h, 3, 0E8h, 3
F000:F167 E8 02 F8 03 F8 02 db 0E8h, 2, 0F8h, 3, 0F8h, 2
F000:F16D F8 02 E8 02 F8 03 db 0F8h, 2, 0E8h, 2, 0F8h, 3

F000:F173 E8 02 E8 02 00 00 db 0E8h, 2, 0E8h, 2, 0, 0
F000:F179 F8 03 F8 02 F8 02 db 0F8h, 3, 0F8h, 2, 0F8h, 2
F000:F17F E8 03 F8 03 E8 03 db 0E8h, 3, 0F8h, 3, 0E8h, 3
F000:F185 E8 03 00 00 F8 03 db 0E8h, 3, 0, 0, 0F8h, 3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 302

F000:F18B F8 02 F8 02 00 00 db 0F8h, 2, 0F8h, 2, 0, 0
F000:F191 F8 03 00 db 0F8h, 3, 0
F000:F194 0007[00] db 7 dup (0)
F000:F19B C0 00 C0 04 C0 0C db 0C0h, 0, 0C0h, 4, 0C0h, 0Ch
F000:F1A1 C5 00 E0 01 C5 05 db 0C5h, 0, 0E0h, 1, 0C5h, 5
F000:F1A7 C5 0D C5 04 C0 05 db 0C5h, 0Dh, 0C5h, 4, 0C0h, 5
F000:F1AD E0 07 C5 0F C5 0C db 0E0h, 7, 0C5h, 0Fh, 0C5h, 0Ch
F000:F1B3 C0 0D C0 0F E0 11 db 0C0h, 0Dh, 0C0h, 0Fh, 0E0h, 11h
F000:F1B9 C3 00 E2 01 C4 05 db 0C3h, 0, 0E2h, 1, 0C4h, 5
F000:F1BF C4 0D E3 01 E0 02 db 0C4h, 0Dh, 0E3h, 1, 0E0h, 2
F000:F1C5 E3 06 E3 0E C3 05 db 0E3h, 6, 0E3h, 0Eh, 0C3h, 5
F000:F1CB E2 06 E0 08 C5 0F db 0E2h, 6, 0E0h, 8, 0C5h, 0Fh
F000:F1D1 C3 0D E2 0E C0 0F db 0C3h, 0Dh, 0E2h, 0Eh, 0C0h, 0Fh

F000:F1D7 locloop_1383:
F000:F1D7 E0 12 loopnz short locloop_1384 ; Loop if zf=0, cx>0

F000:F1D9 C2 C204 retn 0C204h
F000:F1DC 05 E2 07 C4 0F C1 db 5, 0E2h, 7, 0C4h, 0Fh, 0C1h
F000:F1E2 05 E0 06 E2 08 C4 db 5, 0E0h, 6, 0E2h, 8, 0C4h
F000:F1E8 0F E3 07 db 0Fh, 0E3h, 7

F000:F1EB locloop_1384: ; xref F000:F1D7
F000:F1EB E3 08 jcxz short loc_1385 ; Jump if cx=0
F000:F1ED E0 0A loopnz short locloop_1386 ; Loop if zf=0, cx>0

F000:F1EF E3 10 jcxz short loc_1387 ; Jump if cx=0
F000:F1F1 C3 retn
F000:F1F2 0F C3 0F db 0Fh, 0C3h, 0Fh
F000:F1F5 loc_1385: ; xref F000:F1EB
F000:F1F5 E2 10 ;* loop short locloop_1388 ;*Loop if cx > 0

F000:F1F5 E2 10 db 0E2h, 10h
F000:F1F7 E0 14 loopnz short locloop_1389 ; Loop if zf=0, cx>0


F000:F1F9 locloop_1386: ; xref F000:F1ED
F000:F1F9 C3 retn
F000:F1FA 0C C2 0D C2 0F E2 db 0Ch, 0C2h, 0Dh, 0C2h, 0Fh, 0E2h
F000:F200 11 db 11h
F000:F201 loc_1387: ; xref F000:F1EF
F000:F201 C1 0D E0 ror word ptr [di],0E0h ; Rotate
F000:F204 0E push cs
F000:F205 C2 E20F retn 0E20Fh
F000:F208 12 C1 0F C1 0F db 12h, 0C1h, 0Fh, 0C1h, 0Fh

F000:F20D locloop_1389: ; xref F000:F1F7
F000:F20D E0 10 ;* loopnz short locloop_1390 ;*Loop if zf=0, cx>0

F000:F20D E0 10 db 0E0h, 10h
F000:F20F E2 14 ;* loop short locloop_1392 ;*Loop if cx > 0

F000:F20F E2 14 db 0E2h, 14h
F000:F211 E1 11 loopz short locloop_1391 ; Loop if zf=1, cx>0

F000:F213 E3 12 jcxz short loc_1393 ; Jump if cx=0
F000:F215 E3 14 ;* jcxz short loc_1394 ;*Jump if cx=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 303

F000:F215 E3 14 db 0E3h, 14h
F000:F217 E0 16 loopnz short $+18h ; Loop if zf=0, cx>0

F000:F219 CF iret ; Interrupt return
F000:F21A 00 E6 01 C6 05 db 0, 0E6h, 1, 0C6h, 5

F000:F21F locloop_1390: ; xref F000:F20D
F000:F21F C6 0D E7 01 E5 db 0C6h, 0Dh, 0E7h, 1, 0E5h

F000:F224 locloop_1391: ; xref F000:F211
F000:F224 02 E7 add ah,bh
F000:F226 06 push es
F000:F227 loc_1393: ; xref F000:F213
F000:F227 E7 0E out 0Eh,ax ; port 0Eh, DMA-1 clr mask reg
F000:F229 C7 05 06E6 mov word ptr [di],6E6h
F000:F22D E5 08 in ax,8 ; port 8, DMA-1 status reg
F000:F22F C5 0F lds cx,dword ptr [bx] ; Load 32 bit ptr
F000:F231 C7 0D E6 0E C0 0F db 0C7h, 0Dh, 0E6h, 0Eh, 0C0h, 0Fh
F000:F237 E5 12 EA 01 EA 02 db 0E5h, 12h, 0EAh, 1, 0EAh, 2
F000:F23D EA 06 EA 0E EB 02 db 0EAh, 6, 0EAh, 0Eh, 0EBh, 2
F000:F243 F0 03 E1 06 E1 0E db 0F0h, 3, 0E1h, 6, 0E1h, 0Eh
F000:F249 EE 06 E2 06 FA 09 db 0EEh, 6, 0E2h, 6, 0FAh, 9
F000:F24F C5 0F EE 0E EE 0E db 0C5h, 0Fh, 0EEh, 0Eh, 0EEh, 0Eh
F000:F255 C0 0F FA 13 CA 05 db 0C0h, 0Fh, 0FAh, 13h, 0CAh, 5
F000:F25B E9 06 E8 08 C4 0F db 0E9h, 6, 0E8h, 8, 0C4h, 0Fh
F000:F261 ED 06 E0 06 FD 09 db 0EDh, 6, 0E0h, 6, 0FDh, 9
F000:F267 C4 0F EB 08 F9 09 db 0C4h, 0Fh, 0EBh, 8, 0F9h, 9
F000:F26D E0 0A E3 10 C3 0F db 0E0h, 0Ah, 0E3h, 10h, 0C3h, 0Fh
F000:F273 C3 0F E2 10 E0 14 db 0C3h, 0Fh, 0E2h, 10h, 0E0h, 14h
F000:F279 CA 0D E9 0E C2 0F db 0CAh, 0Dh, 0E9h, 0Eh, 0C2h, 0Fh
F000:F27F E8 12 EC 0E E0 0E db 0E8h, 12h, 0ECh, 0Eh, 0E0h, 0Eh
F000:F285 CB 0F FD 13 CB 0F db 0CBh, 0Fh, 0FDh, 13h, 0CBh, 0Fh
F000:F28B CB 0F E0 10 E2 14 db 0CBh, 0Fh, 0E0h, 10h, 0E2h, 14h
F000:F291 EB 12 F6 13 E1 14 db 0EBh, 12h, 0F6h, 13h, 0E1h, 14h
F000:F297 E0 16 CF 04 C9 05 db 0E0h, 16h, 0CFh, 4, 0C9h, 5
F000:F29D E9 07 C6 0F CC 05 db 0E9h, 7, 0C6h, 0Fh, 0CCh, 5
F000:F2A3 E5 06 E6 08 C6 0F db 0E5h, 6, 0E6h, 8, 0C6h, 0Fh
F000:F2A9 E7 07 db 0E7h, 7

F000:F2AB locloop_1395:
F000:F2AB E7 08 out 8,ax ; port 8, DMA-1 command reg
F000:F2AD E8 E70A call sub_233 ; (D9BA)
F000:F2B0 10 C7 adc bh,al
F000:F2B2 0F C7 0F E6 10 E5 db 0Fh, 0C7h, 0Fh, 0E6h, 10h, 0E5h
F000:F2B8 14 CE 05 E8 06 E9 db 14h, 0CEh, 5, 0E8h, 6, 0E9h
F000:F2BE 08 C6 0F EB 06 E5 db 8, 0C6h, 0Fh, 0EBh, 6, 0E5h
F000:F2C4 06 F1 09 C6 0F ED db 6, 0F1h, 9, 0C6h, 0Fh, 0EDh
F000:F2CA 08 F8 09 E5 0A E7 db 8, 0F8h, 9, 0E5h, 0Ah, 0E7h
F000:F2D0 10 C7 0F C7 0F E6 db 10h, 0C7h, 0Fh, 0C7h, 0Fh, 0E6h
F000:F2D6 10 E5 14 EA 07 EA db 10h, 0E5h, 14h, 0EAh, 7, 0EAh
F000:F2DC 08 E9 0A EA 10 EE db 8, 0E9h, 0Ah, 0EAh, 10h, 0EEh
F000:F2E2 08 F0 09 E8 0A EA db 8, 0F0h, 9, 0E8h, 0Ah, 0EAh
F000:F2E8 10 ED 0A EF 0A F0 db 10h, 0EDh, 0Ah, 0EFh, 0Ah, 0F0h
F000:F2EE 0B E1 10 EE 10 EE db 0Bh, 0E1h, 10h, 0EEh, 10h, 0EEh
F000:F2F4 10 E3 10 FA 15 CA db 10h, 0E3h, 10h, 0FAh, 15h, 0CAh
F000:F2FA 0F CA 0F E9 10 E8 db 0Fh, 0CAh, 0Fh, 0E9h, 10h, 0E8h
F000:F300 14 CA 0F CA 0F E9 db 14h, 0CAh, 0Fh, 0CAh, 0Fh, 0E9h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 304

F000:F306 10 E8 14 ED 10 ED db 10h, 0E8h, 14h, 0EDh, 10h, 0EDh
F000:F30C 10 E0 10 FD 15 EB db 10h, 0E0h, 10h, 0FDh, 15h, 0EBh
F000:F312 14 EB 14 F9 15 E0 db 14h, 0EBh, 14h, 0F9h, 15h, 0E0h
F000:F318 16 C6 0C C9 0D C9 db 16h, 0C6h, 0Ch, 0C9h, 0Dh, 0C9h
F000:F31E 0F E9 11 CC 0D E5 db 0Fh, 0E9h, 11h, 0CCh, 0Dh, 0E5h
F000:F324 0E C9 0F E6 12 CC db 0Eh, 0C9h, 0Fh, 0E6h, 12h, 0CCh
F000:F32A 0F CC 0F E5 10 E6 db 0Fh, 0CCh, 0Fh, 0E5h, 10h, 0E6h
F000:F330 14 EC 11 E7 12 E7 db 14h, 0ECh, 11h, 0E7h, 12h, 0E7h
F000:F336 14 E7 16 CE 0D E8 db 14h, 0E7h, 16h, 0CEh, 0Dh, 0E8h
F000:F33C 0E C9 0F E9 12 EB db 0Eh, 0C9h, 0Fh, 0E9h, 12h, 0EBh
F000:F342 0E EB 0E C9 0F FB db 0Eh, 0EBh, 0Eh, 0C9h, 0Fh, 0FBh
F000:F348 13 CC 0F CC 0F E5 db 13h, 0CCh, 0Fh, 0CCh, 0Fh, 0E5h
F000:F34E 10 E6 14 ED 12 F8 db 10h, 0E6h, 14h, 0EDh, 12h, 0F8h
F000:F354 13 E7 14 E6 16 CE db 13h, 0E7h, 14h, 0E6h, 16h, 0CEh
F000:F35A 0F CF 0F E8 10 E9 db 0Fh, 0CFh, 0Fh, 0E8h, 10h, 0E9h
F000:F360 14 CE 0F CE 0F E8 db 14h, 0CEh, 0Fh, 0CEh, 0Fh, 0E8h
F000:F366 10 E9 14 EB 10 EB db 10h, 0E9h, 14h, 0EBh, 10h, 0EBh
F000:F36C 10 E5 10 FB 15 ED db 10h, 0E5h, 10h, 0FBh, 15h, 0EDh
F000:F372 14 EC 14 F8 15 E6 db 14h, 0ECh, 14h, 0F8h, 15h, 0E6h
F000:F378 16 EE 11 EA 12 EA db 16h, 0EEh, 11h, 0EAh, 12h, 0EAh
F000:F37E 14 EA 16 EE 12 FF db 14h, 0EAh, 16h, 0EEh, 12h, 0FFh
F000:F384 13 EA 14 E8 16 EE db 13h, 0EAh, 14h, 0E8h, 16h, 0EEh
F000:F38A 14 EE 14 F0 15 EA db 14h, 0EEh, 14h, 0F0h, 15h, 0EAh
F000:F390 16 EB 16 EB 16 EB db 16h, 0EBh, 16h, 0EBh, 16h, 0EBh
F000:F396 16 F0 17 10 00 20 db 16h, 0F0h, 17h, 10h, 0, 20h
F000:F39C 00 30 00 40 00 40 db 0, 30h, 0, 40h, 0, 40h
F000:F3A2 00 50 00 60 00 80 db 0, 50h, 0, 60h, 0, 80h
F000:F3A8 00 90 00 A0 00 C0 db 0, 90h, 0, 0A0h, 0, 0C0h
F000:F3AE 00 00 01 00 01 10 db 0, 0, 1, 0, 1, 10h
F000:F3B4 01 20 01 40 01 80 db 1, 20h, 1, 40h, 1, 80h
F000:F3BA 01 00 02 10 02 20 db 1, 0, 2, 10h, 2, 20h
F000:F3C0 02 40 02 80 02 00 db 2, 40h, 2, 80h, 2, 0
F000:F3C6 03 FF 03 F7 C5 00 db 3, 0FFh, 3, 0F7h, 0C5h, 0
F000:F3CC 40 74 05 E6 F9 E9 db 40h, 74h, 5, 0E6h, 0F9h, 0E9h
F000:F3D2 CF 8F db 0CFh, 8Fh
F000:F3D4 loc_1397:
F000:F3D4 B8 00C0 mov ax,0C0h
F000:F3D7 90 nop ;
F000:F3D8 BC F3DE mov sp,0F3DEh
F000:F3DB E9 FAB4 jmp loc_1324 ; (EE92)
F000:F3DE E0 F3 E6 FB B8 12 db 0E0h, 0F3h, 0E6h, 0FBh, 0B8h, 12h
F000:F3E4 00 90 BC EC F3 E9 db 0, 90h, 0BCh, 0ECh, 0F3h, 0E9h
F000:F3EA 7C 03 EE F3 B0 00 db 7Ch, 3, 0EEh, 0F3h, 0B0h, 0
F000:F3F0 BC F6 F3 E9 83 03 db 0BCh, 0F6h, 0F3h, 0E9h, 83h, 3
F000:F3F6 F8 F3 24 10 74 02 db 0F8h, 0F3h, 24h, 10h, 74h, 2
F000:F3FC B0 80 8A D8 B8 B8 db 0B0h, 80h, 8Ah, 0D8h, 0B8h, 0B8h
F000:F402 B8 90 BC 0A F4 E9 db 0B8h, 90h, 0BCh, 0Ah, 0F4h, 0E9h
F000:F408 7F FA 0C F4 24 7F db 7Fh, 0FAh, 0Ch, 0F4h, 24h, 7Fh
F000:F40E 0A C3 86 C4 BC 18 db 0Ah, 0C3h, 86h, 0C4h, 0BCh, 18h
F000:F414 F4 E9 7A FA 1A F4 db 0F4h, 0E9h, 7Ah, 0FAh, 1Ah, 0F4h
F000:F41A F6 C4 08 75 0F B0 db 0F6h, 0C4h, 8, 75h, 0Fh, 0B0h

F000:F420 8E 90 BC 28 F4 E9 db 8Eh, 90h, 0BCh, 28h, 0F4h, 0E9h
F000:F426 61 FA 2A F4 A8 C0 db 61h, 0FAh, 2Ah, 0F4h, 0A8h, 0C0h
F000:F42C 74 03 E9 8B 00 33 db 74h, 3, 0E9h, 8Bh, 0, 33h
F000:F432 D2 33 C0 B7 C1 8A db 0D2h, 33h, 0C0h, 0B7h, 0C1h, 8Ah
F000:F438 C7 90 BC 40 F4 E9 db 0C7h, 90h, 0BCh, 40h, 0F4h, 0E9h
F000:F43E 49 FA 42 F4 03 D0 db 49h, 0FAh, 42h, 0F4h, 3, 0D0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 305

F000:F444 FE C7 80 FF FE 75 db 0FEh, 0C7h, 80h, 0FFh, 0FEh, 75h
F000:F44A EC 8A C7 90 BC 54 db 0ECh, 8Ah, 0C7h, 90h, 0BCh, 54h
F000:F450 F4 E9 35 FA 56 F4 db 0F4h, 0E9h, 35h, 0FAh, 56h, 0F4h
F000:F456 8A E0 B0 FF BC 60 db 8Ah, 0E0h, 0B0h, 0FFh, 0BCh, 60h
F000:F45C F4 E9 29 FA 62 F4 db 0F4h, 0E9h, 29h, 0FAh, 62h, 0F4h
F000:F462 3B C2 75 04 0B D2 db 3Bh, 0C2h, 75h, 4, 0Bh, 0D2h
F000:F468 75 03 EB 50 90 B9 db 75h, 3, 0EBh, 50h, 90h, 0B9h
F000:F46E 17 00 BE 04 F1 B7 db 17h, 0, 0BEh, 4, 0F1h, 0B7h
F000:F474 C1 2E 8A 24 46 46 db 0C1h, 2Eh, 8Ah, 24h, 46h, 46h
F000:F47A 8A C7 FE C7 BC 84 db 8Ah, 0C7h, 0FEh, 0C7h, 0BCh, 84h
F000:F480 F4 E9 05 FA 86 F4 db 0F4h, 0E9h, 5, 0FAh, 86h, 0F4h
F000:F486 86 C4 BC 8E F4 E9 db 86h, 0C4h, 0BCh, 8Eh, 0F4h, 0E9h
F000:F48C DA 02 90 F4 E2 E3 db 0DAh, 2, 90h, 0F4h, 0E2h, 0E3h
F000:F492 B9 17 00 B4 69 B7 db 0B9h, 17h, 0, 0B4h, 69h, 0B7h
F000:F498 D9 8A C7 FE C7 90 db 0D9h, 8Ah, 0C7h, 0FEh, 0C7h, 90h
F000:F49E BC A4 F4 E9 E5 F9 db 0BCh, 0A4h, 0F4h, 0E9h, 0E5h, 0F9h
F000:F4A4 A6 F4 86 C4 BC AE db 0A6h, 0F4h, 86h, 0C4h, 0BCh, 0AEh
F000:F4AA F4 E9 D8 02 B0 F4 db 0F4h, 0E9h, 0D8h, 2, 0B0h, 0F4h
F000:F4B0 86 C4 FE C4 E2 E3 db 86h, 0C4h, 0FEh, 0C4h, 0E2h, 0E3h
F000:F4B6 E9 59 DA E9 13 FF db 0E9h, 59h, 0DAh, 0E9h, 13h, 0FFh
F000:F4BC loc_1398:
F000:F4BC B9 0017 mov cx,17h
F000:F4BF BE F104 mov si,0F104h
F000:F4C2 2E: 8B 04 mov ax,cs:[si]
F000:F4C5 46 inc si
F000:F4C6 46 inc si
F000:F4C7 3C 07 cmp al,7
F000:F4C9 74 04 je short loc_1399 ; Jump if equal
F000:F4CB 3C 09 cmp al,9
F000:F4CD 75 08 jne short loc_1400 ; Jump if not equal
F000:F4CF loc_1399: ; xref F000:F4C9
F000:F4CF 0A DB or bl,bl ; Zero ?
F000:F4D1 78 12 js short loc_1402 ; Jump if sign=1
F000:F4D3 B4 FE mov ah,0FEh
F000:F4D5 EB 0E jmp short loc_1402 ; (F4E5)
F000:F4D7 loc_1400: ; xref F000:F4CD
F000:F4D7 3C 08 cmp al,8
F000:F4D9 74 04 je short loc_1401 ; Jump if equal
F000:F4DB 3C 0A cmp al,0Ah
F000:F4DD 75 06 jne short loc_1402 ; Jump if not equal
F000:F4DF loc_1401: ; xref F000:F4D9
F000:F4DF 0A DB or bl,bl ; Zero ?
F000:F4E1 78 02 js short loc_1402 ; Jump if sign=1
F000:F4E3 B4 F7 mov ah,0F7h
F000:F4E5 loc_1402: ; xref F000:F4D1, F4D5, F4DD, F4E1
F000:F4E5 90 nop ;
F000:F4E6 BC F4EC mov sp,0F4ECh
F000:F4E9 E9 027C jmp loc_1434 ; (F768)
F000:F4EC EE F4 E2 D2 B9 17 db 0EEh, 0F4h, 0E2h, 0D2h, 0B9h, 17h
F000:F4F2 00 BE 32 F1 B0 69 db 0, 0BEh, 32h, 0F1h, 0B0h, 69h
F000:F4F8 2E 8A 24 46 3C 69 db 2Eh, 8Ah, 24h, 46h, 3Ch, 69h
F000:F4FE 75 02 8A DC db 75h, 2, 8Ah, 0DCh
F000:F502 loc_1403:
F000:F502 3C 6A cmp al,6Ah ; 'j'
F000:F504 75 02 jne short loc_1404 ; Jump if not equal
F000:F506 8A FC mov bh,ah
F000:F508 loc_1404: ; xref F000:F504
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 306

F000:F508 BC F50E mov sp,0F50Eh
F000:F50B E9 0278 jmp loc_1443 ; (F786)
F000:F50E 10 F5 FE C0 E2 E4 db 10h, 0F5h, 0FEh, 0C0h, 0E2h, 0E4h
F000:F514 33 C0 BA 78 02 90 db 33h, 0C0h, 0BAh, 78h, 2, 90h
F000:F51A BC 20 F5 E9 12 02 db 0BCh, 20h, 0F5h, 0E9h, 12h, 2
F000:F520 22 F5 BA 78 03 90 db 22h, 0F5h, 0BAh, 78h, 3, 90h
F000:F526 BC 2C F5 E9 06 02 db 0BCh, 2Ch, 0F5h, 0E9h, 6, 2
F000:F52C 2E F5 BA BC 03 90 db 2Eh, 0F5h, 0BAh, 0BCh, 3, 90h
F000:F532 BC 38 F5 E9 FA 01 db 0BCh, 38h, 0F5h, 0E9h, 0FAh, 1
F000:F538 3A F5 32 C0 86 C4 db 3Ah, 0F5h, 32h, 0C0h, 86h, 0C4h
F000:F53E 8B F0 D1 E6 2E 8B db 8Bh, 0F0h, 0D1h, 0E6h, 2Eh, 8Bh
F000:F544 84 49 F1 0B C0 74 db 84h, 49h, 0F1h, 0Bh, 0C0h, 74h
F000:F54A 1C 8A C8 B0 72 90 db 1Ch, 8Ah, 0C8h, 0B0h, 72h, 90h
F000:F550 BC 56 F5 E9 30 02 db 0BCh, 56h, 0F5h, 0E9h, 30h, 2
F000:F556 58 F5 8A E1 B0 71 db 58h, 0F5h, 8Ah, 0E1h, 0B0h, 71h
F000:F55C BC 62 F5 E9 24 02 db 0BCh, 62h, 0F5h, 0E9h, 24h, 2
F000:F562 64 F5 80 CB 10 33 db 64h, 0F5h, 80h, 0CBh, 10h, 33h
F000:F568 C0 BA EA 02 EC A8 db 0C0h, 0BAh, 0EAh, 2, 0ECh, 0A8h
F000:F56E F8 75 03 80 CC 08 db 0F8h, 75h, 3, 80h, 0CCh, 8
F000:F574 loc_1405:
F000:F574 BA 03EA mov dx,3EAh
F000:F577 EC in al,dx ; port 3EAh
F000:F578 A8 F8 test al,0F8h
F000:F57A 75 03 jnz short loc_1406 ; Jump if not zero
F000:F57C 80 CC 04 or ah,4
F000:F57F loc_1406: ; xref F000:F57A
F000:F57F BA 02FA mov dx,2FAh
F000:F582 EC in al,dx ; port 2FAh, RS232-2 int identy
F000:F583 A8 F8 test al,0F8h
F000:F585 75 03 jnz short loc_1407 ; Jump if not zero
F000:F587 80 CC 02 or ah,2
F000:F58A loc_1407: ; xref F000:F585
F000:F58A BA 03FA mov dx,3FAh
F000:F58D EC in al,dx ; port 3FAh, RS232-1 int identy
F000:F58E A8 F8 test al,0F8h
F000:F590 75 03 jnz short loc_1408 ; Jump if not zero
F000:F592 80 CC 01 or ah,1
F000:F595 loc_1408: ; xref F000:F590
F000:F595 32 C0 xor al,al ; Zero register
F000:F597 86 C4 xchg al,ah
F000:F599 8B F0 mov si,ax
F000:F59B D1 E6 shl si,1 ; Shift w/zeros fill
F000:F59D D1 E6 shl si,1 ; Shift w/zeros fill
F000:F59F 2E: 8B 84 F159 mov ax,cs:data_169[si] ; (F000:F159=3F8h)
F000:F5A4 0B C0 or ax,ax ; Zero ?
F000:F5A6 74 1B jz short loc_1409 ; Jump if zero
F000:F5A8 8A C8 mov cl,al
F000:F5AA B0 6C mov al,6Ch ; 'l'
F000:F5AC BC F5B2 mov sp,0F5B2h
F000:F5AF E9 01D4 jmp loc_1443 ; (F786)
F000:F5B2 B4 F5 8A E1 B0 6B db 0B4h, 0F5h, 8Ah, 0E1h, 0B0h, 6Bh
F000:F5B8 BC BE F5 E9 C8 01 db 0BCh, 0BEh, 0F5h, 0E9h, 0C8h, 1
F000:F5BE C0 F5 80 CB 04 db 0C0h, 0F5h, 80h, 0CBh, 4
F000:F5C3 loc_1409: ; xref F000:F5A6
F000:F5C3 83 C6 02 add si,2
F000:F5C6 2E: 8B 84 F159 mov ax,cs:data_169[si] ; (F000:F159=3F8h)
F000:F5CB 0B C0 or ax,ax ; Zero ?
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 307

F000:F5CD 74 1C jz short loc_1410 ; Jump if zero
F000:F5CF 8A C8 mov cl,al
F000:F5D1 B0 6F mov al,6Fh ; 'o'
F000:F5D3 90 nop ;
F000:F5D4 BC F5DA mov sp,0F5DAh
F000:F5D7 E9 01AC jmp loc_1443 ; (F786)
F000:F5DA DC F5 8A E1 B0 6E db 0DCh, 0F5h, 8Ah, 0E1h, 0B0h, 6Eh
F000:F5E0 BC E6 F5 E9 A0 01 db 0BCh, 0E6h, 0F5h, 0E9h, 0A0h, 1
F000:F5E6 E8 F5 80 CF 01 db 0E8h, 0F5h, 80h, 0CFh, 1
F000:F5EB loc_1410: ; xref F000:F5CD
F000:F5EB BA 03F4 mov dx,3F4h
F000:F5EE EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:F5EF 3C FF cmp al,0FFh
F000:F5F1 75 03 jne short loc_1411 ; Jump if not equal
F000:F5F3 80 CB 02 or bl,2
F000:F5F6 loc_1411: ; xref F000:F5F1
F000:F5F6 33 C0 xor ax,ax ; Zero register
F000:F5F8 BA 01F4 mov dx,1F4h
F000:F5FB 90 nop ;
F000:F5FC BC F602 mov sp,0F602h
F000:F5FF E9 0130 jmp loc_1420 ; (F732)
F000:F602 04 F6 0A E4 75 03 db 4, 0F6h, 0Ah, 0E4h, 75h, 3
F000:F608 80 CF 30 B0 69 8A db 80h, 0CFh, 30h, 0B0h, 69h, 8Ah
F000:F60E E3 90 BC 16 F6 E9 db 0E3h, 90h, 0BCh, 16h, 0F6h, 0E9h
F000:F614 70 01 18 F6 B0 6A db 70h, 1, 18h, 0F6h, 0B0h, 6Ah
F000:F61A 8A E7 BC 22 F6 E9 db 8Ah, 0E7h, 0BCh, 22h, 0F6h, 0E9h
F000:F620 64 01 24 F6 B0 54 db 64h, 1, 24h, 0F6h, 0B0h, 54h
F000:F626 E6 43 EB 00 EB 00 db 0E6h, 43h, 0EBh, 0, 0EBh, 0
F000:F62C loc_1412:
F000:F62C B9 0200 mov cx,200h
F000:F62F 33 FF xor di,di ; Zero register
F000:F631 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:F633 B0 00 mov al,0
F000:F635 E6 8F out 8Fh,al ; port 8Fh, DMA page reg ch 4
F000:F637 EB 00 jmp short loc_1413 ; (F639)
F000:F639 loc_1413: ; xref F000:F637
F000:F639 EB 00 jmp short loc_1414 ; (F63B)
F000:F63B loc_1414: ; xref F000:F639
F000:F63B B0 12 mov al,12h
F000:F63D E6 41 out 41h,al ; port 41h, 8253 timer 1 refsh
F000:F63F EB 00 jmp short loc_1415 ; (F641)
F000:F641 loc_1415: ; xref F000:F63F
F000:F641 EB 00 jmp short loc_1416 ; (F643)
F000:F643 loc_1416: ; xref F000:F641
F000:F643 B0 B8 mov al,0B8h
F000:F645 90 nop ;
F000:F646 BC F64C mov sp,0F64Ch
F000:F649 E9 F83D jmp loc_1321 ; (EE89)
F000:F64C 4E F6 A8 80 BE 00 db 4Eh, 0F6h, 0A8h, 80h, 0BEh, 0
F000:F652 18 BF 00 08 BB 00 db 18h, 0BFh, 0, 8, 0BBh, 0
F000:F658 80 75 09 BE 00 0C db 80h, 75h, 9, 0BEh, 0, 0Ch
F000:F65E BF 00 04 BB 00 40 db 0BFh, 0, 4, 0BBh, 0, 40h
F000:F664 B9 AA 55 BA 55 AA db 0B9h, 0AAh, 55h, 0BAh, 55h, 0AAh
F000:F66A 33 C0 BC 72 F6 E9 db 33h, 0C0h, 0BCh, 72h, 0F6h, 0E9h
F000:F670 93 00 74 F6 2B F7 db 93h, 0, 74h, 0F6h, 2Bh, 0F7h
F000:F676 BC 7C F6 E9 89 00 db 0BCh, 7Ch, 0F6h, 0E9h, 89h, 0
F000:F67C 7E F6 2B F7 BC 86 db 7Eh, 0F6h, 2Bh, 0F7h, 0BCh, 86h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 308

F000:F682 F6 E9 7F 00 88 F6 db 0F6h, 0E9h, 7Fh, 0, 88h, 0F6h
F000:F688 2B F7 BC 90 F6 EB db 2Bh, 0F7h, 0BCh, 90h, 0F6h, 0EBh
F000:F68E 76 90 92 F6 BE 99 db 76h, 90h, 92h, 0F6h, 0BEh, 99h
F000:F694 F1 D1 E0 03 F0 2E db 0F1h, 0D1h, 0E0h, 3, 0F0h, 2Eh
F000:F69A 8A 24 C0 EC 04 80 db 8Ah, 24h, 0C0h, 0ECh, 4, 80h
F000:F6A0 CC 70 B0 05 BC AA db 0CCh, 70h, 0B0h, 5, 0BCh, 0AAh
F000:F6A6 F6 E9 BE 00 AC F6 db 0F6h, 0E9h, 0BEh, 0, 0ACh, 0F6h
F000:F6AC 2E 8A 24 80 E4 0F db 2Eh, 8Ah, 24h, 80h, 0E4h, 0Fh
F000:F6B2 B0 04 BC BA F6 E9 db 0B0h, 4, 0BCh, 0BAh, 0F6h, 0E9h
F000:F6B8 AE 00 BC F6 2E 8A db 0AEh, 0, 0BCh, 0F6h, 2Eh, 8Ah
F000:F6BE 64 01 B0 03 BC C8 db 64h, 1, 0B0h, 3, 0BCh, 0C8h
F000:F6C4 F6 E9 A0 00 CA F6 db 0F6h, 0E9h, 0A0h, 0, 0CAh, 0F6h
F000:F6CA BE 99 F3 8A C4 32 db 0BEh, 99h, 0F3h, 8Ah, 0C4h, 32h
F000:F6D0 E4 D1 E0 03 F0 2E db 0E4h, 0D1h, 0E0h, 3, 0F0h, 2Eh
F000:F6D6 8B 04 81 FF 00 08 db 8Bh, 4, 81h, 0FFh, 0, 8
F000:F6DC 74 0C D1 E8 0A C0 db 74h, 0Ch, 0D1h, 0E8h, 0Ah, 0C0h
F000:F6E2 75 02 B0 FF 8A E0 db 75h, 2, 0B0h, 0FFh, 8Ah, 0E0h
F000:F6E8 EB 0D B0 01 BC F2 db 0EBh, 0Dh, 0B0h, 1, 0BCh, 0F2h
F000:F6EE F6 EB 77 90 F4 F6 db 0F6h, 0EBh, 77h, 90h, 0F4h, 0F6h
F000:F6F4 2E 8A db 2Eh, 8Ah
F000:F6F6 24 db 24h
F000:F6F7 loc_1417:
F000:F6F7 B0 02 mov al,2
F000:F6F9 90 nop ;
F000:F6FA BC F700 mov sp,0F700h
F000:F6FD EB 69 jmp short loc_1434 ; (F768)
F000:F6FF 90 02 F7 E9 CA FC db 90h, 2, 0F7h, 0E9h, 0CAh, 0FCh
F000:F705 loc_1418:
F000:F705 D0 E0 shl al,1 ; Shift w/zeros fill
F000:F707 D0 E0 shl al,1 ; Shift w/zeros fill
F000:F709 89 0C mov [si],cx
F000:F70B 89 10 mov [bx+si],dx
F000:F70D 39 0C cmp [si],cx
F000:F70F 75 20 jne short loc_ret_1419 ; Jump if not equal
F000:F711 39 10 cmp [bx+si],dx
F000:F713 75 1C jne short loc_ret_1419 ; Jump if not equal
F000:F715 0C 01 or al,1
F000:F717 C1 EB 02 shr bx,2 ; Shift w/zeros fill
F000:F71A 89 10 mov [bx+si],dx
F000:F71C C1 E3 02 shl bx,2 ; Shift w/zeros fill
F000:F71F 39 0C cmp [si],cx
F000:F721 75 0E jne short loc_ret_1419 ; Jump if not equal
F000:F723 0C 03 or al,3
F000:F725 D1 EB shr bx,1 ; Shift w/zeros fill
F000:F727 89 10 mov [bx+si],dx
F000:F729 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F72B 39 0C cmp [si],cx
F000:F72D 74 02 je short loc_ret_1419 ; Jump if equal
F000:F72F 34 01 xor al,1

F000:F731 loc_ret_1419: ; xref F000:F70F, F713, F721, F72D
F000:F731 C3 retn
F000:F732 loc_1420: ; xref F000:F5FF
F000:F732 D0 E4 shl ah,1 ; Shift w/zeros fill
F000:F734 B0 55 mov al,55h ; 'U'
F000:F736 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F737 EB 00 jmp short loc_1421 ; (F739)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 309

F000:F739 loc_1421: ; xref F000:F737
F000:F739 EB 00 jmp short loc_1422 ; (F73B)
F000:F73B loc_1422: ; xref F000:F739
F000:F73B F6 D0 not al
F000:F73D E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:F73F EB 00 jmp short loc_1423 ; (F741)
F000:F741 loc_1423: ; xref F000:F73F
F000:F741 EB 00 jmp short loc_1424 ; (F743)
F000:F743 loc_1424: ; xref F000:F741
F000:F743 EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F744 EB 00 jmp short loc_1425 ; (F746)
F000:F746 loc_1425: ; xref F000:F744
F000:F746 EB 00 jmp short loc_1426 ; (F748)
F000:F748 loc_1426: ; xref F000:F746
F000:F748 34 55 xor al,55h ; 'U'
F000:F74A 75 1B jnz short loc_ret_1433 ; Jump if not zero
F000:F74C B0 AA mov al,0AAh
F000:F74E EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F74F EB 00 jmp short loc_1427 ; (F751)
F000:F751 loc_1427: ; xref F000:F74F
F000:F751 EB 00 jmp short loc_1428 ; (F753)
F000:F753 loc_1428: ; xref F000:F751
F000:F753 F6 D0 not al
F000:F755 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:F757 EB 00 jmp short loc_1429 ; (F759)
F000:F759 loc_1429: ; xref F000:F757
F000:F759 EB 00 jmp short loc_1430 ; (F75B)
F000:F75B loc_1430: ; xref F000:F759
F000:F75B EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F75C EB 00 jmp short loc_1431 ; (F75E)
F000:F75E loc_1431: ; xref F000:F75C
F000:F75E EB 00 jmp short loc_1432 ; (F760)
F000:F760 loc_1432: ; xref F000:F75E
F000:F760 34 AA xor al,0AAh
F000:F762 75 03 jnz short loc_ret_1433 ; Jump if not zero
F000:F764 80 CC 01 or ah,1

F000:F767 loc_ret_1433: ; xref F000:F74A, F762
F000:F767 C3 retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CDE1, CDE7, CDED, CDF3, CE13, CE19, CE1F
; CE25, CE46, CEE4, CF0A
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_266 proc near
F000:F768 loc_1434: ; xref F000:F4E9, F6FD
F000:F768 E6 EC out 0ECh,al ; port 0ECh
F000:F76A EB 00 jmp short loc_1435 ; (F76C)
F000:F76C loc_1435: ; xref F000:F76A
F000:F76C EB 00 jmp short loc_1436 ; (F76E)
F000:F76E loc_1436: ; xref F000:F76C
F000:F76E 86 C4 xchg al,ah
F000:F770 E6 ED out 0EDh,al ; port 0EDh
F000:F772 EB 00 jmp short loc_1437 ; (F774)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 310

F000:F774 loc_1437: ; xref F000:F772
F000:F774 EB 00 jmp short loc_1438 ; (F776)
F000:F776 loc_1438: ; xref F000:F774
F000:F776 86 C4 xchg al,ah
F000:F778 C3 retn
sub_266 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:CDBB, CDC5, CDCC, CDD3, CDDA
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_267 proc near
F000:F779 E6 EC out 0ECh,al ; port 0ECh
F000:F77B EB 00 jmp short loc_1439 ; (F77D)
F000:F77D loc_1439: ; xref F000:F77B
F000:F77D EB 00 jmp short loc_1440 ; (F77F)
F000:F77F loc_1440: ; xref F000:F77D
F000:F77F E4 ED in al,0EDh ; port 0EDh
F000:F781 EB 00 jmp short loc_1441 ; (F783)
F000:F783 loc_1441: ; xref F000:F781
F000:F783 EB 00 jmp short loc_ret_1442 ; (F785)

F000:F785 loc_ret_1442: ; xref F000:F783
F000:F785 C3 retn
sub_267 endp

F000:F786 loc_1443: ; xref F000:CF71, CFB1, D04F, D085
; F50B, F5AF, F5D7
F000:F786 BA 0170 mov dx,170h
F000:F789 EE out dx,al ; port 170h, hdsk1-write data
F000:F78A EB 00 jmp short loc_1444 ; (F78C)
F000:F78C loc_1444: ; xref F000:F78A
F000:F78C EB 00 jmp short loc_1445 ; (F78E)
F000:F78E loc_1445: ; xref F000:F78C
F000:F78E 86 C4 xchg al,ah
F000:F790 42 inc dx
F000:F791 EE out dx,al ; port 171h, hdsk1-precomp cylr
F000:F792 EB 00 jmp short loc_1446 ; (F794)
F000:F794 loc_1446: ; xref F000:F792
F000:F794 EB 00 jmp short loc_1447 ; (F796)
F000:F796 loc_1447: ; xref F000:F794
F000:F796 86 C4 xchg al,ah
F000:F798 C3 retn
F000:F799 loc_1448:
F000:F799 BA 0170 mov dx,170h
F000:F79C EE out dx,al ; port 170h, hdsk1-write data
F000:F79D EB 00 jmp short loc_1449 ; (F79F)
F000:F79F loc_1449: ; xref F000:F79D
F000:F79F EB 00 jmp short loc_1450 ; (F7A1)
F000:F7A1 loc_1450: ; xref F000:F79F
F000:F7A1 42 inc dx
F000:F7A2 EC in al,dx ; port 171h, hdsk1-error regstr
F000:F7A3 EB 00 jmp short loc_1451 ; (F7A5)
F000:F7A5 loc_1451: ; xref F000:F7A3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 311

F000:F7A5 EB 00 jmp short loc_ret_1452 ; (F7A7)

F000:F7A7 loc_ret_1452: ; xref F000:F7A5
F000:F7A7 C3 retn
F000:F7A8 B0 C0 E8 DC F6 BE db 0B0h, 0C0h, 0E8h, 0DCh, 0F6h, 0BEh
F000:F7AE 0D F8 A8 01 EB 58 db 0Dh, 0F8h, 0A8h, 1, 0EBh, 58h
F000:F7B4 90 50 E8 00 96 BE db 90h, 50h, 0E8h, 0, 96h, 0BEh
F000:F7BA 2A F8 E8 FA 95 58 db 2Ah, 0F8h, 0E8h, 0FAh, 95h, 58h
F000:F7C0 BE 13 F8 A8 02 EB db 0BEh, 13h, 0F8h, 0A8h, 2, 0EBh
F000:F7C6 45 90 50 E8 ED 95 db 45h, 90h, 50h, 0E8h, 0EDh, 95h
F000:F7CC BE 2A F8 E8 E7 95 db 0BEh, 2Ah, 0F8h, 0E8h, 0E7h, 95h
F000:F7D2 58 BE 19 F8 A8 04 db 58h, 0BEh, 19h, 0F8h, 0A8h, 4
F000:F7D8 EB 32 90 50 E8 DA db 0EBh, 32h, 90h, 50h, 0E8h, 0DAh
F000:F7DE 95 BE 2A F8 E8 D4 db 95h, 0BEh, 2Ah, 0F8h, 0E8h, 0D4h
F000:F7E4 95 58 BE 1D F8 A8 db 95h, 58h, 0BEh, 1Dh, 0F8h, 0A8h
F000:F7EA 08 EB 1F 90 50 E8 db 8, 0EBh, 1Fh, 90h, 50h, 0E8h
F000:F7F0 C7 95 BE 2A F8 E8 db 0C7h, 95h, 0BEh, 2Ah, 0F8h, 0E8h
F000:F7F6 C1 95 58 BE 24 F8 db 0C1h, 95h, 58h, 0BEh, 24h, 0F8h
F000:F7FC A8 10 EB 0C 90 50 db 0A8h, 10h, 0EBh, 0Ch, 90h, 50h
F000:F802 E8 B4 95 BE 2A F8 db 0E8h, 0B4h, 95h, 0BEh, 2Ah, 0F8h
F000:F808 E8 AE 95 58 C3 43 db 0E8h, 0AEh, 95h, 58h, 0C3h, 43h
F000:F80E 4F 4D 2D 31 00 43 db 4Fh, 4Dh, 2Dh, 31h, 0, 43h
F000:F814 4F 4D 2D 32 00 50 db 4Fh, 4Dh, 2Dh, 32h, 0, 50h
F000:F81A 52 4E 00 46 4C 4F db 52h, 4Eh, 0, 46h, 4Ch, 4Fh
F000:F820 50 50 59 00 48 44 db 50h, 50h, 59h, 0, 48h, 44h
F000:F826 49 53 4B 00 db 49h, 53h, 4Bh, 0
F000:F82A 20 62 61 73 65 20 db ' base address conflict', 0Dh
F000:F830 61 64 64 72 65 73
F000:F836 73 20 63 6F 6E 66
F000:F83C 6C 69 63 74 0D


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 12h ±±±±±
;
; SYSTEM MEMORY SIZE
;
; Returns: ax = number of contiguous 1K bytes blocks of memory

; from 0 to 640 K.
;
; Regs used: ax

F000:F841 int_12h_memsiz proc near ; xref F000:FF07
F000:F841 FB sti ; Enable interrupts
F000:F842 1E push ds
F000:F843 6A 40 push 40h
F000:F845 1F pop ds
F000:F846 A1 0013 mov ax,main_ram_size ; (0040:0013=280h)
F000:F849 1F pop ds
F000:F84A CF iret ; Interrupt return
int_12h_memsiz endp

F000:F84B 00 00 db 0, 0


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:F84D int_11h_entry: ; xref F000:FF05
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 312

F000:F84D EB 00 jmp short int_11h_equip ; (F84F)


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 11h ±±±±±
;
; EQUIPMENT INSTALLED
;
; Returns: ax = equip_install word
;
; 15 14 13 12 11 10 9 8
; \ / game \ /
; # of printer port # of RS-232
; ports 0-3 used ports 0-4
;
; 7 6 5 4 3 2 1 0
; \ / \ / \ / Math |
; # of video mode RAM uP no
; floppy at boot up 00=16K floppy
; drives 00=EGA 01=32K drive
; 1-4 01=CGA-40 10=48K if 0
; if bit 10=CGA-80 11=64K
; 0 = 1 11=MDA-80 (old PCs)
;
; Note: bit 13 = modem on PC lap-tops
; bit 2 = mouse on PS/2
;
; Regs used: ax

F000:F84F int_11h_equip proc near ; xref F000:F84D
F000:F84F FB sti ; Enable interrupts
F000:F850 1E push ds
F000:F851 6A 40 push 40h
F000:F853 1F pop ds
F000:F854 A1 0010 mov ax,equip_bits ; (0040:0010=4661h)
F000:F857 1F pop ds
F000:F858 CF iret ; Interrupt return
int_11h_equip endp



; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:F859 int_15h_entry: ; xref F000:FF0D
F000:F859 E9 D108 jmp int_15h_servics ; (C964)


; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 17h ±±±±±
;
; PRINTER SERVICES
;
; Call with: ah = function code
; dx = printer number 0-2 (some systems allow 0-3)
;
; Returns: ah = status bits
; 7 6 5 4 3 2 1 0
; not acknow- no select I/O unused no
; busy ledge paper error response
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 313

; __________from printer__________
;
; Functions:
; ah = 0 Send character to printer, al = character
; ah = 1 Printer port initialization
; ah = 2 Get printer status in ah

F000:F85C int_17h_printer proc near ; xref F000:EFD2
F000:F85C FB sti ; Enable interrupts
F000:F85D 53 push bx
F000:F85E 52 push dx
F000:F85F 1E push ds
F000:F860 6A 40 push 40h
F000:F862 1F pop ds
F000:F863 8B DA mov bx,dx
F000:F865 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F867 8B 97 0008 mov dx,[bx+8]
nop ;*Fixup for MASM (M)
F000:F86B 23 D2 and dx,dx
F000:F86D 74 6F jz short loc_1473 ; Jump if zero
F000:F86F D0 EC shr ah,1 ; Shift w/zeros fill
F000:F871 8A E0 mov ah,al
F000:F873 75 58 jnz short loc_1467 ; Jump if not zero
F000:F875 72 35 jc short loc_1460 ; Jump if carry Set
F000:F877 EE out dx,al ; port 378h, printer-2 data
F000:F878 42 inc dx
F000:F879 EB 00 jmp short loc_1453 ; (F87B)
F000:F87B loc_1453: ; xref F000:F879
F000:F87B EB 00 jmp short loc_1454 ; (F87D)
F000:F87D loc_1454: ; xref F000:F87B
F000:F87D EC in al,dx ; port 379h, printer-2 status
F000:F87E A8 80 test al,80h
F000:F880 75 07 jnz short loc_1455 ; Jump if not zero
F000:F882 50 push ax
F000:F883 B8 90FE mov ax,90FEh
F000:F886 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:F888 58 pop ax
F000:F889 loc_1455: ; xref F000:F880
F000:F889 D1 EB shr bx,1 ; Shift w/zeros fill
F000:F88B 8A 9F 0078 mov bl,prn_timeout_1[bx] ; (0040:0078=14h)
F000:F88F 32 FF xor bh,bh ; Zero register
F000:F891 C1 E3 02 shl bx,2 ; Shift w/zeros fill
F000:F894 51 push cx
F000:F895 loc_1456: ; xref F000:F8A3
F000:F895 33 C9 xor cx,cx ; Zero register

F000:F897 locloop_1457: ; xref F000:F8A0
F000:F897 EB 00 jmp short loc_1458 ; (F899)
F000:F899 loc_1458: ; xref F000:F897
F000:F899 EB 00 jmp short loc_1459 ; (F89B)
F000:F89B loc_1459: ; xref F000:F899
F000:F89B EC in al,dx ; port 379h, printer-2 status
F000:F89C A8 80 test al,80h
F000:F89E 75 19 jnz short loc_1462 ; Jump if not zero
F000:F8A0 E2 F5 loop locloop_1457 ; Loop if cx > 0

bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 314

F000:F8A2 4B dec bx
F000:F8A3 75 F0 jnz loc_1456 ; Jump if not zero
F000:F8A5 59 pop cx
F000:F8A6 24 F8 and al,0F8h
F000:F8A8 0C 01 or al,1
F000:F8AA EB 2E jmp short loc_1472 ; (F8DA)
F000:F8AC loc_1460: ; xref F000:F875
F000:F8AC B0 08 mov al,8
F000:F8AE 42 inc dx
F000:F8AF 42 inc dx
F000:F8B0 EE out dx,al ; port 37Bh
F000:F8B1 BB 4000 mov bx,4000h
F000:F8B4 loc_1461: ; xref F000:F8B5
F000:F8B4 4B dec bx
F000:F8B5 75 FD jnz loc_1461 ; Jump if not zero
F000:F8B7 EB 0E jmp short loc_1466 ; (F8C7)
F000:F8B9 loc_1462: ; xref F000:F89E
F000:F8B9 59 pop cx
F000:F8BA B0 0D mov al,0Dh
F000:F8BC 42 inc dx
F000:F8BD EB 00 jmp short loc_1463 ; (F8BF)
F000:F8BF loc_1463: ; xref F000:F8BD
F000:F8BF EB 00 jmp short loc_1464 ; (F8C1)
F000:F8C1 loc_1464: ; xref F000:F8BF
F000:F8C1 FA cli ; Disable interrupts
F000:F8C2 EE out dx,al ; port 37Ch
F000:F8C3 EB 00 jmp short loc_1465 ; (F8C5)
F000:F8C5 loc_1465: ; xref F000:F8C3
F000:F8C5 EB 00 jmp short loc_1466 ; (F8C7)
F000:F8C7 loc_1466: ; xref F000:F8B7, F8C5
F000:F8C7 B0 0C mov al,0Ch
F000:F8C9 EE out dx,al ; port 37Ch
F000:F8CA FB sti ; Enable interrupts
F000:F8CB 4A dec dx
F000:F8CC 4A dec dx
F000:F8CD loc_1467: ; xref F000:F873
F000:F8CD 42 inc dx
F000:F8CE EB 00 jmp short loc_1468 ; (F8D0)
F000:F8D0 loc_1468: ; xref F000:F8CE
F000:F8D0 EB 00 jmp short loc_1469 ; (F8D2)
F000:F8D2 loc_1469: ; xref F000:F8D0
F000:F8D2 EC in al,dx ; port 37Bh
F000:F8D3 EB 00 jmp short loc_1470 ; (F8D5)
F000:F8D5 loc_1470: ; xref F000:F8D3
F000:F8D5 EB 00 jmp short loc_1471 ; (F8D7)
F000:F8D7 loc_1471: ; xref F000:F8D5
F000:F8D7 EC in al,dx ; port 37Bh
F000:F8D8 24 F8 and al,0F8h
F000:F8DA loc_1472: ; xref F000:F8AA
F000:F8DA 34 48 xor al,48h ; 'H'
F000:F8DC 86 C4 xchg al,ah
F000:F8DE loc_1473: ; xref F000:F86D
F000:F8DE 1F pop ds
F000:F8DF 5A pop dx
F000:F8E0 5B pop bx
F000:F8E1 CF iret ; Interrupt return
int_17h_printer endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 315




; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± int 14h ±±±±±
;
; RS-232 SERIAL PORTS SERVICES
;
; Call with: ah = sub-function number
; dx = communications number, com1 = 0
;
; Returns: ah = line status, bit 0 = Data ready
; bit 1 = Overrun error
; bit 2 = Parity error
; bit 3 = CRC framing error
; bit 4 = Break detect
; bit 5 = Xmit buffer register empty
; bit 6 = Xmit shift out register empty
; bit 7 = No response, ignore bits 0-6
;
; al = modem status, bit 0 = Change in Clear To Send
; bit 1 = Change in Data Set Ready
; bit 2 = Falling edge ring detect
; bit 3 = Change in receive detect line
; bit 4 = Clear to Send (CTS)
; bit 5 = Data Set Ready (DTS)
; bit 6 = Ring detected
; bit 7 = Receive detect line
;
; Functions:
; ah = 0 Reset the specified port
; Call with: al serial port register values
; bits 7 6 5 4 3 2 1 0
; --baud-rate-- -Parity- Stop --Word--
; 000 = 110 bits bit size
; 001 = 150 (bits)
; 010 = 300 00 = off 0=1
; 011 = 600 01 = odd 1=2 10 = 7
; 100 = 1200 10 = off 11 = 8
; 101 = 2400 11 = even
; 110 = 4800
; 111 = 9600
; ah = 1 Transmit a character
; Call with: al = character to send (not changed on exit)
; ah = 2 Received a character
; Returns: al = character received
; ah = 3 Get status
; ah = 4 Advanced Initialization (not supported on all systems)
; Call with: al = 0/1 no break/break
; bh = Parity, 0 = none 3 = stick odd
; 1 = odd 4 = stick even
; 2 = even
; bl = 0/1 Stop bits set to 1/2
; ch = Word size, 0 = 5 bits 2 = 7 bits
; 1 = 6 bits 3 = 8 bits
;
; cl = Baud rate, 0 = 110 5 = 2400
; 1 = 150 6 = 4800
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 316

; 2 = 300 7 = 9600
; 3 = 600 8 = 19200
; 4 = 1200
; ah = 5 Advanced port control (not supported on all systems)
; al = 0 Get modem register
; Returns: bl bit 0 = Data Terminal Ready (DTR)
; bit 1 = Request To Send (RTS)
; bit 2 = Out 1
; bit 3 = Out 2
; bit 4 = Loop modem
; al = 1 Set modem register
; Call with: bl = value for register (see above)

F000:F8E2 int_14h_RS232 proc near ; xref F000:E739
F000:F8E2 FB sti ; Enable interrupts
F000:F8E3 60 pusha ; Save all regs
F000:F8E4 1E push ds
F000:F8E5 6A 40 push 40h
F000:F8E7 1F pop ds
F000:F8E8 8B DA mov bx,dx
F000:F8EA 8B BF 007C mov di,word ptr rs232_timeout_1[bx] ; (0040:007C=101h)
F000:F8EE 81 E7 00FF and di,0FFh
F000:F8F2 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F8F4 8B 97 0000 mov dx,[bx+0]
nop ;*Fixup for MASM (M)
F000:F8F8 23 D2 and dx,dx
F000:F8FA 74 22 jz short loc_1480 ; Jump if zero
F000:F8FC C1 E7 02 shl di,2 ; Shift w/zeros fill
F000:F8FF D0 EC shr ah,1 ; Shift w/zeros fill
F000:F901 74 2E jz short loc_1482 ; Jump if zero
F000:F903 FE CC dec ah
F000:F905 75 17 jnz short loc_1480 ; Jump if not zero
F000:F907 73 18 jnc short loc_1481 ; Jump if carry=0
F000:F909 loc_1474: ; xref F000:F98A
F000:F909 83 C2 05 add dx,5
F000:F90C EB 00 jmp short loc_1475 ; (F90E)
F000:F90E loc_1475: ; xref F000:F90C
F000:F90E EB 00 jmp short loc_1476 ; (F910)
F000:F910 loc_1476: ; xref F000:F90E
F000:F910 EC in al,dx ; port 3FDh, RS232-1 line stat
F000:F911 8A E0 mov ah,al
F000:F913 42 inc dx
F000:F914 EB 00 jmp short loc_1477 ; (F916)
F000:F916 loc_1477: ; xref F000:F914
F000:F916 EB 00 jmp short loc_1478 ; (F918)
F000:F918 loc_1478: ; xref F000:F916
F000:F918 EC in al,dx ; port 3FEh, RS232-1 modem stat
F000:F919 loc_1479: ; xref F000:F92F, F942, F947
F000:F919 8B EC mov bp,sp
F000:F91B 89 46 10 mov [bp+10h],ax
F000:F91E loc_1480: ; xref F000:F8FA, F905
F000:F91E 1F pop ds
F000:F91F 61 popa ; Restore all regs
F000:F920 CF iret ; Interrupt return
int_14h_RS232 endp

F000:F921 loc_1481: ; xref F000:F907
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 317

F000:F921 B0 01 mov al,1
F000:F923 BB 0120 mov bx,120h
F000:F926 E8 0064 call sub_268 ; (F98D)
F000:F929 75 19 jnz short loc_1483 ; Jump if not zero
F000:F92B 80 E4 1E and ah,1Eh
F000:F92E EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F92F EB E8 jmp short loc_1479 ; (F919)
F000:F931 loc_1482: ; xref F000:F901
F000:F931 73 16 jnc short loc_1484 ; Jump if carry=0
F000:F933 50 push ax
F000:F934 B0 03 mov al,3
F000:F936 BB 2030 mov bx,2030h
F000:F939 E8 0051 call sub_268 ; (F98D)
F000:F93C 5B pop bx
F000:F93D 8A C3 mov al,bl
F000:F93F 75 03 jnz short loc_1483 ; Jump if not zero
F000:F941 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F942 EB D5 jmp short loc_1479 ; (F919)
F000:F944 loc_1483: ; xref F000:F929, F93F
F000:F944 80 CC 80 or ah,80h
F000:F947 EB D0 jmp short loc_1479 ; (F919)
F000:F949 loc_1484: ; xref F000:F931
F000:F949 8A E0 mov ah,al
F000:F94B 24 E0 and al,0E0h
F000:F94D B9 0417 mov cx,417h
F000:F950 74 0C jz short loc_1486 ; Jump if zero
F000:F952 C0 E8 05 shr al,5 ; Shift w/zeros fill
F000:F955 B9 0600 mov cx,600h
F000:F958 loc_1485: ; xref F000:F95C
F000:F958 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:F95A FE C8 dec al
F000:F95C 75 FA jnz loc_1485 ; Jump if not zero
F000:F95E loc_1486: ; xref F000:F950
F000:F95E B0 80 mov al,80h
F000:F960 83 C2 03 add dx,3
F000:F963 EE out dx,al ; port 3, DMA-1 bas&cnt ch 1
F000:F964 52 push dx
F000:F965 8A C5 mov al,ch
F000:F967 4A dec dx
F000:F968 4A dec dx
F000:F969 EB 00 jmp short loc_1487 ; (F96B)
F000:F96B loc_1487: ; xref F000:F969
F000:F96B EB 00 jmp short loc_1488 ; (F96D)
F000:F96D loc_1488: ; xref F000:F96B
F000:F96D EE out dx,al ; port 1, DMA-1 bas&cnt ch 0
F000:F96E 8A C1 mov al,cl
F000:F970 4A dec dx
F000:F971 EB 00 jmp short loc_1489 ; (F973)
F000:F973 loc_1489: ; xref F000:F971
F000:F973 EB 00 jmp short loc_1490 ; (F975)
F000:F975 loc_1490: ; xref F000:F973
F000:F975 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F976 8A C4 mov al,ah
F000:F978 24 1F and al,1Fh
F000:F97A 5A pop dx
F000:F97B EB 00 jmp short loc_1491 ; (F97D)
F000:F97D loc_1491: ; xref F000:F97B
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 318

F000:F97D EB 00 jmp short loc_1492 ; (F97F)
F000:F97F loc_1492: ; xref F000:F97D
F000:F97F EE out dx,al ; port 3, DMA-1 bas&cnt ch 1
F000:F980 2A C0 sub al,al
F000:F982 4A dec dx
F000:F983 4A dec dx
F000:F984 EB 00 jmp short loc_1493 ; (F986)
F000:F986 loc_1493: ; xref F000:F984
F000:F986 EB 00 jmp short loc_1494 ; (F988)
F000:F988 loc_1494: ; xref F000:F986
F000:F988 EE out dx,al ; port 1, DMA-1 bas&cnt ch 0
F000:F989 4A dec dx
F000:F98A E9 FF7C jmp loc_1474 ; (F909)

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:F926, F939
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_268 proc near
F000:F98D 52 push dx
F000:F98E 83 C2 04 add dx,4
F000:F991 EE out dx,al ; port 4, DMA-1 bas&add ch 2
F000:F992 42 inc dx
F000:F993 42 inc dx
F000:F994 57 push di
F000:F995 E8 000B call sub_269 ; (F9A3)
F000:F998 5F pop di
F000:F999 75 06 jnz short loc_1495 ; Jump if not zero
F000:F99B 8A DF mov bl,bh
F000:F99D 4A dec dx
F000:F99E E8 0002 call sub_269 ; (F9A3)
F000:F9A1 loc_1495: ; xref F000:F999
F000:F9A1 5A pop dx
F000:F9A2 C3 retn
sub_268 endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
; SUBROUTINE
;
; Called from: F000:F995, F99E
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_269 proc near
F000:F9A3 loc_1496: ; xref F000:F9B5
F000:F9A3 33 C9 xor cx,cx ; Zero register

F000:F9A5 locloop_1497: ; xref F000:F9B2
F000:F9A5 EB 00 jmp short loc_1498 ; (F9A7)
F000:F9A7 loc_1498: ; xref F000:F9A5
F000:F9A7 EB 00 jmp short loc_1499 ; (F9A9)
F000:F9A9 loc_1499: ; xref F000:F9A7
F000:F9A9 EC in al,dx ; port 6, DMA-1 bas&add ch 3
F000:F9AA 8A E0 mov ah,al
F000:F9AC 22 C3 and al,bl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 319

F000:F9AE 3A C3 cmp al,bl
F000:F9B0 74 06 je short loc_ret_1500 ; Jump if equal
F000:F9B2 E2 F1 loop locloop_1497 ; Loop if cx > 0

F000:F9B4 4F dec di
F000:F9B5 75 EC jnz loc_1496 ; Jump if not zero
F000:F9B7 4F dec di

F000:F9B8 loc_ret_1500: ; xref F000:F9B0
F000:F9B8 C3 retn
sub_269 endp

F000:F9B9 loc_1501: ; xref F000:E154
F000:F9B9 2E: 0F 01 16 E268 lgdt qword ptr cs:data_152 ; (F000:E268=60h) Load global des tbl
F000:F9BF B8 0040 mov ax,seg_b
F000:F9C2 8E D8 mov ds,ax
F000:F9C4 8E C0 mov es,ax
F000:F9C6 8E D0 mov ss,ax
F000:F9C8 66| C1 C8 10 ror eax,10h ; Rotate
F000:F9CC 8B C8 mov cx,ax
F000:F9CE 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:F9D1 66| 25 7FFFFFFE and eax,7FFFFFFEh
F000:F9D7 90 nop ;
F000:F9D8 90 nop ;
F000:F9D9 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:F9DC EA F000F9E1 jmp far ptr loc_1502 ; (F9E1)
F000:F9E1 loc_1502: ; xref F000:F9DC
F000:F9E1 2E: 0F 01 1E E2B8 lidt qword ptr cs:data_157 ; (F000:E2B8=0FFFFh) Load int des tabl
F000:F9E7 2E: 0F 01 16 E2A0 lgdt qword ptr cs:data_155 ; (F000:E2A0=0FFFFh) Load global des t
F000:F9ED 8B C1 mov ax,cx
F000:F9EF 66| C1 C8 10 ror eax,10h ; Rotate
F000:F9F3 E9 E665 jmp loc_1197 ; (E05B)
F000:F9F6 000A[00] db 10 dup (0)
F000:FA00 68 50 50 01 01 01 db 68h, 50h, 50h, 1, 1, 1
F000:FA06 01 01 2A B2 0A 62 db 1, 1, 2Ah, 0B2h, 0Ah, 62h
F000:FA0C AA 0A A2 4A 7A 72 db 0AAh, 0Ah, 0A2h, 4Ah, 7Ah, 72h
F000:FA12 01 1A 7A 82 CA 61 db 1, 1Ah, 7Ah, 82h, 0CAh, 61h
F000:FA18 01 72 7A A2 01 32 db 1, 72h, 7Ah, 0A2h, 1, 32h
F000:FA1E 7A 92 01 9A 0A 62 db 7Ah, 92h, 1, 9Ah, 0Ah, 62h
F000:FA24 2A 68 50 01 01 01 db 2Ah, 68h, 50h, 1, 1, 1
F000:FA2A 01 01 41 1A 49 01 db 1, 1, 41h, 1Ah, 49h, 1
F000:FA30 0A 6B 2B 93 4B 1B db 0Ah, 6Bh, 2Bh, 93h, 4Bh, 1Bh
F000:FA36 0B 73 01 6A 2B 3B db 0Bh, 73h, 1, 6Ah, 2Bh, 3Bh
F000:FA3C 0B A3 93 2B 73 23 db 0Bh, 0A3h, 93h, 2Bh, 73h, 23h
F000:FA42 9B 01 4A 73 1B db 9Bh, 1, 4Ah, 73h, 1Bh
F000:FA47 71 61 68 50 54 db 71h, 61h, 68h, 50h, 54h
F000:FA4C loc_1503: ; xref F000:FA62
F000:FA4C 61 popa ; Restore all regs
F000:FA4D C3 retn
F000:FA4E 60 BE 70 FF B9 4C db 60h, 0BEh, 70h, 0FFh, 0B9h, 4Ch
F000:FA54 00 BB FF F9 db 0, 0BBh, 0FFh, 0F9h

F000:FA58 locloop_1504: ; xref F000:FA60
F000:FA58 2E: AC lods byte ptr cs:[si] ; String [si] to al
F000:FA5A 43 inc bx
F000:FA5B F6 D0 not al
F000:FA5D 2E: 32 07 xor al,cs:[bx]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 320

F000:FA60 E1 F6 loopz locloop_1504 ; Loop if zf=1, cx>0

F000:FA62 74 E8 jz loc_1503 ; Jump if zero
F000:FA64 C3 retn
F000:FA65 0009[FF] db 9 dup (0FFh)
F000:FA6E 00 00 00 00 00 00 video_char_tbl db 0, 0, 0, 0, 0, 0 ; Video characters in graphic modes
F000:FA74 00 00 3C 42 A5 81 db 0, 0, 3Ch, 42h, 0A5h, 81h
F000:FA7A BD 99 42 3C 3C 7E db 0BDh, 99h, 42h, 3Ch, 3Ch, 7Eh
F000:FA80 DB FF C3 E7 7E 3C db 0DBh, 0FFh, 0C3h, 0E7h, 7Eh, 3Ch
F000:FA86 44 EE FE FE 7C 38 db 44h, 0EEh, 0FEh, 0FEh, 7Ch, 38h
F000:FA8C 10 00 10 38 7C FE db 10h, 0, 10h, 38h, 7Ch, 0FEh
F000:FA92 7C 38 10 00 18 3C db 7Ch, 38h, 10h, 0, 18h, 3Ch
F000:FA98 DB FF DB 18 3C 00 db 0DBh, 0FFh, 0DBh, 18h, 3Ch, 0
F000:FA9E 18 3C 7E FF 7E 18 db 18h, 3Ch, 7Eh, 0FFh, 7Eh, 18h
F000:FAA4 3C 00 00 00 3C 3C db 3Ch, 0, 0, 0, 3Ch, 3Ch
F000:FAAA 3C 3C 00 00 FF FF db 3Ch, 3Ch, 0, 0, 0FFh, 0FFh
F000:FAB0 C3 C3 C3 C3 FF FF db 0C3h, 0C3h, 0C3h, 0C3h, 0FFh, 0FFh
F000:FAB6 00 7E 42 42 42 42 db 0, 7Eh, 42h, 42h, 42h, 42h
F000:FABC 7E 00 FF 81 BD BD db 7Eh, 0, 0FFh, 81h, 0BDh, 0BDh
F000:FAC2 BD BD 81 FF 0F 07 db 0BDh, 0BDh, 81h, 0FFh, 0Fh, 7
F000:FAC8 07 7D CC CC CC 78 db 7, 7Dh, 0CCh, 0CCh, 0CCh, 78h
F000:FACE 78 CC CC CC 78 30 db 78h, 0CCh, 0CCh, 0CCh, 78h, 30h
F000:FAD4 FC 30 1F 33 3F 30 db 0FCh, 30h, 1Fh, 33h, 3Fh, 30h
F000:FADA 30 70 F0 E0 3F 63 db 30h, 70h, 0F0h, 0E0h, 3Fh, 63h
F000:FAE0 7F 63 63 67 E6 C0 db 7Fh, 63h, 63h, 67h, 0E6h, 0C0h
F000:FAE6 DB DB 3C E7 E7 3C db 0DBh, 0DBh, 3Ch, 0E7h, 0E7h, 3Ch
F000:FAEC DB DB C0 F0 F8 FE db 0DBh, 0DBh, 0C0h, 0F0h, 0F8h, 0FEh
F000:FAF2 F8 F0 C0 00 06 1E db 0F8h, 0F0h, 0C0h, 0, 6, 1Eh
F000:FAF8 3E FE 3E 1E 06 00 db 3Eh, 0FEh, 3Eh, 1Eh, 6, 0
F000:FAFE 30 78 FC 30 30 FC db 30h, 78h, 0FCh, 30h, 30h, 0FCh
F000:FB04 78 30 6C 6C 6C 6C db 78h, 30h, 6Ch, 6Ch, 6Ch, 6Ch
F000:FB0A 6C 00 6C 00 7F DB db 6Ch, 0, 6Ch, 0, 7Fh, 0DBh
F000:FB10 DB DB 7B 1B 1B 00 db 0DBh, 0DBh, 7Bh, 1Bh, 1Bh, 0
F000:FB16 3C 60 3C 66 66 3C db 3Ch, 60h, 3Ch, 66h, 66h, 3Ch
F000:FB1C 06 3C 00 00 00 00 db 6, 3Ch, 0, 0, 0, 0
F000:FB22 FE FE FE 00 18 3C db 0FEh, 0FEh, 0FEh, 0, 18h, 3Ch
F000:FB28 7E 18 7E 3C 18 7E db 7Eh, 18h, 7Eh, 3Ch, 18h, 7Eh
F000:FB2E 30 78 FC 30 30 30 db 30h, 78h, 0FCh, 30h, 30h, 30h
F000:FB34 30 00 30 30 30 30 db 30h, 0, 30h, 30h, 30h, 30h
F000:FB3A FC 78 30 00 00 08 db 0FCh, 78h, 30h, 0, 0, 8
F000:FB40 0C FE 0C 08 00 00 db 0Ch, 0FEh, 0Ch, 8, 0, 0
F000:FB46 00 20 60 FE 60 20 db 0, 20h, 60h, 0FEh, 60h, 20h
F000:FB4C 00 00 00 00 C0 C0 db 0, 0, 0, 0, 0C0h, 0C0h
F000:FB52 FE 00 00 00 00 24 db 0FEh, 0, 0, 0, 0, 24h
F000:FB58 42 FF 42 24 00 00 db 42h, 0FFh, 42h, 24h, 0, 0
F000:FB5E 00 10 38 7C FE FE db 0, 10h, 38h, 7Ch, 0FEh, 0FEh
F000:FB64 00 00 00 FE FE 7C db 0, 0, 0, 0FEh, 0FEh, 7Ch
F000:FB6A 38 10 00 00 00 00 db 38h, 10h, 0, 0, 0, 0
F000:FB70 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FB76 18 18 18 18 18 00 db 18h, 18h, 18h, 18h, 18h, 0
F000:FB7C 18 00 CC CC CC 00 db 18h, 0, 0CCh, 0CCh, 0CCh, 0
F000:FB82 00 00 00 00 36 6C db 0, 0, 0, 0, 36h, 6Ch
F000:FB88 FE 6C FE 6C D8 00 db 0FEh, 6Ch, 0FEh, 6Ch, 0D8h, 0
F000:FB8E 18 7E C0 7C 06 FC db 18h, 7Eh, 0C0h, 7Ch, 6, 0FCh
F000:FB94 30 00 C2 C6 0C 18 db 30h, 0, 0C2h, 0C6h, 0Ch, 18h
F000:FB9A 30 66 C6 00 38 6C db 30h, 66h, 0C6h, 0, 38h, 6Ch
F000:FBA0 38 70 DE CC 76 00 db 38h, 70h, 0DEh, 0CCh, 76h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 321

F000:FBA6 30 30 60 00 00 00 db 30h, 30h, 60h, 0, 0, 0
F000:FBAC 00 00 0C 18 30 30 db 0, 0, 0Ch, 18h, 30h, 30h
F000:FBB2 30 18 0C 00 30 18 db 30h, 18h, 0Ch, 0, 30h, 18h
F000:FBB8 0C 0C 0C 18 30 00 db 0Ch, 0Ch, 0Ch, 18h, 30h, 0
F000:FBBE 00 6C 38 FE 38 6C db 0, 6Ch, 38h, 0FEh, 38h, 6Ch
F000:FBC4 00 00 00 18 18 7E db 0, 0, 0, 18h, 18h, 7Eh
F000:FBCA 18 18 00 00 00 00 db 18h, 18h, 0, 0, 0, 0
F000:FBD0 00 00 00 18 18 30 db 0, 0, 0, 18h, 18h, 30h
F000:FBD6 00 00 00 7E 00 00 db 0, 0, 0, 7Eh, 0, 0
F000:FBDC 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FBE2 00 18 18 00 02 06 db 0, 18h, 18h, 0, 2, 6
F000:FBE8 0C 18 30 60 C0 00 db 0Ch, 18h, 30h, 60h, 0C0h, 0
F000:FBEE 7C CE DE F6 E6 C6 db 7Ch, 0CEh, 0DEh, 0F6h, 0E6h, 0C6h
F000:FBF4 7C 00 18 38 18 18 db 7Ch, 0, 18h, 38h, 18h, 18h
F000:FBFA 18 18 7E 00 7C C6 db 18h, 18h, 7Eh, 0, 7Ch, 0C6h
F000:FC00 06 1C 70 C6 FE 00 db 6, 1Ch, 70h, 0C6h, 0FEh, 0
F000:FC06 7C C6 06 1C 06 C6 db 7Ch, 0C6h, 6, 1Ch, 6, 0C6h
F000:FC0C 7C 00 1C 3C 6C CC db 7Ch, 0, 1Ch, 3Ch, 6Ch, 0CCh
F000:FC12 FE 0C 0C 00 FE C0 db 0FEh, 0Ch, 0Ch, 0, 0FEh, 0C0h
F000:FC18 FC 06 06 C6 7C 00 db 0FCh, 6, 6, 0C6h, 7Ch, 0
F000:FC1E 3C 60 C0 FC C6 C6 db 3Ch, 60h, 0C0h, 0FCh, 0C6h, 0C6h
F000:FC24 7C 00 FE C6 0C 18 db 7Ch, 0, 0FEh, 0C6h, 0Ch, 18h
F000:FC2A 30 30 30 00 7C C6 db 30h, 30h, 30h, 0, 7Ch, 0C6h
F000:FC30 C6 7C C6 C6 7C 00 db 0C6h, 7Ch, 0C6h, 0C6h, 7Ch, 0
F000:FC36 7C C6 C6 7E 06 0C db 7Ch, 0C6h, 0C6h, 7Eh, 6, 0Ch
F000:FC3C 78 00 00 18 18 00 db 78h, 0, 0, 18h, 18h, 0
F000:FC42 00 18 18 00 00 18 db 0, 18h, 18h, 0, 0, 18h
F000:FC48 18 00 00 18 18 30 db 18h, 0, 0, 18h, 18h, 30h
F000:FC4E 0C 18 30 60 30 18 db 0Ch, 18h, 30h, 60h, 30h, 18h
F000:FC54 0C 00 00 00 7E 00 db 0Ch, 0, 0, 0, 7Eh, 0
F000:FC5A 00 7E 00 00 30 18 db 0, 7Eh, 0, 0, 30h, 18h
F000:FC60 0C 06 0C 18 30 00 db 0Ch, 6, 0Ch, 18h, 30h, 0
F000:FC66 3C 66 06 0C 18 00 db 3Ch, 66h, 6, 0Ch, 18h, 0
F000:FC6C 18 00 7C C6 DE DE db 18h, 0, 7Ch, 0C6h, 0DEh, 0DEh
F000:FC72 DE C0 7C 00 38 6C db 0DEh, 0C0h, 7Ch, 0, 38h, 6Ch
F000:FC78 C6 C6 FE C6 C6 00 db 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0
F000:FC7E FC 6E 66 7C 66 6E db 0FCh, 6Eh, 66h, 7Ch, 66h, 6Eh
F000:FC84 FC 00 3E 62 C0 C0 db 0FCh, 0, 3Eh, 62h, 0C0h, 0C0h
F000:FC8A C0 62 3E 00 F8 6E db 0C0h, 62h, 3Eh, 0, 0F8h, 6Eh
F000:FC90 66 66 66 6E F8 00 db 66h, 66h, 66h, 6Eh, 0F8h, 0
F000:FC96 FE 62 60 78 60 62 db 0FEh, 62h, 60h, 78h, 60h, 62h
F000:FC9C FE 00 FE 62 60 78 db 0FEh, 0, 0FEh, 62h, 60h, 78h
F000:FCA2 60 60 F0 00 3E 62 db 60h, 60h, 0F0h, 0, 3Eh, 62h
F000:FCA8 C0 C0 CE 66 3E 00 db 0C0h, 0C0h, 0CEh, 66h, 3Eh, 0
F000:FCAE C6 C6 C6 FE C6 C6 db 0C6h, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h
F000:FCB4 C6 00 3C 18 18 18 db 0C6h, 0, 3Ch, 18h, 18h, 18h
F000:FCBA 18 18 3C 00 1E 0C db 18h, 18h, 3Ch, 0, 1Eh, 0Ch
F000:FCC0 0C 0C 0C CC 78 00 db 0Ch, 0Ch, 0Ch, 0CCh, 78h, 0
F000:FCC6 E6 66 6C 78 78 6C db 0E6h, 66h, 6Ch, 78h, 78h, 6Ch
F000:FCCC E6 00 F0 60 60 60 db 0E6h, 0, 0F0h, 60h, 60h, 60h
F000:FCD2 60 66 FE 00 C6 EE db 60h, 66h, 0FEh, 0, 0C6h, 0EEh
F000:FCD8 FE D6 C6 C6 C6 00 db 0FEh, 0D6h, 0C6h, 0C6h, 0C6h, 0
F000:FCDE C6 E6 F6 FE DE CE db 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh
F000:FCE4 C6 00 7C C6 C6 C6 db 0C6h, 0, 7Ch, 0C6h, 0C6h, 0C6h
F000:FCEA C6 C6 7C 00 FC 66 db 0C6h, 0C6h, 7Ch, 0, 0FCh, 66h
F000:FCF0 66 7C 60 60 E0 00 db 66h, 7Ch, 60h, 60h, 0E0h, 0
F000:FCF6 7C C6 C6 D6 DE 7C db 7Ch, 0C6h, 0C6h, 0D6h, 0DEh, 7Ch
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 322

F000:FCFC 06 00 FC 66 66 7C db 6, 0, 0FCh, 66h, 66h, 7Ch
F000:FD02 78 6C E6 00 7C C6 db 78h, 6Ch, 0E6h, 0, 7Ch, 0C6h
F000:FD08 E0 38 0E C6 7C 00 db 0E0h, 38h, 0Eh, 0C6h, 7Ch, 0
F000:FD0E 7E 5A 18 18 18 18 db 7Eh, 5Ah, 18h, 18h, 18h, 18h
F000:FD14 3C 00 66 66 66 66 db 3Ch, 0, 66h, 66h, 66h, 66h
F000:FD1A 66 66 3C 00 66 66 db 66h, 66h, 3Ch, 0, 66h, 66h
F000:FD20 66 66 66 3C 18 00 db 66h, 66h, 66h, 3Ch, 18h, 0
F000:FD26 C6 C6 C6 D6 FE FE db 0C6h, 0C6h, 0C6h, 0D6h, 0FEh, 0FEh
F000:FD2C C6 00 C6 6C 38 38 db 0C6h, 0, 0C6h, 6Ch, 38h, 38h
F000:FD32 6C C6 C6 00 66 66 db 6Ch, 0C6h, 0C6h, 0, 66h, 66h
F000:FD38 66 3C 18 18 3C 00 db 66h, 3Ch, 18h, 18h, 3Ch, 0
F000:FD3E FE CC 18 30 60 C6 db 0FEh, 0CCh, 18h, 30h, 60h, 0C6h
F000:FD44 FE 00 3C 30 30 30 db 0FEh, 0, 3Ch, 30h, 30h, 30h
F000:FD4A 30 30 3C 00 80 C0 db 30h, 30h, 3Ch, 0, 80h, 0C0h
F000:FD50 60 30 18 0C 06 00 db 60h, 30h, 18h, 0Ch, 6, 0
F000:FD56 3C 0C 0C 0C 0C 0C db 3Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch
F000:FD5C 3C 00 18 3C 66 00 db 3Ch, 0, 18h, 3Ch, 66h, 0
F000:FD62 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FD68 00 00 00 00 00 FF db 0, 0, 0, 0, 0, 0FFh
F000:FD6E 18 18 0C 00 00 00 db 18h, 18h, 0Ch, 0, 0, 0
F000:FD74 00 00 00 00 38 0C db 0, 0, 0, 0, 38h, 0Ch
F000:FD7A 7C CC 76 00 60 60 db 7Ch, 0CCh, 76h, 0, 60h, 60h
F000:FD80 60 7C 66 66 DC 00 db 60h, 7Ch, 66h, 66h, 0DCh, 0
F000:FD86 00 00 7C C4 C0 C4 db 0, 0, 7Ch, 0C4h, 0C0h, 0C4h
F000:FD8C 7C 00 0C 0C 0C 7C db 7Ch, 0, 0Ch, 0Ch, 0Ch, 7Ch
F000:FD92 CC CC 76 00 00 00 db 0CCh, 0CCh, 76h, 0, 0, 0
F000:FD98 78 CC FC C0 7C 00 db 78h, 0CCh, 0FCh, 0C0h, 7Ch, 0
F000:FD9E 38 6C 60 F8 60 60 db 38h, 6Ch, 60h, 0F8h, 60h, 60h
F000:FDA4 E0 00 00 00 76 CC db 0E0h, 0, 0, 0, 76h, 0CCh
F000:FDAA CC 7C 0C 7C E0 60 db 0CCh, 7Ch, 0Ch, 7Ch, 0E0h, 60h
F000:FDB0 60 7C 66 66 66 00 db 60h, 7Ch, 66h, 66h, 66h, 0
F000:FDB6 30 00 70 30 30 30 db 30h, 0, 70h, 30h, 30h, 30h
F000:FDBC 38 00 0C 00 1C 0C db 38h, 0, 0Ch, 0, 1Ch, 0Ch
F000:FDC2 0C CC CC 78 E0 60 db 0Ch, 0CCh, 0CCh, 78h, 0E0h, 60h
F000:FDC8 66 6C 78 6C 66 00 db 66h, 6Ch, 78h, 6Ch, 66h, 0
F000:FDCE 70 30 30 30 30 30 db 70h, 30h, 30h, 30h, 30h, 30h
F000:FDD4 38 00 00 00 CC FE db 38h, 0, 0, 0, 0CCh, 0FEh
F000:FDDA D6 C6 C6 00 00 00 db 0D6h, 0C6h, 0C6h, 0, 0, 0
F000:FDE0 DC 66 66 66 66 00 db 0DCh, 66h, 66h, 66h, 66h, 0
F000:FDE6 00 00 3C 66 66 66 db 0, 0, 3Ch, 66h, 66h, 66h
F000:FDEC 3C 00 00 00 DC 66 db 3Ch, 0, 0, 0, 0DCh, 66h
F000:FDF2 66 7C 60 E0 00 00 db 66h, 7Ch, 60h, 0E0h, 0, 0
F000:FDF8 76 CC CC 7C 0C 0E db 76h, 0CCh, 0CCh, 7Ch, 0Ch, 0Eh
F000:FDFE 00 00 DC 76 60 60 db 0, 0, 0DCh, 76h, 60h, 60h
F000:FE04 60 00 00 00 78 C0 db 60h, 0, 0, 0, 78h, 0C0h
F000:FE0A 78 0C 78 00 10 30 db 78h, 0Ch, 78h, 0, 10h, 30h
F000:FE10 78 30 30 34 18 00 db 78h, 30h, 30h, 34h, 18h, 0
F000:FE16 00 00 CC CC CC CC db 0, 0, 0CCh, 0CCh, 0CCh, 0CCh
F000:FE1C F6 00 00 00 66 66 db 0F6h, 0, 0, 0, 66h, 66h
F000:FE22 66 3C 18 00 00 00 db 66h, 3Ch, 18h, 0, 0, 0
F000:FE28 C6 C6 D6 FE 6C 00 db 0C6h, 0C6h, 0D6h, 0FEh, 6Ch, 0
F000:FE2E 00 00 CC 78 30 78 db 0, 0, 0CCh, 78h, 30h, 78h
F000:FE34 CC 00 00 00 CC CC db 0CCh, 0, 0, 0, 0CCh, 0CCh
F000:FE3A CC 7C 0C 7C 00 00 db 0CCh, 7Ch, 0Ch, 7Ch, 0, 0
F000:FE40 FC 18 30 60 FC 00 db 0FCh, 18h, 30h, 60h, 0FCh, 0
F000:FE46 0E 18 18 70 18 18 db 0Eh, 18h, 18h, 70h, 18h, 18h
F000:FE4C 0E 00 30 30 30 00 db 0Eh, 0, 30h, 30h, 30h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 323

F000:FE52 30 30 30 00 70 18 db 30h, 30h, 30h, 0, 70h, 18h
F000:FE58 18 0E 18 18 70 00 db 18h, 0Eh, 18h, 18h, 70h, 0
F000:FE5E 00 76 DC 00 00 00 db 0, 76h, 0DCh, 0, 0, 0
F000:FE64 00 00 10 38 6C C6 db 0, 0, 10h, 38h, 6Ch, 0C6h
F000:FE6A C6 C6 FE 00 db 0C6h, 0C6h, 0FEh, 0


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:FE6E int_1Ah_entry: ; xref F000:FF17
F000:FE6E E9 EEC0 jmp int_1Ah_RTC ; (ED31)
F000:FE71 FF FF FF FF FF 5F db 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 5Fh
F000:FE77 F2 5B 7F CA CA F2 db 0F2h, 5Bh, 7Fh, 0CAh, 0CAh, 0F2h
F000:FE7D 7F EE 5A 62 5A 2E db 7Fh, 0EEh, 5Ah, 62h, 5Ah, 2Eh
F000:FE83 7A 4E 7F B2 1A 32 db 7Ah, 4Eh, 7Fh, 0B2h, 1Ah, 32h
F000:FE89 2E 6A 4A 32 4F 7F db 2Eh, 6Ah, 4Ah, 32h, 4Fh, 7Fh
F000:FE8F DA C6 EE DA FA db 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:FE94 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:FE9A 33 4B
F000:FE9C 1F 2B 11 24 00 01 db 1Fh, 2Bh, 11h, 24h, 0, 1
F000:FEA2 06 13 90 db 6, 13h, 90h


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:FEA5 int_8_entry: ; xref F000:FEF3
F000:FEA5 E9 EE3F jmp int_8_timer ; (ECE7)
F000:FEA8 50 A0 12 00 A8 20 db 50h, 0A0h, 12h, 0, 0A8h, 20h
F000:FEAE 58 74 03 E9 9C E2 db 58h, 74h, 3, 0E9h, 9Ch, 0E2h
F000:FEB4 50 52 EB 0B 90 EC db 50h, 52h, 0EBh, 0Bh, 90h, 0ECh
F000:FEBA 34 01 24 01 EB 00 db 34h, 1, 24h, 1, 0EBh, 0
F000:FEC0 EB 00 db 0EBh, 0
F000:FEC2 loc_1505:
F000:FEC2 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:FEC3 loc_1506:
F000:FEC3 5A pop dx
F000:FEC4 B0 20 mov al,20h ; ' '
F000:FEC6 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:FEC8 58 pop ax
F000:FEC9 CF iret ; Interrupt return
F000:FECA 0019[00] db 25 dup (0)
F000:FEE3 7D EA 7D EA C3 E2 db 7Dh, 0EAh, 7Dh, 0EAh, 0C3h, 0E2h
F000:FEE9 7D EA 7D EA 54 FF db 7Dh, 0EAh, 7Dh, 0EAh, 54h, 0FFh
F000:FEEF 29 EB 7D EA db 29h, 0EBh, 7Dh, 0EAh
F000:FEF3 FEA5 int_vec_table dw offset int_8_entry ; Initial interrupt vectors
F000:FEF5 E987 dw offset int_9_entry
F000:FEF7 EA7D dw offset int_unused
F000:FEF9 EA7D dw offset int_unused
F000:FEFB EA7D dw offset int_unused
F000:FEFD EA7D dw offset int_unused
F000:FEFF EF57 dw offset int_0Eh_entry
F000:FF01 FF53 dw offset int_return
F000:FF03 F065 dw offset int_10h_entry
F000:FF05 F84D dw offset int_11h_entry
F000:FF07 F841 dw offset int_12h_memsiz
F000:FF09 EC59 dw offset int_13h_entry
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 324

F000:FF0B E739 dw offset int_14h_entry
F000:FF0D F859 dw offset int_15h_entry
F000:FF0F E82E dw offset int_16h_entry
F000:FF11 EFD2 dw offset int_17h_entry
F000:FF13 E000 dw offset int_18h_entry
F000:FF15 E6F2 dw offset int_19h_entry
F000:FF17 FE6E dw offset int_1Ah_entry
F000:FF19 FF53 dw offset int_return
F000:FF1B FF53 dw offset int_return
F000:FF1D F0A4 int_data_table dw offset video_hdwr_tbl1
F000:FF1F EFC7 dw offset dsk_info_1
F000:FF21 0000 video_ptr dw 0
F000:FF23 EA28 int_vec_table_2 dw offset int_70h_clock
F000:FF25 EEC7 dw offset int_71h_LAN
F000:FF27 EA7D dw offset int_unused
F000:FF29 EA7D dw offset int_unused
F000:FF2B EA7D dw offset int_unused
F000:FF2D EED0 dw offset int_75h_80287
F000:FF2F E845 dw offset int_76h_hddone
F000:FF31 FF53 dw offset int_return
F000:FF33 001D[00] db 29 dup (0)
F000:FF50 30 10 00 db 30h, 10h, 0

;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
; External Entry Point
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

F000:FF53 int_return proc near ; xref F000:FF01, FF19, FF1B, FF31
F000:FF53 CF iret ; Interrupt return
int_return endp



; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:FF54 int_5_entry:
F000:FF54 E9 ED05 jmp int_5_prn_scrn ; (EC5C)
F000:FF57 00 00 db 0, 0
F000:FF59 28 43 29 31 39 39 db '(C)1990AMI,404-263-8181'
F000:FF5F 30 41 4D 49 2C 34
F000:FF65 30 34 2D 32 36 33
F000:FF6B 2D 38 31 38 31
F000:FF70 97 AF AF FE FE FE db 97h, 0AFh, 0AFh, 0FEh, 0FEh, 0FEh
F000:FF76 FE FE D5 4D F5 9D db 0FEh, 0FEh, 0D5h, 4Dh, 0F5h, 9Dh
F000:FF7C 55 F5 5D B5 85 8D db 55h, 0F5h, 5Dh, 0B5h, 85h, 8Dh
F000:FF82 FE E5 85 7D 35 9E db 0FEh, 0E5h, 85h, 7Dh, 35h, 9Eh
F000:FF88 FE 8D 85 5D FE CD db 0FEh, 8Dh, 85h, 5Dh, 0FEh, 0CDh
F000:FF8E 85 6D FE 65 F5 9D db 85h, 6Dh, 0FEh, 65h, 0F5h, 9Dh
F000:FF94 D5 97 AF FE FE FE db 0D5h, 97h, 0AFh, 0FEh, 0FEh, 0FEh
F000:FF9A FE FE BE E5 B6 FE db 0FEh, 0FEh, 0BEh, 0E5h, 0B6h, 0FEh
F000:FFA0 F5 94 D4 6C B4 E4 db 0F5h, 94h, 0D4h, 6Ch, 0B4h, 0E4h
F000:FFA6 F4 8C FE 95 D4 C4 db 0F4h, 8Ch, 0FEh, 95h, 0D4h, 0C4h
F000:FFAC F4 5C 6C D4 8C DC db 0F4h, 5Ch, 6Ch, 0D4h, 8Ch, 0DCh
F000:FFB2 64 FE B5 8C E4 8E db 64h, 0FEh, 0B5h, 8Ch, 0E4h, 8Eh
F000:FFB8 9E 97 AF AB db 9Eh, 97h, 0AFh, 0ABh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 325

F000:FFBC 000C[FF] db 12 dup (0FFh)
F000:FFC8 5F F2 5B 7F CA CA db 5Fh, 0F2h, 5Bh, 7Fh, 0CAh, 0CAh
F000:FFCE F2 7F EE 5A 62 5A db 0F2h, 7Fh, 0EEh, 5Ah, 62h, 5Ah
F000:FFD4 2E 7A 4E 7F B2 1A db 2Eh, 7Ah, 4Eh, 7Fh, 0B2h, 1Ah
F000:FFDA 32 2E 6A 4A 32 4F db 32h, 2Eh, 6Ah, 4Ah, 32h, 4Fh
F000:FFE0 7F DA C6 EE DA FA db 7Fh, 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:FFE6 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:FFEC 33 4B
F000:FFEE 1F 2B db 1Fh, 2Bh


; ÍÍÍÍÍÍ BIOS EXTERNAL ENTRY POINT ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

F000:FFF0 power_on_reset: ; xref F000:C086
F000:FFF0 EA F000E05B jmp far ptr loc_1197 ; (E05B)
F000:FFF5 30 38 2F 33 30 2F rom_versn_date db '08/30/90', 0 ; BIOS version date code
F000:FFFB 39 30 00
F000:FFFE FC model_type db 0FCh ; Model FFh = PC
; FEh = 1st XT
; FBh = later XTs
; FCh = AT type (286/386)
; FAh = models 25/30
; F9h = IBM lap-tops
; F8h = models 70/80 (80386)
F000:FFFF 00 model_sub_type db 0

seg_d ends



end
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 326


±±±±±±±±±±±±±±±±±±±± CROSS REFERENCE - KEY ENTRY POINTS ±±±±±±±±±±±±±±±±±±±

seg:off type label
---- ---- ---- ---------------
F000:806C near system_reset
F000:853C near int_10h_video
F000:8FC4 near int_19h_bootup
F000:9B00 near int_9_keyboard
F000:A07C near int_16h_keybd
F000:AE26 near int_13h_floppy
F000:C964 near int_15h_servics
F000:E000 extn int_18h_entry
F000:E005 near int_18h_basic
F000:E2C3 extn int_2_entry
F000:E6F2 extn int_19h_entry
F000:E739 extn int_14h_entry
F000:E82E extn int_16h_entry
F000:E831 near int_0Eh_floppy
F000:E845 near int_76h_hddone
F000:E987 extn int_9_entry
F000:E98A near int_2_NMI
F000:EA28 near int_70h_clock
F000:EA7D near int_unused
F000:EB29 near int_6_badopcode
F000:EC59 extn int_13h_entry
F000:EC5C near int_5_prn_scrn
F000:ECE7 near int_8_timer
F000:ED31 near int_1Ah_RTC
F000:EEC7 near int_71h_LAN
F000:EED0 near int_75h_80287
F000:EF57 extn int_0Eh_entry
F000:EFD2 extn int_17h_entry
F000:F065 extn int_10h_entry
F000:F841 near int_12h_memsiz
F000:F84D extn int_11h_entry
F000:F84F near int_11h_equip
F000:F859 extn int_15h_entry
F000:F85C near int_17h_printer
F000:F8E2 near int_14h_RS232
F000:FE6E extn int_1Ah_entry
F000:FEA5 extn int_8_entry
F000:FF53 near int_return
F000:FF54 extn int_5_entry
F000:FFF0 extn power_on_reset



  3 Responses to “Category : Assembly Language Source Code
Archive   : BIOS386.ZIP
Filename : BIOS.LST

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/