background image

Summary of Contents for PC CONVERTIBLE

Page 1: ......

Page 2: ... ...

Page 3: ... machines and programs piOgramming or services that are not announced in your country Such references or information must not be construed to mean that IBM intends to announce such IBM products programming or services in your country Products are not stocked at the address below Requests for copies ofthe product and for technical information about the system should be made to your authorized IBM P...

Page 4: ...ogramming Volume 1has five sections Section 1 Introduction is an overview ofthe system and the available options Section 2 System Unit describes each functional part of the base system This section also contains the description ofthe interfaces Programming considerations are supported by command code and register descriptions Section 3 System Options describes each available option Section 4 Syste...

Page 5: ...SelfTest Error Codes Volume 2 contains the BIOS listing and is to be used in conjunction with Volume 1 Prerequisite Publications Guide to Operations for the IBM PC Convertible Suggested Reading BASICfor the IBM Personal Computer Disk Operating System Hardware Maintenance and Service for the IBM PC Convertible MACRO Assembler for the IBM Personal Computer iv ...

Page 6: ... 2 4 Common Equates and Data Areas 2 7 Nonmaskable Interrupt Handler BlONMIH 2 26 Keyboard Services BIIKYBD 2 65 Video I O and Print Screen BI2VIDEO 2 77 Diskette Support B13DSKT 2 119 Communications and Printer BIOS B14COMMO 2 143 Time ofDay B15TOD 2 153 System Services B16SYSV 2 168 General Subroutines and Tables B17TABLE 2 191 Release Date Marker 2 241 System Model Byte 2 241 v ...

Page 7: ...Notes vi ...

Page 8: ...routines is automatic and cannot be changed by an application programmer the actual program listings are not included in this manual However it may be useful to understand the function ofthese routines and the initial values they may establish Figure I Ion page 1 2 shows the sequence ofthe steps the power on routines the error indicators returned and the initial values established Figure 1 2 on pa...

Page 9: ...cleared and power off system profile defaults are loaded Power source andbattery check 3 short beeps then Checks for external power Ifno system power off external power checks for good battery Base8KRAMtest Validates first I long and I short 8K ofRAM and clears it to zero beep then system power off Internal modem power on Checks for internal modem presence and applies power to it ifpresent See Fig...

Page 10: ...deo ROM validity tests Checks for video adapter with valid ROM See Volume I for additional information about adapters with system accessible ROM Links to ROM ifvalid LCDfunction test Runs LCD Error 5001 5002 or function test ifthe LCD is present 5003 CRTadapter without ROM Error 0501 presence andfunction tests Ifa CRT adapter without ROM is present test vertical and horizontal syncs Operable displ...

Page 11: ...of interrupt and interrupt power offor types 8 15 Fn Ctl Del sequence System timers tests Tests the One ofthe following system timers Timer O is initialized to 18 2 interrupts per Error 0I03 with icon second rate I long and I short beep then waits for power offor Fn CtljDel sequence Error 0I02 with icon and Fl prompt POST continues DMA controller test Tests the Error 0105 with icon DMA controller ...

Page 12: ...n Initializes interrupt vectors 0 through 32 excluding the video interrupt vectors Serial parallel initializations Initializes the serial and parallel adapter timeout values Internal modem initialization Initializes the internal modem See Volume 1for additional information about initializing the internal modem RAMblock check Checks RAM Error 0164 with icon for good contiguous 8K bytes of and Fl pr...

Page 13: ... with icon I long and I short beep then waits for power offor FnjCtljDel sequence When more than 64K bytes ofRAM is functional error 020I or 0I02 with icon and FI prompt POST continues Diskette drivefunction test Tests One ofthe following the operation ofthe diskette drives Error 060I with icon I long and I short beep then waits for power offor FnjCtljDel sequence Error 060I with icon and FI promp...

Page 14: ...atures are attached See Figure 1 3 on page 1 12 for additional information Internal modem test Checks the Error 1101or 1102 function ofthe internal modem with icon and Fl prompt Serial adapter test Tests the serial Error 1101 or 1201 adapter portion ofthe IBM PC with icon and Fl Convrtible Serial Parallel Adapter prompt ifit is installed Feature adapter ROMpresence Checksum or feature External ada...

Page 15: ...ow and warning is enabled in the system profile Complete POST Ifa system 2 short beeps ifany suspend was active and the resume warmng errors was not cancelled the system state occurred is restored and the application resumed Otherwise the LCD default font is loaded from vectors hex 1F and 44 and the system is booted from drive O Figure 1 1 Part 7 of7 Power on Self Test Sequence 1 8 Power On Self T...

Page 16: ...e hex 400 Clear PRINTER_BASE table hex 408 Turn off power to internal modem and serial parallel adapter Write read hex AAand55to work register at hex3FF To Part 2 Figure 1 2 Part 1 of 3 Internal Modem Presence Test Power On Self Test POST 1 9 ...

Page 17: ...to internal modem Set loop counter t05 Delay 100 ms Write read hex AA and 55 to work register at hex 3FF To Part 3 Figure 1 2 Part 2 of 3 Internal Modem Presence Test 1 10 Power On Self Test POST Set first entry in RS232_BASE table to hex 3F8 ...

Page 18: ...ed flag in equipment word Set first entry in RS232 BASE table to hex 3F8 No Subtract 1 from loop counter Turn off modem power Return to POST To Part 2 Figure 1 2 Part 3 of 3 Internal Modem Presence Test Power On Self Test POST 1 11 ...

Page 19: ...AB table Delay 160 ms Check portable printer status register hex 079 To Part 2 No No Printer Table PRT_TAB Entry hex 078 378 3BC 278 Port Portable Printer Primary Printer Mono Adapter Secondary To Part 3 To Part 3 __ SPortable printer lpresence test Figure 1 3 Part 1 of 7 Printer Communications Presence Test 1 12 Power OnSelf Test POST ...

Page 20: ...d top of forms ESC 4 command To Part 2 Yes Attached Yes Not attached No Not attached Yes Attached To Part 3 To Part 3 To Part 3 Figure 1 3 Part 2 of 7 Printer Communications Presence Test Power On Self Test POST 1 13 ...

Page 21: ... and 2 Store address in PRINTER_BASE table Move PRINTER_BASE table pointer to next entry Move PRT_TAB table pointer to next entry To Part 4 No No Figure 1 3 Part 3 of 7 Printer Communications Presence Test 1 14 Power On Self Test POST To Part 1 ...

Page 22: ...0 ms Write read hex AA and 55 to work register at hex 3FF To Part 5 RS232 presence test No Internal modem attached Move RS23LBASE table pointer to next entry Write read hex AA and 55 to work register at hex 2FF To Part 7 Test for primary Figure 1 3 Part 4 of 7 Printer Communications Presence Test Power On Self Test POST 1 15 ...

Page 23: ...ex 3F8 Move RS232_BASE table pointer to next entry Write read hex AAand55to work register at hex2FF To Part 6 No Not attached Test for secondary Figure 1 3 Part 5 of 7 Printer Communications Presence Test 1 16 Power OnSelf Test POST ...

Page 24: ...le entry to hex 2F8 Move RS232_BASE table pointer to next entry Set equipment word for number of printer and communications ports installed No Figure 1 3 Part 6 of 7 Printer Communications Presence Test Power On Self Test POST 1 17 ...

Page 25: ...wer to adapter Delay 100 ms Yes Attached Yes serial parallel attached Set RS232_BASE table entry to hex 2F8 Move RS23LBASE table pointer to next entry Set equipment word for number of printer and communications ports installed Figure 1 3 Part 7 of 7 Printer Communications Presence Test 1 18 Power On Self Test POST ...

Page 26: ...RM_NMI 2 44 Low Battery Check LOW_BAT_CHK 2 47 Suspend NMI SUSPEND 2 51 Resume RESUME 2 55 Keyboard Services B11KYBD 2 65 Keyboard Interrupt Hex 16 KYBD_IO 2 66 Levell Interrupt Hex 9 KYBD_INT9 2 68 Video I O and Print Screen B12VIDEO 2 77 Print Screen Interrupt Hex 05 PRT_SCRN 2 116 Diskette Support B13DSKT 2 119 Diskette I O Interrupt Hex 13 DSKT_IO 2 120 Bootstrap Loader Interrupt Hex 19 SYS_BO...

Page 27: ... 2 197 Printer Configuration Table PRT_TAB 2 197 ASCII Conversion STR CON 2 198 NMI Handler Entry Point Address NMLINT 2 198 Character Generator Graphics 128 255 CHAR GEN_HI 2 199 Convert AX to ASCII DSP_BYTE 2 203 Boot Strap Loader Entry Address BOOT_STRAP 2 204 Keyboard Noise KB_NOISE 2 204 Communications Baud Rate Table BAUD_TABLE 2 205 RS 232 1 0 Entry Point RS232_10 2 205 Indicate POST Error ...

Page 28: ... 2 229 Diskette Timing Parameters DSKT_BASE 2 229 Printer I O Entry PRINTER IO 2 230 Video Parameters 2 230 Video I O Entry VIDEO_IO 2 231 Video Parameters 2 231 Memory Interrupt Hex 12 MEMORY_SIZE_DET 2 232 Equipment Interrupt Hex 11 EQUIPMENT 2 232 Cassette I O Entry No BIOS Support 2 233 Character Generator Graphics 0 127 CHAR GEN_LO 2 233 Time ofDay Entry TIME_OF_DAY 2 237 Timer 0 Interrupt Ha...

Page 29: ...C7 DSKLBASE FOOD 2384 LCDINIT FOOD E214 DSKLICON FOOD 2473 CRLTEST FOOD EF57 DSKLINT FOOD 2548 VIDEO_LINK FOOD 4FBO DSKLINTE FOOD 261F DSKLTST FOOD 4C2B DSKLIO FOOD 2857 PTR_COM_PRESENCE FOOO 261F DSKLTST FOOD 2966 MODEM_POWER_ON FOOD E6C6 DSP_BYTE FOOD 29EA MODE CONFIG FOOD 1E9A DSP_CONFIG FOOD 2B1A SEND_C FOOD 2304 DSP_FSETM FOOD 2B26 RECLS FOOD E6E7 DSP_HEX FOOD 2B4B MODEM_INIT FOOD 22E2 DSP_IN...

Page 30: ...E3F NELOUTPUT FOOO E261 DEF_SYS_PROF FOOO 3192 NMLFLIH FOOO E269 RTLSIIl SAVE FOOO E2C3 NMLINT FOOO E26D PRLTAB FOOO EF62 PARMS_TPIl35 FOOO E275 PRLTAILEND FOOO EF5A PARMS_TPI48 FOOO E275 STILCON FOOO El8F PAILCHK FOOO E2C3 NMLINT FOOO 03DB POSTCNTL FOOO E2C6 CHAILGEN_H I FOOO 002C POSTMAIN FOOO E6C6 DSP_BYTE FOOO 0043 POSLLOOP FOOO E6EO XLALNIB FOOO EFD2 PRINTEILIO FOOO E6E7 DSP_HEX FOOO FF54 PRI...

Page 31: ...IDEO_LINK VIDEO_PARMS VIDEO_STATE WRITLACCURRENT WRI TE_CCURRENT WRITE_DOT WRITLTTY XlALNIB Program entry poi nt at FOOD E05B 2 6 ROM BIOS FOOD EAAB FOOD EAC9 FOOD EADD FOOD EB43 FOOD EB70 FOOD EC59 FOOD EC5C FOOD ED5F FOOD EF57 FOOD EF5A FOOD EF62 FOOD EFC7 FOOD EFD2 FOOD EFD5 FOOD EFE3 FOOD EFFl FOOD EFFF FOOD F045 FOOD F065 FOOD FOA4 FOOD FOE4 FOOO FOEC FOOD FOF4 FOOD F841 FOOD F84D FOOD F859 F...

Page 32: ...INTERRUPT CONTROLLER PORT 1 NON SPECI FIC END OF INTERRUPT READ IN SERV REG AT INTAOO READ INT REQ REG AT INTAOO IRPT CONTROLLER MASK REG TIMER 0 COUNTER PORT ADDR TIMER 2 COUNTER PORT ADDR TIMER 0 2 CONTROL PORT ADDR ACCESS TIMER2 CONTROLS LATCH TMR VAL R W LEAST 1ST KEY BOA R D S CAN COD E P 0 R T 60H EQU 60H MAIN KEYBOARD SCAN CODE PORT N M I CON T R 0 L P 0 R T 61H NMLCNTL EQU 61H NMI CONTROL ...

Page 33: ...LCDC DIAG CONTROL REGISTER LCD CONTROLLER OATA 75H LCD_DATA EQU 75H DATA REG FOR WRITING TO LCDC REGS LCD_2PAN EQU OIH ON TWO PANEL LCD OFF ONE PANEL LCD LCD_CGA EQU 02H ON LCD EMULATING CGA OFF LCD EMULATING MONO LCD_NORM EQU 04H ON LCD IN NORMAL MODE OFF LCD IN DIAGNOSTIC MODE LCD_ENAB EQU 08H ON LCD ADDR DECODE ENABLED OFF LCD DISABLED LCD_FONT EQU 10H ON ACCESS LCD FONT STORAGE OFF ACCESS REGE...

Page 34: ... EQU 01H SET RS232 FEAT TO PRI ADDR POW E R I N T E R F ACE REG 7FH PWILSTAT EQU 7FH POWER INTERFACE PORT ADDRESS LOW_BAT EQU 80H LOW BATTERY STATUS FLAG EXLPWR EQU 40H EXTERNAL POWER SUPPLI ED SYS_POR EQU 20H SYSTEM POR REQSTD ALT CTL R PON ALRM EQU 10H POWER ACTIVATED BY RTC ALARM HDWR_RESET EQU 08H CAUSE POWER ON RESET EN_SUS_NMI EQU 04H ENABLE SYSTEM SUSPEND NMI REQ_POFF EQU 02H REQUEST SYSTEM...

Page 35: ... REQUEST FOR MASTER DATA RDY TO BE RD FROM CNTLR CONTROLLER IS BUSY DISKETTE CONTROLLER DATA INPUTjOUTPUT REGISTER EQU 03F5H DISKETTE CONTROLLER DATA PORT DRIVE MOTOR SELECT TRACK 0 SENSE PORT DRIVE SENSE EQU CHG_LlNE EQU DRO_SEL_SENSE EQU DRLSEL_SENSE EQU DRO_MOLSENSE EQU DRLMOLSENSE EQU TRACKO_SENSE EQU 03F7H 080H 040H 020H OIOH 008H OOIH DSKT DRIVE CONTROL LlNE SENSE READ ONLY REGISTER MEDIA CH...

Page 36: ... UI E_ENABlE SELBIN SEL24HR SELDAYLIGHT EQU EQU EQU EQU EQU EQU EQU EQU 11 080H 040H 020H OIOH 004H 002H OOIH RTC INTERRUPT STATUS REGISTER RTCINLSTAT RTCIRQ PLINT Al_INT UE_INT EQU EQU EQU EQU EQU 12 080H 040H 020H OIOH RTC CONDITION STATUS REGISTER RTCCOND_STAT EQU VALID_TIME EQU RTC DIAG_STATUS FLAGS RTCDIAG_STAT EQU RTCTIMLBAD EQU BAD_RTCSI G EQU BAD_STOR_CKSUM EQU lCD AlLFAlLED EQU lCD_CHANGE...

Page 37: ...D INITIAL VIDEO MODE NUMBER OF DISKETTE DRIVES I UNUSED NUMBER OF COM DEVICES JOYSTICK ATTACHED INTERNAL MODEM INSTALLED NUMBER OF PRINTERS ATTACHED SYSTEM MEMORY SIZE RTCMEMS_LO RTC MEMS_HI EQU EQU SYSTEM PROFILE INFORMATION SYS_PROF1 21 22 I 15 I 14 I 13 12 I 11 10 I 9 I 8 I 10 MEMORY SIZE LO BYTE POST 10 MEMORY SIZE HI BYTE POST 7 0 I UNUSED RS232 PARL AVAIL ON 8ATTERY MODEM AVAILABLE ON BATTER...

Page 38: ...ONFIGURATION REG DSP_LCD_PRES EQU BOH ON LCD PANEL IS PRESENT DSP_VIDEO_ROM EQU 10H ON FEAT VIDEO ROM SENSED DSP ONO EQU OBH ON MONOCHROME ADAPT PRESENT DSP_CGA EQU 04H ON CGA ADAPTER PRESENT DSP LCD EQU 02H ON LCD CONFIGED AS MONO ADA DSP_CLCD EQU OIH ON LCD CONFIGED AS CGA ADA RTCSYS_STAT EQU 33 SYSTEM POWER ON STATUS EQUATES SEE DEFINITION OF PWR_STAT REGISTER 7FH LCD CRT ADAPTER STATUS INFO RT...

Page 39: ...SCAN CODE SYS_REQ BRK 0052 FN_KEY EQU 052H NMI SCAN CODE FOR FN KEY 003B FLKEY EQU 59 PC1 SCAN CODE FOR F1 KEY OOED HIDN_CODE_EO EQU OEDH HIDDEN CODE SEQUENCE 10 KEYBOARD EQUATES USED IN KEYBOARD SUPPORT TABLES CTL KEYPAD KEYS TO GIVE ASCII CONTROL CODES EXCEPT NUL 0000 NUL EQU 000 0001 SOH EQU 001 0002 STX EQU 002 0003 ETX EQU 003 0004 EOT EQU 004 0005 ENQ EQU 005 0006 ACK006 EQU 006 0007 BEL EQU...

Page 40: ... 27H 20H OOH BUILD PSEUDO SCAN CODES iiios i a ROUTiNE iNTERRUPT ASSiGNMENTS PRTSCFN EQU 05 PRINT SCREEN FUNCTION CALL VIDEO_FN EQU 10H VIDEO I O DSKLFN EQU 13H DISKETTE RS23LFN EQU 14H COMMUNICATIONS SYSSERVJN EQU ISH SYSTEM SERVICES KEYBDJN EQU 16H KEYBOARD PRINTER_FN EQU 17H PRINTER BOOLFN EQU 19H SYSTEM BOOT STRAP TOLFN EQU 1AH TIME OF DAY EQUATES FOR ERRORS IN RETURN CODE OF POST ROUTINES FAT...

Page 41: ...60 BASICPTR LABEL WORD ENTRY FOR RESIDENT BASIC 0078 ORG 01EH 4 0078 DISK POINTER LABEL DWORD 007C ORG 01FH 4 LOCATION OF POINTER 007C EXLPTR LABEL DWORD PO I NTER TO EXT ENS I ON 0110 ORG 044H 4 0110 CSELPTR LABEL DWORD PTR TO LOWER 128 CHAR SET 0128 ORG 04AH 4 0128 RTCA_PTR LABEL DWORD PTR TO USER RTC ALARM VECTOR 01BO ORG 06CH 4 01BO RESUME_PTR LABEL DWORD PTR TO PROGRAM RESUME VECTOR 0400 ORG ...

Page 42: ...ED NUMBER OF PRINTERS ATTACHED POST STATUS FLAG POSLSTATUS DB POST ERROR FLAGS AND STATUS DURING POST FATAL_ERROR EQU 80H POST DETCD FATAL SYS ERROR NON FATAL_ERR EQU 40H POST HAS DETECTED AN ERROR NON_FATAL BAD_RTCMEM EQU 20H RTC MEMORY BAD DO NOT USE FEATURE_ERROR EQU 10H FEAT DEV FAILED ROM_SCAN MFG ODE EQU 02H MANUFACTURING MODE ACTIVE POSLACTlVE EQU 01H POST IS CURRENTLY ACTIVE M E M 0 R Y S ...

Page 43: ...EQU 40H CAPS LOCK STATE TOGGLED NUM_STATE EQU 20H NUM LOCK STATE TOGGLED SCROLL_STATE EQU 10H SCROLL LOCK STATE TOGGLED ALT_SHIFT EQU 08H ALTERNATE SHI FT KEY PRESSED CTLSHIFT EQU 04H CONTROL SHIFT KEY PRESSED LEFLSHI FT EQU 02H LEFT SHI FT KEY PRESSED RIGHLSHIFT EQU 01H RIGHT SHIFT KEY PRESSED BOA R 0 F LAG 1 KB_FLAIi 1 DB SECOND BYTE OF KEYBOARD STATUS INS_SHIFT EQU 80H INSERT KEY IS DEPRESSED C...

Page 44: ...EDIILCHANGE EQU RECORD_NOLFND EQU WRITE_PROTECT EQU BAD J DDR ARK EQU BAD_CMD EQU 80H 40H 20H 10H 09H 08H 06H 04H 03H 02H 01H RETURN CODE STATUS BYTE ATTACH FAILED TO RESPOND SEEK OPERATION FAILED NEC CONTROLLER HAS FAILED BAD CRC ON DISKETTE READ ATMPT TO DMA CROSS 64K BNDRY DMA OVERRUN ON OPERATION MEDIA CHANGED ON 3 5 DRIVES REQUESTED SECTOR NOT FOUND WRITE ATTEMP ON WRT PROT DSK ADDRESS MARK N...

Page 45: ...H RESELFLAG DW SOFLRESET EQU 1234H SYS3USPEND EQU 5678H MFG_MEM MODE EQU 9ABCH LOOP MODE EQU OABCDH OW 2 DUP TIME DSPLY BLANKED SECS TIME SYSTEM IS POWERED OFF FLAG TO SHOW AN INTERRUPT LOW WORD OF TIMER COUNT HIGH WORD OF TIMER COUNT TIMER ROLLED SINCE LAST RD MAX FOR BCD SECONDS MAX FOR BCD MINUTES MAX FOR BCD HOURS TIMER COUNTS PER SECOND TIMER COUNTS PER MINUTE 65543 10000H 65543 TOO LARGE FOR...

Page 46: ...BYTE 0 IF NO DRIVE 17 615141312 01 1 1 1 1 MEDIA TYPE CODES ALWAYS III FOR 720KB MEDIA RESERVED ALWAYS 0 MEDIA TYPE ESTABLISHED ALWAYS 1 DOUBLE STEP REQUIRED NOT SUPPORTED ALWAYS 0 DATA TRANSFER RATE FOR THIS DRIVE ALWAYS 10 250 KBS MEDIA_TYPLDRO DB MEDIA_TYPE_DRI DB MEDI 720KB EQU DB LOW BATTERY WARNING COUNTER DB 97H DISKETTE MEDIA TYPE DRIVE 0 DISKETTE MEDIA TYPE DRIVE 1 MEDIA TYPE FOR 720 KB D...

Page 47: ... I NTERVAL_WAIT EQU KEYBOARD NMI PRE PROCESSING ORG OB4H KB AREA2 KB_NMLCNTL P60_LOADED FUNCSTATE XLATE_BUSY CLICK ON KEYPAD_STATE B_PEND1 B_PEND2 P60_HOLD_BYTE LAST_CL I CK KEY KB_NMLHEAD KB_NMLTAIL KB_NMLBUFFER KLNMLBLTH KB AREALLNG DATA ENDS LABEL DB EQU EQU EQU EQU EQU DW OW DB DB DB DB DB EQU EQU 04H POWER ON BY ALARM PENDING 02H USER ALRM I NT 4AH PNDNG SPND 01H INTVL WAIT CURRENTLY ACTIVE F...

Page 48: ...ER 10 0005 COLOILID EQU 05 COLOR CRT ADAPTER 10 0006 DSKLID EQU 06 DISKETTE 10 0009 PPRLID EQU 09 PARALLEL PRINTER 10 0010 APRLID EQU 10H ALT PARALLEL PRINTER ID 0012 RS23LID EQU l2H RS232 PORT 10 0011 MODE ID EQU llH MODE ID 0050 LCLID EQU 050H LCD DEVICE 10 0051 CPRLID EQU 05lH COMPACT PRINTER PORT ID 0005 POSLICON DB ICON NUMBER FOR FAILING AREA 0001 SYSTEM EQU 01 SYSTEM UN IT I CON 0002 FEATUR...

Page 49: ...B 16384 DUP VIDEO_RAM ENDS INCLUDE SROMMACS MAC Common Macros IDENT MACRO NAME SNAME ENDM SAVE MACRO PUSH AX PUSH BX PUSH CX PUSH OX PUSH BP PUSH SI PUSH DI PUSH ES PUSH DS ENDM RESTORE MACRO POP DS POP ES POP DI POP SI POP BP POP DX POP CX POP BX POP AX ENDM 2 24 ROM BIOS SNAME SEQ REV DISPATCH MASK FOR DSP_TEST VIDEO ROM CGA AVAILABLE VIDEO ROM MONO AVAILABLE DISPATCH VIDEO_LINK MONO AVAILABLE C...

Page 50: ...L MACRO JLABEL JNL 5 I F NOT LESS JUMP AROUND JUMP JMP JLABEL ELSE TAKE A LONG JUMP ENDM JFNL MACRO JLABEL JL 5 I F NOT NOT LESS JUMP AROUND JMP JLABEL ELSE TAKE A LONG JUMP ENDM JFO MACRO JLABEL JNO 5 I F NOT OVERFLOW JUMP AROUND JMP JLABEL ELSE TAKE A LONG JUMP ENDM JFNO MACRO JLABEL JO 5 I F NOT NOT OFLOW JMP AROUND JMP JLABEL ELSE TAKE A LONG JUMP ENDM JFP MACRO JLABEL JNP 5 I F NOT PRTY E JMP...

Page 51: ...IVE NAME THIS ROUTINE SUPPORTS THE SIX TYPES OF NMI SOURCES COPYRIGHT 7396 917 C COPYRIGHT IBM CORP 1985 REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120 2083 CHANGE LEVEL ECOOO FUNCTION THIS MODULE HANDLES NON MASKIBLE INTERRUPTS THE SIX TYPES OF NMI S ARE DISKETTE NMI I O INSTR ISSUED WITH CONTROLLER OFF I O CHANNEL CHECK I O DEVICE CHANNEL ERROR SYSTEM SUSPEND 2 SECONDS BEFORE POWER OFF OCCURS ...

Page 52: ... OW FLGSAVE OW REGSAVE ENDS REGLSAV STRUC OW 8 DUP ALSAVE DB AHSAVE DB REGLSAV ENDS LFLAG IrLINSTR OULINSTR EQU EQU EQU 0200H OECH OEEH ASSUME DS DATA ES NOTHING NMLFLIH PROC FAR OX SAVE AREA ON STACK CX SAVE AREA ON STACK BX SAVE AREA ON STACK AX SAVE AREA ON STACK OFFSET SAVE AREA ON STACK SEGMENT SAVE AREA ON STACK FLAGS SAVE AREA ON STACK AL SAVE AREA ON STACK AH SAVE AREA ON STACK INTERRUPT F...

Page 53: ...RTCALARM_NMi OTHERWISE MUST BE ALARM KYBD_PREP KYBD_CLR DSKLRESYNC RTCALARM_NMI ROUTINES RETURN HERE 0050 NMIH_EXIT 0050 FA CLI 0051 BO 07 MOV AL DI SABLLSLEEP CLOCICRUN DISABLE NMIS 0053 E6 72 OUT CLOCICCTL AL 0055 E4 61 IN AL NMLCNTL 0057 24 F7 AND AL NOT OIS ALARM RE ENABLE ALARM NMI 0059 E6 61 OUT NMLCNTL AL 005B E4 62 IN AL NMLSRC READ NMI SOURCE FLAGS 005D 24 DF AND AL NOT TlMERLSN SAVE ALL ...

Page 54: ...ESTORED TO THE FDC TRACK COUNTER S FOR THE FDC AND ARRAY IN SYNC NMI S ENABLED PORT 77H SETUP TO REISSUE THE DISKETTE I O COMMAND ERROR EXIT CONDITIONS NONE REGISTERS MODIFIED AX BX CX DX ES AND SI INTERNAL DATA AREAS TABLES BIOS DATA AREA AT SEGMENT 40H EXTERNAL l Y REFERENCED ROUTINES REFER TO EXTRN LIST EXTERNALLY REF RENCED DATA AREAS REFER TO EXTRN LIST r 006F 006F 81 7E OA 03F2 0074 75 14 00...

Page 55: ...CK IF NMI CAUSED BY POWER ON DURING MIDDLE OF CONTROLLER RESET OOBB 81 7E OA 03F2 CMP DXSAVE BP DRIVE_CNTL CHECK FOR OX RESET PORT JUMP I F NOT OOCO 75 13 00C2 8A 46 10 00C5 A8 04 00C7 75 OC JNE DSKLRS02 MOV AL ALSAVE BP TEST AL FDCRUN JNZ DSKLRS02 GET ORIGI NAL AL REG IS FDC RESET OFF YES THEN NOT A RESET POWER ON REQUEST IN THE MIDDLE OF THE CONTROLLER RESET 00C9 DC 04 OOCB EE OOCC E4 77 OOCE 24...

Page 56: ...OUT DX AL 0131 80 26 003E R 7F AND SEELSTATUS NOT INLFLAG RESET THE I NTERRUPT FLAG 0136 FB STI ALLOW INTERRUPTS 0137 EB 0231 R CALL WAILINTRPT CHECK FOR FDC TO GENERATE AN INT 013A BF 01F4 R MOV DI OFFSET RESYNCOUT2 ERROR EXIT FOR NECOUTPUT 0130 57 PUSH 01 013E 8B F9 MOV DI CX SAVE TRACK COUNTERS 0140 B9 0004 MOV CX 4 READ 4 DRIVES STATUS 0143 NMLRSETLP 0143 B4 08 MOV AH READ_INLSTATUS READ INTER...

Page 57: ...4 OF 01C6 84 OF 01C8 E8 0000 01CB B4 01 01CD E8 0000 01DO 8A E5 0102 E8 0000 0105 01D5 E8 0231 0108 B4 08 010A E8 0000 0100 E8 0000 JZ SEEK DONE ONLY DRIVE 0 INSTALLED MOV AH SEEK CMD SEEKL COMMAND FOR THE FDC CALL NECOUTPUT OUTPUT IT TO THE FOC MOV AH Ol SEEK DRIVE 1 CALL NECOUTPUT OUTPUT IT TO THE FDC MOV AH CH DR 0 TRACK TO SEEK TO CALL NECOUTPUT OUTPUT TO THE FDC SEEK DONE CALL WAILINTRPT CHEC...

Page 58: ...ROC NEAR PUSH CX MOV OX FOCSTATUS SUB CX CX WAILBUSY IN AL OX TEST AL FDCBUSY JZ FOCDONE LOOP WAIT_BUSY FOCDONE POP CX RET DROP_BUSY ENDP SAVE REGISTER VALUE POINT TO MASTER STATUS PORT TIMING COUNT FOR LOOP READ THE MASTER PORT TEST FOR BUSY TO DROP FDC NO LONGER I S BUSY RESTORE ORIGINAL VALUE THIS ROUTINE WILL WAIT FOR AN INTERRUPT FROM THE FOC WAILINTRPT PROC NEAR PUSH CX PUSH BX SAVE BX MOV B...

Page 59: ... KYBD_PREP KEYBOARD SCAN CODE NMI ROUTINE KEYBOARD CLEAR NMI ROUTINE KYBD_CLR KYBD_XLT KEYBOARD SCAN CODE TRANSLATION ROUTINE MODULE SIZE 816 BYTES ENTRY CONDITIONS PURPOSE OF ENTRY TO PROCESS A KEYSTROKE INPUT CONDITIONS NIA RESTRICTIONS NIA INTERNALLY REFERENCED ROUTINES KYBD_XLT SCAN CODE TRANSLATION EXIT CONDITIONS NORMAL EXIT CONDITIONS KEYSTROKE PROCESSED ERROR EXIT CONDITIONS NIA REGISTERS ...

Page 60: ... 2 CONDITIONS ARE MET A CALL IS MADE TO THE XLATE ROUTINE WITH THE KEY SCAN CODE IN AL ELSE THE SCAN CODE IS BUFFERED IN THE 16 POSITION NMI SCAN CODE BUFFER AT THE BUFFER TAIL IF PORT 60 IS NOT ACTIVE A CALL IS MADE TO THE XLATE ROUTINE WITH THE KEY SCAN CODE TO BE TRANSLATED AT THE BUFFER HEAD THE FIRST LEVEL NMI INTERRUPT HANDLER SAVES REGISTERS AND MOVES THE ADDRESS OF DATA TO THE OS REGISTER ...

Page 61: ...KEY MAKE 0292 74 10 JE PREP29 IF TYPAMATIC SKIP CLICK FIRST KEY HIT NOT TYPAMATIC 0294 A2 OOBA R MOV LASLCLI CK KEY AL THIS KEY IS NOW LASLCLICK KEY 0297 F6 06 00B4 R 08 TEST KB_NMLCNTL CLICK ON IS AUDIO FEEDBACK ENABLED 029C 74 13 JZ PREP29 NO GO TO BUFFER PROCESSING 029E BB 0001 MOV BX lH DURATION OF CLICK 02A1 B9 0020 MOV CX 20H FREQUENCY OF CLICK 02A4 8A DO MOV DL AL SAVE KEYSTROKE 02A6 E8 075...

Page 62: ...F6 IE 02F7 07 KYBD_CLR KEYBOARD CLEAR NMI PROCESSING DESCRIPTION THIS ROUTINE IS JUMPED TO FROM THE FIRST LEVEL NMI INTERRUPT HANDLER WHEN THE INTERRUPT IS THE RESULT OF PORT 60 BEING CLEARED A BUFFER EMPTY TEST IS MADE TO DETERMINE I F THERE ARE MORE KEY SCAN CODES TO BE XLATED IF THE BUFFER IS NOT EMPTY A CALL IS MADE TO THE XLATE ROUTINE TO PROCESS THE KEY AT THE BUFFER HEAD THE FIRST LEVEL NMI...

Page 63: ...OUT IN AL NMLCNTL AL NOT CLR_KEYBD NMLCNTL AL GET NMI CONTROL PORT SET CLEAR KYBD BIT TO 0 CALL TRANSLATE TO SEE IF ANYTHING IN QUEUE AND TRANSLATE IF SO CALL JMP KYBD_XLT NMIH_EXIT XLATE AND WRITE TO PORT 60 GO TO 1ST LEVEL INTERRUPT HANDLER PROCEDURE END Translate Scan Code KYBD_XLT 0319 KYBD_XLT KEYBOARD SCAN CODE XLATE ROUTINE DESCRIPTION IF THE SCAN CODE BUFFER IS EMPTY OR PORT 60H IS LOADED ...

Page 64: ...OT PAST END OF BUFFER 0345 B3 00 MOV BL O PAST END SET TO START 0347 XLTl5 0347 88 IE OOBB R MOV KB_NMLHEAD BL UPDATE BUFFER HEAD START OF SCAN CODE TRANSLATION ENABLE NMIS AND RESTORE INTERRUPT STATE TO PRE NMI CONDITION 034B E8 076E R CALL NMLCYCLE CYCLE NMI MASK RESTORE INT FLAGS 034E 8A EO MOV AH AL AH ORIGINAL NMI SC 0350 3C FF CMP AL OFFH KEYBOARD OVERRUN 0352 75 14 JNE XLTl8 NO GO LOOK FOR ...

Page 65: ...E 0000 E MOV SI OFFSET KBFUNL TABLE LENGTH XLT25 83 EE 02 SUB SI 2 SEARCH FUNCTION TABLE FOR MATCH 2E 8B 9C 0000 E MOV BX KBFUN_TBL SI BH NMI SC ENTRY BL P60 EXTENDED SC 3A C7 CMP AL BH CHECK FOR MATCH 74 OA JE XLT28 JMP I F MATCH FOUND 01 E1 SHL ex I CX SEARCH KEY BRK PEND FLAG 83 FE 00 CMP SI O IS SEARCH COMPLETE 75 ED JNE XLT25 NO GO CHECK NEXT ENTRY THIS KEY IS NOT A FUNCTION KEY XLT27 03C5 E9...

Page 66: ... 75 09 0420 09 OE 00B7 R 0424 BO 54 0426 E9 050C R 0429 0429 31 OE 00B7 R 0420 BO 04 042F E9 050C R XLT33 TEST JNZ OR MOV JMP XLT34 XOR MOV JMP AH BREAILBIT XLT34 B_PEND2 CX AL SYSREQ_MAKE XLT90 B_PEND2 CX AL SYSREQ_BREAK XLT90 IS THIS A REQUEST KEY MAKE NO GO RESET BREAK PENDING FLAG YES SET KEYS BREAK PENDING FLAG SET AL TO SYSTEM REQUEST MAKE GO WRITE TO PORT 60 BREAK KEY RESET BRK PEND FLAG SE...

Page 67: ...X I CX SEARCH KEY BRK PEND FLAG 83 FE 00 CMP SI O IS SEARCH COMPLETE 75 ED JNE XLT44 NO GO CHECK NEXT ENTRY THIS KEY IS NOT A KEYPAD KEY 049D EB 37 JMP SHORT XLT60 GO XLATE NORMAL 049F 049F 04A2 04A4 04A8 04AA 04AA 04AE 04BO 04B4 04B6 04B8 04BB 04BD 04CO F6 C4 80 75 06 A MATCH HAS BEEN FOUND IN THE KEYPAD TABLE SET RESET THE KEYS BREAK PENDING FLAG THEN WRITE TO PORT 60 SEND HIDDEN CODE FIRST FOR ...

Page 68: ...RT DELETE XLT62 OR AL AH USE NMI SC BREAK BIT CALL NUM_STATE_FIX MAKE NUM_STATE RLCT KEYPAD_STATE JMP SHORT XLT90 GO WRITE TO PORT 60 CURSOR INSERT OR DELETE KEY XLT65 OR AL AH USE NMI SC BREAK BIT THE CURSOR FUNCTION CURSOR INSERT AND DELETE KEYS ARE NO LONGER IN THE KEYPAD AREA OF THE KEYBOARD WHEN THEIR SCAN CODES ARE WRITTEN TO PORT 60 THE PORT 60 KEYPAD STATE MUST BE INACTIVE A PORT 60 SHIFT ...

Page 69: ...CK IT CAUSES A PARITY CHECK ICON TO BE DISPLAYED ON THE ACTIVE DISPLAY AFTER THE DISPLAY SCREEN IS CLEARED SUSPEND IS DISABLED AND THE KEYBOARD IS WAITING FOR A FUNCTION CONTROL DELETE KEY SEQUENCE CHAN_CHK PROC NEAR MOV AH O MOV AL CRLMODE INT lOH SUB DX DX MOV BP OFFSET PAR_CHK PUSH CS INIT AND SET MODE FOR VIDEO CALL VI DEO_JO PROCEDURE SET ROW COLUMN FOR ICON GET ADDRESS OF PARITY CHECK POP ES...

Page 70: ... 0589 0589 058A 058C B4 OB MOV AH RTCMODE GET INTERRUPT MODE CONTROL E8 0747 R CALL GELRTCNMI 24 BF AND AL NOT PI E_ENABLE RESET PERIODIC INTERRUPT E8 0750 CALL PULRTCNMI CLEAR EVENLWAIT ACTIVE FLAG AND SET USERS EVENT COMPLETE FLAG 80 26 OOAO R FE AND RTCWAILFLAG NOT INTERVALWAIT RESET INT WAIT FLAG C5 3E 0098 R LOS DI DWORD PTR USEILFLAG OS 01 USERSJLAG ADDRESS C6 05 80 MOV BYTE PTR 01 POSTED SE...

Page 71: ...PLAY BLANK COUNT 0506 RTCINL1L1 0506 83 3E 0067 R 00 CMP DSP_BLANK_CTR 0 05DB 74 06 0500 FF OE 0067 05El 74 36 05E3 05E3 83 3E 0069 05E8 74 50 05EA FF OE 0069 05EE 74 46 05FO 83 3E 0069 05F5 75 50 05F7 E8 076E R 05FA E8 0759 R 05FD BB 003C 0600 B9 0081 0603 E8 0000 0606 B9 050A 0609 E2 FE 060B BB 0030 060E B9 00A1 0611 E8 0000 0614 E8 0762 0617 EB 2E 0619 0619 BO 00 061B E6 74 0610 E4 75 061F 24 B...

Page 72: ...LD UP ALL MAIN LEVEL PROCESSING AND LOCK OUT NON I NTERRUPT DR I VEN PROCESS I NG ONCE TH E USER ACKNOWLEDGES THE WARNING EITHER BY PRESSING A KEY OR APPLYING EXTERNAL POWER THE SCREEN FLASHING WILL STOP AND MAIN LEVEL PROCESSING WILL CONTINUE AT SUCCESSIVE TWO MINUTE INTERVALS THE LOW BATTERY WARNING WILL BE REISSUED IF THE LOW BATTERY CONDITION STILL EXISTS OR EXTERNAL POWER HAS NOT BEEN APPLIED...

Page 73: ...STATUS LOW_BALHOLD ARE WE IN HOLD STATE 0690 74 OC 069F BO 00 06Al E6 74 06A3 E4 75 06A5 34 40 06A7 OC 20 06A9 E6 75 06AB 06AB FE OE 0093 06AF 74 03 06Bl E9 0746 R 06B4 F6 06 0015 06B9 74 08 06BB 80 26 0015 06CO E9 0746 R 06C3 06C3 BO OB 06C5 E6 20 06C7 E4 20 06C9 OA CO 06C8 74 06 L2 NO JUMP AROUND SCREEN TOGGLING TOGGLE SCREEN ON AND OFF WHILE WAITING FOR A KEY TO BE PRESSED HOLD STATE MOV AL LCD...

Page 74: ...ND TO EXIT THIS LOOP EITHER A KEY IS PRESSED EXTERNAL POWER IS APPLIED OR THE TWO MINUTE COUNTER GOES TO O BY APPLYING EXTERNAL POWER SEE LOJ OR BY THE TWO MINUTE COUNTER GOING TO 0 SEE L2 WILL FORCE OFF THE WAITING FOR KEY FLAG IF THE TWO MINUTE COUNTER GOES TO 0 THE SYSTEM WILL SET UP TO SUSPENO MOV MOV PUSH POP MOV INT LOOP UNTIL KEY PRESSED AX 4104H FUNCTION 41H AL 04 RETURN IF ZERO BX LOW_BAL...

Page 75: ...PULRTCNMI ENDP FORCE SPEAKER ENABLE ON ON EXIT AH HAS OLD SPEAKER CONDITION SPKR_ON PROC NEAR IN AL NMLCNTL FORCE SPEAKER ON MOV AH AL OR AL EN_SPKR OUT NMLCNTL AL RET SPKR_ON ENDP RESTORE SPEAKER TO PREVIOUS STATE ON INPUT AH HAS OLD SPEAKER CONDITION SPKfLRESTORE PROC NEAR AND AH EN_SPKR IN AL NMLCNTL RESTORE SPEAKER CONTROL AND AL NOT EN_SPKR OR AL AH OUT NMLCNTL AL RET SPKR_RESTORE ENDP NMLCYC...

Page 76: ...MODE ADDRESS 07A4 EC IN AL DX GET CURRENT MODE LCD ONLY 07A5 8A E8 MOV CH AL CH CURRENT DISPLAY MODE 07A7 BO 00 MOV AL LCD_FUNCT 07A9 E6 74 OUT LCD_INDX AL SELECT LCD CONTROL REGISTER 07AB E4 75 IN AL LCD_DATA 07AD 8A F8 MOV BH AL BH CURRENT LCD CONTROL 07AF 24 BF AND AL NOT PANELENABLE TURN OFF LCD PANEL 07Bl E6 75 OUT LCD_DATA AL 07B3 2A DB SUB BL BL BL SUSPEND ERROR FLAGS TEST FOR LCD OPERABLE ...

Page 77: ... 02 JE SUS_OOlA JUMP IF SO 07FE OC 02 OR AL LCD_CGA OTHERWISE SET LCD AS CGA 0800 SUS_OOlA 0800 E6 75 OUT LCD_DATA AL WRITE TO LCD CONTROL 0802 EB 03 90 JMP SUS_003 SET SUSPEND UNSUCCESSFUL DUE TO LCD INACCESSABI LITY 0805 SUS_002 0805 B3 02 MOV BL LCD_NOLACTIVE SET FLAG FOR LCD INOPERABLE THIS WILL NOT BECOME AN ERROR CHECK FOR DISKETTE MOTORS OFF 0807 SUS_003 0807 52 PUSH OX SAVE LCD ADDRESS 080...

Page 78: ...A8 80 74 IB B4 OE E8 0747 OA C3 OA DB 74 13 F6 Cl 03 75 08 F7 C6 0080 74 05 24 FD E8 0750 E9 092C R 8A CF 8E C7 2B FF E4 75 OC 10 E6 75 8C DO AB 8B C4 AB 8A C6 AA AL RESUMLENABLE SUS_04D SET DIAGNOSTIC FLAGS IN RTC AREA SUS_04B MOV AH RTCDIAG_STAT CALL GELRTCNMI OR AL BL OR BL BL JZ SUS_04E GET SYSTEM PROFI LE SYSTEM TO BE RESUMED JUMP I F YES UPDATE DIAGNOSTIC STATUS SET FLAGS ANY ERRORS NO THEN ...

Page 79: ...TOSB 08B4 BO DO MOV AL OOOH SELECT TIMER 2 AND MSB 08B6 E2 F1 LOOP SUS_006 SAVE INTERRUPT CONTROLLER STATE 08B8 E4 21 IN AL INTA01 GET INTERRUPT MASK 08BA AA STOSB 08BB BO 04 MOV AL 04 SELECT INTERRUPT BYTE 0 08BD E6 72 OUT CLOCLCTL AL 08BF E4 63 IN AL 63H SAVE BYTE 0 08C1 AA STOSB 08C2 BO 44 MOV AL 44H SELECT INTERRUPT BYTE 1 08C4 E6 72 OUT CLOCLCTL AL 08C6 E4 63 IN AL 63H SAVE BYTE 1 08C8 AA STO...

Page 80: ...SE SYSTEM STACK FROM HERE ON 09ll BO 23 MOV AL RTCBMEMJKSL ADDRESS CHECKSUM LOW SAVE AREA 0913 E6 70 OUT RTCR_PORT AL OUTPUT ADDRESS 0915 8A C3 MOV AL BL 0917 E6 71 OUT RTCD_PORT AL OUTPUT DATA 0919 BO 24 MOV AL RTCBMEM_CKSH ADDRESS CHECKSUM HI SAVE AREA 091B E6 70 OUT RTCR_PORT AL OUTPUT ADDRESS 0910 8A C7 MOV AL BH 091F E6 71 OUT RTCD_PORT AL OUTPUT DATA SET SUSPEND FLAG ASSUME DS DATA 0921 B8 M...

Page 81: ...ET LENGTH OF TABLE 0965 RES_002 0965 2E 8A 05 MOV AL CS DI GET REGISTER ADDRESS 0968 47 INC DI 0969 EE OUT DX AL OUTPUT REG NUMBER 096A 42 INC DX GET DATA PORT 096B AC LODSB RETRIEVE REGISTER VALUE 096C EE OUT DX AL 0960 4A DEC DX SET DX BACK TO INDEX PORT 096E E2 F5 LOOP RES_002 RESTORE SYSTEM TIMERS 0970 AC LODSB GET TIMER 0 MODE 0971 24 3F AND AL 3FH TURN OFF UPPER TWO BITS 0973 8A EO MOV AH AL...

Page 82: ...8 09CD AC LODSB GET INTERRUPT MASK 09CE 8A EO MOV AH AL AH HAS INTERRUPT MASK 0900 AC LODSB GET I NTERRUPT BYTE 0 0901 8A F8 MOV BH AL 0903 AC LODSB GET INTERRUPT BYTE 1 0904 8A 08 MOV BL AL BU I LD AND RESTORE ICW 1 0906 24 08 AND AL 08H AND OFF ALL BUT LEVEL EDGE 0908 DC 10 OR AL 10H BIT 4 MUST BE 1 09DA E6 20 OUT INTAOO AL OUTPUT ICWI BUILD AND RESTORE ICW 2 09DC 8A C7 MOV AL BH GET INTERRUPT T...

Page 83: ...OUT COUNTERS TO BE RELOADED AND A CHECK FOR DISKETTE CHANGE TO BE PERFORMED OA34 80 26 0016 R 04 AND BIOS_STATUS DCL_SUPPORTED SAVE DCL SUPPORT FLAG OA39 80 OE 0016 R 22 OR BIOS_STATUS KYBD ACTI VE FORCE_DCL OA3E 8B C5 MOV AX BP GET OLD EQUIPMENT INFO OMO 80 26 0010 R CF AND BYTE PTR EQUIP FLAG NOT INILDISP CLR NEW VIDEO FLAGS OM5 24 30 AND AL INILDISP ONLY SAVE OLD VIDEO FLAGS OM7 08 06 0010 R OR...

Page 84: ...ALL TEST JNZ AH RTCSYS_PROFI GELRTCNMI AL MODEM_BATT RES_009 OPERATE COMI ON BATTERY YES THEN JUMP ON BATTERY POWER AND MODEM PROFILE INDICATES NO BATTERY OPERATION MOV SUB CALL JMP BL ACLMODEM BH BH COM_POWER RES_OlD SPECI FY MODEM OFF I NO I CATE POWER OFF REQUEST TURN OFF PRIMARY COM POWER SKI P MODEM _CONFIG MODEM IS POWERED ON SO RESUME CONFIGURATION RES_009 MOV CALL CALL AH RTCMOD_PROFI GELR...

Page 85: ...L TIi iE CLOCK I NTERRUPT MODE OAEl B4 OB MOV AH RTC MODE OAE3 E8 0750 R CALL PULRTCNMI ENABLE PRINTER PORTS OAE6 BA 027A MOV DX 27AH START WITH SECONDARY OAE9 BO DC MOV AL OCH OAEB EE OUT DX AL OAEC 80 C6 01 ADD DH l OAEF EE OUT DX AL DO PRIMARY OAFO BA 03BE MOV DX 03BEH OAF3 EE OUT DX AL DO MONO PRINTER PORT ENABLE SYSTEM SUSPEND NMI OAF4 E4 7F IN AL PWILSTAT OAF6 OC 04 OR AL EN_SUS_NMI ENABLE S...

Page 86: ...OCAL EQUATES GOOD_DATA 14 ADDED TO SI RESUME OR DI SUSPEND EQU OAAH THIS MEANS THAT THE FOLLOWING 6 8YTES ARE VALID SUSPEND DATA ASYNCSUSPEND PROC NEAR PUSH PUSH AX DX SAVE REGISTERS USED GET RTCFEALCON AND KY8D_CNTL TO SEE WHO IS INSTALLED MOV CALL MOV MOV IN XCHG PUSH AH RTCFEALCON GELRTCNMI AH AL DX KY8D_CNTL AL DX AL AH AX GET ASYNC INSTALLATION INFO FROM REAL TIME CLOCK RAM SAVE FEATURE REGIS...

Page 87: ...SED THIS PROCEDURE SAVES OR RESTORES THE ASYNC PORTS REGISTERS AL O I F PORT I S NOT POWERED ON AL GOOD_DATA BYTE IF PORT IS WORKING BL O IF RESUME BL O IF SUSPEND DX PORT BASE ADDRESS AL DX ASLRES_SUS PROC NEAR ADD BL BL ARE WE RESUMING OR SUSPENDING JZ ASLRESUME RESUMING SUSPEND COMMAND ASLSUSPEND STOSB STORE FI RST BYTE GOOD OR BAD AND AL AL IS PORT WORKING JZ AS1 NO DO NOT STORE REGISTERS YES ...

Page 88: ...TROL REG X FC OB88 AC LODSB GET FROM RAM OB89 EE OUT DX AL AND RESTORE 8250 OB8A 42 INC OX XFO OB8B 42 INC OX XFE OB8C 42 INC OX ADDRESS SCRATCH REG XFF OB8D AC LODSB GET FROM RAM OB8E EE OUT DX AL AND WRITE TO 8250 OB8F 83 EA 07 SUB DX 7 ADDRESS DATA REG XF8 OB92 EC IN AL DX GET ANY TRASH CHRS OB93 EC IN AL DX OB94 42 INC OX ADDRESS I NTR CTL REG XF9 OB95 AC LODSB GET FROM RAM OB96 EE OUT DX AL A...

Page 89: ...OBAE OBAE ROMCODE END 2 64 ROM BIOS ENDP ENDS ...

Page 90: ...N KYBD_INT9 INTERRUPT 9 KEYBOARD HANDLER HARDWARE INT 1 ROUTINE TO READ SCAN CODES FROM PORT 60H AND CONVERT THEM TO ASCII CODES AND QUEUE IN THE BIOS KEYBOARD BUFFER KYBD_IO KEYBOARD I O ROUTINES TO ACCESS THE ASCI I KEYBOARD BUFFER INT 16H MODULE SIZE 945 BYTES EXTERNALLY REFERENCED ROUTINES REFER TO EXTRN LIST EXTERNALLY REFERENCED DATA AREAS REFER TO EXTRN LIST CHANGE ACTIVITY NONE PUBLICS PUB...

Page 91: ...HARACTER IS AVAILABLE TO BE READ ZF 1 NO CODE AVAI LABLE ZF 0 CODE IS AVAILABLE IF ZF 0 THE NEXT CHARACTER IN THE BUFFER TO BE READ IS IN AX AND THE ENTRY REMAINS IN THE BUFFER AH 2 RETURN THE CURRENT SHIFT STATUS IN AL REGISTER THE BIT SETTINGS FOR THIS CODE ARE INDICATED IN THE THE EQUATES FOR KBJLAG AH 4 TURN ON OFF KEYBOARD CLICK STATE BY THE VALUE IN AL AS FOLLOWS AL O TURN OFF KEYBOARD CLICK...

Page 92: ...EMPTY DATA IN KEYBOARD BUFFER 002C KLA 002C 8B 07 MOV AX BX GET SCAN CODE AND ASCI I CODE 002E E8 03A4 R CALL PTILINC MOVE POINTER TO NEXT POSITION 0031 89 IE OOlA R MOV BUFFEILHEAD BX STORE VALUE IN VARIABLE 0035 EB 2A 90 JMP KYBD_END RETURN ASCII STATUS 0038 K2 0038 FA CLI I NTERRUPTS OFF 0039 8B IE OOlA R MOV BX BUFFER_HEAD GET HEAD POINTER 0030 3B IE OOlC R CMP BX BUFFEILTAIL I F EQUAL Z l THE...

Page 93: ...INE ENTRY CONDITIONS PURPOSE OF ENTRY PROCESS THE SCAN CODE IN PORT 60H INPUT CONDITIONS cs ROMCODE SEGMENT RESTRI CTIONS EXIT CONDITIONS NORMAL EXIT CONDITIONS ASCII BFR HAS 2 BYTE EXTENDED ASCII CODE ERROR EXIT CONDITIONS N A REGISTERS MODIFIED NONE INTERRUPTS FORCED ON UPON ENTRY STI INTERNAllY REFERENCED ROUTINES PTR_I NC EXTERNAllY REFERENCED ROUTINES DDS INT 5H KB_NOISE INT 15H INT IBH KYBD_...

Page 94: ... REQUEST MAKE BREAK INT 15H FUNCTION 85H K14_S1 CMP JNE AL SYSREQ AKE K14_S2 00C9 F6 06 0018 R 04 TEST KB_FLAL1 SYS_SHI FT K14_S4 SYSTEM REQUEST KEY MAKE NO GO LOOK FOR BREAK ALREADY DEPRESSED OOCE 75 18 0000 80 OE 0018 R 04 0005 BO 00 0007 EB OB 0009 0009 3C 04 OODB 75 OE 0000 80 26 0018 R FB 00E2 BO 01 00E4 00E4 B4 85 00E6 CD 15 00E8 00E8 E9 0396 OOEB OOEB 24 7F OOED OE OOEE 07 OOEF BF 0000 00F2...

Page 95: ... TEST KLFLAG LEFLSHIFTt RIGHLSHIFT 0145 74 F3 JZ K20 JUMP NUMERIC NOT INSERT 0147 K22 SHFT TOGGLE KEY HIT PROCESS 0147 84 26 0018 R TEST AH KB_FLAG_l IS KEY ALREADY DEPRESSED 014B 75 37 JNZ KYBD9_EXITl JUMP I F KEY ALREADY DEPRESSED 014D 08 26 0018 R OR KLFLAG_l AH IND THAT THE KEY IS DEPRESSED 0151 30 26 0017 R XOR KLFLAG AH TOGGLE THE SHIFT STATE 0155 3C 52 CMP AL INS_KEY TEST 1ST MAKE OF INSERT...

Page 96: ... YES JUMP AH HAS CTL Fll F12 EXT ASCII CTL SHI FT CAS E YES JUMP AH HAS SHIFT Fll F12 EXT ASCII CLEAR AL TO MAKE AX EXTNDED SC GO BUFFER Fll F12 EXT ASCI I TEST FOR HOLD STATE 01C5 K25 NO SHI FT FOUND 01C5 8A EO MOV AH AL RESTORE AH AFTER Fll F12 TEST 01C7 3C 80 CMP AL 80H 8REAK SC 01C9 73 B9 JAE KYBDLEXITl YES EOI EXIT NO BREAK CODES PAST HERE OICB F6 06 0018 R 08 TEST KBJLAG l HOLD_STATE ARE WE ...

Page 97: ...4 NO RESET TEST FOR SPACE KEY NOT THERE SET SPACE CHAR BUFFERJILL ALT KEYPAD 0 9 MAKE ALT KEY PAD ALT INPUT TABLE LOOK FOR ENTRY US I NG KEYPAD LOOK FOR MATCH NO ALLKEYPAD 01 NOW HAS ENTRY VALUE GET THE CURRENT BYTE MULTIPLY BY 10 ADD IN THE LATEST ENTRY STORE IT AWAY THROW AWAY THAT KEYSTROKE ALT A Z TYPEWRITER MAKE NO ALT KEYPAD ZERO PREVIOUS ENTRY IN INPUT 01 ES ALREADY POINTING LOOK FOR MATCH ...

Page 98: ..._STATE DID INT 15H RESET HOLD_STATE 02M 75 EC JNZ K40 NO KEEP LOOPING 02A6 E9 039B R JMP KYBD9_RET YES GO TO NON_EOI EXIT 02A9 K41 02A9 3C 37 02AB 75 06 02AD B8 7200 02BO E9 0334 R 02B3 02B3 BB 0000 02B6 3C 3B 02B8 72 76 02BA 02BA BB 0000 E 02BD E9 037C R 02CO 02CO 3C 47 02C2 73 2C TEST FOR PRINT SWITCH TOGGLE CMD CTL PRTSC MAKE CMP JNE MOV JMP AL P60 ASTRLSC K42 AX 114 256 K57 KEY HIT NO JMP YES ...

Page 99: ...R DEL 02FE K49 02FE 3C 4A CMP Al KYPDJ1INUS KEYPAD MINUS KEY 0300 74 OB JE K50 YES JMP 0302 3C 4E CMP Al KYPD_PlUS KEYPAD PLUS KEY 0304 74 OC JE K51 YES JMP 0306 2C 47 SUB Al 71 ADUST SC FOR TABLE OFFSET 0308 BB 0000 MOV BX OFFSET K15 BX KEYPAD AREA BASE CASE TBl 030B EB 71 JMP SHORT K64 GO TRANSLATE BUilD PSEUDO SC 0300 K50 0300 B8 4A2D MOV AX 74 256 BlD EXT ASCI I CODE FOR MINUS 0310 EB 22 JMP S...

Page 100: ...YES CONVERT TO LOWER CASE 0355 EB 00 JMP SHORT K61 GO BUFFER 0357 K59 0357 EB 3D 90 JMP KYBDLEXIT INTERRUPT_RETURN CONVERT LOWER CASE TO UPPER ALPHABETI C CHARS ONLY 035A K60 035A 3C 61 CMP AL I aI ALPHABETIC CHAR 035C 72 06 JB K61 NO JMP 035E 3C 7A CMP AL I z I 0360 77 02 JA K61 NO JMP 0362 2C 20 SUB AL a A YES CONVERT TO UPPER CASE BUFFER EXTENDED ASCI I CODE I F NOT FULL 0364 K61 0364 8B IE 001...

Page 101: ... INTERRUPTS MOV AL EOI ISSUE EOI OUT INTAOO AL RETURN WITH EOI ALREADY ISSUED KYBD9_RET POP ES RESTORE REGS POP DS POP DI POP SI POP DX POP CX POP BX POP AX IRET RETURN I RPTS SET BACK AS WERE KYBD_INT9 ENDP ROUTINE NAME PTR_INC FUNCTION INCREMENT THE KEYBOARD BUFFER POINTER AND WRAP THE BUFFER I F NECESSARY ENTRY CONDITIONS DS DATA SEGMENT BX POINTER TO INCREMENT EXIT CONDITIONS BX INCREMENTED BY...

Page 102: ...EEN FUNCTION REFER TO ROUTINE PROLOGUES EXIT CONDITIONS REFER TO ROUTINE PROLOGUES ROUTINES IN MODULE VIDEO_IO PRINLSCREEN INT 10H DISPLAY INTERFACE ROUTINES INT 5H PRINT SCREEN INTERRUPT HANDLER INTERNAL DATA AREAS TABLES MLl REGS_PUSHD VI EXTERNALLY REFERENCED ROUTINES REFER TO EXTRN LIST EXTERNALLY REFERENCED DATA AREAS DATA SEG XXDATA SEG VIDEO RAM CHANGE ACTIVITY NONE EXT ERN A L REF ERE N C ...

Page 103: ...INT 10H DESCRIPTION INPUT CONDITIONS SEE INT 10H DESCRIPTION RESTRICTIONS NONE EXIT CONDITIONS NORMAL EXIT CONDITIONS SEE INT 10 DESCRIPTION ERROR EXIT CONDITIONS NO ERROR REPORTING INTERFACE IS DEFINED REGISTERS MODIFIED ALL REGISTERS EXCEPT AX ARE SAVED UNLESS THEY ARE USED TO RETURN INFO AS DEFINE IN THE INT 10H DESCRIPTION RETURN TYPE IRET ALL FLAGS RESTORED INTERRUPTS ENABLED OUR ING PROCESSI...

Page 104: ...SE ERRATIC BLINKING OR NO CURSOR AT ALL CL BITS 4 0 END LINE FOR CURSOR AH 02H SET CURSOR POSITION BH PAGE NUMBER MUST BE 0 FOR GRAPHICS MODES DH DL ROW COLUMN 0 0 IS UPPER LEFT ROW 0 24 COL 0 CRT COLUMNS i CRT COLUMNS IS EITHER 80 OR 40 AH 03H READ CURSOR POSITION BH PAGE NUMBER MUST BE 0 FOR GRAPHICS MODES ON EXIT DH DL ROW COLUMN OF CURRENT CURSOR CH CL CURSOR MODE CURRENTLY SET AH 04H READ LIG...

Page 105: ...FACE WHILE IN GRAPHICS MODE THE CHARACTERS ARE FORMED FROM A CHARACTER GENERATOR IMAGE MAINTAINED IN THE SYSTEM ROM FOR WRITE CHARACTER INTERFACE IN GRAPHICS MODE THE REPLICATION FACTOR CONTAINED IN CX ON ENTRY WILL PRODUCE VALID RESULTS ONLY FOR CHARACTERS CONTAI NED ON THE SAME ROW CONTINUATION TO SUCCEEDING LINES WILL NOT PRODUCE CORRECTLY GRAPH I CS INTERFACE AH OBH SET COLOR PALETTE BH PALETT...

Page 106: ...O STRING TO BE WRITTEN CX LENGTH OF CHARACER STRING TO WRITTEN IF CX 0 NO OPERATION OX CURSOR POSITION FOR STRING TO BE WRITTEN BH PAGE NUMBER AL 0 WRITE CHARACTER STRING BL ATTRIBUTE STRING IS CHAR CHAR CHAR CURSOR NOT MOV ED AL 1 WRITE CHARACTER STRING AND MOVE CURSOR BL ATTRI BUTE STRING IS CHAR CHAR CHAR CURSOR IS MOVED AL 2 WRITE CHARACTER AND ATTRI BUTE STRING STRING IS CHAR ATTR CHAR ATTR C...

Page 107: ...PLAY DESCRI PTI ON PARAMETER REQUEST RETURNS THE ADDRESS OF A 7 WORD TABLE WHICH CONTAINS THE DESCRIPTION PARAMETERS OF THE CURRENT DISPLAY IT ALSO RETURNS THE MONITOR NUMBER OF THE ALT DISPLAY ON EXIT ES 01 POINTS TO A 7 WORD PARAMETER TABLE AX MONITOR NUMBER OF ALT DISPLAY IF THERE IS NO ALTERNATE DISPLAY OR THE ALT DISPLAY IS INOPERATIVE THEN AX O THE 7 WORD TABLE CONTAINS THE FOLLOWING INFOMAT...

Page 108: ...LPOS OW 0 OOOE 0000 DS_POS OW 0 0010 0000 ES_POS OW 0 0012 0000 IP_POS OW a 0014 0000 CS_POS OW 0 0016 0000 FL_POS OW 0 0018 REGS_PUSHO ENDS 002C VIOEO_IO_1 PROC NEAR 002C 06 PUSH ES 0020 IE PUSH OS SAVE REGISTERS 002E 52 PUSH OX 002F 51 PUSH CX 0030 53 PUSH BX 0031 56 PUSH SI 0032 57 PUSH DI 0033 55 PUSH BP 0034 FB STI 0035 FC CLO 0036 50 PUSH AX SAVE AX VALUE 0037 8A C4 MOV AL AH GET I NTO LOW B...

Page 109: ...P DI 30H IS MONO CARD INSTALLED JE M8 YES JUMP TO MONO SET CMP AL 7 IS MODE 7 OR GREATER FOR CGA JB M8A CARD THEN DEFAULT TO MOV AL 3 MODE 3 80 x 25 COLOR JMP SHORT M8A MONOCHROME OPERATION SELECTED M8 MOV AL 7 INDICATE MONO CARD MODE MOV DL OB4H ADDRESS OF MONO CARD 3B4 INC BL MODE SET FOR MONO CARD M8A CALL LCD_MOVE CK FOR LCD ADA CHANGE REQ MOV AH AL SAVE MODE IN AH MOV CRLMODE AL SAVE IN GLOBA...

Page 110: ... INIT LOOP GET 6845 REGISTER NUMBER POINT TO DATA PORT NEXT REGISTER VALUE GET TABLE VALUE OUT TO CHIP NEXT IN TABLE BACK TO POINTER REGISTER DO THE WHOLE TABLE RESTORE FLAGS GET MODE BACK REC VER SEGMENT VALUE SET UP POINTER FOR REGEN START ADDR SAVED IN GLOBAL SET PAGE VALUE RESTORE CLEAR REGEN BIT LOOK DON T CLR REGEN REQ I F ON DON T CLEAR REGEN NUMBER OF WORDS IN CGA CARD TEST FOR GRAPHICS NO...

Page 111: ...TO DEFAULT 0150 BO 30 MOV AL 30H VALUE OF 30H FOR ALL MODES EXCEPT 640X200 0152 80 3E 0049 R 06 CMP CRT oDE 6 SEE I F MODE IS 640X200 BW 0157 75 02 JNZ MI4 I F NOT 640X200 GOTO REGULAR 0159 BO 3F MoV AL 3FH I F IT IS 640X200 PUT IN 3FH 015B MI4 015B EE OUT OX AL SEND CORRECT VAL TO 309 PORT 015C A2 0066 R MOV CRLPALETTE AL SAVE THE VAL FOR FUTURE USE SET CURSOR TYPE TO DEFAULT VALUES 015F B9 0607 ...

Page 112: ...ACTION IS TAKEN REGISTERS MODIFIED SI INTERRUPTS DISABLED DURING PROCESSING LCD_MOVE PROC NEAR PUSH AX PUSH BX PUSH OX PUSHF SAVE FLAGS MOV BL AL SAVE NEW MODE REQUEST CLI DISABLE INTERRUPTS MOV AH RTCDSP_CON GET DISPLAY CONFIGURATION CALL GELRTCREG DATA RETURNED IN AL CMP BL 7 MONOCHROME MODE REQUESTED JE LCD_MOl CGA MODE BEING REQUESTED CMP AL DSP_MLCD DSP_LCD_PRES IS LCD PRES CONFIGURED MONO NO...

Page 113: ...2 01CF 74 45 OlD1 B4 17 OlD3 F6 C5 40 0106 75 05 0108 F6 C5 20 OlDB 75 36 0100 80 E5 9F OlEO 80 FD 00 01E3 77 31 01E5 80 F9 00 01E8 77 2C 01 EA 50 01EB BB 080E 01EE 8A C5 01FO E8 021C R 01F3 8A E8 01F5 8A C1 01F7 E8 021C R 01FA 8A C8 01FC 58 01FD EB 17 90 0200 0200 A8 01 0202 74 12 0204 F6 C5 40 0207 74 05 TEST AL DSP_MLCD IS LCD AS MONO CRNT DISPLAY JZ SELC NO JUMP ON IT I S MONO MNTR MOV AH OllH...

Page 114: ... LEN S OIV BL DIV BY MONO CHAR BX LEN 14 CMP AH 7 AH RMNDR AL QUOT ENT JS SELRI INC AL ADD 1 TO QUOTI ENT FOR RND UP SELRl RET RETURN TO CALLER TH I S ROUT NE OUTPUTS TH E CX REGISTER TO THE REGS NAMED IN AH M16 PUSHF SAVE CURRENT FLAGS CLI INHIBIT INTERRUPTS MOV OX ADDR_6845 ADDRESS REGISTER MOV AL AH GET VALUE OUT DX AL REGISTER SET INC DX DATA REGISTER MOV AL CH DATA OUT DX AL DEC OX MOV AL AH ...

Page 115: ...C NEAR MOV ACTIVE_PAGE AL SAVE ACTIVE PAGE VALUE MOV CX CRLLEN GET SAVED LEN OF REGEN BFR CBW CONVERT AL TO WORD PUSH AX SAVE PAGE VALUE MUL CX DISPLAY PAGE TIMES REGEN LEN MOV CRLSTART AX SAVE START ADDRESS FOR LATER REQUIREMENTS MOV CX AX START ADDRESS TO CX SAR CX I DIVIDE BY 2 FOR 6845 MOV AH 12 6845 REGISTER FOR START ADDR CALL MI6 POP BX RECOVER PAGE VALUE SAL BX I 2 FOR WORD OFFSET MOV AX B...

Page 116: ...DLE COLOR 0 BY SETTING THE BACKGROUND COLOR AND AL OEOH TURN OFF LOW 5 BITS OF CRNT AND BL OIFH TURN OFF H 3 BITS INPUT VAL OR AL BL PUT VALUE INTO REGISTER M19 OUTPUT THE PALETTE OUT DX AL SEND COLOR TO 309 PORT MOV CRLPALETTE AL SAVE THE COLOR VALUE JMP VIDEO_RETURN HANDLE COLOR 1 BY SELECTING THE PALETTE TO BE USED M20 AND AL ODFH TURN OFF PALETTE SELECT BIT SHR BL 1 TEST THE LOW ORDER BIT OF B...

Page 117: ... AL NUMBER OF ROWS TO SCROLL CX ROW COLUMN OF UPPER LEFT CORNER OX ROW COLUMN OF LOWER RIGHT CORNER BH ATTRIBUTE TO BE USED ON BLANKED LINE AH CURRENT CRT MODE OS DATA SEGMENT ES REGEN BUFFER SEGMENT NONE THE REGEN BUFFER IS MODIFIED ASSUME CS ROMCODE OS DATA ES DATA SCROLL_UP PROC NEAR MOV BL AL SAVE LINE COUNT IN BL CMP AH 4 TEST FOR GRAPH I CS MODE JC N1 HANDLE SEPARATELY CMP AH 7 TEST FOR MONO...

Page 118: ...E COUNT F6 26 004A R MUl BYTE PTR CRLCOlS FIND OFFSET TO FROM ADDRESS 03 CO 06 IF 80 FB 00 C3 8A CA 56 57 F3 A5 5F 5E C3 8A CA 57 F3 AB 5F C3 ADD AX AX 2 FOR ATTRIBUTE BYTE PUSH ES ESTAB ADDSSNG TO REGEN BFR POP OS FOR BOTH POINTERS CMP Bl O a SCROll MEANS BLANK FI ElD RET RETURN WITH FLAGS SET SCROll_POS IT I ON ENDP MOVE_ROW NI0 PROC NEAR MOV Cl Dl GET OF COlS TO MOVE PUSH SI PUSH 01 SAVE START ...

Page 119: ...B ED JMP N14 03B6 SCROLL_DOWN ENDP READ lLCURRENT THIS ROUTINE READS THE ATTRIBUTE AND CHARACTER AT THE CURRErn CURSOR POSITION AND RETURNS THEM TO THE CALLER INPUT BH DISPLAY PAGE ALPHA MODES ONLY AH CURRENT CRT MODE OS DATA SEGMENT ES REGEN SEGMENT OUTPUT AL CHAR READ AH ATTRI BUTE READ INTERRUPTS DISABLED DURING THE READ ASSUME CS ROMCODE OS DATA ES DATA 03B6 READ lLCURRENT PROC NEAR 03B6 80 FC...

Page 120: ... R 8A E3 50 51 E8 03EO R 8B FB 59 5B INPUT OUTPUT THIS ROUTINE WRITES THE ATTRIBUTE AND CHARACTER AT THE CURRENT CURSOR POSITION AL CHAR TO WRITE BH DISPLAY PAGE BL ATTRIBUTE OF CHAR TO WRITE CX COUNT OF CHARACTERS TO WRITE AH CURRENT CRT MODE OS DATA SEGMENT ES REGEN SEGMENT NONE INTERRUPTS DISABLED DURING THE WRITE WRlTE ACCURRENT PROC NEAR CMP AH 4 IS TH I S GRAPH I CS JC P6 CMP AH 7 IS THIS MO...

Page 121: ...GRAPHICS_WRITE PI0 PUSH AX SAVE CHAR ON STACK PUSH CX SAVE WRITE COUNT CALL FIND_POSITION MOV 01 BX ADDRESS TO 01 POP CX WRITE COUNT POP BX BL HAS CHAR TO WR I TE Pll WRITE_LOOP WAIT FOR HORIZONTAL RETRACE 0446 8B 16 0063 MOV OX ADDR_6845 GET BASE ADDRESS 044A 83 C2 06 ADD DX 6 POINT AT STATUS PORT 0440 9C PUSHF SAVE CURRENT FLAGS 044E P12 044E EC IN AL DX GET STATUS 044F A8 01 TEST AL HORLRETRACE...

Page 122: ...Y THE RESULT JMP VIDEO_RETURN RETURN FROM VIDEO 10 READ_DOT ENDP WRITE_DOT PROC NEAR PUSH AX SAVE DOT VALUE PUSH AX TWICE CALL R3 FIND BYTE POSITION OF DOT SHR AL CL SHIFT TO SET UP OUT BITS AND AL AH STRI P OFF THE OTHER BITS MOV CL ES SI GET THE CURRENT BYTE POP BX RECOVER XOR FLAG TEST BL 80H IS IT ON JNZ R2 YES XOR THE DOT NOT AH SET THE MASK TO REMOVE THE AND CL AH INDICATED BITS OR AL CL OR ...

Page 123: ...04DC 8B Cl BX 180H CX 703H SET PARMS FOR HIGH RES DETERMINE BIT OFFSET IN BYTE FROM COLUMN MASK R5 AND CH DL ADDR OF PEL IN BYTE TO CH DETERMINE BYTE OFFSET FOR THIS LOCATION IN COLUMN SHR ADD MOV OX CL SI DX DH BH SH I FT BY CORRECT AMOUNT INCREMENT THE POINTER GET BITS IN RESULT TO DH MULTIPLY BH VALID BITS IN BYTE BY CH BIT OFFSET SUB R6 ROR ADD DEC JNZ MOV SHR POP RET R3 ENDP CL CL AL l CL CH ...

Page 124: ... C3 MOV AL BL GET NUMBER OF LINES IN AL 0504 B4 50 MOV AH 80 80 BYTES ROW 0506 F6 E4 MUL AH DETERMINE OFFSET TO SOURCE 0508 8B F7 MOV SI DI SET UP SOURCE 050A 03 FO ADD SI AX ADD IN OFFSET TO IT 050C 8A E6 MOV AH DH NUMBER OF ROWS IN FIELD 050E 2A E3 SUB AH BL DETERMINE NUMBER TO MOVE LOOP THROUGH MOVING ONE ROW AT A TIME BOTH EVEN ODD FIELDS 0510 R8 ROW_LOOP 0510 E8 0593 R CALL R17 MOVE ONE ROW 0...

Page 125: ...C 73 05 JNC R12 FIND_SOURCE_DOWN MEDIUM RES DOWN 054E DO E2 SAL DL l COLUMNS 2 SINCE 2 BYTES CHAR OFFS ET OK 0550 01 E7 SAL 01 1 OFFSET 2 SINCE 2 BYTES CHAR 0552 47 INC 01 PO I NT TO LAST BYTE DETERMINE THE SOURCE ADDRESS IN THE BUFFER 0553 R12 FIND_SOURCLDOWN 0553 06 PUSH ES BOTH SEGMENTS TO REGEN 0554 IF POP OS 05 55 2A ED SUB CH CH ZERO TO HIGH OF COUNT REG 0557 81 C7 OOFO ADD 01 240 POINT TO L...

Page 126: ...TOSB POP DI RET R18 ENDP CLEAR_ENTRLDOWN ATTRIBUTE TO FILL WITH CLEAR_LOOP_DOWN CLEAR A ROW POINT TO NEXT LINE NUMBER OF LINES TO FILL CLEAR_LOOP_DOWN RESET THE DIRECTION FLAG EVERYTHING DONE BLANILFI ELD_DOWN SET BLANK COUNT TO EVERYTHNG IN FIELD CLEAR THE FI ELD I NFORMATI ON NUMBER OF BYTES IN THE ROW SAVE POINTERS MOVE THE EVEN FI ELD POINT TO THE ODD FIELD SAVE THE POINTERS COUNT BACK MOVE TH...

Page 127: ... OFFSET OF CODES 05E8 80 3E 0049 R 06 CMP CRLMODE 6 05ED IF POP OS RECOVER TBL POINTER SEGMENT 05EE 72 2C JC S7 TEST FOR MEDIUM RESOLUTION HIGH RESOLUTI ON MODE 05FO S3 HIGH_CHAR 05FO 57 PUSH 01 SAVE REGEN POINTER 05F 56 PUSH SI SAVE CODE POINTER 05F2 B6 04 MOV DH 4 NUMBER OF TIMES THROUGH LOOP 05F4 S4 05F4 AC LODSB GET BYTE FROM CODE POINTS 05F5 F6 C3 80 TE5T BL 80H SHOULD WE USE THE FUNCTION 05F...

Page 128: ... TO NEXT LOCATION 0662 FE CE DEC DH 0664 75 Cl JNZ S9 KEEP GOING 0666 5E POP SI RECOVER CODE PONTER 0667 5F POP 01 RECOVER REGEN POINTER 0668 47 INC DI POINT TO NEXT CHAR POSITION 0669 47 INC DI 066A E2 B7 LOOP S8 MORE TO WRITE 066C E9 016F R JMP VIDEO_RETURN 066F GRAPHICS_WRITE ENDP GRAPH I CS READ 066F 066F E8 0739 R 0672 8B FO 0674 83 EC 08 0677 8B EC ENTRY EXIT THIS ROUTINE READS THE ASCII CHA...

Page 129: ...HIS ROUTINE TAKES THE BYTE IN AL AND DOUBLES ALL OF THE BITS TURNING THE 8 BITS INTO 16 BITS THE RESULT IS LEFT IN AX PROC NEAR PUSH OX SAVE REGISTER MOV DX 8000H BIT TO TERMINATE LOOP DBLBIT4 SHR AL 1 LOW ORDER BIT TO CARRY FLAG RCR DX 1 FROM CARRY TO HIGH OF RESULT SAR DX 1 DBL HIGH ORDER BIT SIGN EXT JNB DBLBIT4 TERM WHEN BIT SHIFTED OUT MOV AX DX PUT RESULT I NTO AX POP DX RESTORE REGISTER RET...

Page 130: ...V SI BP 06CO FC CLD ENSURE 01 RECTI ON 06C1 BO 00 MOV AL O CURRENT CD PT BEING MATCHED 06C3 S16 06C3 16 PUSH SS ESTAB ADDRESSING TO STACK 06C4 IF POP OS FOR THE STRING COMPARE 06C5 BA 0080 MOV DX 128 NUMBER TO TEST AGAINST 06C8 S17 06C8 56 PUSH SI SAVE SAVE AREA POINTER 06C9 57 PUSH 01 SAVE CODE POINTER 06CA B9 0008 MOV CX 8 NUMBER OF BYTES TO MATCH 06CD F3 A6 REPE CMPSB COMPARE THE 8 BYTES 06CF 5...

Page 131: ... IS WRITTEN TO CURRENT CURSOR POSITION AND THE CURSOR IS MOVED TO NEXT POSITION IF CURSOR LEAVES THE LAST COLUMN OF THE FIELD COLUMN IS SET TO ZERO AND THE ROW VALUE IS INCREMENTED IF ROW VALUE LEAVES THE FIELD CURSOR IS PLACED ON LAST ROW FIRST COLUMN AND ENTIRE SCREEN IS SCROLLED UP ONE LINE WHEN THE SCREEN IS SCROLLED UP THE ATTRIBUTE FOR FILLING NEW BLANKED LINE IS READ FROM THE CURSOR POSITIO...

Page 132: ...RING SCROLL U2 U3 U4 MOV CMP JC CMP MOV JNE MOV INT MOV MOV SUB MOV MOV DEC INT U5 POP JMP U6 INC U7 MOV JMP AL cn MODE AL 4 U2 AL 7 BH O U3 AH READ J TLCHAR VIDEO_FN BH AH GET THE CURRENT MODE READ CURSOR FI LL WITH BACKGROUND SCROLL UP READ CURSOR READ CHAR ATTR AT CURSOR I NT 10H STORE IN BH SCROLL UP AX SCROLL_WINDOW_UP 256 01H SCROLL UP ONE LINE CX CX UPPER LEFT CORNER DH 24 LOWER RIGHT ROW D...

Page 133: ... 83 C2 06 07DC EC 0700 AS 04 07DF 75 7E 07E AS 02 07E3 75 03 07E5 E9 OS69 R 07E8 07ES B4 10 07EA 8B 16 0063 07EE SA C4 07FO EE 07Fl 42 07F2 EC 07F3 8A E8 07F5 4A 07F6 FE C4 07F8 SA C4 07FA EE 07FB 42 OlFC EC 07FD SA E5 MOV MOV ADD IN TEST JNZ AH O OX ADDR_6S45 DX 6 AL DX AL LIGHLPEN_SWITCH V6 NOW TEST FOR LIGHT PEN TRIGGER TEST AL 2 JNZ V7A JMP V7 SET NO LIGHT PEN RETURN CODE GET BASE ADDRESS OF 6...

Page 134: ... COL VAL TIMES 2 FOR HIGH RES 083F V3 NOLHIGH_RES 083F 03 E3 SHL BX CL MULTIPLY 16 FOR HIGH RES DETERMINE ALPHA CHAR POSITION 0841 8A 04 MOV DL AH COLUMN VALUE FOR RETURN 0843 8A FO MOV DH AL ROW VALUE 0845 DO EE SHR DH l DIVIDE BY 4 0847 DO EE SHR DH l FOR VALUE IN 0 24 RANGE 0849 EB 12 JMP SHORT V5 LIGHT_PEN_RETURN_SET ALPHA MODE ON LIGHT PEN 084B V4 ALPHA_PEN 084B F6 36 004A R DIV BYTE PTR CRLC...

Page 135: ... BP ES_POS RECOVER STRING SEG ADDRESS POP BP CMP Al 04 TEST FOR INVAL STRING OPTION JB WO IF OPTION INVAL THEN RETURN JMP DONE WO OR CX CX TEST FOR 0 LENGTH STRING JNZ WI JMP DONE IF 0 LENGTH STRING RETURN WI PUSH BX SAVE PAGE AND POSSIBLE ATTR MOV BL BH GET CURRENT CURSOR POSITION XOR BH BH SAL BX I MOV SI BX OFFSET CURSOR_POSN POP BX RESTORE BX PUSH SI SAVE CURRENT CURSOR POSITION PUSH AX SAVE W...

Page 136: ...MOV CX I SET CHAR WRITE AMOUNT TO ONE CMP AH 2 IS ATTRIBUTE IN THE STRING JB GOLIT I F NOT THEN JUMP MOV BL ES BP ELSE GET IT INC BP BUMP STRING POINTER GOLIT MOV AH WR ITE_ATLCHAR WRITE CHAR AND ATTRI BUTE INT VIDEO_FN POP ES POP AX RESTORE REGISTERS POP BX POP CX INC DL INCREMENT COLUMN COUNTER CMP DL BYTE PTR CRLCOLS I F COLS ARE I N RANGE FOR THIS MODE THEN JB COLUMNS_SET GOTO COLS SET INC DH ...

Page 137: ... LCD_REQUEST GET DISPLAY CONFIGURATION RESTORE LCD REQUEST LCD IS NOT AVAILABLE EXIT I F NOT ZERO JUMP AROUND JUMP ELSE TAKE A LONG JUMP I F LOAD USER FONT REQUEST LOAD_USERJONT INPUT THIS ROUTINE ACCESSES THE LCD FONT STORAGE AND ALTERS ONE OR MORE CHARACTERS ALLOWING THE USER TO CAUSE DIFF ERENT CHARACTERS TO BE DISPLAYED IN ALPHA NUMERIC MODE ES DI POINT TO CHARACTER FONT IN USER TABLE WHERE LO...

Page 138: ...VSB MOVE THE FONT 098C 24 EF AND AL OFFH LCD_FONT 098E E6 75 OUT LCD_DATA AL RETURN FROM FONT TO REGEN 0990 90 POPF 0991 LCD3 END LOAD USER SPECI FI ED FONT 0991 EB 50 JMP SHORT LCDXIT 0993 DE FONT 0993 3C 01 CMP AL l I F LOAD DEFAULT FONT REQUEST 0995 75 1D JNE INTENS LOAD_DEFAULLFONT THIS ROUTINE CAUSES THE LCD FONT STORAGE TO BE REINIT IALIZED WITH THE SYSTEM ROM DEFAULT FONT INPUT BL o LOAD MA...

Page 139: ...T BL 02H JZ LCD5 OR AL 80H LCD5 TEST BL OIH JZ OR LCD6 INC OUT POPF LCDXIT JMP LCD_REQUEST LCD6 AL 8 DX AL DX VIDEO_RETURN ENDP ONLY OPERATION 0 3 ALLOWED ALL OTHERS EX IT GET LCD CTRL PORT ADDRESSES IF EMULATING MONO 3B4 IF EMULATING COLOR 304 REQUEST TO WRT TO REG 20 FOREGND RGB ON BKGND RGB ON SET UP H ORDER BIT OF INTEN SET UP L ORDER BIT OF INTEN WRT INTENSI FY DATA TO REG 20 PHYS_DSP _DESCR_...

Page 140: ...LE OF CURRENT DISPLAY ALSO TURN OFF CURRENT DISPLAY BIT IN THE DISPLAY CONFIG BYTE PHYS Jo10NO TEST Al DSP Jo1lCD IS LCD CONFIGURED AS MONO JZ PHYS Jo10NOl NO JUMP TO COLOR DISPLAY MOV DI OFFSET lCD Jo10NO_TBl DEFAULT TO LCD MONO TABLE AND Bl NOT DSP_MlCD DSP_lCD_PRES TURN OFF LCD BITS JMP SHORT PHYS AlT YES JUMP TO TEST ALT DSPlY PHYS_MONOl CURRENT DSPl Y MONO MONITOR MOV DI OFFSET MONO_TBl NO CU...

Page 141: ...REFERENCED ROUTINES CRLF EXTERNALLY REFERENCED ROUTINES INT 10H VIDEOJN INT 17H PRINTER_FN I NT 5H THIS LOGIC WILL BE INVOKED BY INTERRUPT 05H TO PRINT THE SCREEN CURSOR POSITION AT THE TIME THIS ROUTINE IS INVOKED WILL BE SAVED AND RESTORED UPON COMPLETION THE ROUTINE IS INTENDED TO RUN WITH INTERRUPTS ENABLED I F A SUBSEQUENT PRINT SCREEN KEY IS DEPRESSED DURING THE TIME THIS ROUTINE IS PRINTING...

Page 142: ...AGE IF APPLICABLE IS IN BH THE STACK HAS DS AX BX CX DX PUSHED AL HAS VIDEO MODE MOV MOV CALL TEST JNZ PUSH MOV INT POP PUSH XOR CL AH CH 25 CRLF AH 29H ERR20 CX AH GELCURSOR_INFO VIDEO_FN CX OX DX DX USE OF CX REGISTER TO CONTROL ROW COLUMNS CR LF ROUTINE TEST FOR PRINTER ERRORS OUT OF PAPER I O TIME OUT JUMP I F ERROR DETECTED SAVE SCREEN BOUNDS WILL NOW READ THE CURSOR ON RETURN CX CRNT CRSR MO...

Page 143: ...NOT CONTINUE RECALL CURSOR POSITION TO SHOW CURSOR SET REQUEST CURSOR POSITION RESTORED INDICATE FINISHED EXIT THE ROUTINE GET CURSOR POSITION TO REQUEST CURSOR SET CURSOR POSITION RESTORED BX 083 NO CYCLES FOR 83MSEC TONE CX 081H 1 2 CYCLE FOR 1KHZ TONE KB_NOISE SOUND BEEP FOR ERROR STATUS_BYTE PRTSCERROR INDICATE ERROR DX CX BX AX DS ES ENDP RESTORE ALL REGISTERS USED CARRIAGE RETURN LINE FEED S...

Page 144: ...ENCES EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN DDS NEAR DSKLBASE BYTE GELRTCREG NEAR PULRTCREG NEAR PARMS_TPI48 BYTE PARMS_TP 1135 BYTE DSP_FSETM NEAR DSP_I NIT NEAR ICON_PR NEAR EXLEVENT NEAR FLI CON BYTE SYS_DSKLI CON BYTE DSKT_I CON BYTE BAD_DSKLI CON BYTE RES_ERR CHK NEAR POSLLOOP NEAR ROMCODE SEGMENT BYTE PUBLIC ROM BIOS 2 119 ...

Page 145: ... ROUTINES IN MODULE DSKLIO COMMON ENTRY FOR ALL OTHER ROUTINES FOR DISKETTE SERVICES SYS_BOOT ENTRY FOR LOADING THE DISKETTE BOOT PROGRAM INTERNAL DATA AREAS TABLES BIOS DATA AREA AT SEGMENT 40H EXTERNALLY REFERENCED ROUTINES REFER TO EXTRN LIST EXTERNALLY REFERENCED DATA AREAS REFER TO EXTRN LIST CHANGE ACTI VITY Diskette I O Interrupt Hex 13 DSKT_IO I NT 13H DISKETTE I O DSKLIO INPUT AH O RESET ...

Page 146: ...IFY DATA VARIABLE DISK POINTER DOUBLE WORD POINTER TO CURRENT SET OF DSKT PARAMETERS OUTPUT AH STATUS OF OPERATION GOOD RETURN OOH TIME_OUT 80H BAD_SEEK 40H BAD_NEe 20H BAD_CRC 10H DMA_BOUNDARY 09H BAD_DMA 08H MEDIA CHANGE 06H RECORD_NOLFND 04H WRITE_PROTECT 03H BAD DDR_MARK 02H BAD_CMD 01H NO ERROR DETECTED ATTACHMENT FAILED TO RESPOND SEEK OPERATION FAILED NEC CONTROLLER HAS FAILED BAD CRC ON DI...

Page 147: ...ITH NO CHANGE LINE SUPPORT INSTALLED 02 DSKT DRV WITH CHANGE LINE SUPPORT INSTALLED 03 FIXED DISK DISKETTE_STATUS 0 CARRY FLAG CLEAR AH 16H READ DISKETTE CHANGE LINE STATUS DL DRIVE NUMBER 0 3 OUTPUT PARAMETERS IF DRIVE INSTALLED OOH DISK CHANGE LINE NOT ACTIVE CARRY FLAG IS CLEARED IF DRIVE NOT INSTALLED 06H DISK CHANGE LINE ACTIVE CARRY FLAG IS SET DISKETTE HEAD STEPPED TO TRACK 1 THEN 0 TO RESE...

Page 148: ...LCHANGE OW OFFSET DSKLSETDASD DSKLIO PROC STI FAR PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH MOV CALL SUB MOV CMP JBE CMP JB CMP JB AX BX CX OS SI 01 BP OX BP SP DDS BH BH BL AH AH 8 010_1 AH 15H DIO_INLCMD AH 18H 010_0 FUNCTION CODE OUT OF RANGE OX SAVE AREA ON STACK BP SAVE AREA ON STACK 01 SAVE AREA ON STACK SI SAVE AREA ON STACK OS SAVE AREA ON STACK CX SAVE AREA ON STACK BX SAVE AREA ON STACK AX...

Page 149: ... ON STACK 006D 80 FC 01 CMP AH l SET THE CARRY FLAG FOR FAILURE 0070 F5 CMC 0071 DIO_3 0071 5A POP DX RESTORE ALL REGISTERS 0072 5D POP BP 0073 5F POP DI 0074 5E POP SI 0075 IF POP DS 0076 59 POP CX oon 5B POP BX RECOVER ADDRESS 0078 58 POP AX RESTORE AX REGISTER 0079 CA 0002 RET 2 THROW AWAY SAVED flAGS 007C DSKLIO ENDP INVALID COMMAND RECEIVED 007C DSKLINLCMD PROC NEAR 007C C6 06 0041 R 01 MOV D...

Page 150: ...RRECT AFTER RESET 0005 58 POP AX DISCARD ERROR ADDRESS ON STACK 0006 80 OE 0041 R 20 OR DISKETTE_STATUS BAD_NEC SET ERROR CODE OODB EB 18 JMP SHORT J8 EXIT SEND SPECI FY COMMAND TO NEC 0000 J7 DRIVE_READY 0000 B4 03 MOV AH SPECIFY SPECI FY COMMAND OODF E8 022C CALL NECOUTPUT OUTPUT THE COMMAND 00E2 BB 0001 MOV BX l FIRST BYTE PARM IN BLOCK 00E5 E8 0259 R CALL GELPARM TO THE NEC CONTROLLER 00E8 E8 ...

Page 151: ... WRITE ROUTINE DISICWRITE CALL JC PROC NEAR DSKLCHANGE CHECK FOR MEDIA CHANGE DSKLERR 80 OE 003F R 80 BO 4A OR MOV CALL MOTOILSTATUS WRlTE_OP INDICATE WRITE OPERATION AL DMILWRITE DMA WRITE COMMAND E8 02F1 R 72 07 JC DMA_SETUP DSKLERR C6 46 OF C5 EB 00 MOV JMP AHSAVE BP WRITE_CMND WRITE COMMAND AH SAVE SHORT RW_OPN E8 041B R 88 4E OA E8 0268 R DISICWRITE ENDP RW_OPN THIS ROUTINE PERFORMS THE READ ...

Page 152: ...VALUE TO NEC GET THE SECTORS TRACK VALUE TO NEC GET THE GAP LENGTH VALUE TO NEC GET THE FILLER BYTE TO THE CONTROLLER SEND THE DATA FOR A READ WRITE VERIFY OPERATION J15 MOV CALL MOV CALL MOV CALL MOV CALL CALL MOV CALL CALL MOV CALL CALL MOV AH CHSAVE BP NECOUTPUT AH DHSAVE BP NECOUTPUT AH CLSAVE BP NECOUTPUT BX 7 GELPARM NECOUTPUT BX 9 GELPARM NECOUTPUT BX l1 GELPARM NECOUTPUT BX 13 CYLINDER NUM...

Page 153: ...WJAIL NEC MUST HAVE FAILED J18 RW NEC FAIL MOV AH BAD_NEC J19 RW FAIL OR 01 SKETTE_STATUS AH CALL NUM_TRANS HOW MANY WERE REALLY TRANSFERRED J20 RW_ERR JMP SHORT RW_EX IT RETURN TO CALLER J21 RW_ERR_RES CALL RESULTS FLUSH THE RESULTS BUFFER JMP SHORT RW_EXIT OPERATION WAS SUCCESSFUL J22 OPN_OK CALL NUM_TRANS HOW MANY GOT MOVED RW_EXIT RET RW_OPN ENDP NECOUTPUT INPUT OUTPUT THIS ROUTINE SENDS A BYT...

Page 154: ...TO BE FETCHED 2 EX IT AH THAT BYTE FROM BLOCK GELPARM PROC NEAR IE PUSH OS SAVE SEGMENT 2B CO SUB AX AX ZERO TO AX 8E 08 MOV DS AX ASSUME OS ABSO C5 36 0078 R LOS SI DISK POINTER POINT TO BLOCK 01 EB 8A 20 IF C3 SEEK INPUT OUTPUT SHR BX 1 DIVIDE BX BY 2 AND SET FLAG FOR EXIT MOV AH SI BX GET THE WORD POP OS RESTORE SEGMENT ASSUME DS DATA RET RETURN TO CALLER GELPARM ENDP THIS ROUTINE WILL MOVE THE...

Page 155: ... TRACK NUMBER IN CH 02B3 E4 77 IN AL DSKLCNTL READ TRACK POSITION 02B5 3A C5 CMP AL CH COMPARE TRACK ON WITH DESIRED TRACK 02B7 58 POP AX 02B8 E6 77 OUT DSKLCNTL AL RESTORE SENSE REGISTER 02BA 75 03 JNE J28_3 ON SAME TRACK SO JUST EXIT WITH NO ERROR 02BC F8 CLC 02BD EB 2F JMP SHORT J32 EXIT 02BF B4 OF J28_3 MOV AH SEEK CMD SEEK COMMAND TO NEC 02Cl E8 022C CALL NELOUTPUT 02C4 8A E2 MOV AH DL DRIVE ...

Page 156: ...UT THE HIGH 4 BITS TO DETERMINE COUNT 0317 8A 66 OE MOV AH ALSAVE BP NUMBER OF SECTORS AL SAVE 031A 2A CO SUB AL AL TIMES 256 INTO AX 031C 01 E8 SHR AX 1 SECTORS 128 INTO AX 031E 50 PUSH AX 031F BB 0006 MOV BX 6 GET THE BYTES SECTOR PARM 0322 E8 0259 R CALL GELPARM 0325 8A CC MOV CL AH USE AS SHIFT COUNT 0 128 1 256 ETC 0327 58 POP AX 0328 03 EO SHL AX CL MULTIPLY BY CORRECT AMOUNT 032A 48 DEC AX ...

Page 157: ...URN ADDRESS GET THE FIRST STATUS BYTE ISOLATE THE BITS TEST FOR CORRECT VALUE I F ERROR GO MARK IT GOOD RETURN 80 OE 0041 R 40 OR STC RET RETURN TO CALLER CHKLERROR DISKETTE_STATUS BAD_SEEK F9 C3 FB 51 F8 B8 9001 CD 15 7211 B3 04 2B C9 ERROR RETURN CODE CHLSTAL2 ENDP WAILINT INPUT OUTPUT THIS ROUTINE WAITS FOR AN INTERRUPT TO OCCUR A TIME OUT ROUTINE TAKES PLACE DURING THE WAIT SO THAT AN ERROR MA...

Page 158: ...2 51 52 B3 07 33 C9 BA 03F4 EC A8 80 75 OB E2 F9 MOV AL EOI END OF INTERRUPT MARKER OUT INTAOO AL I NTERRUPT CONTROL PORT MOV AX 09101H SIGNAL DEVICE OPERATION COMPLETE INT 15H POP AX POP DS RECOVER SYSTEM IRET RETURN FROM INTERRUPT DSKLINTE ENDP RESULTS INPUT OUTPUT THIS ROUTINE WILL READ ANYTHING THAT THE NEC CONTROLLER HAS TO SAY FOLLOWING AN INTERRUPT NONE CY 0 SUCCESSFUL TRANSFER CY 1 FAILURE...

Page 159: ...TUS COUNTER JNZ J38 GO BACK FOR MORE JMP J41 CHIP HAS FAILED RESULT OPERATION I S DONE J44 POP OX POP CX RECOVER REGI STERS RET GOOD RETURN CODE FROM TEST RESULTS ENDP NUM_TRANS THIS ROUTINE CALCULATES THE NUMBER OF SECTORS THAT WERE ACTUALLY TRANSFERRED TO FROM THE DISKETTE INPUT BP POINTER TO ORIGINAL STACK ENTRIES OUTPUT BP 14 AL SAVE AREA ON STACK ACTUALLY TRANSFERRED NO OTHER REGISTERS MODIFI...

Page 160: ...437 75 IB JNZ MOL02 IF RUNNING GO CHECK TIME TURN ON MOTOR 0439 80 26 003F R FO AND MOTOR_STATUS OFOH TURN OFF ALL MOTOR BITS 043E 08 06 003F R OR MOTOILSTATUS AL TURN ON THE CURRENT MOTOR 0442 BO 10 MOV AL 10H MASK BIT 0 4 44 8A CA MOV CL DL GET DRIVE NUMBER AS SHI FT COUNT 0446 D2 EO SAL AL CL DEVELOP BIT MASK FOR MOTOR ENABLE 0448 OA C2 OR AL DL GET DRIVE SELECT BITS IN 044A OC OC OR AL FDCDMIL...

Page 161: ...9 049B 2B 02 0490 8E C2 049F 8A E6 04Al 3C 00 04A3 74 10 04A5 BE 0000 04A8 3C 03 04AA 74 07 04AC BE 0000 04AF 3C 01 04Bl 75 OF 04B3 04B3 2E 8E 04 04B6 2E 8B 7C 02 04BA 2E 8B 4C 04 04BE 2E 8B 54 06 04C2 04C2 89 7E 04 04C5 89 4E OA 04C8 89 46 OC 04CB 2B CO 04CD 89 46 OE 0400 8A 16 0010 R 0404 Bl 06 0406 02 EA 0408 FE C2 04DA 89 56 00 0400 C6 06 0041 R 00 04E2 C3 04E3 DSKLRDPARM PROC NEAR CALL GELDRL...

Page 162: ...IVES YES THEN JUMP SET NO CHANGE LINE AVAIL CHANGE LINE AVAILABLE SAVE VALUE IN AH SAVE AREA THROW AWAY RETURN ADDRESS GO BACK TO MAIN ROUTINE 050B 050B E8 0586 R 050E OA CO 0510 74 41 0512 3C 03 0514 75 63 0516 E8 041B R 0519 0519 52 051A BA 03F4 0510 EC 051E BA 03 F7 0521 EC 0522 5A 0523 A8 80 0525 75 OF DISKETTE CHANGE lINE STATUS ROUTINE DSKLCHANGE PROC NEAR CAll GELDRVJONFIG OR Al Al JZ DCl_0...

Page 163: ...CHANGE WAS ACTIVE AND RESET SUCCESSFUllY IF CHANGE LINE NOT SUPPORTED AND NO READ DCl STATUS DON T REPORT THE ERROR 055A DCl_07 055A F6 06 0016 R 04 TEST BIOS_STATUS DCl_SUPPORTED CHANGE LINE SUPPORTED 055F 75 06 JNZ DCl_08 JUMP IF YES 0561 80 7E OF 16 CMP AHSAVE BP 16H FUNCTION READ DCl STATUS 0565 75 C7 JNE DCl_02 NO THEN INDICATE INACTIVE 0567 DCL08 0567 80 26 0016 R FD AND BIOS_STATUS NOT FORC...

Page 164: ...BBLES SET SHIFT COUNT SUBTRACT DRIVE NUMBER MULTIPLY BY 4 BITS DRIVE SHI FT TO GET DRIVE INFO SAVE ONLY LOW NIBBLE Bootstrap Loader Interrupt Hex 19 SYS BOOT 05A3 05A3 FC 05A4 B8 R 05A7 SE os 05A9 ES 0000 05AC ES 0000 05AF 75 4C 05Bl 05Bl FB 05B2 2B CO 05B4 SE CO INT 19H BOOT STRAP LOADER TRACK 0 SECTOR 1 IS READ INTO THE BOOT LOCATION SEGMENT 0 OFFSET 7COO AND CONTROL IS TRANSFERRED THERE IF THER...

Page 165: ...ER RESET THE DISKETTE SYSTEM DISKETTE_IO I F ERROR TRY AGAIN IF RETRY EXCEEDS TWO THEN BASIC AX 201H READ IN THE SINGLE SECTOR DX DX TO THE BOOT LOCATION BX OFFSET BOOLLOCN CX I 13H CX HL2 H4 AH 16H 13H AH TIMeOUT HL3 HO H10 DRIVE 0 HEAD 0 SECTOR I TRACK 0 DISKETTE_IO GET RETRY COUNT GO CHECK BOOT IF READ OKAY CHECK FOR NO MEDIA IN DRIVE BY CHECKING CHANGE LINE CHECK FOR NO MEDIA IN DRIVE IF NO ME...

Page 166: ...R EB 0681 E8 0000 E 0684 E8 0000 E 0687 EA 7COO R H4_LP ADD DI 2 CMP AX ES DI LOOPZ H4_LP LOOP I F DATA SAME JZ HIO BAD BOOT RECORD I F ALL DATA SAME AND CALL CALL JMP BIOS_STATUS NOT BOOLFIHIT DCL_SUPPORTED RESET BIOS FLAGS DSP_INIT CLEAR THE DISPLAY DSP_FSETM CLEAR THE TARGET DISPLAY BOOLLOCN SHOW DISKETTE EXITING DRIVE AND SPLITTING APART 068C 80 26 0016 R EF HI0 AND BIOS_STATUS NOT BOOLFIHIT R...

Page 167: ...AL USING BH AND DATA AT DI CALL EXLEVENT WILL RETURN AFTER TIME LIMIT OR WHEN THERE IS DATA IN KEYBOARD BUFFER JC KW_EXIT I F TIMEOUT THEN JUMP A KEY WAS HIT MOV INT CMP JE AH O l6H AH 3BH FlBRK OTHERWISE PURGE THE KEY Fl KEY YES THEN WAIT FOR BREAK CHECK FOR POWER ON SELF TEST LOOP MODE REQUEST AL OCH CNTL L KEY KELWAIT NO THEN WAIT SOME MORE 06El C7 06 0072 R ABCD CMP JNE MOV JMP RESELFLAG LOOP_...

Page 168: ...YRIGHT INSTRUCTIONS FORM NUMBER G120 2083 CHANGE LEVEL 0 0 FUNCTIONS COMMO_IO PRLIO COM_POWER MODULE SIZE 550 BYTES DECIMAL ENTRY CONDITIONS REFER TO PROLOGUES EXIT CONDITIONS REFER TO PROLOGUES ROUTINES IN MODULE COMMO_IO PRLIO COM_POWER INTERNAL DATA AREAS TABLES NONE COMMUNICATIONS BIOS PRINTER BIOS POWER ON OFF COM DEVICES COMMUNICATIONS BIOS PRINTER BIOS POWER ON OFF COM DEVICES EXTERNALLY RE...

Page 169: ... STATUS ROUTINE EXCEPT THAT THE ONLY BITS LEFT ON ARE THE ERROR BITS 7 4 3 2 1 IF AH HAS BIT 7 ON TIME OUT THE REMAINING BITS ARE NOT PREDICTABLE THUS AH IS NON ZERO ONLY WHEN AN ERROR OCCURRED AH 3 RETURN THE COMMO PORT STATUS IN AX AH CONTAINS THE LINE STATUS BIT 7 TIME OUT BIT 6 TRANS SH I FT REGISTER EMPTY BIT 5 TRAN HOLDING REGISTER EMPTY BIT 4 BREAK DETECT BIT 3 FRAMING ERROR BIT 2 PARITY ER...

Page 170: ...EG INTO DS OOOF 8B 94 0000 MOV OX RS23LBASE S I GET PORT BAS E ADDRESS 0013 OB 02 OR DX DX TEST FOR 0 NO PORT 0015 74 28 JZ A3 RETURN 0017 8A 08 MOV BL AL SAVE SEND CHAR IF IS ONE CHECK FOR PRESENSE OF 8250 AT THIS PORT 0019 83 C2 03 ADD DX 3 ADDRESS 8250 LINE CTRL REG 001C E8 0000 E CALL CHECLFOR_8250 CARRY SET IF PRESENT 001F FB STI SHIELDS DOWN 0020 72 05 JC AO YES GO ON IF PRESENT 0022 80 CC 8...

Page 171: ...ISTER DX RS23LBASE SIJ POINT TO HIGH ORDER OF DIV DX AL CS DIJ l DX AL DX AL CS DIJ DX AL DX 3 AL AH AL OIFH DX AL DX DX AL O DX AL SHORT AI8 GET HIGH ORDER OF DIVISOR SET HIGH OF DIVISOR GET LOW ORDER OF DIVISOR SET LOW OF DIVISOR ADDRESS LINE CTR REG GET PARMS BACK STRIP OFF THE BAUD BITS SET LINE CTRL TO WORD LENGTH PARITY AND STOP BITS ADDRESS INTR ENABLE REG DISABLE INTERRUPTS IER COM_STATUS ...

Page 172: ... REGISTER GET LINE CONTROL STATUS PUT IN AH FOR RETURN I ro D MUS Rffi GET MODEM CONTROL STATUS RETURN COM_POWER TURN POWER ON OFF TO COMMO CARD ENTRY BL MODEM ASYNC POWER BIT IN FEATURE CONFIGURATION REGISTER 02 FOR MODEM 04 FOR ASYNC SEC 05 ASYNC PRIMARY BH 0 TURN POWER OFF 1 TURN POWER ON EXIT AH 0 AND CF 0 IF OPERATION OKAY AH 80 AND CF 1 I F POWER ON REQSTED AND NO RESP FROM 8250 WITHIN 500 M...

Page 173: ...E CB 014B 75 F2 0140 B4 80 014F F9 0150 EB 02 UNMASK INTERRUPT LEVEL 3 4 NOT IN MOV AND OUT AH AL INTA01 BL AL AL AH INTA01 AL ENA8LE SYSTEM INTERRUPTS STI MOV LOOP CX 100 MS_DELAY RESTORE INTERRUPT MASK CLI IN NOT AND OR OUT AL INTA01 AH BL AH AL BL INTA01 AL RESTORE INTERRUPT VECTOR POP MOV POP MOV POP POP POPF JMP CX Sl 2J CX CX SI CX DS SI SHORT CP3 GET CURRENT SYSTEM IRPTS SAVE CURRENT SYSTEM...

Page 174: ...OR_STATUS PROC NEAR 0158 8A 90 007C R MOV BL RS23LTIM_OUT DI LOAD OUTER LOOP COUNT 015C WFSO 015C 2B C9 SUB CX CX 015E WFS1 015E EC IN AL DX GET STATUS 015F 8A EO MOV AH AL MOVE TO AH 0161 22 C7 AND AL BH ISOLATE BITS TO TEST 0163 3A C7 CMP AL BH EXACTLY TO MASK 0165 74 08 JE WFS_END RETURN WITH ZERO FLAG ON 0167 E2 F5 LOOP WFSI TRY AGAIN 0169 FE CB DEC BL 016B 75 EF JNZ WFSO 0160 OA FF OR BH BH S...

Page 175: ... AT BEGINNING OF DATA SEGMENT 408H ABSOLUTE 3 WORDS DATA AREA PRINLTIM_OUT BYTE MAY BE CHANGED TO CAUSE DIFFERENT TIME OUT WAITS DEFAULT 20 IF NO PRINTER ATTACHED OR INVALID FUNCTION CODE RECEIVED A RETURN IS MADE WITH AH PRINTER TIMEOUT 01 REGISTERS USED AH IS MODIFIED ALL OTHERS UNCHANGED INTERRUPTS INTERRUPTS ARE ENABLE UPON ROUTINE ENTRY RESTORED ON EXIT ASSUME CS ROMCODE OS DATA PRLIO PROC FA...

Page 176: ...THAT A PRINTER BUSY WAIT IS IN AFFECT B3 CLC MOV INT JC SUB BL1 IN MOV TEST JNZ LOOP TEST JZ DEC JNZ AX 90FEH 15H B3_2 CX CX AL DX AH AL AL NOLBUSY B4 B3_1 AL NOLERROR B3_3 BL B3 INT 15 DEVICE BUSY FUNCTION 90 PRINTER ID JUMP I F TIMEOUT OCCURRED WAIT_BUSY GET STATUS STATUS TO AH ALSO IS PRINTER CURRENTLY BUSY NO OULSTROBE YES TRY AGAIN CHECK FOR I 0 ERROR YES JUMP FINISHED 500 MS DELAY NO DO AGAI...

Page 177: ... SET INIT LINE LOW SLCT HIGH SET MAX TIME CNT TO 4 25 SEC WAIT FOR UP TO 4 SECONDS FOR COMPACT PRINTER TO DROP BUSY I F PARALLEL PRINTER THEN JUST WAIT 5 MSECS AND EXIT BlO MOV LOOP POP CMP JNE PUSH CX CX 5 MS_DELAY CX OX CPRT_MODE B11 DELAY FOR 5 MSECS COMPACT PRINTER EX IT LOOP I F NOT WAIT FOR COMPACT PRINTER TO DROP BUSY IN TEST LOOPZ AL CPRLSTAT AL 02 B10 CHK FOR BUSY DROP IN STATUS NOT BUSY ...

Page 178: ...NTERRUPT HANDLER INITIALIZE REAL TIME CLOCK TEST REAL TIME CLOCK FOR TIME UPDATE MODULE SIZE 936 BYTES ENTRY CONDITIONS REFER TO ROUTINE PROLOGUES EXIT CONDITIONS REFER TO ROUTINE PROLOGUES ROUTINES IN MODULE TOD_PROC SELTOD TMRO_INT8 ALLOW READ SET OF REAL TIME CLOCK INITIALIZE TIMER DATA AREA TIMER 0 INTERRUPT HANDLER INTERNAL DATA AREAS TABLES NONE EXTERNALLY REFERENCED ROUTINES REFER TO EXTRN ...

Page 179: ...T OX LOW WORD OF COUNT REGISTERS MODIFIED AL CX OX 2 PURPOSE OF ENTRY SET CURRENT CLOCK TIMER DATA AREA INPUT CONDITIONS REGISTERS MODIFIED AH OIH CX HIGH WORD OF COUNT OX LOW WORD OF COUNT AH 3 PURPOSE OF ENTRY READ TIME OF REAL TIME CLOCK 4 2 154 ROM BIOS INPUT CONDITIONS AH 02H NORMAL EXIT CONDITIONS CH HOURS IN BCD CL MINUTES IN BCD DH SECONDS IN BCD DL 00 NOT DAYLIGHT SAVINGS 01 DAYLIGHT SAVI...

Page 180: ...ENTRY RESET THE ALARM INPUT CONDITIONS AH 07H NORMAL EXIT CONDITIONS NONE ERROR EXIT CONDITIONS NONE REGISTERS MODIFIED AX 9 PURPOSE OF ENTRY SET ALARM TIME OF RTC FOR POWER ON INPUT CONDITIONS AH 08H CH HOURS IN BCD Cl MINUTES IN BCD DH SECONDS I N BCD NORMAL EXIT CONDITIONS CF FLAG 0 ERROR EXIT CONDITIONS CF FLAG SET IF ClK NOT OPERATING CF FLAG SET I F ALARM ALREADY ENABLED REGISTERS MODIFIED A...

Page 181: ...ND 1 RTCCHKO OR AH AH I F PARAMETER AH O JZ RTCO THEN READ TIMER DEC AH I F PARAMETER AH l JZ RTCI THEN SET TIME CMP AH 9 CHECK IF VALID DATA PASSED IN AH 0 AH 9 JAE TOD_NRET NORMAL RETURN IF NOT VALID CALL DISABLE_NMI DISABLE NMI S JMP RTCCHKl GO CHECK FOR OTHER FUNCTIONS TOD_PROC NORMAL RETURN TOD_NRET CALL ENABLE_NMI RE ENABLE NMI S TOO_RET STI ENABLE INTERRUPTS FOR TIMER POP OS RECOVER SEGMENT...

Page 182: ...DATA 007E 2A 02 SUB DL DL SET NOT DAYLIGHT SAVINGS 0080 B4 DB MOV AH RTCMODE GET RTCMODE RegB 0082 E8 0000 CALL GELRTCNMI 0085 A8 01 TEST AL SELDAYLIGHT DAYLIGHT SAVINGS SET 0087 74 01 JZ RTC2B NO JUMP AROUND 0089 42 INC OX YES SET DL Ol 008A EB 8C RTC2B JMP TOD_NRET NORMAL RETURN WITH TIME S E T R T C TIM E FUNCTION 03H 008C RTC3 008C E8 OlFE R CALL UPD_IN_PR CLOCK OPERATING 008F 73 03 JNC RTC3A ...

Page 183: ...AMETER AH 4 OOFO 74 D5 JZ RTC4 THEN GET RTC DATE 00F2 FE CC DEC AH I F PARAMETER AH 5 00F4 74 07 JZ RTC5 THEN SET RTC DATE 00F6 FE CC DEC AH I F PARAMETER AH 6 00F8 74 3B JZ RTC6 TH EN SET RTC ALARM OOFA EB 59 90 JMP RTCCHK3 GO CHECK FOR REMAINING FUNCT S E T R T C D A T E FUNCTION 05H OOFD RTC5 OOFD E8 01FE R CALL UPD_IN_PR CLOCK OPERATING 0100 73 03 JNC RTC5A YES GO AROUND 0102 E8 01E5 R CALL IN...

Page 184: ...UNCTION 08H 0160 RTC8 0160 E8 01A9 R CALL SET LRM SET ALARM REGISTERS 0163 3D 0000 CMP AX O GOOD RELCODE RETURNED 0166 75 03 JNE RTC8A YES CONTINUE 0168 E9 0026 R JMP TOD_ERET NO ERROR RET 016B 80 OE OOAO R 04 RTC8A OR RTCWAI T_FLAG PON LRtLPEND SET PWR ON BY ALARM PENDING 0170 E9 0018 R JMP TOD_NRET NML RTRN AFTER SETTING ALARM G E T R T C A L ARM AND S TAT U S FUNCTI ON 09H 0173 RTC9 0173 E8 01F...

Page 185: ...LOCK OPERATING OlB8 73 03 JNC CONT2 YES GO AROUND 01BA E8 OlE5 R CALL I NIT IALI ZE_STATUS NO INIT CONTROL STATUS REG S A D 01BD CONT2 01BD B4 01 MOV AH RTCASEC ADDRESS AND SET 01BF 8A C6 MOV AL DH RTCASEC Reg1 TO 01C1 E8 0000 E CALL PULRTCNMI ASEC PARAMETER DH 01C4 B4 03 MOV AH RTCAMIN ADDRESS AND SET 01C6 8A Cl MOV AL CL RTU MIN Reg3 TO 01C8 E8 0000 CALL PULRTCNMI AMIN PARAMETER CL 01CB B4 05 MO...

Page 186: ...SELCLOCK SEL24HR RTCMODE RegB 82H CALL PULRTCNMI MODES ON SET 24HR BCD MOV CALL MOV CALL RET AH RTCINLSTAT GELRTCNMI AH RTCCOND_STAT GELRTCNMI INITIALIZLSTATUS ENDP UPD_IN_PR DSABLE ALL OTH NO DYLGHT GET RTCINLSTAT RegC TO INITIALIZE IT GET RTCCOND_STAT RegD TO INITIALIZE IT RETURN TO CALLER FUNCTION WAIT FOR RTC CLOCK TO UPDATE TIME SET CARRY IF CLK NOT OPERATING DOESN T LEAVE UPDATE MODE AFTER 6...

Page 187: ...OS RESET TIMER DATA AREA SUB AX AX MaY TIMER_OFL AL MOV TIMER_LOW AX MaV TIMEILHIGH AX MOY AH RTCOIAG_STAT CALL GELRTCNMI SAVE SEGMENT RESET TIMER DATA AREA ADDRESS AND GET RTCDIAI STAT RegE AND AL RTCTIMLBAD RTCFAILED TIME BAD OR CLOCK ERROR JNZ TOD_NOTSET YES TIMER SET TO ZERO GET RTC TIME CLC SET CF O NO ERROR STATE MOV AH GELRTCTIME FOR INLIA AH 2 GET RTC INT lAH GET RTC TIME CH H CL M DH S JC...

Page 188: ...X AX SET GOOD RETURN CODE POP OS RETSORE SEGMENT RET RETURN TO CALLER BAD_TIME MOV AH RTCDIAG_STAT ADDRESS AND CALL GELRTCNMI GET RTCDIAG_STAT RegE OR AL RTCFAILED SET RTCFAILED BIT 1 CALL PULRTCNMI PUT RTCOIAli STAT RegE JMP SELRET RETURN WITH GOOD RETURN CODE TOO_NOTS ET TEST AL RTCFAILEO IS RTCFAILED SET 1 JNZ SELRET YES RTN WITH GOOD RTN CODE MOV AX NON_FATALERR 100H NO RTN WITH ERR CD IN AH P...

Page 189: ...CODE FOR POST INTERRUPTS LEFT AS ARE I NTERNALLY REFERENCED ROUTI NES INITIALIZLSTATUS EXTERNALLY REFERENCED ROUTINES GELRTCNMI PULRTCNMI RTCZ TST PROC NEAR MOV CALL TEST JZ AH RTCDIAG_STAT GELRTCNMI AL RTCTlME_BAD RTC2_02 CHECK FOR CLOCK NOT SET JUMP IF CLOCK IS SET MUST INITIALIZE AND SET TIME TO 0 0 0 DATE TO 0 0 0 CALL MOV MOV MOV RTCZ O CALL INC LOOP I NITIALI ZE_STATUS AH RTCTSEC AL O CX 0 P...

Page 190: ...POST FLAG TO BE SET BY NMI HNDLR EACH CNT ON DL 1 35MS 0301 RTCLWAIT 0301 26 F6 07 80 TEST BYTE PTR ES BX PSTD WAIT FOR POSTED FLAG 0305 75 OB JNZ INLDONE 0307 B9 0102 MOV CX MS_DELAY DELAY FOR 1 MSEC 030A E2 FE LOOP 030C FE CA DEC DL 030E 75 Fl JNE RTCLWAIT 0310 EB 00 JMP SHORT RTCLBAO BAD IF 110 MSECS 0312 INLOONE 0312 80 FA OF CMP DL 15 OKAY IF 90 MSECS 0315 77 08 JA RTCLBAD 0317 26 80 27 7F AN...

Page 191: ... REGISTERS MODIFIED NONE INTERRUPTS FORCED ON STI I NTERNALLY REFERENCED ROUTI NES NONE EXTERNALLY REFERENCED ROUTI NES DDS INT lCH I NT 4AH 0330 TMRO_INT8 PROC FAR 0330 FB STI I NTERRUPTS BACK ON 033E IE PUSH OS 033F 50 PUSH AX 0340 52 PUSH OX SAVE MACHINE STATE 0341 E8 0000 E CALL DDS 0344 FE OE 007B R DEC EVENLTIM_OUT DEC WAIT ON EVNT TIMEOUT CTR 0348 FF 06 006C R INC TIMER_LOW INCREMENT TIME 0...

Page 192: ...4 20 039E OA CO 03AO 75 OE 03A2 F6 06 OOAO 03A7 74 07 03A9 80 26 OOAO 03AE CD 4A 03BO 03BO 5A 03Bl 58 03B2 IF 03B3 CF 03B4 03B4 MOV AL FDLRUN TRN OFF MTRS SLCTS DMAII NTS MOV DX DRIVE_CNTL OUT DX AL T6 INT lCH XSFER CONTROL TO A USER RTNE END OF INTERRUPT MOV OUT AL EOI INTAOO AL END OF INTERRUPT TO CNTLR CHECK FOR ANY OTHER INTERRUPTS IN SERVICE MOV AL READ_I SR SET TO READ INSERVICE REG OUT INTA...

Page 193: ...DITIONS REFER TO ROUTINE PROLOGUES BELOW RESTRICTIONS FOR SPECIAL RESTRICTIONS REFER TO INDIVIDUAL FUNCTION ROUTI NE PROLOGUES INTERNALLY REFERENCED ROUTINES SYS_PROF EXLEVENT SYS_POWER_OFF SYS_STAUS POSLINTV WAIT_INTV DELBUSY TMRO_CHK INLCOMPLETE EXIT CONDITIONS NORMAL EXIT CONDITIONS REFER TO ROUTINE PROLOGUE BELOW ERROR EXIT CONDITIONS CARRY FLAG AND AH B6H IS SET FOR INVALID FUNCTION REQUEST O...

Page 194: ... DW 44H OFFSET SYS_PROF 40H READ MOO SYS PROFILE DW OFFSET EXLEVENT 41H WAIT ON EXTERNAL EVENT DW OFFSET SYS_POWER_OFF 42H SYSTEM POWER OFF DW OFFSET SYS_STATUS 43H READ SYSTEM STATUS DW OFFSET SYS MODEM_PWR 44H MODEM POWER CONTROL ENTRI ES FOR 80H 86H DW OFFSET RETURN 80H DEVICE OPEN DW OFFSET RETURN 81H DEVICE CLOSE DW OFFSET RETURN 82H PROGRAM TERMINATION DW OFFS ET POSLI NTV 83H POST ON ELPS T...

Page 195: ... CONDITION CARRY SET IF INT 9 SHOULD PROCESS KEY CARRY CLEAR IF INT 9 SHOULD NOT PROCESS KEY BUT JUST ISSUE EOI AND EXIT LEVEL RESERVED FOR OPERATING SYSTEM USE THIS BIOS WILL RETURN WITH CARRY SET TO DEVICE OPEN DEVICE CLOSE PROGRAM TERMINATION POST ON TIME INTERVAL JOYSTICK SUPPORT SYSTEM REQ KEY CHANGE 2 170 ROM BIOS ENABLE INT 9 TO HANDLE KEY AH 80H BX DEVICE ID CX PROCESS I D AH 81H BX DEVICE...

Page 196: ... FOR THESE WAITS THESE ARE TIMEOUT ONLY TIMES ARE FUNCTION NUMBER DEPENDENT DEVICE TYPE DESCRIPTION TIMEOUT OOH DISK YES 01H DISKETTE YES 02H KEYBOARD NO FDH DISKETTE MOTOR START YES AH O CARRY CLEAR ES BX TABLE POINTER AH COH TABLE BYTE DEFINED AS FOLLOWS 1 2 LENGTH OF TABLE IN BYTES BYTE BYTE BYTE BYTE STARTING AT BYTE 3 3 SYSTEM MODEL BYTE 4 SECONDARY MODEL BYTE 5 BIOS REVISION NUMBER 6 FEATURE...

Page 197: ...O LINK TO PROPER ROUTINE CHECK FOR SYSTEM SERVICES AH 80 91H SYS_SV2 CMP JA SUB CMP JB SUB JMP AH 91H CHLDESCR AH 7BH AH 15H SYS_SV3 AH 9 SHORT SYS_SVC IN VlD SYS SVCS 2 UP RANGE YES CK READ DESCRIPTOR MAKE REL TO 4TH ENTRY IN TBl FUNCTION 90H NO GO SYS SERV 3 REQUEST YES CORRECT THE OFFSET GO LINK TO THE ROUTINE CHECK FOR FUNCTIONS 87H 8FH THAT ARE INVALIO SYS_SV3 CMP AH 12 JAE INLFUN LINK TO PRO...

Page 198: ...ODEM SETTINGS FROM BX AND TURN ON MODEM DEFINITION OF BITS IN SYSTEM PROFILE REGISTERS AL 0 1 BH BIT 7 0 SET SYSTEM COLD START MODE 1 SET SYSTEM WARM START MODE BIT 6 0 DISABLE LOW BATTERY WARNING MESSAGE 1 ENABLE LOW BATTERY WARNING MESSAGE BITS 5 4 INITIAL VIDEO MODE 00 RESERVED 01 40 X 25 MONOCHROME USING CGA LCO 10 80 X 25 MONOCHROME USING CGA LCD 11 80 X 25 MONOCHROME USING MONO LCD BITS 3 2 ...

Page 199: ...DEFAULT SETTINGS AFTER STANDY POWER LOST NOT PRESENTLY SUPPORTED BH RESERVED FOR FUTURE USE OUTPUT AL 80H IF MODEM CANNOT BE CONFIGURED OR IS NOT PRESENT AL OOH IF MODEM CONFIGURATION IS PERFORMED OK AL UNDEFINED FOR OTHER FUNCTIONS REGISTERS MODIFIED AX SYS_PROF PROC NEAR CMP AL l IS REQUEST FOR MODIFY JNE SYS1 JMP SPROF_MODI FY YES GO SYS PROF MODI FY SYS1 CMP AL O NO REQUEST FOR SYS READ JE SPR...

Page 200: ...D PWR_ON_BATT BIT FROM PROFILE IS BATT PWRED MODEM OK NO TURN OFF MODEM SET UP CONFIG DATA IN AL AND CALL SET ROUTINE MPROFl CALL JC JMP MOV MODEMJONFIG MODEM_ERROR SPROF_EXIT AL BL GET CONFIG INPUT DATA AND DO IT ERROR OUT I F PROBLEM INT RETURN ERROR FOUND IN CONFIGURING MODEM TURN OFF AND EXIT MODEM_ERROR MOV BX 0002H CALL COM_POWER MOV AL 80H JMP SPROF_OUT READ PROFILE ONLY MODEM POWER OFF NOW...

Page 201: ... 5A POP OX RESTORE REGISTERS 016C 5B POP BX 0160 90 POPF RESTORE INTERRUPTS SET MODEM AND RS 232 POWER STATE IF ON BAT PWR ACCORDING TO PROFILE I F ON EXTERNAL POWER THEN FORCE MODEM AND RS 232 ON 016E E4 7F IN AL PWILSTAT GET POWER STATUS 0170 AS 40 TEST AL EXLPWR ON EXTERNAL POWER 0172 74 03 JZ EXECPROF NO GO ACCORDING TO PROF 0174 80 CF 03 OR BH 03 YES SELECT FORCE TO POWER 0177 52 EXECPROF PUS...

Page 202: ...TION CALL 20 01B3 BO 02 MOV AL 2 SET LCD HIGH INTENSITY SUB 01B5 9C PUSHF 01B6 DE PUSH CS 01B7 E8 0000 E CALL VIDEO_IO_I I NT 10 CALL 01BA 5B POP BX RESTORE BX REG 01BB SPROF_EXIT 01BB 2A CO SUB AL AL SET GOOD RETURN OIBO SPROF_OUT 01BO C3 RET 01BE SYS_PROF ENOP External Event Services EXT_EVENT INT 15H ROUTINE NAME EXLEVENT AH 41H FUNCTION TO WAIT FOR A SPECIFIC STATUS CHANGE AFTER AN EXT EVENT O...

Page 203: ...AX RESTRICTIONS THIS ROUTINE WILL ENABLE PROC IRPTS NO TIMEOUT WILL OCCUR IF TMR 0 IS NOT ENABLED WAITING ON NMI IRPTS I S NOT ALLOWED EXLEVENT PROC NEAR MOV AH AL SAVE TYPE CODE CMP BL O NO TIME LIMIT FOR TIMEOUT JE EXLWTl NO GO CHECK FOR WAIT TYPE OR AH 20H YES SET NO TIMEOUT FLAG 88 IE 007B R MOV EVENLTIM_OUT BL SAVE TIMEOUT VALUE EXLWTl 24 OF AND AL OFH SAVE ONLY TYPE 3C 00 CMP AL O WAIT ON AN...

Page 204: ...4 JC WAILEXIT 021F EB E4 JMP TNLWAIT COMPARE RETURN I F NOT EQUAL 0221 CNEQ_WAIT 0221 E8 026B R CALL PREP_WAIT PREPARE FOR WAIT 0224 F6 C4 10 TEST AH 10H TEST FOR I O PORT READ 0227 75 08 JNZ CNEQ_WTl 0229 26 38 3D CMP BYTE PTR ES Dll BH 022C 75 34 JNE WAIT_DONE RETURN I F ZERO 022E EB 06 90 JMP CNEQ_WT2 0231 CNEQ_WTl 0231 EC IN AL DX READ FROM I O PORT 0232 3A C7 CMP AL BH 0234 75 2C JNE WAILDONE...

Page 205: ...UN DISABLCSLEEP DSABL NMI ST FL SPEED CLOCICCTL AL NO ENABLE SLEEP CLOCK 2 DELAY AL NOT DISABLE_SLEEP ENABLE SLEEP CLOCK CLOCICCTL AL PREP_WAIT ENDP THIS SUBROUTINE STOPS THE SYSTEM CLOCKS AND RTN AFTER THEY HAVE BEEN RESTARTED IF AN INTERRUPT HAS OCCURRED BTWN PREP_WAIT EVENLWAIT THE SLEEP CLOCK WILL HAVE BEEN DISABLED BY HARDWARE THE EVENLWAIT ROUTINE WILL FALL THROUGH WITHOUT STOPPING THE CLOCK...

Page 206: ...E WILL RETURN CONTROL TO THE USER WHEN THE POWER IS RE ACTIVATED REGISTERS MODIFIED AX SYS_POWEILOFF PROC NEAR CMP AL OI REQUEST FOR RESUME MODE JNE SYS_POFFl 80 OE 0016 R 40 OR BIOS_STATUS F_RESUME SET FORCE RESUME FLAG SYS_POFFI 80 26 003F R CO AND MOTOR_STATUS OCOH RESET DISKETTE MOTORS BA 03F2 MOV OX 03 F2H BO 04 MOV AL 04H TURN OFF MOTORS SELECT EE OUT DX AL E4 7F IN AL PWR_STAT ENSURE SUSPEN...

Page 207: ...ED ON POWER ACTIVATED BY RTC ALARM STANDBY POWER LOST RTC TIME BAD OPERATING ON EXTERNAL POWER LOW BATTERY REGISTERS MODIFIED AX SYS_STATUS PROC NEAR PUSH BX MOV AH RTCSYS_STAT CALL GELRTCREG AND AL PON_ALRM MOV BL AL IN AL PWR_STAT AND AL LOW_BAT EXLPWR OR BL AL MOV AH RTCDIAG_STAT CALL GELRTCREG TEST AL RTCTIME_BAD JZ SYS_STATl OR BL 20H SYS_STATl IN AL KYBD_CNTL SAVE BX SELECT POWER ON STAT GET...

Page 208: ...K AT THE DISPLAY 0300 E8 0000 E CALL GELRTCREG CONFIGURATION 0303 A8 03 TEST AL DSP LCD DSP_CLCD IS LCD CONFIGURED 0305 75 03 JNZ SYS_STALEXIT YES THEN LEAVE ROUTINE 0307 80 CB 01 OR BL OI NO LCD IS INOPERATIVE 030A SYS_STALEXIT 030A 8A C3 MOV AL BL RESTORE STATUS BACK TO AL 030C 5B POP BX RESTORE BX REG 0300 F8 CLC SET NORMAL GOOD RETURN 030E C3 RET 030F SYS_STATUS ENDP Modem Power Services SYS_M...

Page 209: ...OD_OFF 0321 BB 0002 MOV BX 0002H SELECT MODEM 0324 E8 0000 E CALL COM_POWER AND TURN OFF 0327 SYSjlOD_END 0327 2A CO SUB AL AL RETURN WIO ERROR 0329 SYS_MOD_EXIT 0329 C3 RET 032A SYSjlODEM_PWR ENDP 2 184 ROM BIOS ...

Page 210: ...B MOV AH RTCMODE SET REGISTER NUMBER FOR RTC CHECK FOR SET 032C 3C 00 CMP AL O 032E 74 14 JE POSTLI MUST BE CLEAR CANCEL ANY OUTSTANDING INTERVAL 0330 9C PUSHF DISABLE INTERRUPTS 0331 E8 0000 E CALL oI SA BL E_NM I AND 8259 INTERRUPTS 0334 E8 0000 E CALL GELRTCREG GET MODE 0337 24 BF AND AL NOT PIE_ENABLE RESET PERIODIC IRPT ENABLE 0339 E8 0000 E CALL PULRTCREG SET MODE 033C 80 26 OOAO R FE AND RT...

Page 211: ... WITH CARRY CLEAR DONE AFTER ELAPSED TIME REACHED REGISTERS MODIFIED AX 0380 0380 F6 06 OOAO R 01 0385 74 04 0387 F9 0388 EB 50 90 038B 038B 9C 038C E8 0000 E 038F 8C IE 009A R 0393 C7 06 0098 R OOAO R 0399 89 OE 009E R 039D 89 16 00ge R 03Al 80 OE OOAO R 01 03A6 80 26 OOAO R 7F 03AB B4 OB 03AD E8 0000 03BO OC 40 03B2 E8 0000 03B5 E4 61 03B7 24 F7 03B9 E6 61 03BB E8 0000 03BE 9D WAILINTV TEST JZ S...

Page 212: ...INTV ENDP Device Busy Services DEV_BUSY INT 15H ROUTINE NAME DELBUSY AH 90H FUNCTION THIS ROUTINE IS CALLED TO INDICATE THAT A DEV IS BUSY FOR THE DEVICE TYPE DISKETTE A RTRN IS NOT MADE UNTIL A DISKETTE INTERRUPT HAS BEEN RECEIVED OR 2 SECONDS HAVE ELAPSED WHICHEVER IS FIRST FOR THE DEV TYPE KYBRD A RETURN WILL NOT BE MADE UNTIL T HE KYBD BFR IS IN A NOT EMPTY CONDITION ENTRYIEXIT CONDITIONS INPU...

Page 213: ...TIME VAL EVENLTIM_OUT WHILE CNTLR IS BEING POWERED ON BE BACK FROM NMI IF PWR WAS OFF HERE RESTORE OX 0407 38 IE 007B R NOP POP eMP JA MOV OR JNE STC JMP EVENLTIM_OUT BL DEVLEXIT 040B 77 31 0400 8A IE 007B R BL EV ENLTI M_OUT BL BL EXIT I F MORE THAN ENOUGH TME RETRI EVE ADJUSTED WAIT TIME 0411 OA DB 0413 75 03 0415 F9 0416 EB 26 0418 0418 B7 00 041A OE 041B 07 041C 2B FF 041E BO 01 0420 EB 19 042...

Page 214: ... AX INT ADDR GET INT 8 OFFSET ADDRESS 0440 1F POP OS 044E 3D 0000 E CMP AX OFFSET TMRO_INT8 CHECK FOR OUR TIMER ROUTINE 0451 75 1B JNE TMRO_NORUN IF NOT THEN EXIT 0453 E4 21 IN AL INTA01 0455 A8 01 TEST AL Ol CK FOR TMR 0 I RPT ENABLED 0457 75 15 JNE TMRO_NORUN EXIT IF DISABLED 0459 E4 40 IN AL TIMERO MAKE SURE TIMER IS RUNNING 045B 8A EO MOV AH AL 0450 E4 40 IN AL TIMERO 045F 50 PUSH AX SAVE CURR...

Page 215: ...COMPLETE AH 91H FUNCTION INPUT DUMMY INTERRUPT RETURN FUNCTION NOT HANDLED BY BIOS NONE 0472 0472 0472 FB 0473 C3 0474 0474 OUTPUT NONE REGISTERS MODI FI ED NONE INLCOMPLETE PROC NEAR RETURN CLC RET INLCOMPLETE ENDP ROMCODE ENDS END 2 190 ROM BIOS SET GOOD RETURN CODE ...

Page 216: ... TO BIOS DATA AREA BEEP THE SPEAKER FOR POST ERROR CONDITIONS BBEP THE SPEAKER TRANSLATE AND DISPLAY HEX BYTE TO SCREEN TRANSLATE HEX NIBBLE TO ASCII CHARACTER WRITE HEX BYTE TO SCREEN READ REAL TIME CLOCK REGISTER WRITE REAL TIME CLOCK REGISTER DEFAULT INTERRUPT HANDLER POST ERROR MESSAGE HANDLER ICON DISPLAY PROCESSING ROUTINE CONVERT HEX WORD TO ASCI I STRING ENABLE KEYBOARD RTC AND SUSPEND NMI...

Page 217: ...EO_IO_l NEAR SYS_SERV ICES NEAR TOD_PROC NEAR TMRO_INT8 NEAR COMMO_JO NEAR PRLSCRN NEAR COM_POW ER NEAR MODEM_CONFIG NEAR VIDEO I O SUBROUTI NES EXTERNALS EXTRN SELMODE NEAR EXTRN SELCTYPE NEAR EXTRN SELCPOS NEAR EXTRN READ_CURSOR NEAR EXTRN READ_LPEN NEAR EXTRN ACLDISP_PAGE NEAR EXTRN SCROLL_UP NEAR EXTRN SCROLL_DOWN NEAR EXTRN READ ACCURRENT NEAR EXTRN WRITE ACCURRENT NEAR EXTRN WRITE_CCURRENT N...

Page 218: ... PUBLIC RESET PUBLIC START PUBLIC RS23LIO PUBLIC DUMMLRETURN PUBLIC NMLINT PUBLIC BOOLSTRAP PUBLIC KEYBOARD_IO PUBLIC KLINT PUBLIC DISKETTE_IO PUBLIC DSKLINT PUBLIC PRINTER_IO PUBLIC VIDEO_IO PUBLIC MEMORLSIZE_DET PUBLIC EQUIPMENT PUBLI C CASSETTLIO PUBLIC PRINLSCREEN PUBLIC TIME_OF_DAY PUBLIC TIMER_I NT PUBLIC P_O_R GENERAL PURPOSE SUBROUTINES PUBLIC DDS PUBLIC ERILBEEP PUBLIC BEEP PUBLIC BEEP_SU...

Page 219: ...5 IN AL LCD_DATA 0061 24 BF AND AL NOT PANEL_ENABLE 0063 E6 75 OUT LCD_DATA AL 0065 BO 08 MOV AL HDWILRESET 0067 E6 7F OUT PWILSTAT AL 0069 EB FE JMP POST ERROR ICONS AND MESSAGES 006B MEMJlSG LABEL BYTE 0066 20 46 62 20 4F 4B DB Kb OK 20 0072 30 20 52 4F 4D 04 ROM MSG DB 0 ROM 4 0078 00 00 14 28 3C 0 0 20 40 60 SET LCD INDEX TURN OFF PANEL POWER CAUSE HARDWARE RESET WAIT FOR RESET MEMORY OK MESSA...

Page 220: ... CA BF B3 2B 20 20 2D B3 04 04 B3 01 04 20 B3 DB ODAH OCAH OC4H OC4H OCAH OBFH DB OB3H 02BH 020H 020H 02DH OB3H DB 04 04 OB3H 01 04 020H OB3H 0123 CO 01 04 C4 D9 DB 0128 FLICON 0128 02 OF 33 04 DB 012C 20 20 46 31 20 20 DB 20 46 32 20 20 20 46 33 20 013B 20 20 46 34 20 20 DB 20 46 35 20 20 20 46 36 20 014A 20 20 46 37 20 20 DB 20 46 38 20 20 20 46 39 20 0159 20 46 31 30 20 20 DB 015F 20 02 87 19 2...

Page 221: ...01 OS C4 B4 OB OC4H OC1H 01 05 OC4H OB4H 20H 20 01FF 04 03 20 B3 01 OE DB 04 03 20H OB3H 01 14 OFEH OB3H 20H FE B3 20 0208 20 D4 01 OE CD BE OB 20H OD4H 01 14 OCDH OBEH 20H 20 020F 04 OS 01 12 20 OB 04 05 01 18 020H 0214 0214 0218 021B 0210 0224 DISKETTE ICON USED DURING BOOT 00 00 OS 04 OA C4 DC C4 BF 04 02 B3 20 20 20 B3 CO 01 03 C4 D9 DSKLICON LABEL BYTE OB 0 0 5 4 OB ODAH OC4H ODCH DB OC4H OBF...

Page 222: ...EFAULT SYSTEM PROFILE WHICH IS LOADED AFTER STANDBY POWER LOST CONDITIONS DEF_SYS_PROF LABEL BYTE DB OEOH O PROFILE BYTE 1 AND 2 WARMSTART LOW BAT WNG ENAB INIT VIDEO MODE CGA 80X25 LCD HIGH INT NO OPERATION RS232 AND MOM NOT AV ON BATT DW 0 0 KYBD INACT TIMEOUT VALUES LCD BLANK NO TIMEOUT SYSTEM OFF NO TIMEOUT DB OEH O DFLT MDM SET 1200BPS E PRTY NO AUTO ANSWER REAL TIME CLOCK VALID SIGNATURE RTC...

Page 223: ...H INSERT ASCII BLANK 027C 47 INC DI INC POINTER 027D 52 SClO PUSH DX SAVE COUNT 027E D3 EA SHR DX CL MOVE HIGH NIBBLE TO LOW NIB 0280 80 E2 OF AND DL OFH MASK OUT NEW HIGH NIBBLE 0283 80 FA 09 CMP DL 09 ALPHA OR NUMERIC 0286 7E 03 JLE SC24 NO ADJUST FOR ALPHA 0288 80 C2 07 ADD DL 07 ADJUST FOR ALPHA 028B 80 C2 30 SC24 ADD DL 30H CONVERT TO ASCI I 028E 26 88 15 MOV ES DI DL SEND ERROR TO SCREEN 029...

Page 224: ... DB OlDH 033H 061H 060H 060H 031H OOEH OlCH DB 06CH OOOH 066H 066H 066H 066H 03BH OOOH DB OOEH 018H 03CH 066H 07EH 060H 03 EH OOOH DB 018H 03CH 03CH 066H OlEH 066H 07BH OOOH DB 036H OOOH 03CH 066H 0IEH 066H 07 BH OOOH DB 030H 018H 03CH 066H 01 EH 066H 07BH OOOH DB 018H 018H 03CH 066H 01 EH 066H 07BH OOOH DB OOOH OOOH 03EH 066H 060H 036H 0ICH 038H DB 018H 03CH 03CH 066H 07 EH 060H 03 EH OOOH DB 036...

Page 225: ...37 6B DB 060H 066H 06CH 07BH 037H 06BH 04FH 003H D C 4F 03 042E 30 00 30 30 30 30 DB 030H OOOH 030H 030H 030H 030H 030H OOOH D D 30 00 0436 00 IB 36 6C 6C 36 DB OOOH 01BH 036H 06CH 06CH 036H 01 BH OOOH D E IB 00 043E 006C361B IB 36 DB OOOH 06CH 036H 0IBH 01 BH 036H 06CH OOOH D F 6C 00 0446 11 44 11 44 11 44 DB 011H 044H 011H 044H 011H 044H 011H 044H D_BO 11 44 044E 55 AA 55 AA 55 AA DB 055H OAAH 0...

Page 226: ...00 FF DB OOOH OOOH OFFH OFFH OOOH OFFH 018H 018H 0_01 18 18 0556 00 00 00 FF FF 34 DB OOOH OOOH OOOH OFFH OFFH 034H 034H 034H 0_02 34 34 055 34 34 34 3F IF 00 DB 034H 034H 034H 03 FH 01 FH OOOH OOOH OOOH 0_03 00 00 0566 18 18 IF IF 18 OF DB 018H 018H 01FH 01 FH 018H OOFH OOOH OOOH 0_04 00 00 056 00 00 1F 1F 18 1F DB OOOH OOOH 01 FH 01 FH 018H 01FH 018H 018H 0_05 18 18 0576 00 00 00 3F 3F 34 DB OOO...

Page 227: ...8 18 00 DB 018H 018H 07EH 018H 018H OOOH 07EH OOOH D_FI 7E 00 0656 60 38 OE 38 60 00 DB 060H 038H OOEH 038H 060H OOOH 07EH OOOH D_F2 7E 00 065E 06 IC 70 IC 06 00 DB 006H OICH 070H OICH 006H OOOH 07EH OOOH D_F3 7E 00 0666 OE IB IA 18 18 18 DB OOEH 01 BH OIAH 018H 018H 018H 0 18H 018H D_F4 18 18 066E 18 18 18 18 58 08 DB 018H 018H 018H 018H 058H OD8H 070H OOOH D_F5 70 00 0676 18 18 00 7E 00 18 DB 01...

Page 228: ...IN Al DSP_HEX CHARACTER DISPLAYED AND CURSOR ADVANCED REGISTERS MODIFIED AX DSP_BYTE PROC NEAR PUSH CX PUSH AX SAVE FOR lOW NIBBLE DISPLAY MOV Cl 4 SHI FT COUNT SHR Al Cl NYBBlE SWAP CAll XlALNIB CONVERT THE HIGH NI BBlE CAll DSP_HEX DISPLAY THE FIRST CHARACTER MOV CH Al SAVE UPPER ASCI I CHARACTER POP AX RECOVER THE NIBBLE AND Al OFH ISOLATE TO lOW NIBBLE DO lOW NIBBLE CONVERSION CAll XlALNIB 2ND...

Page 229: ...S KB_NOISU CT ROUTINE ALREADY ACTIVE 75 29 JNZ KBN_EXIT I F SO THEN EXIT 80 OE 0016 R 01 OR BIOS_STATUS KB_NOISU CT SET ROUTINE ACTIVE FLAG 50 PUSH AX 53 PUSH BX 51 PUSH CX E4 61 IN AL NMLCNTL GET CONTROL INFO 50 PUSH AX SAVE LOOPOI 24 FC AND AL NOT SPKR_DATA TMR2_GATE TURN OFF SPEAKER DATA E6 61 OUT NMLCNTL AL OUTPUT TO CONTROL 51 PUSH CX HALF CYCLE TIME FOR TONE E2 FE LOOP SPEAKER OFF OC 02 OR A...

Page 230: ...O Entry Point RS232_10 RS232 1 0 ENTRY POINT ORG OE739H 0739 ORG 00739H 0739 RS23LIO EQU 0739 E9 0000 E JMP COMMO_IO Indicate POST Error ERR_BEEP ROUTINE NAME ERR_BEEP FUNCTION THIS ROUTINE WILL ISSUE LONG 3 SEC AND OR SHORT 1 SEC TONES TO THE SPEAKER TO INDICATE POST STATUS TO THE OPERATOR ENTRY CONDITIONS PURPOSE OF ENTRY SEND BEEP TONES TO THE SPEAKER INPUT CONDITIONS DH NUMBER OF LONG TONES TO...

Page 231: ...WEEN BEEPS DECREMENT LONG BEEP COUNTER I SSUE NEXT LONG BEEP ANY SHORT BEEPS SET BEEP CNTR FOR SHORT BEEP CLEAR CX REGISTER DELAY BETWEEN BEEPS NEXT SHRT BEEP IF NOT COMPLT RETURN TO CALLER Beep to Speaker BEEP 075F 075F 50 0760 53 0761 51 0762 0762 BO B6 ROUTINE NAME BEEP FUNCTION TO BEEP THE SPEAKER ENTRY CONDITIONS PURPOSE OF ENTRY TO BEEP THE SPEAKER INPUT CONDITIONS BL CONTAINS THE COUNT FOR ...

Page 232: ...MSECS 0784 E2 FE BP15 LOOP BP15 WAIT 500 MSECS 0786 FE CB DEC BL DECREMENT COUNTER 0788 75 FA JNZ BP15 LOOP I F COUNT NOT ZERO 078A 8A C4 BP20 MOV AL AH SET PREVIOUS PORT SETTING 078C E6 61 OUT NMLCNTL AL SEND TO PPI 078E B8 FOOD MOV AX OFOOOH CH ECK FOR ROM STACK 0791 8C D3 MOV BX SS 0793 3B C3 CMP AX BX 0795 74 03 JE BEEP_EXT IF ROM STACK THEN RETURN 0797 59 POP CX RESTORE REGISTERS 0798 5B POP ...

Page 233: ...ER RESTRICTIONS NONE EXIT CONDITIONS AL CONTENTS OF SPECIFIED REGISTER REGISTERS MODIFIED AL GELRTCREG PUSHF PROC NEAR CLI PUSH IN MOV AND OUT MOV OUT JMP IN MOV MOV OUT MOV POP POPF RET BX AL CLOCKJTL BL AL AL NOT GLOBAL_NMI CLOCKJTL AL AL AH RTCRjORT AL 2 AL RTCD_PORT BH AL AL BL CLOCK CTL AL AL BH BX GELRTCREG ENDP DISABLE INTERRUPTS BL NMI CONTROL STATE DISABLE NMI WRITE RAM ADDRESS READ DATA ...

Page 234: ... B4 17 0802 E8 07AA R 0805 A8 40 0807 75 03 0809 80 E3 EF BALSALSETUP THIS ROUTINE ENABLES THE RTC 1 SEC UPDATE ENDED INTERRUPT AS A TIME BASE FOR THE LCD BLANK AND THE SYSTEM POWER OFF OPTIONS IF THE SYSTEM PROFILE INDICATES THAT ONE OR BOTH OF THESE OPTIONS ARE ENABLED I F NOT OR WE ARE ON EXTERNAL PWR THEN THE INTERRUPT IS DISABLED RESTRICTIONS RTC AND SYSTEM SUSPEND NMIS MUST BE DISABLED BEFOR...

Page 235: ... 0000 JMP KYBD_IO Keyboard Reset KYBD_RESET 0831 0831 IE 0832 07 0833 2B CO 0835 BF 0017 R 0838 B9 0027 SUBTTL KYBD_RESET ROUTINE NAME KYBD_RESET FUNCTION THIS ROUTINE INITIALIZES THE KEYBOARD CONTROL AREA TO A NO KEY CONDITION ENTRY CONDITIONS PURPOSE OF ENTRY PERFORM KEYBOARD DATA AREA INITIALIZATION DS DATA NMI MUST BE DISABLED INPUT CONDITIONS RESTRI CTI ONS KEYBOARD NMI S MUST BE DISABLED EXI...

Page 236: ... 0860 8E 08 0862 58 0863 C3 0864 ROUTINE NAME DDS FUNCTION SET DATA SEGMENT OS TO BIOS DATA AREA ENTRY CONDITIONS INPUT CONDITIONS NONE RESTRI CTIONS NONE EXIT CONDITIONS OS SET TO BIOS DATA SEGMENT REGISTERS MODI FlED OS DDS PROC NEAR PUSH AX SAVE AX MOV AX DATA MOV DS AX SET SEGMENT POP AX RESTORE AX RET DDS ENDP Calculate Absolute Vector Offset GET_VECTOR 0864 0864 50 0865 2A E4 0867 E4 72 0869...

Page 237: ...IE FF 0896 FF FF FF IF FF 7F DB FF 11 089E 17 05 12 14 19 15 DB 09 OF 08A6 10 IBID OA FF 01 DB 13 08AD 04 06 07 08 OA OB DB OC FF FF 08B6 FF FF lC lA 18 03 DB 16 02 08BE OE 00 FF FF FF FF DB FF FF 08C6 20 FF DB DB ESC 1 NUL 1 1 1 RS 1 ESC 1 2 3 4 5 6 7 1 I I US I DEL l DCl 890 BKSPC TAB Q ETB ENQ DC2 DC4 EM NAK HT SIOI5 W E R T Y U I 0 DLE ESC GS LF I SOH DC3 P J ENTER CTL A S EOT ACK006 BEL BKSPC...

Page 238: ...52 FF 20 FF DB I SPACE I SHj FT Fi Fia EXTENDEii ASCj j CODES 0955 0955 54 55 56 57 58 095A 59 5A 5B 5C 50 KI2LABEL BYTE DB 84 85 86 87 88 DB 89 90 91 92 93 ALT F1 flO EXTENDED ASCII CODES 095F 095F 68 69 6A 6B 6C 0964 60 6E 6F 70 71 KI3LABEL DB DB BYTE 104 105 106 107 lOB 109 110 111 112 113 KEYPAD KEYS ASCI I CODES _ _ _ _ _ _ _ 0969 KI4LABEL BYTE IN KEYPAD_STATE 0969 37 38 39 20 34 35 DB 789 45...

Page 239: ...7 06 01BO R IF53 R MOV WORD PTR RESUME_PTR OFFSET DUMMLRETURN 09A6 26 8C OE 01B2 R MOV WORD PTR RESUME_PTR 2 CS SET SEGMENT 09AB 26 C7 06 0128 R IF53 R MOV WORD PTR RTCA_PTR OFFS ET DUMMLRETURN 09B2 26 8C OE 012A R MOV WORD PTR RTCA_PTR 2 CS SET SEGMENT SET UP KEYBOARD DATA AREA 09B7 E8 0831 R CALL KYBD_RESET RESET KEYBOARD 09BA 80 OE 00B4 R 08 OR KB_NMLCNTL CLI CK_ON ACT I VATE KEYBOARD CLI CKER ...

Page 240: ...N KYBD_NMI ENABLE KEYBOARD NMI S 09F7 E6 7C OUT KYBD_CNTL AL ENABLE SPEAKER RTC ALARM NMI AND I O CHECK NMI 09F9 E4 61 IN AL NMLCNTL ENABLE RTC INTERRUPT 09FB 24 D7 AND AL NOT 0I S_ALARM DI S_IOCHK 09FD OC 04 OR AL EN_SPKR ENABLE SPEAKER 09FF E6 61 OUT NMLCNTL AL ENABLE I O CHANNEL CHECK OA01 BO 80 MOV AL EN_IOCHK OA03 E6 AO OUT IONMLCNTL AL ENABLE KEYBOARD TIMER 0 AND DISKETTE INTERRUPTS OAOS E4 ...

Page 241: ...SETUP_1 SETUP_IB STOSW MOV AX CS STOSW LOOP SETUP_1 MOVE ADDR OF INTR PROC TO TBL VIDEO INT 10H YES THEN SKIP VIDEO INT IDH YES THEN SKIP SKI P VECTORS SET VECTORS GET ADDR OF INTR PROC SEG INITIALIZE BIOS VECTORS 8 1EH FROM VECTOR_TABLE SKIPPING VIDEO VECTORS 10H AND IDH MOV PUSH POP MOV MOV SETUP_2 CMP JE CMP JNE SETUP_2A ADD ADD LOOP SETUP_2B MOVSW ADD LOOP POP CX 23 GET VECTOR COUNT CS SETUP O...

Page 242: ...SUPER SHIFT EXTENDED ASCI I CODES 13 14 15 DB 16 17 18 19 20 21 22 23 A Z TYPEWRITER CHARS IF 20 21 DB 24 25 30 31 32 33 34 35 2C 20 2E DB 36 37 38 44 45 46 47 48 DB 49 50 KEY TRANSLATION TABLE INTERNAL SCAN CODES TO PC SCAN CODES WHILE THE KEYPAD STATE IS ACTIVE KEY PAD SCAN CODES TABLE CONTAINS INTERNAL AND PC SCAN CODE PAIRS HIGH BYTE IS INTNL SCAN CODE AND THE LOW BYTE IS THE PC1 EQUIVALENT OA...

Page 243: ...e key is a base key TABLE OF INTERNAL SCAN CODES TO PC SCAN CODES KBNMLTBL LABEL BYTE BC 3D 3E DB OFFH 081H OBBH OBCH 03DH 03EH 03 FH 040H 41 42 43 44 C5 C6 DB 041H 042H 043H 044H OC5H OC6H 052H 053H 52 53 FF 29 02 03 04 05 DB OFFH 029H 002H 003H 004H 005H 006H 007H 06 07 88 89 8A OB 8C 80 DB 088H 089H 08AH OOBH 08CH 08DH 02BH OOEH 2B DE FF OF 10 11 12 13 DB OFFH OOFH OlOH 011H 012H 013H 014H 015H...

Page 244: ...IONS RETURN ERROR EXIT CONDITIONS NON FATAL ERROR RETURN CODE WITH ERROR CODE I F ASSOCIATED BIT SET RE_DISPATCH FLAG SET IF ALL BITS IN RTCDIAG_STAT NOT YET CHECKED REGISTERS MODIFIED AX BX CX OX ERROR_TABLE LABEL WORD DB BAD_RTCSIG 73H DB BAD_STORJKSUM 7lH DB LCD ALLFAILED 75H RTC SIGNATURE BAD STG CHECKSUM BAD ON RESUME ALTERNATE LCD MODE FAILED SYS_CHK PROC NEAR MOV AH RTCDIAG_STAT CALL GELRTC...

Page 245: ...O FLAG RESET REGISTERS MODIFIED AX BX CX DX ES SI DI BP ERRLTABLE LABEL WORD DB LCD_NOLACTlVE 70H DB DSKLACTIVE 72H DB LCO_CHANGE 74H RES_ERILCHK PROC NEAR MOV DX 0632H RES_LPO AH RTC_DIAi STAT GELRTCR G SET ROW 6 COLUMN 50 FOR MSG GET THE ERROR FLAGS FROM RTC MOV CALL MOV MOV CX 3 THREE ENTRIES IN TABLE RES_LP TEST JNZ ADD LOOP CMP JMP SI OFFSET ERR2_TABLE AL BYTE PTR CS SI RES_ERR SI 2 RES_LP CH...

Page 246: ...OST ENTRY CONDITIONS PURPOSE OF ENTRY TO DISPLAY A POST ICON AND OR ERROR MESSAGE INPUT CONDITIONS AX ERROR CODE IF AH 0 THEN NO ERROR CODE ONLY AN ICON ES DI POINTS TO AN ADDITIONAL ASCII ERROR MESSAGE IF 01 0 THEN NO MESSAGE CL I CON NUMBER TO 01 SPLAY RESTRICTIONS NONE EXIT CONDITIONS NORMAL EXIT CONDITIONS ERROR EXIT CONDITIONS REGISTERS MODIFIED AX BX CX DX BP DI SI INTERNALLY REFERENCED ROUT...

Page 247: ...ES THEN WAIT FOR REL OF KEY OC90 3C OC CMP AL OOCH CTL L FOR LOOP MODE OC92 75 F3 JNE EMIl NO LOOK FOR NEXT KEY SEQ ASSUME DS DATA OC94 88 R MOV AX DATA SETUP DATA SEGMENT OC97 8E 08 MOV DS AX OC99 C7 06 0072 R ABCD MOV RESELFLAG LOOP_MODE SET POST LOOP MODE OC9F EB 25 JMP SHORT EM14 EXIT WAIT FOR BREAK OF F1 KEY OCA1 FB EM12 STI ENABLE INTERRUPTS OCA2 E4 60 IN AL KB DATA READ KEY BOARD PORT OCM 3...

Page 248: ...ALL POP MOV INC MOV ADD CMP JNE SUB POP AX AH AH EM30 01 OX AX AX XXDATA ES AX OI OFFSET TEMP STR_CON 01 BL ICON_MSG OI ICON SG DI DL DIS_POS SI DL 8 01 2 EM25 DL 4 EM25 MOV OH 9 ADD OH BL MOV CX 4 MOV BP OFFSET TEMP l MOV AH 15 I NT 10H MOV BL 07H MOV AX 01300H I NT 10H RESTORE ERROR CODE ERROR MESSAGE SAVE ICON NUMBER MOVE ERROR CODE ES POINTS TO XXOATA PO I NTER FOR CONVERS ION RTN E CONVERT ER...

Page 249: ...SUB DL 4 MOVE BACK 4 COLUMNS OD55 EM45 OD55 B3 07 MOV BL 07H SET NORMAL ATTRI Bun OD57 B8 1300 MOV AX 01300H WRITE STRING FOR INT 10 OD5A CD 10 INT 10H DS I PLAY ERROR MESSAGE OD5C EMSG_RET OD5C 07 POP ES RESTORE SEGMENT REGS OD5D IF POP DS OD5E C3 RET RETURN TO CALLER OD5F E_MSG ENDP 2 224 ROM BIOS ...

Page 250: ...ATA FOR THE ROW TO REPEAT 05 XX YY STR REPEAT STRING FUNCTION WHERE XX THE NO OF TIMES TO REPEAT STRING YY THE LENGTH OF THE STRING STR THE STRING TO REPEAT THE STRING MUST NOT CONTAIN ANY REPEAT CHARACTER CONTROL CODES 06 XX YY ZZ STR REPEAT STRING WITH COMMON ATTRIBUTE WHERE XX THE NUMBER OF TIMES TO REPEAT THE STRING YY THE LENGTH OF THE STRING ZZ THE ATTRI BUTE FOR THE ENTIRE STRING STR THE ST...

Page 251: ...R 00C3 FE 4C 04 00C6 80 7C 04 00 OOCA 7E 04 OOCC 8B EF OOCE EB DO 0000 26 8A 46 00 0004 3C 07 0006 72 12 0008 0008 B4 02 OOOA CD 10 I PR20 MOV CMP JL MOV INC CMP JL JMP IPR22 CMP JLE MOV JMP IPR23 CMP JB IPR30 MOV INT INC BP CX l OL lSI MALCOL I PR23 OL lSI STRJOL OH OH lSI MALROW IPR22 IPILRET DEC lSI REPR_NO lSI REPR_NO O IPR23 BP OI IPR20 MOV AL ES BP AL 7 I PR_CNT AH 02 10H 2 226 ROM BIOS MAKE...

Page 252: ...L MOV 10H AL ES BP AH 09H 10H DL CL BL 07H IPR20 BP BL ES BP BP REPI0 DH DL 51 STR_COL SI REPR_NO SI REPR_NO O NXlO BP DI NORMAL ATTRI BUTES WRITE AT CURSOR DISPLAY CHARACTER POINT TO THE NEXT COLUMN LOOP UNTI L LAST CHARACTER REPEAT CHARACTER FUNCTION ATTRIBUTE OTHER THAN NORMAL NEXT ROW REPEAT ROW FUNCTION REPEAT STRING REPEAT STRING WITH ATTRIBUTE INC POINTER GET MODIFIER FOR REPITITIONS INC PO...

Page 253: ... 4D REPS50 DEC BP DECREMENT POINTER OE8D E9 ODAD R JMP IPR20 CONTINUE OE90 I PR_RSTA OE90 45 INC BP INC POINTER OE91 26 8A 46 00 MOV AL ES BP GET NO TO REPEAT ROW OE95 88 44 05 MOV SI RSTR_NO AL SAVE OE98 45 INC BP INC POINTER OE99 26 8A 4E 00 MOV CL ES BP GET LENGTH OF STRING OE9D 45 INC BP INC POINTER OE9E 26 8A 5E 00 MOV BL ES BP GET ATTRI BUTE OEA2 45 INC BP INC POINTER OEA3 8B FD MOV DI BP SA...

Page 254: ...ETTE PARAMETER TABLE ORG OEFC7H ORG 00FC7H POINTER TO DRIVE PARMS SEG POINTER TO DRIVE PARMS OFF MAX TRK S IDE SECTOR TRACK MAX HEAD FILL POINTER TO DRIVE PARMS SEG POINTER TO DRIVE PARMS OFF MAX TRK SIDE SECTOR TRACK MAX HEAD FI LL Diskette Timing Parameters DSKT_BASE OFC7 OFC7 DO OFC8 02 OFC9 25 OFCA 02 OFCB 09 OFCC 2A DSKLBASE THIS IS THE SET OF PARAMETERS REQUIRED FOR DISKETTE OPERATION THEY A...

Page 255: ... 0000 0000 OFE3 CGA_TBL LABEL WORD TABLE FOR MONO DISPLAY OFE3 51530498 OA15 OW 5153H 498H OAl5H OC8H 280H 352H 184H RGB DISPLAY 00C8 0280 0352 0184 OFF1 LCO_CGA_TBL LABEL WORD OFF1 5140 08El 0987 OW 5140H 8ElH 987H OC8H 280H 172H 172H TABLE FOR LCD 00C8 0280 0172 0172 OFFF LCD_MONO_TBL LABEL WORD OFFF 5140 0000 0000 OW 5140H 0 0 0 0 0 0 0000 0000 0000 0000 VIDEO_IO SUBROUTINE ADDRESS TABLE ORG OF...

Page 256: ...28H 2DH OAH 1FH 6 19H 19 1C 02 07 06 07 DB 1CH 2 7 6 7 00 00 00 00 DB 0 0 0 0 M4 EQU VIDEO_PARMS 71 50 5A OA IF 06 DB 7lH 50H 5AH OAH 1FH 6 19H 19 1C 02 07 06 07 DB 1CH 2 7 6 7 00 00 00 00 DB 0 0 0 0 38 28 20 OA 7F 06 DB 38H 28H 2DH OAH 7FH 6 64H 64 70 02 01 06 07 DB 70H 2 1 6 7 00 00 00 00 DB 0 0 0 0 61 50 52 OF 19 06 DB 61H 50H 52H OFH 19H 6 19H 19 19 02 00 08 OC 08 19H 2 ODH OBH OCH 00 00 00 00...

Page 257: ...DS MOV AX MEMORLSlZE POP OS IRET MEMORLSIZE_DET ENDP SAVE SEGMENT GET VALUE RECOVER SEGMENT RETURN TO CALLER Equipment Interrupt Hex 11 EQUIPMENT INT 11 EQUIPMENT DETERMINATION INPUT OUTPUT THIS ROUTINE ATEMPTS TO DETERMINE WHAT OPTIONAL DEVICES ARE ATTACHED TO THE SYSTEM NO REGISTERS THE EQUIPJLAG VARIABLE IS SET DURING THE POWER ON DIAGNOSTICS USING THE FOLLOWING HARDWARE ASSUMPTIONS PORT 3FA IN...

Page 258: ...ATOR GRAPHICS FOR 320X200 AND 640X200 GRAPHICS AND DEFAULT LCD CHARACTER GENERATOR FOR CHARACTERS OOH 7FH ORG OFA6EH ORG 01A6EH 1A6E CHAR_GEN_LO LABEL BYTE 1A6E 00 00 00 00 00 00 DB OOOH OOOH OOOH OOOH OOOH OOOH OOOH OOOH 0_00 00 00 1A76 3C 42 A5 A5 81 BO 0_01 DB 03CH 042H OA5H OA5H 081H OBOH 05AH 03CH 5A 3C 1A7E 3C 7E DB DB FF C3 0_02 DB 03CH 07EH OOBH OOBH OFFH OC3H 066H 03CH 66 3C 1A86 36 7F 7F...

Page 259: ...DB OOOH OOCH 006H 07 FH 07 FH 006H OOCH OOOH D_1A OC 00 lB46 00 18 30 7F 7F 30 DB OOOH 018H 030H 07 FH 07 FH 030H 018H OOOH o_IB 18 00 lB4E 00 00 60 60 7F 7F DB OOOH OOOH 060H 060H 07 FH 07 FH OOOH OOOH D_1C 00 00 lB56 00 14 36 7F 7F 36 DB OOOH 014H 036H 07 FH 07 FH 036H 014H OOOH o_ID 14 00 lB5E 08 08 lC lC 3E 3E DB 008H 008H 01 CH 0ICH 03EH 03EH 07 FH OOOH o_IE 7F 00 lB66 7F 3E 3E lC lC 08 DB 07...

Page 260: ...3CH 066H 026H OOCH 018H OOOH 018H OOOH D_3F 18 00 lC6E 3E 41 5D 55 5F 40 DB 03EH 041H 050H 055H 05FH 040H 03 EH OOOH 0_40 3E 00 lC76 lC OC lC 16 3E 23 DB 0ICH OOCH 0ICH 016H 03 EH 023H 063H OOOH A D_41 63 00 lC7E 7C 36 36 3E 33 33 DB 07CH 036H 036H 03 EH 033H 033H 07EH OOOH B 0_42 7E 00 lCS6 10 33 61606031 DB OlDH 033H 061H 060H 060H 031H 01 EH OOOH C 0_43 IE 00 lC8E 7C 36 33 33 33 36 DB 07CH 036H...

Page 261: ...EH 066H 066H 03BH OOOH LC D D_64 3B 00 ID96 00 00 3C 66 7E 60 DB OOOH OODH 03CH 066H 07EH 060H 03EH OOOH LC E D_65 3E 00 ID9E OE 1B 18 3E 18 18 DB OOEH 01BH 018H 03 EH 018H 018H 03CH OOOH LC F D_66 3C 00 IDA6 00 00 3D 66 38 3E DB OOOH OOOH 03DH 066H 038H 03 EH 063H 03EH LC G D_67 63 3E IDAE 70 30 36 3B 33 33 DB 070H 030H 036H 03 BH 033H 033H 073H OOOH LC H 0_68 73 00 lDB6 18 00 38 18 18 18 DB 018H...

Page 262: ...70H 018H 018H OOEH 018H 018H 070H OOOH D_7D 70 00 lE5E 39 4E 00 00 00 00 DB 039H 04EH OOOH OOOH OOOH OOOH OOOH OOOH D_7E 00 00 lE66 08 lC IC 36 26 63 DB 008H 0ICH 0ICH 036H 026H 063H 07FH 07 FH DELTA D_7F 7F 7F Time of Day Entry TIME_OF_DAY TIME_OF_DAY ROUT NE ENTRY PO I NT ORG OFE6EH lE6E ORG 01E6EH lE6E T ME_OF_DAY EQU lE6E E9 0000 JMP TOD_PROC Timer 0 Interrupt Handler TIMER_INT TIMER 0 INTERRU...

Page 263: ... DUMMY_RETURN I NT 1BH KYBD BREAK ADDR 1FlB 1F53 R OW DUMMY_RETURN INT 1CH TIMER BREAK ADDR 1FlD 10M R DW VIDEO_PARMS I NT 1DH VIDEO PARAMETERS 1FlF OFC7 R OW OFFSET DSKLBASE I NT 1EH DSKT PARAMETERS 1F21 02C6 R DW CHAR_GEN_HI I NT 1FH PTR TO CHAR GEN ORG OFF23H 1F23 ORG OlF23H Default Interrupt Services DII IF23 1F23 1E 1F24 52 IF25 50 1F26 E8 085C ROUTINE NAME 011 FUNCTION THIS ROUTINE IS UNUSED...

Page 264: ...DS CF IRET Dll ENDP ORG OFF53H ORG 01F53H DUMMY INTERRUPT RETURN PROC FAR IF53 CF DUMMY_RETURN IRET 1F54 DUMMY_RETURN ENDP PRINT SCREEN ROUTINE ENTRY ADDRESS ORG OFF54H IF54 ORG 01 F54H IF54 PRINLSCREEN EQU 1F54 E9 0000 JMP PRT_SCRN IF57 IF57 IF58 IF5A IF5C IF5E IF60 1F62 IF67 IF69 IF6B IF6D IF6F IF6F 1F70 IF71 51 B4 01 E4 AO 24 07 8A C8 D2 E4 ROUTINE USED BY Dll HANDLER TO MASK THE INTERRUPT LVL ...

Page 265: ...eset Address IFFO IFFO I FFO EA IFFI 0000 I FF3 FOOO IFF5 POWER ON RESET VECTOR ORG OFFFOH ORG oI FFOH P_O_R LABEL FAR DB OEAH OW OFFSET POSTMAIN OW OFOOOH ROMCODE ENDS END 2 240 ROM BIOS HARD CODE JUMP FAR OFFSET SEGMENT ...

Page 266: ...GMENT BYTE PUBLI C MODULE RELEASE DATE MARKER 0000 30 39 2F 31 33 2F DB 38 35 OOOB 4C DB 09 13 85 L REL EASE MARKER BUILD NUMBER System Model Byte P C MODEL BYTE FOR TH I S MODEL ORG OFFFEH 0009 F9 DB OF9H THIS PC S 10 OOOA ROMCODE ENDS END ROM BIOS 2 241 ...

Page 267: ...2 242 ROM BIOS ...

Page 268: ...Notes ...

Page 269: ...Notes ...

Page 270: ...Notes ...

Page 271: ...Notes ...

Page 272: ...sions IBM may use and distribute any ofthe information you supply in any way it believes appropriate without incurring any obligation whatever You may ofcourse continue to use the information you supply Please do not use this form for questions regarding setup operation or program support or for requests for additional publications Instead contact your authorized IBM PC Convertible dealer in your ...

Page 273: ...ST CLASS PERMIT NO 40 ARMONK NEW YORK POSTAGE WILL BE PAID BY ADDRESSEE IBM CORPORATION DEPARTMENT 95H 11400 BURNET ROAD AUSTIN TEXAS 78758 NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES aJa4 PIO I B l alde s ou op aseald ade l ...

Page 274: ......

Page 275: ... IBM Corp 1986 All rights reserved International Business Machines Corporation Po Box 1328 W Boca Raton Florida 33429 1328 Printed in the United States of America 55X8817 ...

Reviews: