PCShare_Listing PCShare Listing
PCShare_Listing PCShare_Listing
User Manual: PCShare_Listing
Open the PDF directly: View PDF .
Page Count: 156
Download | |
Open PDF In Browser | View PDF |
.' .1 The IBM Personal C,;:.mputet" MACRO Assembler 12-28-83 PAGE '¥ 1-1 • ; PAGE 60,132 ; ;*********************************************************************** ; Filename is PCSINIT.ASM I ;*********************************************************************** This file contains code and data for Emulator primary initialization described in Sections 9.2 and 9.3 of the Program Logic Description for the OMNINET PC Share Disk Server Emulator, Version 2.0, dated 7 November 1983. The code in this file is executed as an independent program, not linked to the Emulator. ( ( I' Primary initialization obtains the location of the Corvus utilities Jump table by a device driver input call to the device PCSMHOOK (as ; do all the Corvus utilities). The offset of the ECT is in the first word following the Jump table. To assure that EI-INIT is matched with the correct version of the Emulator, the EC.IDEN field of a dummy ECT allocated within EI-INIT is compared with the same field ; in the driver. Initialization is abandoned if the two fields are l'"lot the same. ; ; At completion of its other processing EI-INIT calls the warm start entry of the Jump table to initialize the transporter and start the ; operation of the Emulator. ;*********************************************************************** I Version: 2.0 Last Update: ; Written by: Updates: ( ( fi 28 December 19~3 R.B. Talmadge, Computer Technology Ltd NOl'"le ; .;*********************************************************************** , ENDIF fi .' ; ;*********************************************************************** ( ; Special Macros for this initialization program ;*********************************************************************** ; ( ;----------------------------------------------------------------------Macro Name: SHOW String, Rply,crlf ; • Function: Displays the character string located at the offset string in the data segment. Requests reply wait for Rply characters if Rply is present. Requests no CRLF sequence at end if crlf is present ;----------------------------------------------------------------------; SHOW MACRO MOV IFB MOV String, Rply,crlf DX,OFFSET String ;;string location (Rply> CX,0 ;;Set reply count • • • • The IBM Personal Computer MACRO Assembler 12-28-83 ELSE MOV ENDIF IFNB MOV ENDIF CALL ENDM ." ( ( PAGE 1-2 • CX,Rply'~, ES POP ES MOV ES:r.OIJ.DOSdkO,BX MOV ES:[OIJ.DOSdkS,OX XCHG OX,BX SIV , SCallOS PUSH DS MOV OS,BX MOV AH,25H MOV AL,SCallDS INT 21H POP OS BX,OmECT.DORH OX,ES:[BXJ.KY_INT DmECT.OORI-IS,SCaIIEM OS BX,OmECT.OORHS OS,BX AH,25H AL,SCaIIEM 211-1 I ; Nc.w set up the sClftware call t f C • • f" (" -- -~- -" -= - - -~- "._"-------------_.. -- - -- ---- -- -- -- -- -- -- The IBM Personal Computer MACRO Assembler 12-28-83 PAGE 1.-18 f' ( I' f 'I 121892 1F 121893 121897 8B 1E 12112138 R 26: 8B 57 1216 1Z189B 089C 1218 A121 1Z18A2 1Z18A'+ 1Z18A6 1218A8 1E BB 8E B4 BIZI CD 1F 1Z18A9 1Z18AC 1Z18BIZI 089i::: e!8B4 A121 IZI1Z12F R BB 1E 12112138 R AB CI2I 7 Lr 12 26: BB 57 IZIB 0BB8 1E BB 8E B4 BIZI CD 1F 1Z18B9 IZIBBD 1Z18BF 1Z18Cl 1Z18C3 IZl8C5 1E 1Z11Z13A R DB 25 1C 21 1E IZI1Z13A R DB 25 21 21 + POP DS + + + + + + + MOV MOV SIV PUSH MOV MOV MOV MOV lNT POP BX,DmECT.DDRH DX,ES:[BXJ.KY_DTM DmECT.DDRHS,SCaIITK DS BX, DmECT. DDRHS DS,BX AH,25H AL,SCaIITK 21H DS MOV MOV TEST JZ MOV SIV PUSH MOV MOV MOV MOV INT POP AL, DrnECT. EC_ TBI ;Fetch run flags,dA--_ BX,Dr .DDRH ;Refresh keys off~et AL, TBirlt +STBrer,b-l-r-rc>c..-fMc.e:::Cont1 ;If transporter is DX,ES:[BXJ.KY_DOS to run enabled, set DOS i rl el'~cep + + + + + ..!- ;Offset to Keys table ;Offset to timer intercept ;Set timer intercept vector ( ofL A-L') cl: [p:c). GC:_ Tp]: f. BX, DmECT. DDRHS DS,BX AH,25H AL, i:::1H 21H DS • ( ;--------------------------------------------------------------------------Request Transporter Logical Device initialization ;--------------------------------------------------------------------------; IZIBC6 Cc.rlt 1121: OR PUSH MOV MOV 26: 08 '+5 2F 53 I 08CA 08CB 08CE ( 1Z18D1 1Z18D5 FF 1E 12112138 R 5E 1Z18D6 08D9 08DC BA 121294 R B9 12101210 E8 054E R A1 1Z11Z13E R A3 0038 R • • CALL DWORD PTR DmECT.DDRH POP SI SHOW IrlDorle DX,OFFSET lrlDone MOV MOV CX,IZI CALL lSMsg + -I" + ( ES:CDlJ.EC_TBl,AL BX AX, DmECT. TckS DmECT.DDRH,AX ;Flags t.:. Emu I at.:.t" ;Save offset .::.f keys table ;Fetch offset tc. Jump table ; ;Call TLD stat"t (cc.ld == ; Rett~ieve keys offset ; Pri rlt erld message wat~fI1 c • ) ;--------------------------------------------------------------------------Set transporter in motion by itself or through external driver -----J;...-----------;----------------------------------------------------c:s: ~;l::.J 1Z18DF 08E4 08£6 F6 06 002F R CIZI 74 1215 FB 08E7 08£9 B4 4C CD 21 (TEST JZ STI LEAVE MOV INT + + lI1,:.lc:::.- mEC • EC_ TBl, $TB1¥t'IH+$TBrerlb I 11 ;80 drive if no interrupts ;Assure interrupts on arid exit AH,4CH 21H ; 0BEB 26: 8B 5C 02 Cc.rlt 11 : MOV BX,ES:CSlJ.KY_EXT f • ;Set up call c •• ( The IBM Personal Computer MACRO Assembler 12-28-83 '. :( 1Z18EF 89 1E 12112138 R PAGE 1-19 MOV DmECT.DDRH,BX ; to Driver SHOW MOV MOV CALL OR CMP JNE LEAVE MOV INT GoDrv,1 DX, OFFSET Gc.Drv CX,l ISMsg CL,20H CL, ' q' Cont12 ;Request start or stop ; ShowL: 1218F3 1Z18F3 08F6 1Z18F9 1Z18FC 08FF 12191212 BA 89 E8 80 80 75 12191214 12191216 B4 4C CD 21 + 1Z12BE R 12112101 054E R C9 20 F9 71 1214 + + .... + ;Stop is either a capital ; or lower case 'q' c ;Exit on stop AH,4CH 21H ; 12191218 091218 1Z191Z1B 1Z191Z1E 0911 q l,IZI915 121917 121919 1Z191B 1Z191D BA B9 E8 FF 1Z12EE R 1211210121 1Z154E R 1E 12112138 R BIZI B4 CD 75 EB FF 1216 21 F4 D4 Cont12: SHOW NxDRV DX,OFFSET NxDRV MOV + MOV CX,0 + CALL ISMsg + DCaIEM: CALL DWORD PTR DmECT.DDRH MOV MOV INT 'l>L@, 0FFH AH,6 21H ~~ DCalEM ShowL JMP ;Issue stop message ( ;Call the Emulator ;Test for character ; input at keyboard ;Call Emulator if not ;If so, go ask again ; 1Z191F EI IN IT ENDP 1Z191F PCS ; ENDS ; 121121121121 121121121121 STACK 02121121 ( SEGMENT PARA STACK 'STACK' DB 512 DUP(IZIFFH) FF J t' 021210 STACK ENDS ; END BegiYI •. ' • . ' " t' c, •• ( .' The IBM Personal Computer MACRO Assembler 12-28-83 PAGE Symbols-l • ( N a .: c , • I Length e I'll COMPARE. • ENTER. EX IT . . . EYE. • • • FILLIT ... F I V" • • • • • • GEN_START. LEAVE. . • LOG. . . . MOVEB. . MOVEONE. . RESTORE. . SCANB. . . . . . ..•.•. SELEXIT . • . . . . • . • . • • • SELREST. . . • • . . . . . • • • SEL.SAVE. . • . • SHOW" SIVa • START. . • . . • • STATUS . TIME • TRACE. . ( 000F 000D 0005 0001 0011 0002 0001 0001 0005 000F 000E 0001 0012 0002 000D 0018 0004 0003 0019 0001 0001 0009 « f ". f t t I Structures and records: N a f" e fI1 f t • c • • DACB • . • • • DA_EI. DA_EC. . . • • • • DA_CDSK. DSA. DTA. • • VSA. . VDT. DDA. ECT. . • IDEN EC_DAT . EC_DRV • EC_FLG . TRCE • . COLD. • EC_ TRM • MAX. • . NEXT • DrR. NAM. SERV .. . • • • • • • • . • • • • • • • • . . • • • • • • • • .. .. .. !If • h 11 • • • • . • . • ••••••••• Width Shift # fields Width Mask 02EB 0000 0001 0002 0003 0004 0007 0047 004B 004F 006B 0040 0000 0008 0009 000A 000B 000C 0000 000E 0010 0012 001A 0022 000F • • Initial •• .' • 001A • C • • c ( -------- The IBM Personal Computer MACRO Assembler 12-28-83 f ( « c ,f EC_ATRU. . EC_ATRS. . EC_ATRL. . EC_ TBI . TLTMCK • • TLTMRS . KEEPOUT . • • INTOFR • • • DOSOKO DOSDKS . DDRH • OORHS. . . TCKO • TCKS . . . • . EEFCB. . EFCB1 . . . . • . . • SY 1" •• M • .. .. .. EFCB2. BY2. • . EFCB3. . USR ... EFCB4 . EE_LOG . • . . ERR_ TAB. EFCB • • • • .. FF '" RSV d If. a .. u n .. .. .. • . • . • . " .. II ,. .. • ~ If .. .. If .. A .. • • ATR. . • • • DRV. NAME • EXT. • • CB .. ., n " • .. • .. .. ............. .. .. .. RS • I L.FS HFS h n a .. II II .. .. .. .. .. .. .. " .. .. EF _OAT " • . RSV1 . . . • . CUR. ••. LRN. ( ( ( • • • • • • HRN. • IORB . • IO_FLG • • " . • • • • • IO_CLS . . • • • NUM.. •••.•.• DSPL • • • . . • • . DSPM .. ADR. .. II .... .. .. .. .. .. .. .. ... .. .. .. .. ...... .. FCB.. •••. • • • KEYS • • • .• .•• KY_EC. • • • . • • • • • KY_EXT .•••••• KY_INT .••••. KY _DTM • • • • • KY_OOS • . • ••.••• LRB. •• •• • • 002C 0020 002E 002F 0030 0031 0032 0033 0034 0036 0038 003A 003C 003E 00BC 0000 0010 002C 003C 0058 0068 0084 0094 00B0 002C 0000 0001 0006 0007 0008 0010 0013 0015 0017 0019 001B 0010 0027 0028 002A 0012 0000 0001 0004 0006 0008 000A 000E 000A 0000 0002 0004 0006 0008 0002 PAGE Symbc.ls-i::: • t • ( 001C f 000F I 000A ( 0005 0002 • • ,. e·· The IBM Per~sc'1'la 1 Ceompl_lt el"' MACRO Assemblel"~ 12-28-83 PAGE Symbc.ls-3 f' f C CDE. · LR - LEN · · ·· · · · ··. C · · · ·· · · ·· ·· · ·· ·· · ·· · ·· · · · PCS. STACK. :1- '. I • ( ( • • • f Size 0.1 i g1'l cc.mbi1'le class 1Z191F 1212121121 PARA PARA NONE STACK C ' STACK' ( Symb.:.ls: N a m e ( • • • ( Segme1'lts a1'ld gr.::.ups: N a m e « 121121121121 1211211211 • · ·· ·· · · · · · · · · ·· · · · · ·· · · · · · ·· · ·· · · · · ··· · · · · · · · · · · ·· · · · · ·· · · · · · · ·· · · · · · · · ·· · · · · · ·· · · · ·· · · · ·· BEEPER BEGIN. BLANK$ CHKG1. CHKRPY CHKXIT CHKYND CHKYON CHKYPN · CI$. CMXIT. COLG1. COLG2. COLOG. CaNT CONT1. CaNT 1121 CONTll CaNTle: CONT2. CONT3. CDNT4. CONT5. CONT6. CONT7. CONTS. CONT8A CONT9. CR$. CRLF$. CRLF2$ DCALEM DEBUG$ DM$. DMECT. DR$. DTA BGN. EI$. EI ..- INIT. EMNME. EMVERS · · · · · ·· ·· ·· · · · · · ·· · · ··· · · ···· · · · · · · · · · · · · · · · · · · · · · · ···· · ·· ···· ···· · · · · · · · · · · · · · · · · · · · · · · · · · ·· · · · ···· · · ·· · · ··· · · · · ···· ·· · · · · · · · ·· · · · · · · · · · · ·· · · · · · · · · · · · · · · · · · · · · · · · · · ·· ··· · ·· · · · · · · ····· · ·· · · · · · ·· ·· ·· ·· ·· ··· · · ·· · · · ··· · ·· · · ·· · · · · ·· · · · · ··· · · · · · ·· ·· · · ·· · · ·· · · · · · ·· · · · · · · · · ·· · · ·· · ····· ····· ··· · ·· Type Value Attr L L L L N L L N L 121313 1Z15AE 12112144 121588 1Z156C 121578 1Z15A1 121579 1Z159F 121121121121 1Z16AD 121762 1Z176C 121731 1Z15DF 121625 1Z18C6 1Z18EB 12191218 12169121 1Z16BB 06EE 077A 1Z17BA 1Z17D1 07ED 082A 0841 012145 012142 01214121 121911 121121121121 0121121121 121121121121 00121121 0121121121 1211211211 05AE 0517 1Z151F PCS PCS PCS PCS PCS PCS PCS PCS PCS BYTE NEAR BYTE NEAR PROC NEAR NEAR PROC NEAR N'-Imbet~ L L L L L L L l. L L L l. NEAR NEAR NEAR NEAR NEAH NEAR NEAH NEAR NEAR NEAR NEAR NEAR NEAH NEAR NEAR NEAR L L L L L NEAI~ L NEAR L BYTE L WORD L WORD L NEAR Nl.lmbet~ Numbet~ L 1211214121 NUl'l1bet~ E BYTE Number N PROC L BYTE L WORD ,( f Le1'lgth =IZIIZ1IZ1D Le1'lgth =12112135 PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS I t • • • t ( f • • PCS PCS PCS PCS PCS ;. Length =121371 • • ( • ( The IBM Pel'~soY"la 1 Cc.mputer MACRO Assembler 12-28-83 PAGE Symbc.ls-4 C f • C t t ( f' f • • t, c: :( « · · · · · ·· · · ·· · · ·· · · · · · · ··· ·· ·· ·· ·· · ·· · ··· · ·· · ·· · · ·· ·· · ··· EYE$ GOORV. HITHR. INCLOG INOIR. INOIR1 INOONE INOSA. INOSAl 1NOTA. · INEXT. INFCB. INLOGM 1S$. ISCLS. ISMSG. ISMSGl ISMSG2 ISOPN. LC$. NA$. NOCOM$ NODIR. NOOTE. NOFILE NOFLE. NOLOGF · NOPCS. NOSRD. NOVER. NXDRV. PI$. SHOWL. SM$. TBINTA$. TBINTI TBRENB TBRTCK · ·· · · · · · · · · · ··· · · TL$. ( .' ( ( • • · · · ··· · · · · · · · ··· · · · ··· · · · · ·· · ·· · ·· · · · · · ··· · · · · ·· · · · · ·· · · · · ·· · · · · · · · · · · · · · ·· ··· · TRACE$ WHERR1 WHTCON WHTDSK WHTRCE $$DIR. $$EXT. $$LOG. $$NAM. $$NAME $$NEXT $$SERV $$SY1. $$SYi:::. $$USR. $1982. · ·· · · · · ·· · · · · · · · · · ·· · · · · · · · · · · · · · · · · · · · · · · · · ·· · ·· ·· ·· ·· · · ·· ··· · ···· · · · · · ·· · ·· · · · · ·· · · ·· · ·· · ·· ··· · · · · · ·· · · · · ··· ·· ·· · · ·· ·· ·· ··· ·· · · ·· · · · · · · ··· · · · ··· · · · · · ·· ·· ·· ·· · · · · · · · · · · · ·· ·· · ·· · · · · · · · · · · · · · ·· ·· · · ·· · · ·· · ·· ··· · · · · · · · · · · · · · · · · · · · · · · · ·· ·· ·· ·· ·· ·· · · ·· ·· · · · · · · · · · · ·· · · ·· ·· ·· · · ·· · · · · · · · · ·· · · · · · · · · · · · · · ·· · · · · ·· · · ·· · · ·· · · · · ·· ·· L L L L L L L L L L L L BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE 002C WORD Numbet~ N PROC N PROC L NEAR L NEAR N PROC Number Number Number L BYTE L BYTE L NEAR L BYTE L BYTE L BYTE L BYTE L BYTE L BYTE Number L NEAR Nl..lmber Number L BYTE L BYTE L BYTE Numbet~ · · ··· ·· · · · ·· · · · · Numbet~ ··· ·· ·· · · · · ··· ·· · · Number L BYTE L BYTE L BYTE L BYTE Numbet~ NI.lm bet" Nl..trnber Numbet~ Number Nl..lmber Number Numbet~ Number Number Numbet" 0000 02BE 0046 012B 040B 040E 0294 03C8 03CB 0417 0521 1Z139C 121497 121000 121546 054E 055F 1Z156B 052D 012100 121000 12100121 1Z10CA 016A 1Z16A4 01Z1E9 1Z110F 1Z11Z17F 014E 012196 1Z12EE 1211211210 1Z18F3 1211210121 12112101 1Z119F 1ZI10D 121218 12100121 1211211211 0256 1Z136C 1Z133F 121319 12101218 12112103 012103 1211211218 012108 12112104 1Z100A 012103 121003 001213 07BE PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS PCS C « LeY"lgth =0008 LeY"lgth =0040 Length =12112180 t C. LeY"lgth =1211211218 Lerlgth =01Z11E ·f . • LeY"lgth =121019 f PCS PCS PCS PCS PCS PCS PCS PCS PCS ( « t PCS PCS PCS PCS f C PCS PCS PCS PCS • « .( • • « ,( - - --- - -- - - -- -- - --------- ------- The IBM Pet~sCtrla 1 Cc.mputet~ MACRO Assemblet~ 12-28-83 f' I $ARCHIVE $ATRNRM. $BEEP. .. $CALLDS. $CALLEM. $CALLTK. $CALLTM. $CONS. $DISKERR $ERRSY1. $ERRSY2. $FAILURE $FAL.SE $FRMDTE. $FRMSRV. $HIDDEN. $LOGOPEN $IYlAXMSG. $MND00 $MND01 $MND02 $MND03 $MND04 $MND05 $IYlNT00 $MNT01 $MNT010. · · ·· · •• • ( ( ,I :( • ( ( ( • f f I • C • f · · · · · · ·· $MNT0c~ · ·· · ·· · · · · · · · · $MNT03 $MNT04 $MNT05 $IYINT06 $MNT07 $MNT08 $IYlNT09 $NOCONS. $NODERR. $ONE $P82EML. $P82ENB. $P82EOI. $P82EPT. $P820P0. $P8i:::OP1. $P82RIS. $POSKEY. $RDONLY. $RDWRITE $SUBDIR. $SUCCESS $SY10PEN $SYc:OPEN $SYSTEM. $TBINTI. $TBRENB. · · · · · · . · ·· · · · · · · · · · · · · · · · · · · · · · · · · · · ··· · · · · · · ·· · · · · · · · · · · · · · · · · · · · · · · · ·· ·· ··· · ·· · · ·· · · · · · · · · ·· · · ·· · ·· · · · · ····· · · · · · · ·· · · ·· · ·· ·· · · · · · ·· · " · · · ·· ·· · ·· ·· ·· · · · · · · · · · ······· · · · ·· ·· ·· ·· ·· · · · · · ·· · · · · · · · ·· · · · ·· · ·· · · ·.. · · · · · · · · · · · · · · · · · · · ·· · ·· · · · · · · · · ·· · · · · · · · · · · · ·· · ······ · · · ·· · · ·· ·· · · · ·· · · · · ·· · · ·· ·· · · ···· · · · · · ·· · ··· · · · ·· ······ ······· · · ·· · · · ···· · ·· · · · · · ·· ··· · · · · · ·· · ·· · · · · ·· · · ·· · ·· · ···· ·· · · ·· · · ·· ··· ·· ······ ··· · ·· · ·· · · ······· Numbet~ Number Numbel Number Number Number" Number Alias Number NI.lmber A Number~ Number Number Number Number Nllmber Number Number Numbet~ Nt.trl1bet~ Number Number Number NUfl1bet~ Number Numbet~ Number Number Numbet~ Number Nl.lmbet~ N1.lmber Nl.lmbet" NI.lmber" Numbet" Alias Nt.lmber Number Nt.lmber Numbel'~ Number Number Number" Number Number Number Numbet~ Numbel''' Numbet" Number Number" Nltmbet" Nurober Number Number 0020 0000 0007 0066 000A 001C 0067 $TRUE 0001 0001 0002 00FF 0001 0044 0012 0002 0008 0066 0001 0009 000A 000B 000C 0011 0002 0003 0010 0004 0005 0006 0007 0008 000D 000E 000F $FALSE 0000 0001 0004 00FA 0020 0005 0020 0021 000B 0014 0001 00FE 0010 0000 0001 0002 0004 0080 0040 PAGE Syrnb.:. 1 s-5 • C C I' I' f " ( t' I • I C ( C ( • .' ( ( The IBM Personal Computer MACRO Assembler 12-28-83 c t •, $TBRTD<. $TICKMX. $TRCCON. $TRCDSK. $TRUE. • $USROPEN $VERREC. $VOLLAB. $ZERO. • ??0000 • Warrli ng Numbet~ • • • • • • • • • • • • • • • • • • • • • • • • • . • • • • • • • Nl..lrnber NI..trI,bel'~ Number Numbet~ Number NI.lmber Number Number L NEAR PAGE 0020 0020 000c~ 0001 0000 0004 0020 0008 0000 0658 Syrnbols-6 , • ( c PCS Sevet~e Erl'~ot~S Et~rors o 0 c· t f • • f • « ( c • • c' • ( • The IBM Personal Computer MACRO Assembler 01-15-84 PAGE l-:L ; ( PAGE 60, 132 ; ;*********************************************************************** ; Filename is PCSCH:L.ASM I ;*********************************************************************** • This file contains the code for Emulator initialization described in I Section 2.8 of the Program Logic Description for the OMNINET PCShare Disk Server Emulator~ Version 2.0, dated 7 November 1983. The file also contains the code to interface to PC DOS as an installed device driver, and code to provide entry points to the Corvus utilities. The requirements for device driver code and data are described in Chapter 14 of the IBM PC DOS 2.0 manual. The Emulator as a device driver is named PCSMHOOK and the procedure is DR-DEV-DRVR. EI-INIT (Chapter 9) obtains the location of the Corvus utilities Jump table by a device driver input call (as do the Corvus utilities), and the offset of the ECT from the first word following the Jump table. At the completion of its other processing EI-INIT calls the warm start entry of the Jump table to initialize the transporter and start the operation of the Emulator. c f Allocated data in the file includes the Device Driver header and the Emulator Communication Table, so the derived obJect file must be the ; first one seen by the linker. ;*********************************************************************** ; ;*********************************************************************** ( ENDIF ;*********************************************************************** ; ;*********************************************************************** I + + + t • +- ::: 0001 + + TRACE$ + + +- + I +- + +- + +- t • c ::::: 121001 + DEBUG$ + + C+ (DR) GEN ... START .LALL ENDIF ENDIF ENDIF , (DEBUG) 1 ENDIF ENDIF INCLUDE PCSTRUC.CRV •• • •• f The IBM Personal Computer MACRO Assembler 01-15-84 c- C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ « ( ( PAGE 1-2 r ;*************************************************~.********************* Filename is PCSTRUC.CRV I ; ( This file contains all structure definitions for the implementation of the Corvus OMNINET PCShare Disk Server Emulator. It is included in each of the assembly files when the START macro is invoked. The selectors specified with that macro invocation cause the associated structure definitions to be included in the assembly. Any set of ; definitions can be included with an appropriate set of selectors. ( ;*********************************************************************** I c· ;*********************************************************************** « ; Vers i '::;'Y'I : 2.0 ; Last Update: 14 January 1984 ; • I I .- ;*********************************************************************** IF DR$ ;----------------------------------------------------------------------Operating System Structures ;----------------------------------------------------------------------; I ;------------------------------------------------------------------------ C Structure Name: Device Driver Header Reference: IBM PC DOS 2.0 Manual, page 14-5 I: ; « 0000 0004 0006 0008 000A FF FF FF FF 8000 0000 0000 50 43 53 40 48 4F 4F 4B 0012 DDH Ndev Attr StrtY'1 OvrtY'1 Ovnme STRUC DD DW OW OW DB DDH ENDS .' .' -1 8000H 0 0 ' PCSMHOOK' ( « f • f • = 0080 .- 0001 0000 0001 0002 0003 0005 14 00 00 0000 08 [ 00 J C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ ( Associated return status flag values ; $RGlerr $RGldurl EGlU EGlU 80H 1 ; ; The structure itself RGlH RGllen RGlucde RQopY'1 RQstat STRUC DB DB DB OW DB 20 0 0 0 8 OUP(0) ;Indicates an error ; Indicates completion of request ( • • ;Length of the RQ header plus data ;Unit code (N/A for char device) ;The command to be executed ;Return status placed here ;OOS uses this I) .' (C -< ~'.~'~.~~ c t • f The IBM Personal Computer MACRO Assembler 01-15-84 000D 000E 0012 0014 00 00 00 00 00 0000 r • = 0014 0000 0002 0004 0006 0008 I f f • « C • ( 1-3 f • • PAGE = 0000 = 0001 = 0000 0001 = 0060 0001 - = = = = = 0021 0020 000B 0020 0001 0005 00FA 0000 0000 0000 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ c+ C+ C+ C+ C'+ C+ C+ C+ C·+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ RQdta DB o ;Data always starts with byte RQrtn followed by buffer address o DD RQct followed by data count DW o RQH ENDS ; ENDIF ; IF (DRS OR EIS) ;----------------------------------------------------------------------Structure Name: Emulator Access Table Reference: Program Logic description, Sections 9.2 and 9.3 ;----------------------------------------------------------------------- I ( ( ( Associated constant values ; SPosKey EQU 20 ;Offset to locate the keys KEYS KY - EC KY - EXT KY INT KY - DTM KEYS 0 0 0 0 ;Place ;Place ;Place ;Place ,. - STRUC DW DW DW DW ENDS for for for for offset offset offset Offset to to to to f ECT external driver interrupt driver tiMer intercept ; ENDIF ;----------------------------------------------------------------------Emulator Resident Data Structures ;----------------------------------------------------------------------Universal value definitions ( ( ; EQU STrue SFalse EQU EQU SZero EQU SOne SSKnum EQU SVir Drv1 EQU 0 1 0 1 96 1 ;Usually indicates OK or normal ;Usually indicates NG or unusual ;What is there to say about these? ; ;Number of internal stack entries ;Value for Virtual Drive 1 ~----------------------------------------------------------------------- ( 8259A PIC usage values Reference: Intel 8086 User's Manual ;----------------------------------------------------------------------; SP820p1 EQU SP820p0 EQU 21H 20H ;Port for OCW1 commands ;Port for OCW2, OCW3 commands 0BH 20H ;Read Interrupt Service register ;Simple end of interrupt ;Timer interrupt level bit ;Transporter and timer levels ;Enable xporter and timer ( ; SP82Ris SP82Eoi $P82TML SP82EML $P82enb EQU EQU EQU EQU EQU 1 4+$P82TML 0FFH-$P82EML ;----------------------------------------------------------------------- • c The IBM Personal Computer MACRO Assembler 01-15-84 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ = 0080 ::::: 0040 = 0000 == 000A = 0080 1Z1040 = 0020 == 00DF = 0010 - 0004 -- 0002 :: • t ::::: ::::: - = f C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ - 0001 - I C-t·· 000A 001B 001C 0021 00;:~3 0034 = 0066 := 0067 ::::: 0001 ::::: - f 00CD == 0001 0008 0008 .- 0004 =: 000A - 0000 • 1. -,-4 ( Structure Name: Emulator Communication Table Reference: Program Logic description, Section 1.4 ;----------------------------------------------------------------------- ; • Associated values and flags ; EQU $Corls $CorlsPT EQU $Att~Nrm EQU $TickMX EQU 80H 40H 0 10 ;Write messages to console ;Prompt for console at initialization ;Standard attributes of Emulator files ;Default timer tick refresh count 801-1 40H 20H ;Transporter interrupts installed ;Transporter to run enabled ;Transporter to run off timer tick ;Mask to clear timer tick on ;Prompt for interrupts at init ;Trace output tp hard disk ;Trace output to console ;Trace output to disk ; $TBi rlt I $TBrerlb $TBt"tck $TB)'"lotk $TBinit $TRChrd $TRCcorl $TRCdsk EQU EQU EQU EQU EQU EQU EQU EQU 0FFH-$TB1~t ck 10H 4 '::;0 t.._ 1 • f ., Interl""upt vector number"s ; $CaIIEM $CaIICB $CaIITK $CallDS $CalICA $CallKR $CallDI $CallTM $CallTP EQU EQU EQU EQU EQU EQU EQU EQU EQU 0AH lBH lCH 21.H 23H 34H 661-1 67H 1 ;Emulator interrupt ;Control_break has occurred ;Timer interrupt appendage ;D09 function call ;Control_break appendage ;Gets location In-DOS flag ; DOS i rlt eJ'''ce pt ;Timer appendage recall ;Tt"ap intel""rupt 0CDH 1 ;Interrupt instruction code ;Position of trap flag in AH ; $INT$ EQU $TrapFL EQU t Field lerlgths C·... ; .- • PAGE 50 43 53 48 41 52 45 32 43 0008 000'3 01Z10A 000B 001ZIC 000D 000E 40 01 01 01 0064 ~~i~ ~~0~3 53 48 41 52 0-~ ~ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ $$Dir $$Nam $$Next $$Set"v EQU EQU EQU EQU 8 8 4 10 ECT Ide)'"1 STRUC DB ' PCSHARE2' ;Identifier of the version EC_Dat DB DB DB DB DB DB DW DW ' C' 3 $Cc.nsPT $False $False $False 100 0 ' PCSHARE ;Drive for Emulator files (character) ;Same drive numeric INEW FIELD! ;Flag for log output to console ;Trace active switch INEW FIELDI ;Cold start completed (NEW FIELDI ;Emulator terminated INEW FIELDI ;Maximum number records in log file ;RRN for next log record ;Name of directory for Emulator files EC_Dt~v EC._Flg Trce Cold EC_Trm Max Next Dil''' DB ( , •• f • ( The IBM Personal Computer MACRO Assembler 01-15-84 001A ( 0022 45 20 50 43 45 20 0A 0:::-7 ;..)~, 48 41 [ 20 J f I 002C 002D 002E 002F 0030 0031 el032 012133 012134 012136 0038 003A 003C 003E 0040 :::: 121066 I 012101 0002 :::: 0003 :::: 0004 :::: 012105 12101216 :::: 0007 0008 :::: 0009 :::: 000A _. 000£1 - 000C :::: 01210D :::: 01210E :::: 000F :::: 0010 :::: 0011 0012 0013 0014 :::: :::: c ( • - - 00 00 00 C0 0A 0A 01 1211 000121 012100 0000 1210121121 001210 0121121121 co-::. ;..)0;;" C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ PAGE Nam DB 'PCSHARE ' Set"v DB $$Serv DUP(' EC _At t~U DB EC_Atr~S DB EC_AtrL DB EC_TBI DB TLt mcl-<. DB TLtmrs DB KEEPout DB INTdfl'~ DB DOSd 1-<.0 DW DOSdl-<.S DW DDRH DW DDRHS DW TckO DW Tcl-<.S DW ECT ENDS 1-5 ;Filename for Emulator files ') $AtrNl'~rn $Atl'~Nt~m $Atl'~Nl'~m $TB i l"lt I +$TBt~el"lb $TickMX $TickMX $False $False o 121 o o o o • ;Emulator name as a disk server ;Attributes of User area file IN FI ;Attributes of System area files IE I I ;Attributes of Log file IW EI 1....1 ;Transporter int flags DI ;Current timer tick count ;Value to reset timer tick count 81 ;DOS has been entered flag ;Deferred interrupt flag ;Holds location of DOS ; Critical section (In-DOS) Flag ;Holds location of request header when ; Device Driver called INEW FIELDI ;Holds location of timer tick int when no transporter ints INEW FIELDI ;----------------------------------------------------------------------Structure Name: Log Request Block Reference: Program Logic Description, Section 4.27 ;----------------------------------------------------------------------- ( ( :f •• Associated values ; $MAXMSG EQU 102 Log message ;Maximum message length l"lumbet~s ; $MND00 $MNT00 $MNT01 $MNT02 $MNT03 $MNT04 $MNT05 $MNT06 $MND01 $MND02 $MND03 $MND04 $MNT07 $MNT08 $MNT09 $MNT010 $MND05 $MNT011 $MND06 $MNT012 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 1 i= ;Initialization message 3 4 5 6 7 8 9 10 11 « { • Ii.::: 13 14 15 16 17 « 1.8 19 20 ( ;ORB missil"lg ;Bad pipes tables , • t The IBM Personal Computer MACRO Assembler 01-15-84 0000 0001 0002 - 0100 - 7FFF = 0010 - 000A = 01FE = 00CF = 0211 « • t - 00B0 0080 = 0080 = 00B0 = 00A0 I • • • • ( C+ C+ C+ C+ C+ C+ LRB Cde LR_Len LRB ; ENDIF C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ STRUC DB DB ENDS o o ;Module ID code ;Length of the message string IF (DR$ OR TL$ OR LC$) ;----------------------------------------------------------------------Transporter Usage Parameters ;----------------------------------------------------------------------; $InitTA $MaxDly $MaxRty $MaxWte $ProID $SndNAD $MaxTBD 0000 0001 0002 0003 = 0010 = 00FF = = = = 0001 - 00FF = 000A C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ EQU EQU EQU EQU EQU EQU EQU 100H 7FFFH 10H 10 01FEH 0CFH 529 ;Initial transporter CCB address ;Max loop count for operation complete ;Maximum number operation retries ;Maximum wait time in seconds ;protocol identifier ;Invalid command for NAD reply ;Longest data transfer (w/o disk stat) c c • ;----------------------------------------------------------------------Transporter Socket Usage Conventions ;----------------------------------------------------------------------; $SokTD $SokTM $SokRM $SokRC $SokRL EQU EQU EQU EQU EQU 0B0H 80H 80H 0B0H 0A0H ;To ;To ;To ;To ;To transmit data transmit an NLM receive an NLM receive initial command sequence receive remainder of long command ;----------------------------------------------------------------------Structure Name: Name Lookup Message Reference: Program Logic Description, Section 2.2.3 ;----------------------------------------------------------------------- f I Associated message type codes (most significant byte) C-+ = • • 00 00 ~; t f 1-6 ( f I PAGE ; $NLHi $NLAny $NLWho $NLWhr $NLIdn $NLBye EQU EQU EQU EQU EQU EQU o 1 2 3 10H 0FFH ;Hello ;Any disk server (old protocol) ;Who are you? ;Where are you? ;Identification ;Goodbye c Associated device types of interest to Emulator ; $NLDsk $NLDny EQU EQU 1 0FFH ;Disk Server ;AII Devices ( Associated Name Length ; $NameLN EQU 10 ;Needed because STRUC is weak The structure itself (arithmetic reverses byte order for transporter memory storage) • • ( ( • ( • • , • • • The IBM Personal Computer MACRO Assembler 01-15-84 0000 0002 0004 0006 0008 FE01 0000 0000 0100 57 48 41 52 50 4~ 45 20 20 20 ~ 0012 0000 0002 0004 • C STRUC OW OW OW OW DB NLM ENDS ( $ProID/256 + 256*($ProID AND 0FFH) $NLhi ;Message Type o ;Station Number of sender 256*$NLDsk ;Device Type 'PCSHARE ;Device or user name c ;----------------------------------------------------------------------- 0000 0002 0003 0000 0001 0002 0003 0004 0000 0001 0002 0003 0004 0006 0008 RRRCV Lofcm ELofRp RRRCV 0000 0000 0000 00 00 01 00 00 • • • ; NLM Pid Mgt Src Dev NL - Name •« ; • t 1-7 ( f « C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ PAGE 01 00 00 00 0000 0000 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ COT C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ STRUC OW DW ENDS ( 0 0 Structure Name: Send Reply control area Reference: Corvus OMNINET Programmer' Guide ;----------------------------------------------------------------------; RRSND STRUC ALofRp OW ;Actual length of reply (incl status) o Dstat DB o ;Disk status RRSND ENDS ;----------------------------------------------------------------------Structure Name: Transporter Status Table Header Reference: Program Logic description, Section 2.3 ;----------------------------------------------------------------------- f t ( • ; TSTH Int TT_CI NE TT_NAD TSTH STRUC DB DB DB DB ENDS 0 $False 0 0 ;Interrupt depth indicator ;Command Interpreter invocation flag ;Number of entries in TST ;Network address of Emulator ;----------------------------------------------------------------------Structure Name: Transporter Status Table Entry Reference: Program Logic Description, Section 2.3 ;----------------------------------------------------------------------; TSTE PN TT ST SK TT OP CCB RR c+ Dtl - STRUC DB DB DB DB DW DW OW $False 0 0 0 0 0 0 ;ORB pending flag ;Status code from result record ;Socket to be used ; Transporter commmand INEW USAGE I ; Transporter address of the CCB ; Transporter address of result record ; Transporter address clf data area ( t • « • ( • The IBM Personal Computer MACRO Assembler 01-15-84 ( 000A 1l100C 000E illiZI 10 0012 illiZI 14 c IZt000 0000 0000 0000 0000 ( • « • ( _. ::::: 0000 0001 00FF -" 0080 _. 0000 01Z101 0002 111004 0006 III 0 IZI 8 00 00 0000 0000 0000 • • • 0000 0001 0002 0005 0006 00 00 0000 00 III 0 0000 0008 000A 000B 0000 00 00 01Z101.~ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ Dsz Ist~ Ist~s TT_Orb TT_Ol"~bs PAGE 1--8 ;Length of data ;Offset address ; Reserved for ;Offset address Reserved for DW DW DW DW DW ENDS area in bytes of int service routine segment address of pending ORB segment address TSTE ; ENDIF ; ENDIF ; IF (DRS OR TLS) ;----------------------------------------------------------------------Structure Name: Command Request Queue Header Reference: Program Logic Description, Section 2.5 ;----------------------------------------------------------------------Associated queue status indicator values ; SRQmt SRQemt SRQful EQU EQU EQU 0 1 0FFH ; Quel_\e is empty ;Queue has eFltl"~ies but is Flot full ;Queue is full EQU 80H ;Disk stat us ; SRGldse et~r~Ol"~ flag bit CRQH STRUC Qst SRQmt DB ;Queue status indicator Dsc DB o ;Current disk status code Erld o ;Offset address following CRQ DW Top DW o ;Offset address of head entry Bc.t ;Offset address of tail entry DW o CRQH ENDS ; END!F ; ENDIF ; IF (DRS OR TLS OR LCS) ;----------------------------------------------------------------------Transporter structures and associated values ; Reference: Corvus OMNINET Programmer's Guide ;----------------------------------------------------------------------Transporter Command Control Block ; CCBLK STRUC CC - Cmnd DB DB DW RRA Sc:.ck DB DB CC ._. Data DW DW DatI Cc.rll1'"1 DB DB DHclst 0 0 0 0 0 0 0 0 0 ;Cc.mmand ;fill f.:::.r high addl"~ess byte ;addl""ess Result Recot~d ; sc.cket t.:. use ;fil1 fCIl"~ high addt~ess byte ;Data addr~ess ;Data length ; Corlt t~f.:' 1 leY'lgth ;DestinatiQn hf.)st (i f wl'~ite) ( • • • ( ( •• • ( ( • c • c The IBM Personal Computer MACRO Assembler 01-15-84 000C 0000 12101211 0002 12101214 :::: 02 Lt9 '- 024B :::: 0248 0248 '- 024A :::: 024B =: • :::: 0249 :::: 024C :::: 024D - 0i=:4E - 024F 0080 :::: 002121 ::: 001121 =: f :::: IZIIZ1IZt 8 f c • • :::: 0040 ::: 00F0 :::: 012110 ._- 121 0 2121 :::: 0001 - 0002 :::: 000121 0- 007F :::: 0080 -- 0081 :::: 0082 :::: 0083 :::: 0084 :::: 0085 :::: 0086 FF 1210 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C-IC+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ CCBLK 1--9 PAGE ENDS Transporter Result Record structure ; RRKD RC,::ode SH,:,st Rcv 1 erl RRKD ; ; $RdRAM $RdRAMI $RdStat :; $Wt"Ct 1'''H $WrCt l""L $Wt"RAM ; $Wt"St be ; $DiINT $C1INT $ErIINT $StINT ; STRUC DB DB DW ENDS ; Ret twn Code ;Source Host (if read, 0 write) ;Length data received (if read) 0FFH o o ( Transporter port definitions ( ;::~48H ;To read without incrementing counter ;To read and increment counter ; To:, t'ead st at us EGlU EQU EQU 248H 24AH 24BH ;To set high byte of counter ;To set low byte of counter ;To write data and increment counter , EQU 249H ;To strobe command address EQU EQU EQU EQU ;::~4CH ;To ;To ;To ;To EQU EQU EQU 249H 24BH 24DH i:::4EH 24FH disable (disarm) interrupts clear interrupt latch enable (arm) interrupts read interrupt status , . ( Transporter Status Flags ; $TRedy $TRerlb $TRprld $TRlat ; EQU EQU EGlU EQU ;Transporter ready ;Transporter interrupts enabled ;Transporter interrupt pending ;Interrupt latch 80H 20H 10H 8 Transporter command codes ; $Send $Setup $ErldRcv $InitT $WhoAmI $Echo:, ;$PP ; EQU EQU EQU EQU EQU EQU EGlU ; Serld message ;Setup to receive message ;End receive if no message :;Initialize transporter ;Finds transporters NAD ;Test presence of specified ;Peek/Poke not used 40H 0F0H 10H 20H 011-1 02H 081-1 ( Transporter result codes ; $Tt"OK $TrST $Tl""NG $TrDL $TrNS $TrCL $Tl""'IS $TrNR $TrIT EQU EQU EQU EQU EQU EQU EQU EQU EQU 001-1 7FH 80H 811-1 821-1 83H 84H 85H 86H ;Command completed successfully ;Successful transmit retry maximum ;Transmit failure, retry count exceeded ;Data too long for receive buffer .;Receiver's socket not set up ;Control length mismatch :; Inval id s,:::,cket ;receive socket in use ;invalid transporter address • ( The IBM Personal Computer MACRO Assembler 01-15-84 = 00C0 .- 00FE = 0040 = 00FF = 0121FF '- 0000 = 00FF f 0000 00 012101. 001212 01 02 [ 00 ] 0004 0006 1211211218 000A 01Z10C 000E 012110 00:l.i2 • • • 0000 0000 0000 121000 0000 0000 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C·...· C+ C+ C+ C+ C+ C+ C+ C+ C+ $Tl"~EA $TrSS 0C0H 0FEH 1.-1.0 ;Echo command acknowledged ;Receive socket setup successful .. c Transporter usage values ; $NAD.:.k EQU 64 ;First invalid NAD value $AIINAD EQU 0FFH ;NAD for broadcast $Tl""'SU EQU ;Initialization value for result code 0FFH ; ENDIF ; ENDIF ; ENDIF ; IF (DM$ or DR$ or EI$) ;--------------------------------------------------------------------------Structure Name: Input/Output Request Block Reference: Program Logic Description, section 4.6 ;--------------------------------------------------------------------------Associated completion codes $SUCCESS EQU $FAILURE EQU ; IORB IO_FLG ; IO_Cls NUM C+ DSPM C+ ADR C ...·· C+ FCB C+ C+ IORB C+ C+ ENDIF C+ C+ ENDIF C+ ; C+ ENDIF C+ 1::::NDIF • I o 0FFH « The structure itself c·. . DSPL C+ EQU EQU PAGE STRUC DB 0 DB DB $False i::: DUP (0) DW DW DW OW OW DW DW ENDS 0 0 0 0 0 0 0 ;FLAGS: 00-0PERATION SUCCESSFUL FF-OPERATION NOT SUCCESSFUL ;Close file indicator ; RESERVED ;NUMBER OF 128 BYTE RECORDS ;RRN OF FIRST 128 BYTE RECORD LSB ;RRN OF FIRST 128 BYTE RECORD MSB ;ADDRESS OF BUFFER (OFFSET) ;ADDRESS OF BUFFER (BASE) ;ADORESS OF FCB (OFFSET) ;ADDRESS OF FCB (BASE) . • • • ( • PAGE The IBM Personal Computer MRCRO Assembler 01-15-84 1-11 • C+ ENDIF C+ ; ;*********************************************************************** ( ; Segment Usage Definition ;*********************************************************************** ; ( PCS • ( GROUP PC_CODE,PC_DRTA,PC_INIT ASSUME CS:PCS,DS:PC_DATA,ES:PC_DATA c ;*********************************************************************** ( ;*********************************************************************** ; ; External Symbol Definitions EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN f EXTI~N I: EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN TT:BYTE TTbgrl: BYTE TTerld: BYTE TrmNAD:BYTE RcvICS:BYTE RcvNLM:BYTE Var"OP: BYTE IDmsg:BYTE MND001:WORD IO:BYTE TL_BYT_OUT:NEAR TL_WRD_OUT:NEAR TL_DTA_OUT:NEAR TL_DO_CMND:NEAR TL_SET_RECV:NEAR TL_SEND_NLM:NEAR DM_ERR_LOG:NEAR TL_INT_DRVR:NEAR TL __ INT _TEST: NEAR TL_INT_DTME:NEAR I TST header" ;Initial non-local TST entry ;End of TST entries ;TST entry to send NAD ;TST entry for ICS receive ;TST entry for NLM receive ;TST entry for variable ops ;NL message image ;Initialization message insert :; I rlt e)'''rla I I ORB ;Send byte to transporter ;Send word to transporter ;Send data to transporter ;Execute transporter command ;Set up to receive message ;Send an NL message ;Log routine ;Main interrupt driver ;Entry to hardware int driver ;Timer tick interrupt driver ( lj ( ( :; ;************************************************************************ ( ; 0000 PC_CODE 0000 PC_START LABEL NEAR SEGMENT ( PUBLIC 'CODE' ; t' ;For starting address :; ;*********************************************************************** :; ; ( Allocated Data: Note that for this file only there is data allocated in the code segment I ( ' " ;*********************************************************************** • ;----------------------------------------------------------------------Device Driver Header 0000 0004 012106 0008 01Z10A FF FF FF FF 8000 0043 R 0050 R 50 43 53 4D 48 4F 4F 4'8 PCSH DDH ;Offsets are to device strategy .'• • The IBM Personal Computer MACRO Assembler 1211-15-84 PAGE 1-12 ( and interrupt routines c • ( 1- ;----------------------------------------------------------------------Corvus Utilities Transfer Table :::: 12112112 IZIIZ112 E9 1Z10E9 121015 0000 01Z117 E9 00E9 001A 0000 11101 C E9 00E6 001F 0000 0121;::: 1 E9 00E8 00 i.::: 4 0000 = 0026 R R R R ; UTIL_HOOK EQU THIS BYTE JMP NEAR PTR UTIL INIT UTIL_CS DW 0 JMP NEAR PTR UTIL_INIT DW 0 JMP NEAR PTR UTIL_IO DW 0 JMP NEAR PTR UTIL_DMMY DW 0 UTIL_HEND EQU THIS BYTE .- iCold Start Entry ; place for segment ;Warm Start entry place for segment ; ;Entry to call I/O Services ; place for segment ;Entry to dummy return ; place for segment ( ( f ;----------------------------------------------------------------------Structure with offsets to Key Emulator locations NOTE: c- 0026 0028 01Z12A 00i:::C 0000 R 000121 12112100 12100121 ; DDkeys KEYS f This must immediately follow the UTIL_HOOK table (OFFSET PCS:EC> ;Filled in from table values or .,( • by driver initialization f • ;----------------------------------------------------------------------Device driver funct ior. dispatchir.g table « ; - 1Z11Z12E 002E 0094 003121 0086 01Z13i::: 0086 0034 0086 0036 00A7 121038 00BA 01Z13A 12112186 003C 00DE 01Z13E 00DE = 0040 DDtl'~t R R R R R R R R R DDt t"'t e EQU DW OW DW DW DW DW DW DW DW EQU THIS WORD DDinit DDxit DDxit DDxit DDUtil DOUtib DDxit ODUfx DOUfx THIS WORD ( ;Device dt~ i vet~ i r.i t ia Ii zat i,:;.r, ;Media Check is r.ull ;Build BPB is null ; IOCTL r.ot suppot~ted ; Ir.put gets utility pClirlter ;ND Ir,put gets orle byte of ptr ; Input status is nClt busy ;Any 1:;'l..ltput resets the ND Irlput byte pointer ; ;All others are null, so we cut off the table here • ( C f ;----------------------------------------------------------------------Data required for device driver functions • 01214121 121042 0043 000121 01 ; DDUctr DW DDIdl.trI DB ; PC_CODE ENDS ; 0 $False ( ;Byte position next returned ;Driver initialization flag C t) ;*********************************************************************** ; Allocated data (Data Segment) ., I ;*********************************************************************** ( ( ---.-.~- .. ( • c • • The IBM Personal Computer MACRO Assembler 01-15-84 PC DATA SEGMENT PUBLIC 'DATA' ; Dt a_Bgyol EQU THIS BYTE ::::: 0000 1 -13 0 ( ;Start of Data segment area ;----------------------------------------------------------------------- ( Emulator Communication Table 0000 0008 000'3 1Z100A 000B 01Z1IZIC 000D 01Z10E 0010 ilM1.i::: 01Z1H~ I PAGE 002i::: 5 III 43 53 48 41 52 "2-=' 45 wL. 43 0.. ....?J 40 01 01 01 0064 0000 50 43 53 48 41 52 45 E:0 ;:JC. 50 43 ...J~ 48 41 a:;:.-, 4:5 e0 0A ( e0 ; EC ECT <> ;STRUC values may be modified ( 000 ( ( C:'~ ] • 00i:::C 00eD IZt0eE 0IZlf::F 0030 IlIIZl3 :l 01Z13i::: 01~~~33 ( « • 121034 1ZtIZ136 0038 iZIIZl3A 003C 0031=. .' f ;----------------------------------------------------------------------Prototype cce for transporter initialization 0040 0121411Z1042 004L~ 012145 0046 01Z148 00't(.:~ c 00 00 01Z1 C0 0A 0A 01010000 0000 0000 0000 0000 0000 IZIIZ14B 00 00 0000 00 00 0000 0000 00 00 ; Set1..lpT CCBLK ; 004C PCo_DATjC~ ENDS <> ;Filled in by TL-INIT-TLD • . ' c f The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-14 f f ( ; ;*********************************************************************** ; Device Driver and Corvus Utility Routines I ;*********************************************************************** ; c PC CODE 0043 SEGMENT PUBLIC 'CODE' ; ;*********************************************************************** ;Module name: c ;Version: Device Driver Routines 2.0 ; .... ~ I I I I ;Last Update: 23 December 1983 ; The Device Driver routines implement the installed device driver functions required by PC DOS 2.0. ;Function: c ( ( • f DR-STR is the entry point to the device strategy routine whiose only function is to save the location of the request header. • DR-INT is the entry point to the device interrupt routine. The INIT function carries out the Emulator cold start procedure. The two INPUT device functions return a long pointer to the Corvus utility Jump table (which is the UTILHOOK function). All other device functions are null operations. ( f ;Procedure: See individual routines I ;Called by: DOS using device driver protocol • • • ;Routines called: ; ;Input: EI-INIT = ES: (BX) Location request header (PC-DEV-STR only) ; ;Output: Modified request header (PC-DEV-INT only) ; ;Error procedures: ;Written by: R.B. Talmadge, Computer Technology Ltd • • • t ( ; ;Updates: c None ;*********************************************************************** DR_DEV DRVR 0043 ( 1 None ; « • • • f PROC FAR ; DR_STR 0043 0043 0044 0047 004A 004E 56 BE 0038 R 2E: 89 lC 2E: 8C 44 02 5E LABEL PUSH MOV MOV MOV POP NEAR SI ;Get offset for 8I,OFFSET PCS:EC.DDRH ;address storage CS:CSIJ,BX ;Save full 8088 address of request header C8:ESI+2J,ES and return to caller 81 • • • ( { ( The IBM Personal Computer MACRO Assembler 01-15-84 (, 004F PAGE 1-15 c RET CB ; DR - INT 0050 LABEL NEAR ; ( :f 0050 0051 0052 1Z1053 0054 017.155 0056 017.157 0058 0059 0058 01215E 121060 ;;;s,,_ 1=.'.::, + + + + + + + + + + + + + + + + + + + Dta_Bgn ;Save registers and set environment AX BX CX DX SI DI 8P DS ES AX,CS BX,OFFSET PCS:Dta_Bgn BX,1 BX,1 BX,1 BX,1 AX,BX DS,AX ES,AX BP,SP 0064 012166 0068 006A 006C 56 57 55 1E 06 8C BB D1 D1 D1 D1 03 8E 8E 8B 006E 0072 0074 C5 1E 0038 R 32 E4 8A 47 02 LDS XOR MOV BX,DWORD PTR EC.DDRH AH,AH AL, [BX J • RQc'pn 0077 0079 007C 007E 121081 0083 D0 C0 3D 0012 7D 08 BE 002E R 03 F0 2E: FF 14 ROL CMP JGE MOV ADD CALL AL,1 ;Transfer table offset AX,OFFSET DDtrte - OFFSET DDtrt DDxit ;Exit if out of range SI,OFFSET DDtrt ;Position to transfer SI,AX table entry and call WORD PTR CS:[SIJ function routine 00E.2 « 50 53 51 ENTER PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH MOV MOV SHR SHR SHR SHR ADD MOV MOV MOV C8 0000 R EB EB EB EB C3 D8 C0 EC ; t ( • • • 80 4F 03 01 008A 008B 008C 008D 008E 008F 0090 017.191 0092 0093 07 1F 5D 5F 5E 5A 59 5B 58 CB OR EXIT POP POP POP POP POP POP POP POP POP RET DDxit: + + + + + + + + + + c f f ;Get address of request header and fetch operation code Reentry point here for all device driver function routines. The completion bit is set in the request header status field, interrupts are turned back on, and the routine exits • . 0086 ( BYTE PTR [BXJ.RQstat,$RQdun ;Go back to caller NOINT ES DS BP DI SI DX CX BX AX ( (: ( ; 0094 DR_DEV DRVR ; - ENDP • ( c The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-16 ( 0094 ( Enter here for device driver initialization. The EI - ONE one-time initialization routine is called if it has not previously been called. The transporter is not initialized by this routine. It will be initialized by a call to either of the UTIL_HOOK start entries (cold or warm). ( c ; ( 0094 009A 009C 2E: 80 3E 0042 R 01 74 01 C3 DDinit: CMP JE RET • 009D 00A0 00A6 E8 0000 R 2E: C6 06 0042 R 00 DDinil: CALL NEAR PTR EI ONE MOV CS:DDIdun,STrue RET C3 ( • ;Go do first time work ;Assure no return here ;Return from whence we came - ; 00A7 1E 00A8 00AB 00AE 00B0 C5 7F 0E BE 0012 R 89 ~~ 8C 4D 02 00B3 00B4 00B9 IF C7 4'7 12 0004 C3 DDUtil: PUSH ~~ DS ;Save segment LDS MOV MOV MOV DI, [BXJ.RQrtn SI,OFFSET UTIL_HOOK [DIJ,SI 2[DIJ,CS ;Buffer address ;Offset of Jump table ;Store offset, then segment address POP MOV RET DS [BXJ.RQct,4 ;Restore segment ;Set return count and exit Enter here for Non-destructive input function. The caller is returned one byte of the address of the utility transfer table. After four entries the progression starts over. 1 t ;If this is not the first entry, do not take any action Enter here for the Input function. The caller is sent the full 8088 segmented address of the utility transfer table as the first four bytes of the input buffer t I CS:DDldun,SFalse DDinil ; ( « ; 00BA 00BF 00C2 00C5 00C7 2E: BB 0E 0040 R B8 0012 R F6 Cl 02 74 02 8C C8 DDUtib: MOV MOV TEST JZ MOV 00C9 00CC 00CE 00D0 F6 74 8A 88 DDUtic: TEST JZ MOV DDUtid: MOV 0003 0004 0008 00DD 41 81 E1 0003 2E: 89 0E 0040 R CX,CS:DDUctr AX,OFFSET UTIL HOOK CL,2 DDUtic AX,CS ;Fetch current position ;Get offset or Segment address CL,1 DDUtid AL,AH [BXJ.RQdta,AL ;Position byte to low order ; • c I • • ( ( C1 01 02 C4 47 0D INC ANO MOV RET C3 CX CX,3 CS:DDUctr,CX ( ( ( t f f f ( ( • ( ;Store byte in request hdr ;increment to next ; position modulo 3 ;Store new value and exit ( Enter here for any output function. The Non-destructive input position indicator (field DDUctr) is set to zero. 00DE 2E: C7 06 0040 R 0000 DDUfx: MOV CS:DDUctr,0 ;Fix up • { - t • •, • ~.. The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-17 r 00E5 C3 RET and exit ( ; DR_DEV_FNS 00E6 ENDP ;*********************************************************************** ;Module name: Corvus Utility Routines I I :; ;Version: 2.0 ( ( ; « ;Last Update: 7 December 1983 ;Function: • The Corvus Utility routines are called by those Corvus Corvus routines that require access to the Local Command 110 services. f UTIL_IO executes the proper interrupt to call the Local Command service, and exits on return f UTIL INIT call TLD initialization to do a warm start f c UTIL_DMMY does nothing ; t ; Procedure: See Program Logic Description, Section 8.1 ; I ;Called by: Corvus utilities • ;Routines called: TL-INIT-TLD ; ;Input: Registers data as required by Local Command 110 { ; ;Output: Register data set by Local Command 110 ; ;Error procedures: • None ; ;Written by: R.B. Talmadge, Computer Technology Ltd f ; ;Updates: None ; ;*********************************************************************** f ; 00E6 DR DEV_UTIL ; f 00E6 • • • • 00E6 ( UTIL - 10 CD 0A UTIL DMMY - CB UTIL INIT IE 06 FAR NEAR $CaIIEM LABEL + + ( ;Call the Emulator NEAR RET 00E9 00E9 00EA LABEL INT 00E8 00E8 PROC - ;Exit LABEL ENTER PUSH PUSH NEAR Dta_Bgn"Noregs OS ES ;Set environment • • { c The IBM Personal Computer MACRO Assembler 01-15-84 00EB IZl0ED ellZlF0 IZt0F2 00F4 00F5 00F8 00FA 01Z1FC 8C BB D1 D1 D1 D1 03 8E 8E 00FE E8 013C R .( 0101 0103 tZI105 0108 010D 010F 0I1i::: 0A 75 B8 80 7E B8 A3 '. 011::) 0115 0118 011B 50 B0 IZiI E8 IZl000 E 58 IZlltC 0111) IlII1E 07 1F CB • c f C8 0000 R EB EB EB EB C3 D8 C0 C0 0(~ 4B4F 3E 000:3 E 40 03 474E IZl000 E MOV MOV SHR SHR SHR SHR ADD MOV MOV + + + + + + + + + ; INIxt: + + + 1Z111F 1-18 AX,CS BX,OFFSET PCS:Dta_Bgn BX,1 BX, 1 BX,1 BX, 1 AX,BX DS,AX ES,AX CALL NEAR PTR TL_INIT_TLD OR JNZ MOV CMP JNG INIxt0: MOV INIxt1: MOV LOG + PUSH + MOV + CALL + POP I PAGE EXIT POP POP RE1UTIL INT_TEST ( ;Initialize the TLD AL,AL ;Indicate NG if transporter INIxt0 ; not enabled with clear latch AX,'KO' ;Test value of transporter NAD TT.TT_NAD,$NADok INIxt1 AX, , GN' MND00l,AX ;Set message accordingly $MND00 and output the message AX AL,$MND00 DfYl_ERR_LO(3 AX NOINT ES DS LABEL ( •• ;Return to caller NEAR ;----------------------------------------------------------------------Enter here to call the TL_INT_DRVR at its primary interrupt • ( entry point TL_INT_TEST. The call will invoke the main loop of the interupt driver so that the Emulator can be run as a subroutine rather than as an interrupt driven device routine. • '( ;----------------------------------------------------------------------- • • • I ( 011F 0121Z1 12112:1. 0:L23 0125 0:L28 0:L2A 0:L2C 012E ill 130 IE 06 8C BB D1 D1 D1 C8 121000 R EB EB EB D:I. EB 03 C3 0:1.3c~ 8E D8 8E C0 0134 121135 1Z1138 FA E8 0000 E FB + + + + + + + + + + + ENTER PUSH PUSH MOV MOV SHR SHR SHR SHR ADD MOV MOV CLI CALL STI Dta __ BgYI, ,Nc'"r"egs DS ES AX,CS BX,OFFSET PCS:Dta_Bgn BX, 1 BX,1 BX, l. BX, :I. AX,BX DS,AX ES,AX TL_INT_TEST ; Set env i rOYlmeYlt ( f ;Disable interrupts ;Call the interrupt driver ;Assure interrupts enabled c·•.'· ( « PAGE The IBM Personal Computer MACRO Assembler 01-15-84 c ( 0139 013A 013B • 013C 07 IF CB EXIT POP POP RET + + + NOINT ES DS 1-19 f ;Return to caller ( ; DR DEV - UTIL ENDP ; ;***************************************************** ***.~************** f ;Module name: • • ;Version: TLD initialization (TL-INIT-TLD) I c 2.0 ; f ;Last Update: 15 January 1984 ;Function: The TLD initialization routine is one of the routines which comprise Emulator initialization. Its task is to set up transporter memory and the TST, initialize the transporter, start transporter interrupts, and start reception of commands and Name Lookup messages. • ·1· l ; • t ;Procedure: Program Logic Description, Section 2.8 ;Called by: EI-INIT • ; ;Routines called: TL-DO-CMND ; ;Input: ( None ; ;Output: CAL) = Successful completion indicator ; t ;Error procedures: None ; ;Written by: R.B. Talmadge, Computer Technology Ltd 1 ; ;Updates: ( , None ;*********************************************************************** ; 013C 013C • TL_INIT_TLD FA PROC NEAR CLI ( ;Disable 8088 interrupts The first step is to disable transporter interrupts if interrupts are installed on the board 013D 0142 0144 0147 F6 06 002F R 80 74 04 BA 024C EE • TEST JZ MOV OUT EC. EC_TBI, $TBintI ITLgo ;If transporter interrupts DX,$DiINT installed, disable DX,AL interrupts Next, the CCB and RR images and all constant data are inserted into transporter memory ; 0148 SF 0000 E ITLgo: MOV DI,OFFSET TTbgn ;Starting offset of TST entries ( • • ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-20 f ; • • I MOV MOV MOV MOV MOV MOV XCHG MOV SI,OFFSET SetupT AL, [DI J. TT._OP [S I J. CC_Cr.' ..... d, AL AL, [Dn. SK (S I J • Se.ck., AL AX, (DI J. Dsz AL,AH [S I J. Dat 1, AX ;Starting offset CCB image ; Opel'~at ie...... code ; te. CCB image ; Socket .......\mbel'~ ; te. CCB image ;Now data length in reverse byte order (as are all two byte quantities for xporter) 8B 45 06 86 C4 89 44 02 8B 5D 08 86 FB 89 5C 06 MOV XCHG MOV MOV XCHG MOV AX, [Dn. RR AL,AH (Sl]. RRA, AX BX, (Dn. Dt 1 BH,BL (SIJ.CC_Data,BX ;Next the resu It rece.rd ; address ; The ..... the Data address 0171 0173 0175 0177 017A 86 86 2B 83 88 XCHG XCHG SUB SUB MOV BH,BL AH,AL BX,AX BX,TYPE RRKD (SI]. Cc'nl ..... , BL ;Compute user control al'~ea le ..... gth ;Store into CCB image 017D 018121 121183 B9 000C 88 5D 04 E8 0000 E MOV MOV CALL CX,TYPE CCBLK BX, [DIJ.CCB TL_DTA (JUT ;Set size of CCB ;Fetch address of CCB ;Insert CCB image into xporter 0186 018'3 018C 8B 5D 06 8A ':~D 01 E8 0000 E MOV M(JV CALL BX,(DILRR CL, EDIJ.TT_ST TL BYT _.OUT ;Initialize result code to be equal to value ....'c'w i..... TST ent ry 018F 0192 0196 83 C7 14 81 FF 0000 E 72 83 ADD CMP DI,TYPE TSTE D I, OFFSET TTe ..... d ITLlp ;Position to next TST entry and go back to process if not done 014B 121 14·E 0151 0153 ,z1156 0159 015C 015E BE 8A 88 8A 88 8B 86 89 0161 1Z1164 0166 0169 IZt16C 016E 0040 R 45 03 04 45 02 '+4 04 45 0A C4 44 08 FB E0 DB EB 04 5C 0A ITLlp: JB • c • ( :1 • ( Initialize data area for reply to NAD requests '. · , ( 0198 01'3C 019F 12I1A1 01A4 01A7 01AA 01AC 8B 83 8D B9 EB 8D B1 E8 36 0006 E C6 04 1C 0001 0000 E 5C 0i::~ CF 01211210 E MOV ADD LEA MOV CALL LEA MOV CALL SI, Tl'~mNAD. RR SI,TYPE RRKD BX, (SIJ.ALofRP CX,1 TL_WRD_OUT BX, [Sn. Dstat CL, $S ....,dNAD TL_BYT_OUT ;Compute location of User ; Control area for TrmNAD ;Position to reply le ....";}th a ..... d se ..... d ; to transporter ;Position to disk status and send invalid command ; to transporter • ( Initialize the transporter and save Emulator NAD • • 01AF 01B3 01B7 01BA 01 BD 88 8B EB Ai::: A2 IE 0006 E 0E 0004 E 12100121 E 012103 E 001215 E MOV MOV CALL MOV M(JV BX,VarOP.RR ;Fetch transporter addresses CX,VarOP.CCB for variable operation CCB TL_DO_CMND and go initialize transporter TT.TT_NAD,AL ;Save NAD in TST header BYTE PTR IDmsg.Src+1,AL ;and NL message image Enable transporter interrupts if installed and if board • .'• ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-21 c is t c' rurl el'"labled « • 01C0 I2I1C3 01C5 01C7 01C9 A0 A8 74 A8 74 IZl02F R BI2I 18 40 14 01CB 01CD 01CF 01Dl 01D4 01D5 III 1 D8 01.D9 01DC 01DD E4 24 E6 BA EE BA EE BA EC 24 i.::: 1 FA 21 024E MOV TEST JZ TEST JZ IN AND OUT MOV OUT MOV OUT MOV IN AND 024D 024F 28 I Stat. . t 01DF 01E0 01E3 01E5 50 BE 0000 E B0 01 E8 0000 E 01E8 01EB 01ED BE 0000 E B0 01 E8 0000 E ; ITLp0: AL,EC.EC_TBI AL, $TBi rlt I ITLp0 AL, $TBt~el'"lb ITLp0 ;Fetch t AL,$P82op1 AL, $P82el'"lb $P82.:)p 1, AL DX, $El'"IINT DX,AL DX,$CIINT DX,AL DX,$StINT AL,DX ;Fetch 8259A i l'"lte\'~\''''upt al'"ld el'"lable the level fc.r the trarlspot~tet" ; ;Fetch port l'"lumber arid sel'"ld the el'"lable ; ; Assut"'e the i Y'lt ert~upt latch is cleat" ; ;Now fetch status of t rarlsport et'" ; DC'l'"I' t \'~al'"lspot~t et~ t~ erlable if l'"IC.t Ul'"1 type irlstalled c,r if nc.t t c. rUY'1 enabled « ( ( ( AL,$TRenb+$T~lat "''''ecept iorl .:)f messages PUSH MOV MOV CALL AX SI,OFFSET RcvICS AL,$False TL SET RECV ;Save tl''''arlsporte ...'' status ;Set offset TST eY'ltt... y rcs l''''eceive set for rio ORB, ; t"equest start of recept i.:)\", MOV MOV CALL SI,OFFSET RcvNLM AL,$False TL SET RECV ;Set offset TST eYltry NLM t"'ecei ve set fot... YIO ORB, ; l''''equest sta ...... t e.f ...~ece pt i ':)YI - - ( Send out a 'Hello' Name Lookup message, then reset the NL message image to send Identification messages I • • t', • • •• • C' 01F0 01F3 01F6 01F9 01FA BE 0022 R BF 0008 E B9 000A FC F3/ A4 MOV SI,OFFSET EC.Serv DI,OFFSET IDmsg.NL_Name MOV CX, $$Sel'~v MOV CLD REP MOVSB 01FC 01.FE 0~::01 B1 FF BE 0000 E EB 0000 E MOV MOV CALL CL,$AIINAD SI,OFFSET IDmsg TL_SEND_NLM 0i204 0i207 B8 0010 A3 0002 E MOV MOV AX, $NLldYI IDmsg.Mgt,AX 020A 020F 0210 C6 06 000C R 00 58 C3 MOV BYTE PTR EC.Cold,$True ;Indicate cold start over ;Fetch transporter status POP AX RET ;And that's all there is to do 121211 0211 ;Fetch Emulator name ft~':lm ECT t c. the NL message image ;Use broadcast NAD ; and NL message image ;Send 'Hello' and start NL message reception ( ;Reset for Iden message ; TL_INIT_TLD ENDP ; PC_CODE ENDS ; ;*********************************************************************** •• •• •e. The IBM Personal Computer MACRO Assembler 01-15-84 ; ; ; .- • ( I PAGE 1-22 This is the entry point for the first time initialization procedure. This code is contained in the special segment PC_INIT, which is deleted by PC DOS after return from driver initialization. ;*********************************************************************** ; 0000 PC_INIT SEGMENT MEMORY 'LAST' •• ; 0000 EI_ONE PROC NEAR Set code segment value into UTIL_HOOK Jump table and offsets into DDkeys table for EI-INIT 0000 0003 0006 0009 000C 000E BE 0015 R BF 0026 R 2E: 8C 0C 83 C6 05 3B F7 7C F6 0010 0017 2E: 2E: 2E: 2E: 0fZlIE 0025 C7 C7 C7 C7 06 06 06 06 MOV MOV EI - ins: MOV ADD CMP JL ., 0026 R 0000 R 0028 R 011F R 002A R 0000 E 002C R 0000 E t SI,OFFSET UTIL_CS ;First locat iOYI DI,OFFSET UTIL_HEND ; EYld location CS: (SI), CS ; IYlsert segmeYlt vall..,e SI, «TYPE UTIL_CS) + OFFSET UTIL_CS - OFFSET UTIL_HOOK) SI,DI EI ins ;Back if nc.t done .- - MOV MOV MOV MOV CS:DDkeys.KY_EC,OFFSET PCS:EC CS:DDkeys. KY_EXT, OFFSET UTIL - INT_TEST CS:DDkeys. KY_INT, OFFSET TL - INT_DRVR CS:DDkeys. KY_DTM, OFFSET TL INT_DTME - ; ;ECT ;Call HW drvr ; IYlt Drvr ;Timer iYlt Move end location into request header for return information to DOS :1 rl 002C 0031 C7 47 0E 0000 R 8C 4F 10 MOV MOV 0034 C3 RET WORD PTR (BX).RQrtn,OFFSET PCS:EI_ONE WORD PTR 2CBX).RQrtn,CS ;Return from whence we came 0035 « • • :1 • 0035 ; ;*********************************************************************** ; End of the Assembly housekeeping goes here I ;*********************************************************************** ., PUBLIC PUBLIC END EC Dta_BgYI ( ;Emulator Communication table ;Start of Emulator Data area • c· ( ( ( • The IBM Personal Computer MACRO Assembler 01-15-84 • • I SYralbols-1 c I N a ral e COIYJPARE. DISABLE. " ENABLE" • ENTER. . EX IT • • EYE. • • FILLIT F IV. • • " • GEN_START. • • • LOG. • • . • • • MOVEB. . . MOVEONE. . RESTORE. • • • • • • • • • • " • SCANB. • SELEXIT • • • • • SELREST. • • • • . • . • • • SELSAVE. . " SIVa • START • • STATUS. TENTER. TEX IT. • TIME • • TRACE. • " f PAGE • • • • • . .. " • u . . . 000F 0003 0003 0013 0007 0001 0011 0002 0002 0005 000F 000E 0001 0012 0002 000D 0018 0003 001A 0001 0003 0002 0001 0009 f I Structures and records: :1 ( N a m e CCBLK. • • CC_CMND. RRA. • • SOCI-{ • • CC_DATA. DATL • • CONLN. DHOST. CRQH • • • QST. • • DSC. • • END. • • TOP. BOT. DDH. • ( " • NDEV • ATTR • STRTN. DVRTN. DVNME. ECT. • • IDEN • . • • • • • • • • • • • • • • . • . . • • • • • • • • . . . . • • • • • • • • • • • • • • • • • • • • " ..... Width Shift *" 000C 0000 0002 0004 0006 0008 000A 000B 0008 0000 0001 0002 0004 0006 0012 0000 0004 0006 0008 000A 0040 0000 0009 fields Width Mask IYlitial 0005 0005 001A « The IBM Personal Computer MACRO Assembler 01-15-84 PAGE Symbols-2 t EC DRV • • • • EC:FLG TRCE • • . COL.D • EC_TRM MAX. • NEXT • DIR. . NAM. • SERV • EC ., D:PCSCHI .L.ST Canceled by operator 0008 000'3 000A 000B 000C 000D 000E 0010 0012 001A 0022 t C « '. f t I I I I t t « ( ( ( t' f f ( • • • • • .' The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-1 ( « ; PAGE 60,132 ; ;*********************************************************************** ; Filename is PCSCH2A.ASM I ;*********************************************************************** • This file is the first of two which contain the code for all of the routines described in Sections 2.1 through 2.7 of the Program Logic Description, OMNINET PCShare Disk Server Emulator, Version 2.0, dated 7 November 1983. The file also contains allocation statements for ; data structures managed by the Transporter Logical Device. I I I I I « ( ;*********************************************************************** ENDIF ; • ;*********************************************************************** + + 'I. + ... -- 0001 « t + + TRACE$ + + ... + ... ... ... + ... 1 • •, :::: 0001 + DEBUG$ + + C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ GEN_START (TL> .LALL ENDIF ENDIF ENDIF (TRACE}, (TRACE} IFIDN :::: 1 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IFIDN :::: 1 ENDIF ENDIF INCLUDE PCSTRUC.CRV ;TLD stt~uctures • f ;*********************************************************************** ; f Filename is PCSTRUC.CRV ( I ;*********************************************************************** This file contains all structure definitions for the implementation of the Corvus OMNINET PCShare Disk Server Emulator. It is included ; in each of the assembly files when the START macro is invoked. The ; selectors specified with that macro invocation cause the associated structure definitions to be included in the assembly. Any set of ; definitions can be included with an appropriate set of selectors. I I I ;*********************************************************************** ; ; Vers i ':)1"1: ( I I 2.0 ; Last Update: :; 14 January 1984 -*********************************************************************** ENDIF • ( c • ( The IBM Personal Computer MACRO Assembler 01-15-84 f == 0000 t. == == == == == 0001 0000 0001 006121 0001 • I ,( f I:' == 0021 == 0020 == == == == = 000B 0020 0001 0005 01Z1FA f ,t ( f .( ( C • C' ( == 0080 == 0040 == 0000 == 000A = == = == = == = = 0080 0040 0020 01Z1DF 001121 0004 0002 01211211 == 000A == 001B == 001C C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ PAGE 1-2 ENDIF '0 ;----------------------------------------------------------------------Emulator Resident Data Structures ;----------------------------------------------------------------------- f: Universal value definitions ; EQU $True $False EQU $Zero EQU EQU $One $SKl"lum EQU $Vir Drv1 EQU - 0 1 0 1 96 1 ;Usually indicates OK or l"lormal ;Usually indicates NG C·t~ Ul"luslJal ;What is there to say abc.ut these? ; ;Number of internal stack. el"ltries ;Value fc.r Virtual Drive 1 ;----------------------------------------------------------------------8259A PIC usage values ( f Reference: Intel 8086 User's Manual ;----------------------------------------------------------------------; $P820p1 EQU $P820p0 EQU 21H 20H ;Port for OCW1 commands ;Port for OCW2, OCW3 commands $P82Ris $P82Eoi $P82TML $P82EML $P82el"lb 0BH 20H ;Read Interrupt Service register ;Simple end of interrupt ;Timer interrupt level bit ;Transporter and timer levels ;Enable xporter and timer EQU EQU EQU EQU EQU 1 4+$P82TML 0FFH-$P82EML ; ( ;-----------------------------------------------------------------------Structure Name: Emulator Communication Table ; Reference: Program Logic description, Section 1.4 ;----------------------------------------------------------------------; ; Associated values and flags ; EQU $CC'l"IS 80H ;Write messages to console $ConsPT EQU ;Prompt for console at initialization 40H $AtrNrm EQU 0 ;Standard attributes of Emulator files $TickMX EQU 10 ;Default timer tick refresh count ; $TBintI EQU 80H ;Transporter interrupts installed $TBrel"lb EQU 40H ;Transporter to run enabled $TBrtck. EQU 20H ;Transporter to run off timer tick $TBnotk. EQU IZIFFH-$TBrtck ;Mask to clear timer tick on $TBinit EQU 10H ;Prompt for interrupts at init $TRChrd EQU 4 ;Trace output tp hard disk $TRCcon EQU 2 ;Trace output to console $TRCdsk EQU 1 ;Trace output to disk ; ; $CaIIEM $CaIICB $CaIITK , ( ( Interrupt vector numbers EQU EQU EQU 0AH 1BH 1CH ;Emulator interrupt ;Control_break has occurred ;Timer interrupt appendage •• ( ( • • c. • The IBM Personal Computer MACRO Assembler 1211-15-84 ( = == == == == == 121121;::1 12112123 12112134 12112166 12112167 1211211211 = 1Z1I21CD == 1211211211 ::: 1211211218 == 01211218 == 1211211214 == 121 121 121 A 12112100 • 12101218 12101219 000A 000B 121 0121 C 1210 121 D 1Z100E 001121 012112 01211 A • I « • t • • f 1-3 PAGE 012122 50 43 53 48 41 52 45 32 43 03 40 01 1211 01 006i~ 121000 5121 43 53 48 41 52 45 i:::0 50 43 53 48 41 52 45 20 0A ( 20 J 01212C 002D 01212E 01212F 003121 121031 12103;::: 0033 12112134 0036 12112138 1Z11Z13A 003C 01213E 12112140 00 00 00 C0 121 A 121 A 1211 1211 1210121121 0121121121 121121121121 1211210121 0000 121121121121 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ $CallDS $CallCA $CallKR $CalIDI $CallTM $CallTP EQU EQU EQU EQU EQU EQU 21H 23H 34H 66H 67H 1 ;DOS funct iO)'"1 call ; Co::or,t ro 1_ 1:H'~eak appendagc.,? ;Gets lClcat iO)'"1 I)'"I-DDS fli:\g ;DOS i )'"It et~cept ; Timet~ appendage t~ec:all ; Tt~ap i )'"ltet~loo'upt EQU EQU 0CDH ; I )'"It et~\"~upt ir,st\"~uct io)'", code ; PI:IS i t i 0)'"1 l::rf t\"~ap flag i yo, AH ; $INT$ $Tt~apFL 1 Field le)'",gths ; $$Di t~ $$Nam $$Next $$Serv EQU EQU EQU EQU ; ECT Iden STRUC DB ;,- 8 8 4 1121 , PCSHARE2' ;Identifier of the version , C' 3 EC_Flg Trce Cold EC_Tnn Max Next Dir DB DB DB DB DB DB DW DW DB $C';::')'"lsPT $False $False $False 11210 'PCSHARE ' ;Drive for Emulator files (character) ;Same drive numeric INEW FIELDI ;Flag for log output to console ;Trace active switch INEW FIELDl ;Cold start completed INEW FIELDI ;Emulator terminated lNEW FIELDI ;Maximum number records in log file ;RRN for next log record ;Name of directory for Emulator files Nam DB 'PCSHARE ' ;Filename for Emulator files Se\"~v DB $$Serv DUP(' EC_Dat EC_Dt~v EC_AtrU DB EC_Att~S DB EC_Att~L DB EC_TBI DB TLtmck DB TL.tmrs DB KEEPc.ut DB INTdfr DB DOSdkO DW DOSdkS DW DW DDRH DDRHS DW TckO DW DW TckS ECT ENDS 121 ') ;Emulator name as a disk server IN FI ;Attributes of User area file IE I I ;Attributes of System area files IW EI ;Attributes of Log file $AtrNrm LI I ;Transporter int flags $TBir,t I+$TBrer,b 01 ;Current timer tick count $TickMX SI ;Value to reset timer tick count $TickoMX ;DOS has been entered flag $False ;Deferred interrupt flag $False ;Holds location of DOS 121 ; Critical section (In-DOS) Flag o ;Holds location of request header when 121 ; Device Driver called INEW FIELDI 121 ;Holds location of timer tick int when o no transporter ints INEW FIELDI o I. f t. $AtrNt~m $AtrN\"~fIl ;----------------------------------------------------------------------Structure Name: Log Request Block • • (- The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-4 I t = 0066 ( = 0001 :::: 0002 :::: 0003 :::: 0004 = 0005 :::: 0006 :::: 0007 0008 = 0009 = 000A = 000B :::: 000C :::: 000D ._. 000E :::: 000F --_. 0010 0011 .- 0012 :::: 0013 0014 .- • - I 0000 012101 0002 .( • 00FF ... 0000 = 0001 - 0002 :::: 0003 :::: 0004 = 0005 :::: 0006 = 0007 :::: I ( 00 00 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C·IC+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ Reference: Program Logic Description, Section 4.27 ;----------------------------------------------------------------------; Associated values ; ;Maximum message length $MAXMSG EQU 102 ; Log message numbers ; ;Initialization message 1. $MND00 EQU ....0::. $MNT00 EQU $MNT01 EQU 3 $MNT02 EQU 4 $MNT03 EQU 5 E, $MNT04 EQU 7 $MNT05 EQU $MNT06 EQU 8 '3 $MND01 EQU $MND0;::~ EQU 10 11 $MND03 EQU 12 $MND04 EQU $MNT07 EQU 13 14 $MNT08 EQU $MNT09 EQU 15 16 $MNT010 EQU $MND05 EQU 17 $MNT011 EQU 18 ;ORB missing $MND06 EQU 19 ;Bad pipes tables 20 $MNT012 EQU ; STRUC LRB ;Module ID code o Cde DB ;Length of the message string o LR_Lerl DB LRB ENDS ; IF CTL$ OR CIS OR DM$ OR LC$) ;----------------------------------------------------------------------Structure Name: Operation Request Block Reference: Program Logic Description, Section 2.2.1 ;----------------------------------------------------------------------Associated completion codes ( ( .( • ; $OPi rip $OPcrle $OPi rll $OPtrb $OPtto:) $OPtdf $OPtng $OPttf SOPtcl EQU EQU EQU EQU EQU EQU EQU EQU EQU 0FFH 0 1 2 3 4 c' ;;;:J 6 7 The st l"~uct t.n"e itself ; ;Operation in progress ;Completed without error ;Completed, incorrect length ;Terminated, invalid ORB ;Terminated, receive time-out ;Terminated, invalid data format ;Terminated, transmission failure ;Terminated, transporter failure ;Terminated, control length mismatch « • • • • ( t The IBM Personal Computer MACRO Assembler 01-15-84 0000 0001 0002 0004 0006 0008 « t • 1-5 ( • f PAGE FF 00 0000 0000 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ ORB STRUC ;Completion Code $OPinp CC DB ;Operational parameter OP o DB Sze DW o ;Number of bytes of data RB_Data DW o ;Offset of data RB_Datas DW o ;Reserved for segment address ORB ENDS ; ENDIF ; IF (DR$ OR TL$ OR LC$) ;----------------------------------------------------------------------Transporter Usage Parameters ; = 0100 7FFF = = 0010 = 000A = 01FE - 00CF = 0211 $InitTA $MaxDly $MaxRty $MaxWte $ProID $SndNAD $MaxTBD EQU EQU EQU EQU EQU EQU EQU 100H 7FFFH 10H 10 01FEH 0CFH 529 t- c ( ( ( f r • t t ; f ( = 00B0 = 0080 = 0080 = 00B0 = 00A0 $SokTD $SokTM $SokRM $SokRC $SokRL EQU EQU EQU EQU EQU 0B0H 80H 80H 0B0H 0A0H ;To ;To ;To ;To ;To transmit data transmit an NLM receive an NLM receive initial command sequence receive remainder clf l~g command I f ( t t • = = = = « - • • • ( 0000 0001 0002 0003 = 0010 00FF = 0001 00FF = = 000A C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ Associated message type codes (most significant byte) ; $NLHi $NLAny $NLWho $NLWhr $NLldn $NLBye ; ; $NLDsk $NLDny EQU EQU EQU EQU EQU EQU o 1 2 10H 0FFH ;Hello ;Any disk server Cold protocol) ;Who are you? ;Where are you? ;Identification ;Goodbye ( ( ( Associated device types of interest to Emulator EQU EQU 1 0FFH Associated Name Length ; $NameLN EQU 10 ;Disk Server ;AII Devices ;Needed because STRUC is weak • ( ( • ( The IBM Personal Computer MACRO Assembler 01-15-84 f • { 0000 0002 0004 0006 0008 FE01 0000 0000 0100 50 448 41 52 ~ 45 20 20 20 ~7 ~~ 0012 f • f 0000 0002 0004 0000 0000 f ( 0000 0002 0003 0000 00 I • t 0000 0001 0002 0003 0004 00 01 00 00 ( c t • ( 0000 0001 0002 0003 01 00 00 00 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ ; PAGE 1-6 The structure itself (arithmetic reverses byte order for transporter memory storage) ( ; NLM Pid Mgt Src Dev NL_Name STRUC DW DW DW DW DB NLM ENDS $ProID/256 + 256*($ProID AND 0FFH) $NLhi ;Message Type o ;Station Number of sender 256*$NLDsk ;Device Type 'PCSHARE ;Device or user name ;----------------------------------------------------------------------Structure Name: Receive ICS control area ; Reference: Corvus OMNINET Programmer' Guide ;----------------------------------------------------------------------- f { ; RRRCV Lofcm ELofRp RRRCV STRUC DW DW ENDS 0 0 ;length of the command being sent ;Expected reply length (w/o status) f ;----------------------------------------------------------------------Structure Name: Send Reply control area Reference: Corvus OMNINET Programmer' Guide ;----------------------------------------------------------------------RRSND ALofRp Dstat RRSND STRUC DW DB ENDS ( o o ;Actual length of reply (incl status) ;Disk status ;----------------------------------------------------------------------Structure Name: Transporter Status Table Header Reference: Program Logic description, Section 2.3 ;----------------------------------------------------------------------; TSTH Int TT_CI NE TT_NAD TSTH STRUC DB DB DB DB ENDS f 0 $False 0 0 ;Interrupt depth indicator ;Command Interpreter invocation flag ;Number of entries in TST ;Network address of Emulator ;----------------------------------------------------------------------Structure Name: Transporter Status Table Entry ; C·~ Reference: Program Logic Description, Section 2.3 C+ ;----------------------------------------------------------------------C+ ; C+ TSTE STRUC ;ORB pending flag $False C+ PN DB C+ TT_ST DB 0 ;Status code from result record C+ SK DB 0 ;Socket to be used C+ TT_OP DB 0 ;Transporter commmand (NEW USAGE I • r c ( ( c • ( •, , The IBM Personal Computer MACRO Assembler 01-15-84 0004 0006 0008 000A 000C 000E 0010 0012 0014 0000 0000 0000 0000 0000 0000 0000 0000 t t ( f • = = = 00FF - 0000 t f = f 0000 0001 0002 0004 0006 0008 000A 000C 000E 0010 0012 0014 t « • ( « • • • ( = 0080 0040 0020 = 0010 = = 00 00 0000 0000 0000 0000 0000 0000 0000 0000 FFFF C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ PAGE 1-7 ;Transporter address of the CCB 0 CCB DW ; Transporter address clf result record RR 0 DW ; Transporter address of data area Dtl DW 0 Dsz ;Length clf data area in bytes DW 0 Isr DW 0 ;Offset address of int service routine Isrs DW 0 Reserved for segment address ; TT_Orb DW 0 ;Offset address of pending ORB TT_Orbs DW Reserved for segment address 0 TSTE ENDS ; ENDIF ; IF (TLS or LCS> ;----------------------------------------------------------------------Structure Name: Transporter Status Table Local Command entry Reference: Program Logic Description, Section 8.3 ;----------------------------------------------------------------------Associated driver communication flag values ; $LCnop $LCopn $LCabt $LCaok EQU EQU EQU EQU $False $True 0FFH 0 ;No operation indication ;Operation in progress indication ;'Operation aborted' end indication ;'AII ok' end indication c ( ( ( t r t Asociated data values ; $LCmaxL ; TSTLE LE_CC LE - OP LE - Len Trm Trms Rcv Rcvs LE Isr LE - Isrs LE BP - - TSTLE EQU $MaxTBD ;Longest data transfer allowed STRUC DB DB DW DW OW OW DW DW DW DW DW ENDS 0 0 0 0 0 0 0 0 0 0 0FFFFH ;RB.CC or RQ.USE field ;RB.OP field when serving as ORB ;Length in bytes of remaining data ;Offset from which to fetch data ; Segment address of data ;Offset to send reply ; Segment address for reply ;Offset of interrupt service routine ; Resderved for segment address ISR ;Stack segment offset of inout registers ; Reserved ;----------------------------------------------------------------------Structure Name: Command Request Queue Entry Reference: Program Logic Specification, Section 2.5 ;----------------------------------------------------------------------; ; Associated usage values $RQUseE $RQUseR SRQUseL $RQUseI EQU EQU EQU EQU 80H 40H 20H 10H ;Entry in queue ;Request received for command data ;Local command ;Internally generated command ( ( ( ( • c ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-8 c = 0004 t • c ( 0000 0001 0002 0004 00 00 0000 04 C 00 ] 0008 f I I I. = 0000 :;: 0001 ::: 00FF = 0080 I 0000 00QH 0002 0'2104 0006 0008 00 00 0000 0000 0000 • c • • ( ::: 0003 :::: 0000 0000 0001 0002 1.0 00 02 C C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ $RQCsze EQU 4 ;Number of command bytes enqueued The structure itself ; CRQE Use NAD Len Cmrld STRUC DB DB OW DB o o o $RQCsze Dup(0) ;Usage flags ;Network Address of requestor ;Length in bytes of expected reply ;First four command bytes f CRQE ENDS ENDIF ; IF (DR$ OR TL$) ;----------------------------------------------------------------------Structure Name: Command Request Queue Header Reference: Program Logic Description, Section 2.5 ;----------------------------------------------------------------------- t Associated queue status indicator values ; $RQrnt $RQerlt $RQful EQU EQU EQU 0 I 0FFH ;Queue is empty ;Queue has entries but is not full ;Queue is full EQU 80H ;Disk status error flag bit ( STRUC DB DB OW OW OW ENDS $RQmt 0 0 0 0 ;Queue status indicator ;Current disk status code ;Offset address following CRQ ;Offset address of head entry ;Offset address of tail entry 1 ; $RQdse ; CRQH Qst Dsc Er.d Tc.p Bot CRQH ; ENDIF ; IF TL$ ;----------------------------------------------------------------------Structure Name: Name Lookup Message Table Reference: Program Logic Description, Section 2.7 ;----------------------------------------------------------------------- • • Associated command modifiers ; $MTAdd $MTDel EQU EQU 3 0 ;AddActive command ;DeleteActive command STRUC DB DB DB $RQUseI 0 2 DUP(0FFH) ;Specifies internal command ;NAD of sender INEW FIELDI ;Unused part of parameter block ; NLlvtT MT_Use MT_NAD • • The IBM Personal Computer MACRO Assembler 01-15-84 J 0004 0005 0006 34 00 0A [ 20 ] • • 0010 0011 0012 00 00 04 J ,t' " • 0000 0001 0002 0004 0005 0006 0008 01Z10A 000B 000C 00 00 0000 00 00 0000 0000 00 00 '. • • • •• ( [ 20 0016 I 1-9 ( FF '. PAGE 0000 0001 0002 0004 _. 0249 :::: 024B = 0248 =: - 0248 024A FF 00 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ Opc DB MT_Mod DB MT_Name DB 34H MT_Src MT_Dev Rsvd 121 121 DB DB DB 121 10 DUP (' 4 DUP (' ') ') ;Internal is always hex 34 ;Will be set to command modifier ;Device or user name ;Station number of sender ;Device type of sender ;Four byte user area '. • • ( ( NLMT ENDS ; ENDIF ; IF (DR$ OR TL$ OR LC$) ;----------------------------------------------------------------------Transporter structures and associated values Reference: Corvus OMNINET Programmer's Guide ;----------------------------------------------------------------------Transporter Command Control Block I f ; CCBLK STRUC CC Cmrld DB DB RRA DW Sock DB DB CC - Data DW Dati DW Corllrl DB DHost DB CCBLK ENDS 121 0 121 121 121 0 0 0 121 ; Commarld ;fill fc.t" high address byte ;address Result Recc'l'''d ;sc.cket tc. use ; fi 11 for high addt"ess byte ;Data add1'''ess ; Dat,':!\ length ; Cc.rlt 1'''0 1 lerlgth ; Dest i rlat i c.rl host NLM 1-13 c· • ;Blank fields set by TL-INIT-TLD ( • I • ;----------------------------------------------------------------------Temporary storage ; 023E 0i:::3F 0240 0242 TmpICS 0el CRQE {} ;Form is a CRQ entry • 00 0000 04 ( 00 ] « I ICS data ;----------------------------------------------------------------------0246 ; ;*********************************************************************** ; Transporter Logical Device Routines I ;*********************************************************************** ; 0000 PC_CODE SEGMENT PUBLIC 'CODE' ; ;*********************************************************************** ( I ;Module name: Interrupt Service Driver (TL-INT-DRVR) ;Last Update: 15 January 1984 I I ; ; FUYlct iOYI: • t" ; ;Procedure: The Interrupt Service Driver determines the cause of any transporter interrupt and calls the appropriate routine to set~vice it. If the iYlter~rupt is due to s'::lftw':\l"~e, the Local Command Interface interrupt routine LC-RCV-CMND is called. If the interrupt is due to hardware, the hardware interrupt depth counter (field TT.INT of the TST header) is incremented. If the value is then 1, a new interrupt processing sequence is started. If the value is greater than 1, reentrance has occured; immediate exit is then made as the interrupt will be serviced by the interrupt sequence already in progress. ( Program Logic Description, Section 2.4 ; • .' ;Called by: 8088 Interrupt A ;Routines called: Interrupt service routines, TL-BYT-IN, CI-MAIN • ( c ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-14 I , ;Input: None ; ;Output: Register data output to interrupt service routines is « ( (AL) - Completion code from result record (SI) = Offset of the TST entry • The service routines need not preserve any registers except the segment registers and the stack pointer f ;Error procedures: None , , ; ;Written by: R.B. Talmadge, ( ;Updates: ( Computer Technology Ltd 1: Timer tick interrupt feature, 30 November 1983 entry TL_INT_DTME, c added 2: Separate primary test loop for external control of Emulator operation, entry TL_INT_TEST, implemented 7 December 1983 ( f • 3: Change timer tick option to normal non-assembly, done 22 December 1983 • t 4: DOS intercept driver added 28 December 1983 ( 5: DOS intercept driver modified to issue control_break, done 11 January 1984 1 • I t « « ( t • • ( 6: DOS intercept and Control_break mechanism replaced by DOS critical section test using In-DOS flag, done 14 January 1984 ; ( ;*********************************************************************** ; TL - INT DRVR 0000 - 50 0000 0001 0002 0003 0004 51 52 BB 0000 E 0007 0009 000B 000C 000E 0010 0012 B0 E6 90 E4 A8 75 E9 53 0B 20 20 05 03 009F R + + + + + PROC 1- NEAR TENTER PUSH PUSH PUSH PUSH MOV EC ;Set temporary environment AX BX CX DX BX,OFFSET PCS:EC MOV OUT NOP IN TEST JNZ AL,SP82Ris SP82op0,AL J~ AL,SP820p0 AL,SP82EML HwDRVR SwDRVR ;Send 8259A command to read the interrupt service register for source test c { ;Test for hardware interrupt ; ;Go to software if not ;----------------------------------------------------------------------For a hardware interrupt, the transporter and 8259A are reset and a test is made for reentrance. If so, immediate exit is taken. If not, a test is made for interrupt in DOS, when DOS • • f The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-15 entered from outside the Emulator. If that has happened and DOS is in a critical section, a deferred interrupt is set up. « • :I 1 For interrupt outside DOS, the TL-INT-TEST routine is called. That routine will not return until the interrupt sequence has been completed, so TL_INT_DRVR Just exits after the return. ;----------------------------------------------------------------------- 0015 001A 01211C I2I1211F 2E: F6 47 2F 40 74 04 BA 12124D EE 0020 012123 0026 01212A BB 121000 E 2E: FE 07 2E: 80 3F 01 74 09 01212C 002C 01212E B0 20 E6 2121 012130 012131 0032 IZIIZt33 012134 5A 59 5B 58 CF + + + + + :; HwDRVR: TEST JZ MOV OUT ; DRirlc: MOV INC CMP JE :; DRt x it LABEL MOV OUT TEXIT POP POP POP POP IRET CS:[BXJ.EC _ TBI, DRir,c DX,$CIINT DX,AL $TBt~er.b ;If running with transporter interupts pick up latch port and Clear interrupt latch BX,OFFSET PCS:TT CS: [BX]. Ir,t CS: [BX]. Ir,t, 1 DRtsds ;Position to TST header ;lncrement interrupt depth ;If we have not reentered go to process interrupt NEAR AL., $P82ec. i $P82c.p0, AL ; 1 f we have, t~eset ( ( « f 8c~59A arid exit DX CX BX AX l f, Test for interrupt within DOS; if not, call primary interrupt test routine and exit on return :; • \1 • • • ( 012135 012138 01213B 01213C 01213D 003E 012141 0043 2E: FE 0F BB 01211210 E 1E 0E iF C5 5F 34 8B 1217 iF 012144 0046 121048 01214~~ 0B 75 B0 E6 0121'+1: 012140 121 121 4E 01Z14F 0050 tZllZt51 56 57 55 1.E 06 8C C8 121053 0056 0058 BB 0000 E 01 EB 01 EB DRtsds: DEC MOV PUSH PUSH POP LDS MOV POP C0 40 OR JNZ MOV OUT c:0 i:::0 + + 4-I-I- --I- + -I- + ENTER PUSH PUSH PUSH PUSH PUSH MOV MOV SHR SHR CS:CBX].lnt BX,OFFSET PCS:EC OS CS OS BX,DWORD PTR[BX].DOSdkO AX, [BX] OS ;AdJust cc.ur,t for call or exit ; Rec.::over ECT lc.cat ic.n ;Set tCI this segmel'-,t arid fetch locat iorl .:.f lrl-DOS flag :; ;Fetch flag i tsel f AX,AX AL., $P8E:eo i $P820p0,AL :;If in DOS ct~tical sect ic.r., go set deferred :i_ ntet~t~upt ;If riot ct~itical, t~eset 8259A and pt~ocess Dta _8grl :;Set env i INTbt~k t~orlment 51 01 BP DS ES AX,CS BX,OFFSET PCS: Dta_8gr! BX, 1 ex,l .- • ( • • « The IBM Personal Computer MACRO Assembler 01-15-84 c 12I05A 01215C 005E 012160 12106;::: 0064 D1 D1 03 8E 8E 8B 00E,6 006B ell2l6D F6 06 002F E 40 74 05 80 26 00.:::F E DF oIZI 7 i::: E8 00C2 R 12107:"5 80 75 50 £10 56 BE E8 5E 58 EB 007~~ I f • 007C 007D 007F 012180 0083 Q.IIZt86 IZl087 '~088 01Zt88 12li:::46 lZli::: /t6 !Zli::: l l·7 0;:::48 EB EB C3 D8 C0 EC + + + ..1- + -I- SHR SHR ADD MOV MOV MOV BX, 1 BX, 1 AX,BX DS,AX ES,AX BP,SP TEST JZ AND EC.EC _ TBI, $TBt~erlb DRctst EC.EC _TBI,0FFH-$TBrtck ;If TL _. INT - TEST ;Go process i Y'lt el'~t~upt ; 3E~ 000B E 00 0F 00 0246 R 001210 E 01 90 IZl0 j .0;;,. .::. lt5 3A 54 4C 2D 49 IZI;:::5('~ 1Zt12l8B 012188 I 1-16 PAGE DRctst: CALL + + + + + + + + + + + + .+. + + + + -I- 00/3('~~ e1lZl':33 00'34 07 lF 5D 5F 5E 5A 59 58 58 CF t~ U rm i rq;;J with t rarlsp,:.rt el'~ i Y'lts cleat~ t i rnet~ E:TL-INT-DRVR-HDWE TRACE CMP BYTE PTR EC. Tt~ce, STrue JNE 770000 AX PUSH AL,0 MOV PUSH SI SI,OFFSET 7?0001 MOV EM - TRACE CALL POP SI AX POP JMP NEAR PTR 770000 PC CODE ENDS PC - DATA SEGMENT PUBLIC ' DATA' OFFSET ??00IZt2) <, OFFSET 7?0003 77001Z11. L.I~B '. - ?70002 PC - DATA PC - CODE 770000 + INTxit + + + + + + + + + + ( "E:TL-INT-DRVR-HDWE" DB ENDS SEGMENT PUBLIC ' CODE' NEA~( LABEL U:~BEL POP POP POP POP POP POP POP POP POP IRET ,INTxit NEAR ES DS BP ;Exit OY'I l'~et Ul"'Y'1 01 SI DX CX BX AX ( If interrupt within DOS, exit if this has occurred previously before the deferred interrupt has been processed, otherwise force reentry by turning on timer tick entry control ; • • 012195 00'38 01219D BE 001210 E 2E: 80 4F 2F 20 EB 8D • -- EXIT 008B lZIIZl8B IZl08C 01Zl8D 008E 008F 00'30 iZ10'31. t INTbdl.: MOV OR ~TMP BX,OFFSET PCS:EC CS:[BXJ.EC_TBI,STBrtck DRTxit ;Recover ECT offset :j TurY'1 ':Jl r , t i fI1et~ and gc. tc. ex it ;----------------------------------------------------------------------- • « • PAGE The IBM Personal Computer MACRO Assembler 01-15-84 ( 1-17 For a software interrupt, call the Local Command Interface drivel"'" ;----------------------------------------------------------------------- f « ; 009F E8 0000 E SwDRVR: CALL ;Call LC service routine On return, test for operation in progress and call the primary interrupt test at CI_MAIN entry test if so • ( •• 00A2 00A7 00A9 00AA 00AC 00AD 00B0 00£13 00B'+ 00B5 00B8 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 025A R 0000 E 01 90 - 0i:::5e:~ it I TRACE' E:TL-INT-DRVR-STWE CMP BYTE PTR EC.Trce,$True JNE ??0004 PUSH AX MOV AL,0 .... PUSH SI MOV + SI,OFFSET ??0005 .... EM - TRACE CALL POP SI + POP AX + JMP NEAR PTR ??0004 + + PC CODE ENDS + PC DATA SEGMENT PUBLIC ' DATA' "<, OFFSET ??0007 - OFFSET ??0006> + ??012105 LRB + + + + 12I25A 025B 025C 026E 00£18 00B8 00 12 45 3A 54 '+C 2D 49 0088 00B9 0121BB 00BD 00C0 FA 3C 75 E8 EB + + + + + ??0006 PC - DATA PC CODE ??001214 -- DB "E:TL-INT-DRVR-STWE" ENDS SEGMENT PUBLIC ' CODE' LABEL NEAR CLI CMP JNE CALL JMP 00 CE 00F4 R C9 AL, $LCopYI INTxit DRVtci INTxit ;Disable i nter"l""'upts ;If operat iOYI not star"ced gCI tCI exit, clthe . . . wise call p . . . imary r"(.)ut i Yle ; ;GI:) tCI exit t f" ,I ,( .' ( ;---------------------------------------------------------------------Primary interrupt test routine begins here. This routine is ; • « ; ;------------------------~---------------------------- ------------------ ; TL_INT_TEST 00C2 ; •. ' " ( called by TL_INT_DRVR for a transporter hardw~re interrupt, by TL_INT_DTME if timer ticks are being used to drive the Emulator, by the UTIL_INT_TEST device driver routine if the Emulator is being invoked by an external routine, and by the TL-INT-WAIT routine if an ORB wait occurs when the Emulator is being driven externally. LABEL NEAR Interrupt event loop tests result records associated with TST entries for change of status, and calls the interrupt service routine if a change has occurred. ; 00Ci.::: FE 06 0000 E DRVgcl: 00C6 00C7 FB BE 0000 E DRVlpe: STI MOV ; INC 1"T.Int ;Update depth count ; Reenable interrupts SI,OFFSET TTbgn ;Fetch offset iYlt ial eYltry ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-18 I • c • c oIZtC (.:1 00CO 01ZtD0 0003 ; 88 5C 06 E 8 0 IZtIZlIZt E ORVis: 3A 44 IZil 74 IZl8 00D5 01Zt06 01Z1D':3 IZl0DC FF 54 0C 5E 00DD 00E0 IZIIZlE'+ 83 C6 14 81 FE 0000 E 7C E4 MOV CALL CMP J'E BX, [Sn. RR TL_BYT_IN AL, [SUD 1"1'_,51' ORVlt::m 51 MOV [SIJ.TT_ST,AL CALL WORD PTR [SIJ. Isr POP SI 56 PUSH 88 4'+ IZt 1. ;Fetch result record location , and get current status ; If n:, change, go to test for next ( ;Save posit iorl ;Record new status ;Call interrupt service routine ;Recover position ; DRVlpn: ADD CMP ,JL SI, TYPE TSTE ;Increment to next entry SI, OFFSET TTend DRVls ;Do next if not end a complete pass thl'~c'ugh the 1':::II:'p, it is l'~estarted if the interrupt depth does not go to zero. If it does go to zero the Command Interpreter is called unless the interrupt sequence started within it; in that case, the driver Just exits to await return from CIa Aftet~ • IZIIZlE6 00E7 01Z1EB 00ED 01ZtF2 FA FE 75 80 7,(+ oIZt F,(+ 0E IZt000 E CLI DEC D9 ~TNZ 3E 012101 E IZl0 1F CMP JE 0107 80 3E 01Zt0D E IZl0 74 :1,8 80 3E 0004 R 00 7L~ 11 C6 06 0001 E 00 FB DRVtci: CMP JE CMP JE DRVcci: MOV STI 0108 EEl 0000 E 00F':3 00FB 0:1,00 0:t0i2 I TT. Il"lt DRVlpe TT. TT _C I, $1'1"ue DRVxit ;Disable interrupts ;Decrement depth count and ; restart loop if not zero ;Exit if we al'~e in the Command interpreter ; EC. EC_TRM, $Tl'~ue DRVxit RQ.Qst,$RQmt DRVxit TT. rr_CI, $Tt~ue CALL NEAR PTR CI_MAIN ;Exit if Emulator ; operation terminated ;No need to call CI if ; the CRQ is empty ;Turn on CI entry flag and reenable interrupts ;Call the Command Interpreter On return from CI-MAIN it is necessary to test the CRQ for command which may have been inserted between the end of CI-MAIN processing and the return to this location a 0108 010C 0Ul FA C6 06 0001 E 01 EB E1 CLI MOV JMP 1"1'. TT_CI, $False DRVtci ;Disable interrupts ;Clear CI entry flag ;Go test for exit ; DRVxit 01.13 0:l13 C3 LABEL RET NEAR ;Just a simple intra-seg return ;---------------------------------------------------------------------When the transporter is to be run off the timer tick, this • • f entry is invoked by each timer tick. The ticks are counted The primary interupt down until the delay period expires. loop is called when it does, and the delay period restarts ;---------------------------------------------------------------------- ( ( c- ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-19 ( t 0114 ( 0114 0115 0116 PUSH PUSH MOV 50 53 BB 0000 E AX BX BX,OFFSET PCS:EC ;Save working ; registers ;Fetch ECT offset Exit if timer tick not being used or if period not expired ( 0119 011E 0120 0124 2E: F6 47 2F 20 74 06 2E: FE 4F 30 74 05 TEST JZ DEC JZ f f f ;Test tick effective and go out if not ; ; Decrement timer tick ;Go to driver if count down If not time to call the Emulator, restore registers, the saved timer tick routine, then exit on return 0126 0127 0128 012A 5B 58 CD 67 CF TLTxit: POP POP INT IRET BX AX SCallTM call ;Reset to entry ; conditions ;Call other timer rtn and then exit If tick period has expired, reset the tick count, restore registers, and go to the main interrupt driver. Note that in this case the saved timer tick exit routine is not called t ( CS:[BXJ.EC _TBI,STBrtck TLTxit CS:[BXJ.TLtmck TLTgo ( ( ( • ; • 0128 012F 0133 0134 0135 f 0138 SA 47 31 2E: 8S 47 30 5B 58 E9 0000 R 2E: TLTgo: MOV MOV POP POP JMP AL,CS:[BXJ.TLtmrs CS:[BX].TLtmck,AL BX AX TL INT_DRVR ;Reset timer tick ; count value ;Reset to entry condtions ;Go process the interrupt • f ; f ;*********************************************************************** ;Module name: Wait For Operation Complete (TL-INT-WAIT) I ;Version: t 2.0 ; ;Last Update: 29 December 1983 t ; ;Function: f Wait For Operation Complete is called by any routine which cannot proceed until an operation started from an ORB has been completed. If the Emulator is being driven by either its own or timer interrupts, the routine assure interrupts are enabled and waits for the interupt routine to set the ORB completion flag. If interrupts are not being used, TL-INT-WAIT calls TL-INT-TEST to drive the interrupt test loop externally. ;Procedure: New routine; see comments in code I ;Cal1ed by: TL-RTN-RSLT, TL-FETCH-LC • IRoutines called: TL-INT-TEST ( ( • • • • PAGE The IBM Personal Computer MACRO Assembler 01-15-84 1-2~0 I f ;Input: « ; = DS: (SI) Location of ORB ;Output: ORB completion code field modified ;Error procedures: c None ; ;Written by: R.B. Talmadge, Computer Technology Ltd ; ; Updat es: Norll: ; ;*********************************************************************** c ; TL_INT_WAIT 0138 PROC NEAR If the transporter is being run by either interrupt type interrupt enable is assured and the wait is simply for a change of ORB completion status • 0138 12113D ~~ll3F 0140 0:1.4i::: 0143 121146 121:1.49 01.L~A 0148 014E 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 IZ1F 0121 0i~6E R o121 121 IZt E 01 9121 1 f • 1210 IZ1D 53 3A 54 4C i::!D '+9 0i:~~7D 1Zl14E 121155 121156 121159 • • - 014E 0:1.4E 0:1.~33 . - 0i:~6E 1Zl26E 0i::!6F 0270 S:TL.-INT-WAIT TRACE CMP BYTE PTR EC. Tt~ce, $Tt~ue ..r??0008 .TNE + AX PUSH + MOV AL,0 + PUSH SI + SI,OFFSET ??01Zl09 MOV + EM - TRACE CALL. + SI POP + AX POP + JMP NEAR PTR ??01Zl1Zl8 + PC CODE ENDS + PC - DATA SEGMENT PUBL.IC ' DATA' + ??121009 LRB <, OFFSET ??1Zl00B - OFFSET ??1Zl0IZlA} + "S:TL-INT-WAIT" + ??1Z100A DB + PC - DATA ENDS + PC CODE SEGMENT PUBLIC ' CODE' + ??01Zl08 LABEL NEAR + TEST JZ F6 06 121 1212 F E 60 74 1D STr WAITcc: CMP JE FB 8121 3C FF 74 FB EC. EC_TBI, $TBrenb+$TBrtck WAITrli [SI J. CC, $OPi rip WAITcc ;If ric, i nte1"~l"~upts go to dri vet~ ; Assul"~e i rlt et~t~t~ u pt s enabled ;Wait arour.d l..mt i I the Opet~at iorl c.:.de charlges c ; WA I T> + ??0021 + + + + + + + + + + ??0022 DB + PC_DATA ENDS + ( •• "X" PC_CODE SEGMENT PUBLIC 'CODE' LABEL NEAR + ?10020 ( RET C3 ; NQok: 025E 57 026F 9C FA 80 3E 0004 R 00 75 13 0~~70 0271 0276 + + PUSH STATUS PUSHF CLI CMP JNE DI ;Save working register ;Disable interrupts RQ. Qst, $RQmt NQst ;Normal processing if the queue is not empty If the queue is empty, set to use first entry and go to fetch the data I 0278 027B 027F 0283 0288 BF 89 89 C6 EB MOV MOV MOV MOV JMP 000C R 3E 0008 R 3E 000A R 06 0004 R 01 20 90 DI, OFFSET RQbgr. RQ.Top,DI ;Set header pointers RQ.Bot,Dl RQ.Qst,$RQent ;Set status indicator NQmclv Reenter here if queue neither empty or full •• « ; 028B 0E;8F 0i:::92 0f.:96 oi::: 98 8B 83 3B 7C BF 3E 000A R C7 08 3E 0006 R 03 000C R NQst: 029B 89 3B 75 C6 3E 000A R 3E 0008 R 05 06 0004 R FF NQst 1: MOV ;Fetch offset tail entry DI, RQ. Belt ;Position to next DI,TYPE CRQE ;Reset position if DI,RQ.End we Wl'~ap arouY'.d NQst:l. DI,OFFSET RQbgn MOV CMP JNE MOV RQ.Bot,DI DI,RQ.Top NQrtlelv RQ.Qst,$RQful MOV ADD CMP ,JL ; 0i::~9F 0i:::A5 ;Reset bottortl pointer ;Set indicator if queue nelw fu 11 ; '. • • •• Reenter here to fetch data and set up new entry 02AA IZl2AA 0i:::AB 02AC tZ'2AD 9D 56 57 51 + RESTORE POPF SI PUSH PUSH Dr PUSH CX ;Restore interrupt status ;Save original locations • ( c « • ;Set up ( The IBM Personal Computer MACRO Assembler 01-15-84 0i2B5 0i2B5 0i.:::B9 B9 0008 F3/ A4 59 5F 5E 81Z! 0D 80 A0 0004 R 02BC 5F 0i2BD 0i.:::C2 02C4 0i:::C5 02C7 02C8 02CB 0i2CE 02CF 0200 80 75 50 B0 55 BE E8 5E 58 EB 0i~AE c ( 02B1 0i2K3 02BL~ PAGE 1-27 ; fetch count CX,TYPE CRQE MOV ;Move the data REP MOVSS POP CX POP DI ;Restore registers POP SI EDIJ. Use, $RQUseE ;Indicate entry queued OR AL,RQ.Qst MOV ;Set t~eturn data ( t. ; I\IQxit: t f 3E 000B E 01Z! 0F 00 02C3 R 0000 E 01 90 0203 f I 02C3 02C3 0i.=:!C'+ IZl2C5 0i::::00 02D3 00 0B 45 3A 54 4C ;:::D 4E DI ;Restore working register E:TL-NQ-CRQ TRACE CMP BYTE PTR EC.Trce,$True + JNE 770024 + PUSH AX MOV + AL,0 + PUSH SI + MOV SI,OFFSET ??0025 + CALL EM - TRACE + POP SI + POP AX + JMP NEAR PTR 7?0024 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 7?0025 LRB <,OFFSET ??0027 - OFFSET ?70025) + + + ??0025 I I •• "E:TL-NQ-CRQ" DB + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + ??0024 LABEL NEAR 0i.::~D3 0i.=:!03 POP C3 RET ;Return to caller f 0;::~04 i ; ;*********************************************************************** ;Module name: Set Disk Status (TL-SET-ERR) I ( I • ;Versiorl: 2.0 :; ;Last Update: 14 November 1983 ; ;Function: '. ; Procedure: Program Logic Description, Section 2.5 I See function description • • ; ;Called by: ; • • ;Routines called: None ; ;Input: :; ; Out put: f The Set Disk Status routine (TL-SET-ERR) is called by any routine which wants to set the current disk status. Field RQ.DSC of the CRQ header is set to the value of the byte supplied as input. (AL) = Byte to be inserted Norle • ( • ;Error procedures: c ;Written by: R.B. • , • , ; lJpdat es: f • t t 1-28 f • ( PAGE The IBM Personal Computer MACRO Assembler 01-15-84 None Talmadge, Computer Technology Ltd N.:.ne ;*********************************************************************** ; TL_SET_ERR 0i.:::D4 02D4 02D9 02DB oi::: DC 02DE 1Z12DF 02Ec~ 02E5 02E6 02E7 02EA 02D0 02D0 0201 02D2 02E0 02EA 02E(-=! 80 3E 000B E 00 75 0F 50 B0 00 56 BE 02D0 R E8 0000 E 5E 58 EB 01 90 00 0E 53 i:::B 45 3A 54 4C PROC NEAR TRACE S+E:TL-SET-ERR CMP BYTE PTR EC.Trce,$True .... JNE ??0028 + PUSH AX + MOV AL,0 + PUSH SI + MOV SI,OFFSET ??0029 .... CALL EM_TRACE + POP SI .... POP AX + JMP NEAR PTR 770028 .... PC CODE ENDS + PC DATA SEGMENT PUBLIC 'DATA' + 77002':3 LRB OFFSET ?7002A} <,OFFSET ??002B + .... 77002A DB "S+E:TL-SET-ERR" + PC - DATA ENDS + PC - CODE SEGMENT PUBLIC 'CODE' + 7?0028 LABEL NEAR + .( - I. ; 02EA 02ED A'-' c. 0005 R C3 MOV RET RQ. Dsc, AL ; Set rlew va I ue ;Return to caller 02EE ; I ;****************************************************************~.****** ;Module name: Identify Requestor (TL-GET-NAD) i.:::. 0 ; Vet~sb::on: I « ; ;Last Update: 14 November 1983 ; ; FI.IYlct iO:'YI: « The Identify Requestor routine is called by any Emulator routine which wants to know the NAD of the requestor of the current command. The value is extracted from field RQ.NAD of the CRQ entry for the current command ; ; Procedure: Program Logic Description, Section 2.6.3 ; ;Called by: See function description ; ;Routines called: ; ; IYlput: NOYle None • • f PAGE The IBM Personal Computer MACRO Assembler 01-15-84 ; (AL) ;Output: • 1-29 = NAD. The value $FF (any or all machines) is returned if there is no current entry in the CRQ ; ;Error procedures: ; • • f ( I' I I I f I I • f • • • • C None ;Written by: R.B. Talmadge, Computer Technology Ltd ; ; Updates: N':'Y"le ; ;*********************************************************************** ; TL_GET_NAD 02EE 02EE 02F3 02F5 tZli.:::F6 02F8 02F9 02FC 02FF 031Z10 0301 0304 02E0 02E0 0;~El 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 IZiF 00 02E0 R 0000 E 01 90 00 0C 53 0304 0306 030B B0 FF 80 3E 0004 R 00 75 17 030D 0312 0314 0315 0317 0318 031B 0:31E 031F 0320 0323 0;:::EE 02EE 80 3E 000B E 01Z1 75 0F 50 B0 00 IZl2F0 02FC S:TL-GET-NAD TRACE CMP BYTE PTR EC.Trce,$True + JNE ??002C + PUSH AX + MOV AL,0 + PUSH SI + MOV SI,OFFSET ??002D + CALL EM_TRACE + POP SI + .... POP AX .... JMP NEAR PTR ??002C + PC_CODE ENDS .... PC_DATA SEGMENT PUBLIC 'DATA' <,OFFSET ??002F - OFFSET ??002E) + ??01Z12D LRB ~3A • • I + ??002E 56 BE 02EE R E8 001Z10 E 5E 58 EB QH 90 DB liS: TL -'GET -NAD " + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + ??002C 00 0C 58 NEAR + 54 4C 2D '+7 02E2 oi.::: EE 0304 0304 0i~EF PROC LABEL NEAR MOV CMP JNE AL.} $AIINAD RQ. I~st, $RQmt NADg.:. ;Assume CRQ is empty ;Go test top entry if it is riot X:TL-GET-NAD TRACE CMP BYTE PTR EC.Trce,$True JNE ??0030 + PUSH AX MOV AL,0 + .... PUSH SI MOV SI,OFFSET ??0031 + CALL EM_TRACE + + POP SI POP AX + JMP NEAR PTR 7?0030 + + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + ??0031 LRB <,OFFSET 1?0033 - OFFSET ??0032) ( + + c + 3(:) 54 4·C 2D 47 + ?1012132 DB + PC_DATA ENDS "X:TL-GET-NAD" • • • The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 032:3 + PC_CODE SEGMENT PUBLIC 'CODE' 0323 + 110030 0323 LABEL 1-31Z1 ( NEAR RET C3 ; 0324 0325 e132~9 032C 032E 5-.::, 8B F6 74 8A NADgo: 1E 0008 R 07 80 03 47 01 PUSH MOV TEST JZ MOV BX ;Save working t"eg i st et~ BX,RQ.Top ;Fetch offset telp eY'ltt~y [BXJ.Use,$RQUseE NADxt ;Exit if not queued AL, (BXJ.NAD ;Fetch NAD if queued POP BX ; 0331 5B NADxt: f 0332 0337 0339 1 f • :( 033A 033C 033D 121340 0343 0344 0345 0348 0i:::FC 02FC 0i:::FD 02FE 030A 121348 0348 0348 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 0121 0F 00 02FC R 0000 E 01 90 00 0C 45 3A 54 4C 2D 47 + LABEL ;Return to caller ; 0349 TL_GET NAD ( f 'I f NEAR RET C3 « '. "E: TL -1::1E1" -NAD II + PC_CODE SEGMENT PUBLIC 'CODE' + 110034 ( ;Restore working register TRACE E:TL-GET-NAD CMP BYTE PTR EC. Trce, $True + JNE 110034 + PUSH AX + + Iv\OV AL,0 PUSH SI + MOV SI,OFFSET 110035 + EM_TRACE + CALL POP SI + AX POP + JMP NEAR PTR 110034 + + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 110035 LRB <,OFFSET 110037 - OFFSET 110036) + 110036 DB + PC_DATA ENDS , I ENDP ; ;***************************************************** ****************** ;Module name: Receive Initial Command Sequence (TL-RCV-ICS) I ; Vers i OY'I : 2. 0 ; { ;Last Update: 14 January 1984 ; ;Function: • The Receive Initial Command Sequence routine is the interrupt service routine called whenever there is an interrupt for socket B0 receive (TST entry RcvICS). If the interrupt is completion of a setup receive, no action is required. If a message has been received, TL-NQ-CRQ is called to enter the command in the CRQ. If the return indicates the CRQ is not full, TL-SET-RECV is called to restart command reception. ; ;Procedure: Program Logic Description, Section 2.6 f t. • • • = ; ;Output: ;Error procedures: ; ;Written by: R.B. ; ; Updat es: NC'Y'le ; I •• - 3E 000B E 00 0349 034E 0350 0:351 121353 121354 0357 12135A 035B 035C 035F 03121A 030A 121::: 121 B 121 3 I2IC 0318 035F 12I:35F 80 75 50 B0 56 BE E8 5E 58 EB • 035F 121361 0363 0365 3C 74 3C 75 0121 2B FE 17 • 0367 0:36C 036E 036F 121371 121372 0375 121:378 80 75 50 BI2I 56 BE E8 5E 3E 1211210B E 121121 0F • An error message is logged if the completion code from the transporter shows setup not sucessful Talmadge, Computer Technology Ltd • ( f ;*********************************************************************** ; TL RCV - lCS 0349 ( c' ;Called by: TL-INT-DRVR ; ;Routines called: TL-NQ-CRQ, TL-SET-RECV, DM-ERR-LOG, TL-BYT-IN, TL-WRD-IN, TL-DTA-IN ; (SI) Offset TST entry ; Input: (AL) - Result code from transporter • • 1-:,H PAGE The IBM Personal Computer MACRO Assembler 01-15-84 0F 00 030A R 12112100 E 01 90 00 IZIC 53 3A 5L~ 4C 2D ;:,),::, 00 0318 R 012100 E ~.-. + + + + + + + + + + + + + + + + + + NEAR S:TL-RCV-ICS TRACE CMP BYTE PTR EC. Trce, $True ??0038 JNE AX PUSH AL,12I MOV SI PUSH SI,OFFSET ??12I039 MOV EM - TRACE CALL SI POP AX POP JMP NEAR PTR ??012138 PC CODE ENDS PC - DATA SEGMENT PUBLIC ' DATA' OFFSET ??003A) <, OFFSET ??I2I1213B ??12I1213';3 LRB I ( - - ??12I03A PC - DATA PC CODE ??12I12138 - "S:TL-RCV-ICS" DB ENDS SEGMENT PUBLIC ' CODE' LABEL NEAR CMP JE CMP JNE + + + + + + + + PROC AL, $Tt~OK RCVl'I1sg AL, $Tt~SS RCVert~ ( « ;Go to process if a message has at~t"i ved ; ;Just exit if this i ,-.::> a setup complet loY', X:TL-RCV-ICS TRACE CMP BYTE PTR EC. Trce, $T\'~ue ??12I03C JNE AX PUSH AL,0 MOV SI PUSH SI,OFFSET 7?003D MOV EM - TRACE CALL POP 81 ( • • • f ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1 -32 0 I 0379 037A 037D 0318 0318 031':3 0:31 A 0326 037D 037D 037D 58 EB 01 90 00 0C 58 3A 54 4C i.:::n 52 + + + + + + + + + + POP AX JMP NEAR PTR ??003C PC - CODE ENDS PC DATA SE!3MENT PUBLIC ' DATA' 7?003D L.RB <, OFFSET ??1Z103F - ??tZl03E PC - DATA PC - CODE ??003C C3 - ( OFFSET ??003E) DB "X:TL-RCV-ICS" ENDS SEGMENT PUBLIC ' CODE' NEAR LABEL c RET ; If the previous setup failed, decrement the retry count and retry the setup. If the count goes to zero, log an error message and exit; command reception will then cease. ; 037E 0381 0:383 • I FE 4C 10 74 03 EB 47 90 RCVet~r : DEC JZ JMP f BYTE PTR [Sl]. TT - Ot"'b RCVstp ; I SSI.le message if failtn"'e RCVxit else gc. t c. rett"'y ; 0386 0386 0387 0389 038C 038D 50 B0 0A E8 001210 E 58 C.,. ..J + + + + RCVstp: LOG PUSH MOV CALL POP RET $MND02 AX AL, $MND0;::: DM - ERR LOG AX ; Lc.g the message - ; Ret Uf'rl to the Dt"'iver o , Reenter here if a message has been received to fetch data from transporter memory and store in CRQ •• • 038E 0391 0394 0397 8B 8D E8 A2 7C 06 5D 01 0000 E 023F R RCVmsg: MOV LEA CALL MOV DI,[SIJ.RR [DIJ.Shost TL_BYT_IN TfllpICS. NAD, AL ;Fetch location result record ;Position to Host data ;Fetch the NAO ; and store in temp area 0:39A 039D 03A0 03A3 03A6 03A8 03AB 83 8D E8 30 7E B8 A3 C7 0'+ 5D 02 121000 E 0211 03 0211 0240 R ADD LEA CALL CMP JLE MOV RCVmsh: MOV DI,TVPE RRKD BX, [OIJ.ELofRP TL_WRO_IN AX,$MaxTBD RCVrnsh AX,$MaxTBO TwpICS. Lerl, AX ;Position to control area ;Fetch the length ; of the expected reply ;Assure value not ncd; larget"' tharl ; we can transmit ;Store in temp area 03AE 03B1 03B4 03B7 03BA BF 80 B9 8B E8 023E R 70 04 0004 5C 08 0000 E MOV LEA MOV MOV CALL CX,$RQCsze BX, [SIJ.Ot1 TL_OTA_IN 03BO 03BF 03C2 8B FE BE 12123E R E8 023R R MOV MOV CALL OI,SI SI,OFFSET TmpICS TL._NQ_CRQ ax, t c ; •• OI,OFFSET TrnpICS D I, [D I J • Cnmd ;Fetch twp stg offset ;Point to command field ;Set count ;Transporter address data ;Fetch the command data ;Save offset to TST entry ;Replace by tmp stg offset ;Request enqueue of command Restart reception of commands if CRQ is not full • • • t- c The IBM Personal Computer MACRO Assembler 01-15-84 AL,$RQful CMP JNE RET IZI,'3C5 03C7 03C'3 3C FF 75 01 C3 03CA 03CC 03CE BB F7 B0 01 EB 0000 E 03Dl 03D6 03D8 03D'3 03DB 03DC 03DF 03E2 B0 3E 000B E 00 PAGE RCVt~st ;Just exit if the queue is full ; • • ( :( •• 03E3 03E4 03E7 0326 0326 0327 0328 75 50 B0 56 BE E8 5E 58 EB 03E7 03E7 03E7 0F 00 0326 R 0000 E 01 90 00 0A 54 4C 033c: : MOV RCVxit: MOV CALL i.~D e=.;:. '-11_- SI,DI AL,$False TL - SET - RECV RCVt~st 43 56 ;If not, restore TST offset, ; set for no ORB, ;Request restart of reception • TL -- RCV- I CS TRACE CMP BYTE PTR EC.Trce,$True JNE 770040 + PUSH RX + MOV AL,0 + PUSH SI + MOV SI,OFFSET 770041 + CALL EM_TRACE + POP SI + POP AX + JMP NEAR PTR 770040 + PC_CODE ENDS + PC_DRTA SEGMENT PUBLIC 'DATA' + ??0041 LRB <,OFFSET 710043 - OFFSET 7?0042) + + I + "TL-RCV-ICS" + ??0042 DB + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + ??0040 LABEL 'j' .\ NEAR ;Return to caller RET C3 -.11 ; 03E8 TL_RCV_ICS ENDP ; ;*********************************************************************** ;Module name: ; Vet~s i orl : Send Network Address (TL-SEND-NAD) 2. 0 ( ; • ;Last Update: 14 November 1983 ;Function: The Send Network Address routine is called by the Name Lookup interrupt service driver when a request is received for the NRD of a disk server. TL-SEND-NAD sends back an 'invalid commmand' indication, as specified by the disk server protocol. No action is taken to assure that the reply is received • • •• • • • I ; ; Procedure: Program Logic Description, Section 2.6.4 ; ;Called By: TL-RCV-NLM ; .,;Routines ; Irlput : ; called: NI:;' rle TL-SET-SEND, TL-WRD-OUT, TL-BYT-QUT ( « • • ( • The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-34 I ; ;Error procedures: • None ;Written by: R.B. Talmadge, Computer Technology Ltd ; ; Updates: Nc.rle c ; ;*********************************************************************** ; TL_SEND_NAD 03E8 .( ·f 1Z13E8 03ED 1Z13EF 0:3F0 03Fi.::: 03F3 03F6 03F';3 1Z13FA 03FB 1Z13FE 0332 0332 0333 0334 0341 1Z13FE 03FE 80 75 50 BIll 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0332 R 0,z'1Zl0 E 01 90 00 0D 53 3A 54 4C 2D I:"~ '-.1.:5 + + + + + + + + + + + + + + + PROC NEAR TRACE S: TL···SEND-·NAD CMP BYTE PTR EC.Trce,$True JNE 770044 PUSH AX MOV AL,0 PUSH SI MOV SI,OFFSET 770045 CALL EM_TRACE POP SI POP AX JMP NEAR PTR ?70044 PC CODE ENDS PC DATA SEGMENT PUBLIC 'DATA' <,OFFSET 770047 - OFFSET 7?0046) '17121045 LRB ( f - 770046 DB "S:TL-SEND-NAD" ( + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 770044 LABEL NEAR Note: The data to be transmitted, which is constant, was inserted into transporter memory by the initialization routine TL-INIT-TLD (Section 2.8) I ( ( , •• • .' C 03FE 041212 0'+06 121409 8A 8B 8D E8 040C 040F 0412 B8 0001 BE 0000 E E8 0000 E 0415 041A 041C 041D 1Z141F 0420 0423 80 75 50 BIZI 56 BE E8 0E 0i.:::13 R IE 001214 E 5F 0B 0000 E 3E 01Z10B E 1210 0F 0121 0341 R 0000 E + + + + + + + MOV MOV LEA CALL CL,MT.NAD BX, Tl'''mNAD. CCB BX, [BX]. Dhc.st TL_BYT_OUT ;Fetch requestor network address ;Compute transporter location ; to place the address ;Put irlto CeB MOV MOV CALL AX,$False ;Indicate there is no ORB SI,OFFSET TrmNAD ;Fetch TST entry offset TL_SET_SEND and go do transmission TRACE E:TL-SEND-NAD eMP BYTE PTR EC.Trce,$True JNE ?70048 PUSH AX MOV AL,0 PUSH SI MOV SI,OFFSET 770049 CALL EM_TRACE ( • • t « Ci c t The IBM Personal Computer MACRO Assembler 01-15-84 0426 0427 0428 042B 0341 0341 0342 0343 5E 58 EB 01 90 00 00 45 3A 54 4C 20 53 0350 042B 042B 042B SI POP POP AX JMI=' NEAR PTR ??00L~8 ENOS + PC DATA SEGMENT PUBLIC ' DATA' + 770049 LRB <, OFFSET 7700'+B + + + + PC - CODE - • t • OFFSET ?700 LI·A) - .... 770048 C3 LABEL « r NEAR ; GCI back t,:, dri vet~ RET The following routine is the TL-INT-NAD interrupt service routine, which is an integral part of the TL-SEND-NAD routine. It is called by the interrupt service driver to handle the interrupts generated by the TL-SEND-NAD transmissions. ; 042C 042C 0431 0433 0434 0436 0437 043A 0'+3D 043E 043F 0442 0350 0350 0351 0352 0360 0442 044i.::: 0442 •• - + + 77004A DB "E:TL-SEND-NAD" + PC - DATA ENDS + PC CODE SEGMENT PUBLIC ' CODE' ( 1 1-,35 PAGE TL INT_NAD 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0350 R 0000 E 01 90 00 0E r:::'~ ;;;J";:' LABEL f NEAR TRACE S+E: TL·- I NT --NAD CMP BYTE PTR EC.Trce,STrue + JNE ??004C + PUSH AX MOV AL,0 + PUSH SI + + MOV SI,OFFSET ??004D CALL EM_TRACE + + POP SI + POP AX + JMP NEAR PTR ??004C + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 77004D LRB <,OFFSET ??004F - OFFSET ??004E) + I ( + 2B 45 3A 54 4C + 77004E DB "S+E:TL-INT-NAD" f + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + ??004C C3 LABEL NEAR RET I ;Do nothing (Well, that was easy) IZl443 ; ;*********************************************************************** ;Module name: Name Lookup Message Processing Routines I I ;Vet~sion: • •• 2.0 ; • • C' ;Last Update: 14 November 1983 ; FI..\rlct iorl: The Name Lookup Message Processing routines are called by the Name Lookup Receive driver to carry out the response required for the message. There are five routines: • c • • The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-36 TL-RCV-HI responds to a Hello message by generating an AddActive command TL-RCV-BYE responds to a Goodby message by generating a DeleteActive command TL-RCV-WHO responds to a Who are you? message by sending an Identification message in response TL-RCV-WHERE responds to a Where are you? message by an Identification message in response if the specified name corresponds to the Emulator TL-RCV-IDEN responds to an Identification message by generating an AddActive command ; ( ; ( ; Procedure: • ( See Program Logic Description, Sections 2.7.1 - 2.7.5 ( TL-RCV-NLM c ; ;Called by: ; ;Routines called: TL-NQ-CRQ, TL-SEND-NLM ; ; Input: (SI) = Offset of TST entry for socket 80 receive (RcvNLM) ; ; Output: (MT. MOD) = Operation start indicator ; ;Error procedures: • None ; ;Written by: R.B. ; Updates: ( Talmadge, Computer Technology Ltd , NOY-Ie ; ;*********************************************************************** 0443 ; 0443 TL_RCV_HI LABEL NEAR ( 0443 ( « •• • 0443 0448 044A 044B 044D 044E 0451 0454 121455 0456 0459 0360 0360 0361 0~362 0373 0459 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0360 R 0000 E 01 90 00 11 53 2B 45 3A 54 4C TRACE S+E:TL-RCV-HI/DEN CMP BYTE PTR EC. Tree, $True + + JNE 110050 PUSH AX + MOV AL,0 + + PUSH SI + MOV SI,OFFSET ?10051 + CALL EM_TRACE + POP SI + POP AX + JMP NEAR PTR ?10050 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + ?10051 LRB <,OFFSET ??0053 - OFFSET ?10052) + + 1?0052 DB "S+E:TL-RCV-HI/DEN" + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' ( • • ( { PAGE The IBM Personal Computer MACRO Assembler 01-15-84 ( 045/;3 f 045E 0461 0464 0.1+53 • ( t + ??012150 C6 06 0217 R 03 BE 0212 R E8 023A R C3 HIrlq: 0465 046A 046C 046D 046F 0470 0473 0476 0477 0478 047B 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0373 R 0000 E 01 90 0373 0373 0374 0375 00 0E C<'~ ;;;1.;5 2B 45 3A 54 4C 0383 047B 0.1+7B 0.1+7B 0480 LABEL NEAR MOV MOV CALL RET MT.MT_Mod,SMTadd ;Insert AddActive Command SI,OFFSET MT ;Point to ORB in NLMT TL_NQ_CRQ ;Insert command into CRQ ;Return to driver TL RCV_BYE 0465 1-37 LABEL ( NEAR S+E:TL-RCV-BYE TRACE CMP BYTE PTR EC. Tl"~ce, STl"~ue + + 770054 JNE + AX PUSH + AL,0 MOV + 51 PUSH + SI,OFFSET ??0055 MOV + EM - TRACE CALL 51 POP + + AX POP + JMP NEAR PTR 770054 + PC - CODE ENDS + PC DATA SEGMENT PUBLIC ' DATA' + ??0055 LRB <, OFFSET ??0057 - OFFSET '??0056) + + ?70056 DB "S+E:TL-RCV-BYE" + PC .- DATA ENDS + PC CODE SEGMENT PUBLIC ' CODE' + 770054 NEAR LABEL MOV JMP C6 06 0217 R 00 EB DC MT.MT_Mod,SMTDel ;Insert DeleteActive command HInq ;go put into CRQ ; TL ReV_WHO 0482 • f 0482 0487 0489 048A 048C (l148D 0490 0493 0494 0495 0498 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0383 R 0000 E 01 90 0383 • • 0383 0384 0385 039~3 0498 0498 0498 ( 00 0E 53 2B 45 3A 54 4C 80 3E 0223 R 01 LABEL t NEAR S+E:TL-RCV-WHO TRACE + CMP BYTE PTR EC.Trce,STrue + JNE 770058 + PUSH AX + MOV AL,0 + PUSH SI + MOV SI,OFFSET ?70059 + CALL EM_TRACE + POP SI + POP AX + JMP NEAR PTR ??0058 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 770059 LRB <,OFFSET 11005B - OFFSET ??005A} c • ( • • + + + + + ?7005A PC - DATA PC - CODE ?70058 DB "S+E:TL-RCV-WHO" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR CMP MT.MT_Dev,SNLDsk ;If disk server wanted • • • « •• The IBM Personal Computer MACRO Assembler 1211-15-84 049D 049F 0'+A4 04A6 74 1218 80 3E 0223 R FF 74 01 C3 04A7 04AB 04AE 04B1 8A 0E 0213 R BE 022C R E8 000121 E C3 JE CMP JE RET WHOs1'"ld MT. MT._Dev, $NLD1'"IY WHOs1'"ld ; se1'"ld back I D ;Do same if anybody ; will do ;Othel'~wise exit CL,MT.MT_NAD SI,OFFSET IDmsg TL_SEND_NLM ;Fetch NAD ;Point to Iden message ;Send the l'~eply ;Go back to driver ; WHOs1'"ld: MOV MOV CALL. RET ; 04B2 TL RCV_WHERE 8121 75 5121 BIZI 56 BE E8 5E 58 EB 3E 001Z1B E 00 0F 00 0393 R 121121121121 E 01 90 0393 ·f 1--38 c 1Z14B2 04B7 04B9 04BA 04BC 04BD 1Z14C0 04C3 04C4 04C5 04C8 :1 PAGE 0393 121394 121395 1Z13A5 1Z14C8 04C8 121121 1121 53 2B 45 3A 54 4C 04C8 1Z14CB 0'+CE 1Z14D1 04D2 0'+D4 04D6 BS! 1Z101Z1A BF 12112122 E BE 0218 R FC F3/ A6 74 AC C3 + + + + + + + + + + + + + + + + + + LABEL NEAR TRACE S+E:TL-RCV-WHERE CMP BYTE PTR EC.Trce,$True JNE ??005C PUSH AX MOV AL,IZI PUSH SI MOV SI,OFFSET ??1ZI1Z15D CALL EM_TRACE POP SI POP AX JMP NEAR PTR ??1ZI1Z15C PC - CODE ENDS PC - DATA SEGMENT PUBLIC 'DATA' ??1ZI1Z15D LRB <,OFFSET ??005F - OFFSET ??1ZI05E) ??1ZI1Z15E PC_DATA PC_CODE ??1ZI1Z15C f ( ( DB "S+E:TL-RCV-WHERE" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR MOV MOV MOV CLD REPE JE RET CX,$NameLN ;Set count to length of name DI,OFFSET EC.Serv ;Offset to Emulator name SI,OFFSET MT.MT_Name ;Offset to name sought CMPSB TL RCV_WHO I ;If the names are the same, go test for Iden msg ;If not, return to driver ( ; 1Z14D7 t TL_NLM_SRVC ENDP ; ;*********************************************************************** ;Module name: ; Versio1'"1 = « • • Receive Name Lookup Message (TL-RCV-NLM) I I C::.IZI ; ;Last Update: 14 November 1983 ; ; FUl'"lct i 01'"1: ; The Receive Name Lookup Message routine is the interrupt service routine called whenever there is an interrupt for socket 80 receive (TST entry RcvNLM). If the interrupt is completion of a setup receive, no action action is taken. If a message has been received, TL-RCV-NLM determines the ( « ( • The IBM Personal Computer MACRO Assembler 01-15-84 PAGE 1-39 message type and invokes an appropriate messare processing l"~I:.ut i nes. ; ;Procedure: Program Logic Description, Section 2.7 ; ;Called by: ( TL-INT-DRVR ; ;Routines called: ( TL-SET-RECV, DM-ERR-LOG, TL-BYT-IN, TL-WRD-IN, TL-DTA-IN, LC-INT-SRVR, Message Processing routines c ; (SI) = Offset TST entry (AL) = Result code frOM transporter ; Irlput: • ; ;Out put: I f Norle ;Error procedures: An error message is logged if the completion code from the transporter shows setup not sucessful f ; •• ;Written by: R.B. I ; Updates: Talmadge, Computer Technology Ltd ; Nc.rle ; ;.~********************************************************************** I '. 'I '. ;t t .' :1 • • • f ; 04D7 04D7 04DC 04DE 04DF 04El 04E2 04E5 04E8 04E9 1Z14EA 04ED 03A5 03A5 03A6 03A7 03B3 04ED 04ED 04ED 04F0 04F2 TL_RCV_NLM 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 03A5 R 0000 E 01 90 00 0C 53 3A 54 4C i.~D 52 PROC NEAR TRACE S:TL-RCV-NLM CMP BYTE PTR EC.Trce,$True + JNE ?10060 + PUSH AX + MOV AL,0 + PUSH SI + + MOV SI,OFFSET 1?0061 CALL EM._ TI~ACE + POP SI + POP AX + JMP NEAR PTR 1?0060 + + PC - CODE ENDS + PC - DATA SEGMENT PUBLIC 'DATA' LRB <,OFFSET ?10063 - OFFSET ??0062) + ? ?12I061 + + + + + ??0062 PC_DATA PC_CODE 1?0060 80 3C 00 75 0 7 E9 121000 E DB "S:TL-RCV-NLM" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR CMP JNE JMP ,oJ 3C 74 3C 75 00 2C FE 17 NLMrnsg: CMP JE CMP JNE (SIJ. PN, $Tl'~ue NLMmsg LC_INT_SRVR ;If message being solicited transfer to Local Command interrupt service rtn AL, $Tl'~OK NLMmgl AL, $T'r~SS ;Go to process if ; a message has arrived ;Just exit if this is a setup completion NLMerl"~ , ( ; 04F5 04F7 04F9 04FB ( • •• , • I • I I • ( The IBM Personal Computer MACRO Assembler 01-15-84 04FD 121502 0504 051215 0507 12151218 050B 050E 050F 0510 0513 IZl3B3 80 75 50 B0 56 BE E8 5E 58 EB 03B:3 00 0C 58 3A 54 4C 2D 5i2 03B4 03B5 03C1. 0513 051:3 0513 3E 001Z1B E 00 0F 00 03B3 R 0000 E 01 90 PAGE 1-40 TRACE X:TL-RCV-NLM CMP BYTE PTR EC. Tl'~ce, $TI'~I.\e JNE 770064 + -IPUSH AX MOV AL,0 + -IPUSH SI + MOV SI,OFFSET ?70065 EM -, TRACE + CALL + POP SI -IPOP AX + JMP NEAR PTR 7?0064 + PC - CODE ENDS + PC DATA SEGMENT PUBLIC ' DATA' <, OFFSET ?70067 -, OFFSET 770066) + ??0065 LRB + + 7?0066 "X:TL-RCV-NLM" DB + PC - DATA ENDS + PC - CODE SEGMENT PUBLIC ' CODE' LABEL NEAR + 77006'+ -I- • - RET C3 If the previous setup failed, decrement the retry count and retry the setup. If the count goes to zero, log an error message and exit; message reception will then cease. I ( ; 0514 0517 0519 051C FE 4C 10 74 04 E8 0000 E C3 NLMel'~"'~ : DEC JZ CALL RET BYTE PTR [SIJ.TT - Ol'~b NLMstp ; Issue message if failure TL - SET RTRY ;If jrl.:.t, request l'~etry aY'ld retl.ll'~Y'1 to callel'~ t - ; • f • • f 051D 051D 051E 0520 0523 12152'+ 50 B0 0C E8 121000 E 58 C3 + + + + NLMstp: LOG PUSH MOV CALL POP RET :( ;Log the message • - ; ReturY'1 t c. the Dl'~i vel'~ Reenter here if a message has been received. The protocol ID is tested and the message discarded if the ID does not match that of a Name Lookup message. 0525 0528 052A 052D 053121 0532 8B 8D E8 3D 74 E9 5C 08 lF 0000 E 01FE ..::, 0"" 05C3 R ; NLMrngl: MOV LEA CALL CMP ~TE J'MP BX, [SIJ.Dtl BX, [BX]. Pid TL WRD - IN AX, $PI'~oID NLMmg2 NLMrst ; TI'~aY'lspol'~tel'"' addl'~ess of data ; Pc.s i t i OY'I t c. protc.col ID ;Fetch the ID ;If Y'IOt Name LCII::ok,.tp go l'~estal'~t l'"'ecept i OY'I ( ( ( ( If Name Lookup message, the message data is placed into the Name Lookup Table, and the appropriate processing routine is invoked. t • $MND04 AX AL, $MND0'+ DM ERR - LOG AX ; 0535 8B 7C 06 NLMmg2: MOV DI,[SIJ.RR ;Transporter address res rkd • ( c • .: ( 0538 053B 053E 80 50 01 E8 0000 E A2 0.7.:13 R LEA CALL MOV BX, [01 J. Shost TL BYT IN IvJT:-MT j\'iAo, AL ; Posi t iorl to serlde~~ NAD ;Fetch NAD arid save i rl NLMT 0541 0544 0547 054A 0540 0550 7C 08 5D 04 0000 E 0222 R 50 06 0000 E 0553 8B 8D E8 A2 80 E8 A'-' 0:::. 0223 R MOV LEA CALL MOV LEA CALL MOV o I, [S IJ • Dt 1 BX, [Ol]. St~C TL - WRO - IN MT.MT - St~C , AL BX, [Or J. Oev TL WRD .- IN MT.MT _Oev,AL ; Tt~arlspc,y"·ter addt~ess of data ; Pc.s i t i c.rl to sc.l_n~ce ;Fetch SClut~ce arid place int.:. NLMT :; ; Posi t iorl tc. device type ;Feteh type arid place irltc. NLMT 0556 055':3 055C 055F 80 BF B9 E8 50 08 0218 R 00121A 0000 E LEA MOV MOV CALL ; Pos i t ic.rl t.:. Name BX, [OIJ.NL_Name DI,OFFSET MT.MT - Name ; Numbe~~ chat~acters CX,$NameLN ;Fetch rlame to NLMT TL OTA IN 121562 121565 0568 8B 7C 08 80 50 1Z12 E8 0000 E IvJOV LEA CALL o I, [S U • Ot 1 BX, [OU. Mgt TL - WRO - IN • • I • • • • f 1-41 Pf~GE The IBM Personal Computer MACRO Assembler 01-15-84 - - ( • « f - ;C.:.mpute tt~arlspot~te . .~ addt~ess message type :; :;Bt~irlg i t i rl Because the message type codes are irregular and few in number, dispatching is carried out by a series of tests rather than by a transfer table. C6 1216 0217 R FF MOV MT. MT _Mod, 0570 0573 0576 BF 03E8 R 80 FC 01 74 2B MOV CMP JE 01, OFFSET TL -- SENO NAO AH, $NLarIY :;ArIY disl-t. Set~Vel~? If sc., serld NAO NLMeal 0578 057B 057E BF 0443 R 80 FC 00 74 23 MOV CMP ,JE 01, OFFSET TL RCV HI ; He 11 c, messiage? AH,$NLHi if so, add active NLMcal 058121 0583 0586 BF 0465 R 80 FC FF 74 lB MOV CMP JE Dl,OFFSET TL RCV BYE :; GCII:.dbye message? AH,$NLBye if so, delete active NLMeal :; 0588 058C 058F 8B 3E 0443 R 80 FC 10 74 12 MOV eMP JE 121591 0595 0598 8B 3E 0482 R 0:::. 80 FC 0'-' 74 09 MOV CMP JE 059A 059E 05A1 8B 3E 04Bc~ R 80 Fe 03 75 0e: MOV CIYJP JNE 05A3 FF 07 :; NLMcal: CALL ;Irlitialize i orl code 056B $Tt~SU Opet~at - (' - DI,~CV_ID~ AH,$dlrl ;Identification? NLMcal DI'~CV_~ AH,$NL ho NLMeal ; if sc., offt'~ ( offtu-- ( add active ------- you? ;Whc. if so, serld 10 at~e DI'~VW~ Al·-j, $ ~ t~ WI"l et~e ...... NLMt~trl at~e you? ; I grlc.re message if lrlot 01 ;Ca11 pr.:.cess i rig :; t~l::.ut ofF:r~ « ( i rle Return here from all message processing routines ( ( • The IBM Personal Computer MACRO Assembler 01-15-84 f • • 0!5~1C 05Bl. 05B3 05B4 0586 0587 05BA 0580 058E 05BF 17.15C2 03C1 17.13C1 03 Ci.::: 03C3 121300 17.15C2 05 Ci.::: 1215C2 80 3E 0217 R FF 74 17 80 75 517.1 80 56 8E E8 5E 58 E8 3E NLMl"~trl MT.MT __ MOD, : CMP 000B E 017.1 0F 00 12I3C1 R 017.1017.1 E 17.11 90 00 1210 45 31 3A 54 4C 20 $Tl"~SU NLMl"~st ~TE l~IC. + + + + + ??017.16A PC DATA PC - CODE ??17.I12168 "E 1 : TL.·- RCV-NLM " DB ENDS SEGMENT PUBL.IC ' CODE' NEAR LABEL l"~estart 1 • 05CB 0500 1215Dc~ 1215D3 17.1505 0506 121509 05DC 17.1500 0~5DE 05E1 03DI7.I 17.1300 0::m1 03Dc~ c ( 3E I7.II7.1I7.1B E 00 0F 00 17.1300 R 001210 E 01 90 0121 00 45 3i:'=': 3A 54 4C •• ( l'''ecept iorl of messages :;Set fe'l"" '('10 ORB, assure TST po i l~lt el"~, request l""estal'~t E2: TL-RCV--NLM TRACE CMP BYTE PTR EC.Trce,$True + JNE ??006C + PUSH AX + MOV AL,0 + PUSH SI + -IMOV SI,OFFSET ??12I06D CALL EM_TRACE + POP SI + POP AX + -IJMP NEAR PTR 1?12I06C .... PC - CODE ENDS -I- PC DATA SEGMENT PUBLIC 'DATA' (,OFFSET ??12I17.16F - OFFSET ??17.I17.16E) + ?1006D LRB ,f ( f c: -I- f:~D -I- ??017.16E DB "E2: TL--RCV-NL.M" 03DF 17.15E1 + PC DATA ENDS + PC CODE SEGMENT PUBLIC 'CODE' 0~)El -I- '??006C LABEL NEAR ;Return to caller RET t • 81Z1 75 50 B0 56 BE E8 5E 58 EB AL,$False SI,OFFSET RcvNLM TL .- SET - RECV NLMrst: MOV MOV CALL BI2I 17.11 BE 12117.117.10 E E8 1211211210 E c· :; Ot hen>') i se Just exit RET C3 :; 05C3 12I5C5 1215C8 :; Restal"'t l"'ece pt i Ctl~1 if cOnlmarld Cit'" message, E 1 : TL·- RCV-·NLM TRACE CMP BYTE PTR EC. Tree, $Tl"~I.le + ??0068 JNE + ~~X PUSH + AL,12I MOV + PUSH SI + SI,OFFSET ??012169 MOV + EM - TRACE CALL. + SI POP + AX POP + JMP NEAR PTR ??0068 + + PC CODE ENDS + PC - DATA SEGMENT PUBLIC ' DATA' <, OFFSET ??01216B .- OFFSET ??12I06A) + ??0069 L.RB Reerltry p.::oi rlt to ( 1-42 c' 05A5 05AA « PAGE ; 1215 £ i::: TL_RCV_NLM ; ENDP •• ( PAGE The IBM Personal Computer MACRO Assembler 01-15-84 ;*********************************************************************** ;Module name: Fetch Internal Command (TL-FETCH-IC) ; ;Version: 2.0 :; ;Last Update: 14 November 1983 I I I , c ; FU1"lct i orl: • The Fetch Internal Command routine is entered when the TL-FETCH-LC routine encounters an internal commmand. It fetches the data from the NLMT to the location specified by the input ORB. Socket 80 reception is then restarted if a Local Command receive is not pending. ; f ;Procedure: Program Logic Description~ Section 2.7.7 ( « ; :( ;Called By: TL-FETCH-LC (via a long Jump) ; ;Routines called: t TL-SET-RECV ; ;Input: OS: (SI) = Location of the ORB :; :;Output: Completion code returned in ORB t ;Error procedures: None ;Written by: R.B. Talmadge, Computer Technology Ltd ; ;*********************************************************************** 05Ec~ 05E;2 lZ!5E7 05E9 el~5Et:.1 IZl5EC 05ED 05F0 0~5F3 •• « • IZl5F '+ 05F5 05FB IZl3DF IZl3DF !Z':7£E0 IZl3E1 03EE IZl5F8 80 75 50 B0 56 BE E8 5E !:i8 EB '~E ,.;, :'.. 000B E 00 0F 00 03DF R IZl000 E 01 90 00 0D !.53 3A 5L~ '+C i2D '+6 TRACE S: TL····FETCH- 1 C CMP BYTE PTR EC.Trce,STrue + JNE 7?0070 + PUSH AX MOV AL,0 + PUSH SI + + MOV SI,OFFSET ?70071 +. CALL EM_TRACE POP SI + + POP AX + JMP NEAR PTR 710070 + PC_CODE ENDS + PC_DATA SEGMENT PUBL.IC 'DATA' + 7701Z171 LRB <,OFFSET 170073 - OFFSET 1(0072) + + + 770072 DB "S:TL-FETCH-IC" PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 770070 LABEL. NEAR 0~5F8 56 IZl5F9 :'57 PUSH PUSH SI DI « f + 0~3FB c ;Save working registers { • • c ( The IBM Personal Computer MACRO Assembler 01-15-84 PAGE « IZl5F~~ 51 PUSH CX IZI~3FB C6 8B 8B BE 04 1L10 4C 1212 7C 04 IZ121E: R 83 C6 08 MOV MDV MDV MOV ADD [SI J. CC, $OPC1"le ;Set completion OK CX, [SIJ. Sze ;Fetch count from ORB DI, [SIJ. RB_Data ;Location to place data ;Source starts at NLMT plus SI,OFFSET MT SI,TYPE CRQE offset of initial CRQE FC MOVSB IZl5FE of.::, 1 0604 O607 ° 060A 060B F31 A4 CLD REP 0600 0610 0613 BE 0000 E 80 ;3C 1211 74 1A MDV CMP JE SI,OFFSET RcvNLM [SIJ.PN,$False POP POP POP CX DI SI ICl'~st ( ( ;Set direction and move the data ;Fetch TST entry receive NLM ;80 restart reception if no local command '. ; lZI615 0E,1t; elt.; 17 59 5F 5E 0618 80 061.D 75 0F 0E. 1.[-7 50 B0 00 56 BE IZl3EE R EB IZl000 F 5E :58 EB 0:1. 90 ICxit: •.. ·' ;Restore registers - , • •• •• el(7;,~0 06i::~~:: 06c:~3 IZl6i;:~6 O629 062A 06;:::B 062E 1Z13EE 03EE IZI3EF 03F0 03FD 062E 121621;:: 06c:E ~'3E 001Z1B E 00 01Z1 00 45 3A 5'+ 4C i:::0 '+6 E:TL-FETCH-IC TRACE CMP BYTE PTR EC.Trce,$True JNE ??0074 PUSH AX MOV AL,0 PUSH SI MOV SI,OFFSET ??0075 EM_ TI~ACE CALL -I" SI POP + POP AX + JMP NEAR PTR ??0074 "I- PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + ?10075 LRB <,OFFSET ?10077 - OFFSET 110076) + + + + + + + + + 110076 DB + PC_DATA ENDS •• •• "E:TL-FETCH-IC" + PC_CODE SEGMENT PUBLIC 'CODE' + 110074 LABEL NEAR C3 RET ;Return to caller Reenter here to restart socket 80 reception ; IZI62F ~?J631 of.; 3'+ 0636 •• " • :( BIZI 01 E8 0000 E EB OF I Cl'~st : JYIOV CALL ~rMP TL FETCH_IC ; AL,$False TL_SET_RECV ICxit ; Set for 1"1':' ORB, request restart, .:;·tY'Id ex it ENDP ;*********************************************************************** ; End of the Assembly housekeeping goes here ! • ;*********************************************************************** ; PC_CODE ENDS • PAGE The IBM Personal Computer MACRO Assembler 01-15-84 1-45 ( « c • • ( ( PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC RQ IDmsg MT EMstake TL - INT DRVR TL - INT DTME TL_DQ CRQ TL. - NQ_CRQ TL._SET_ERR TL_GET_NAD TL - RCV ICS TL - INT NAD TL. - RCV NLM TL - FETCH IC TL INT - TEST TL INT - WAIT - - - - - ;Command request queue ;NL message image ;Name Lookup Message Table ;Initial stack location ;Interrupt Service Driver ;Interrupt driver off timer tick ;CRQ dequeue ; CRQ el'"lq,-tel..te ;Set disk error code ;Get NAC of requestor ;Receive ICS ;Int svc routine for send NRC ;Receive NL message ;Internal command fetch ;Primary interrupt test loop ;Wait for Operation complete ( END ( • t •• t • ( •• • •• t, •• f t' « • ( The IBM Personal Computer MACRO Assembler 01-15-84 PA(3E Symbols-1 Length COMPARE. 000F 001ZJ5 • DISABLE. c I EI\I(~BLE • 000t~ ENTER" • EXIT • .. 12112113 12112107 1211211211 12112111 1211211212 1211211212 1211211215 00121F 121 121121 E 1211211211 12112112 1211211212 121 121 I2ID 121018 1211211213 01211 A 1211211211 01211213 1211211212 12112101 0009 EVE. • .. • FILLIT • FIV. .. GEN .... !3T(.:iR·f. • f • L.OG. .. • MOVEB. • MOVEONE. RESTORE. SCANB. • • • SELEX IT. • SELREST.. SEL.SAVE. • • SIVa .. • • START. • STATUS • TENTER TEX IT. • TIME " • TRACE. • • • N a CCBL.K.. e fa1 • • • CC_CMND. RRA. SOC~< • • • • • • • • • CC_.. DATA. • • • • DATL • • • • • .. CONLN. • DHOST. CRGlE • USE. • NAD. L.EN. CMND • • • .. • • • R ft • • .. 11 • • h • • • • • • " • CRQH • • G!S'Y DSC. END. TOP. II BOT.- • ( I f Structures and records: t « c .( ECT. " • " " .. • • • • • • • • • 11 .. " • • • • • • • • • • Im::N • • • • Ee_.DAT • • .. u • u • u • • .. Width Shift =1* fields Width Mask. 00121C 12101210 12112102 12101214 1211211216 1211211218 121 121 0A 00121B 12112108 12100121 12112101 1211211212 12101214 01210B 012100 001211 121002 001214 000E, 0040 121000 0008 01210'3 Irlitiial ( • 1211211214 ( 0005 « « The IBM Personal Computer MACRO Assembler 01-15-84 .. • 000A 001Z1B 000C 000D 000E 0010 012112 001A 0022 002C .. COLD • • I. ., ','1 EC_TRIYI IVIAX. • NEXT .. DI R. • NAM. • SERV .. ECjHRU • • EC_ATRS. .. EC_ATRL. • • • TL TlvtCIO{ .. .. • • • • • TL TMRS • • • KEEPOUT . . . . INTDFR DOSDKO .. DoSDKS DDRH • • .. • DDRHS. • • " TCKS LRB. • • CDE. • LR_LEN NL.M. • • PID. .. IVIGT. I " c I • .. • n .. " .. " . ........... II • ••• • • • •• MT_MOD MT_NAME. MT_SRC tV1T _DEV • RSVD • ORB.. .. • (:C .. 01=' • • n .. It .. • .. .. RB_DATA. • • RB._DATAS .. RRKD • .. RCDDE. SHOST. a .. "......... .. .. • • II • " • • • • • • • • c t. " 002E 002F 0030 0031 0032 0033 0034 0036 0038 003A 003C 003E 0002 0000 01Z101 0012 0000 0002 0004 0006 0008 0016 0000 f 0002 il 0005 000':3 0001. • ot='c.. .. . . ... SZF':':.. • .. .. SRC. • DE\l NL_NAME. NLlVlT • • fYlT _USE MT _.NAD • tI.. • • c 00i2D • TCKD • •:, Symbo I s-c: IZl009 EC_DRV .. EC FLG TReE .. PAGE .. 0004 0005 012106 001121 012111 121012 012108 012100 01211211 0002 012104 012106 01211214 012100 012101 I~CVLEN 12100c~ RRRCV. • LoFC!v!. ELoFRP 0004 0000 012102 ( 0005 • 0003 12100i.:: • The IBM Personal Computer MACRO Assembler 01-15-84 ( • ( RliSND. . (4UJFRP DSTA1'. TS1'E . • PN • • TT_ST. SK ... T1' _OP. CCB. • I~R • . 0003 000121 • . • • . . • . • • . .. .. • . • DSZ. ISR. " .. • • • • TT _ORB • t TT_ORBS. 1'S1'H • TNT. ;( u • • • TT _C1. • NE: .. • " TT_NAD . TSTLE. • . LE_CC. LE __ OP. U::_L.EN • TRM. • . TRMS .. I~CV. . ReVS L.I:::_ ISR U:::_ISRS. u .. • • • • . • . .. • .. u • n f Symbols-3 000 i.::: Q.'002 DTL I S liS • PAGE • 0014 0000 0001 0002 0003 0004 0006 0008 000A 000C 000E 0010 0012 0004 0000 0001 0002 0003 0014 0000 0001 0002 0004 0006 tZI008 000A 000C 000E 0010 000C Size aligy'. ( 4' '(.' f 0004 t 000B I f Segments and groups: 1\1 a til e combiY"le class « " GI~OlJl:') 0636 03FD PARA PAR~~ PUBL.IC PUBLIC Type Value Att\"~ Numbel'~ 0000 0000 0001 0000 0000 0210 01E9 01FC 'CODE' 'DATA' Symbols: ( ( ( 1\1 a CI$. • • • CI_MAIN . • DEBU[3$ ... DM$. • • . DM_ERR_LOG • . DG!FRST • .. • .. DQOK • • DQOK1. DQOK2. DQS0 • • m e L NEAR Number Numbe\"~ • L NEAR L. NEAR L NEAI~ L NEAR 1.... NEAR LNEAR 0c~08 0:1. '3E Exte\"~Y"lal Exten'".al PC CODE PC CODE PC CODE PC CODE PC CODE - • • The IBM Personal Computer MACRO Assembler 01-15-84 c • 0[;1S00. • DQST . • D[;18Tl. .. • DR$.. D\: , .:.Ie:. 45 i.7.:0 50 43 53 48 41 52 45 20 iliA [ 20 ~.-. J •• 01l12C 002D 002E 002F 012130 0031 012132 0033 • • 0034 121036 012138 003A 003C 003E 004121 00 00 00 C0 0A 0A 01, 01 000fl.1 0000 0000 0000 0000 0000 C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ C+ $CallDS $CallCA $CallKR $CallDI $Ca 11 TIYI $CallTP EQU EQU EQU EQU EQU EQU $INT$ EQU EQU $T~~apFL ;DOS function call ;Control_break appendage ;Gets location In-DOS flag ; DOS i Ylt el'~cept ;Timer appendage recall ; Trap i rlterl'~I.lpt E~1H i.~3H 34H 55H 67H 1 ;Interrupt instruction code ;Position of trap flag in AH 0CDH 1 c· ( Field lengths ; $$Sel'~v EQU EQU EQU EQU ; ECT Iden STRUC DB $$Di~~ $$Nam $$Next 8 8 4 ( 10 ( , PCSHARE2' ;Identifier of the version , C' DW DB o Dil'~ 'PCSHARE ' ;Drive for Emulator files oJ'::' + + ??0002 DB "S:TL-SET-RECV" + PC_DATA END8 + PC_CODE SEGMENT PUBLIC 'CODE' + ?10000 LABEL NEAR 01llCC FC FE 20 MOV CMP JE CMP JNE 00CE 01ZID0 01ZlD:3 IZlIZID5 BIZI IZl1 81Z1 ~~C~ 00 74 0'".":. 80 00 SETxst: MOV CMP JE MOV ~~0C4 01Z1C7 1z!0C':~ 1-i:::1 SI,OFFSET 110001 IYJOV EM_TRACE CALL POP SI + POP AX + JMP NEAR PTR 110000 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 110001 LRB <,OFFSET ??0003 - OFFSET ??0002) BE IZlIZlA8 I~ EB 001211Z1 E 5E 58 E8 IZl1 ':30 BA 8121 74 80 75 01Z1C:i. PAGE 64 01 FC FF 121~j AH, [SI J. 1'1' _ST AH, $Tl'~SU SETxst AH, $Tt~SS TL SET_TOPN AL,$False [81]. PN, $Tru(? SETxsu AL, $Tn.le ; ( ( ;Pick up current result ;Go to exit if previous set up rlc.t yet carlcelled arid no message received ;Assume condition invalid ;It's OK, however, if no ORB in use \' ; 8ETxsu 1Z!IZ107 0007 IZIIZ!DC 00DF':: IZI IZI OF IZlIZIE :I. !ZIIZIEi::: m0E5 01Zl£8 00E':1 eimEA IZI0ED tZIIZlB7 01Z187 00B8 0089 01Z1C6 00EO 00£D 81Z1 75 !50 BIZ! 55 BE EB 5E 00ED C3 :~E NEAR X: TL.-"SET-RECV TF-IACE CMP BYTE PTR EC.Trce,$True + ,+ .TNE ??0004 PUSH AX + MOV AL.,0 + SI PUSH + SI,OFFSET ??0005 MOV + EM_TRACE CALL + SI POP + AX POP + -I" JMP NEAR PTR 1?,z1004 + PC,_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' <,OFFSET ?10007 - OFFSET 110006) + 1?0005 um 00121B E 0IZ! IZiF 1210 IZIIZlB7 R 0000 E 58 EB iZl1 '30 00 0D 58 LABEL + 3~~ 5L~ '+C 20 1::'2 ,J,,-, c "X:TL-8ET-RECV" + 110006 DB + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 710004 LABEL RET NEAR ;Return to caller ;----------------------------------------------------------------------; This is both the reentry point for TL-SET-RECV when a setup is to be I ; carried out, and the transfer point which carries out the actual workl ; of the TL-SET-SEND routine. I ;----------------------------------------------------------------------- • ( « The IBM Personal Computer MACRO Assembler 01-14-84 PAGE l.-22: { ( 00EE 0121EE 00FIZl 88 IZl4 CE, 4L~ 10 llZ1 MOV MOV [SIJ. PN, AL BYTE PTR [SIJ.TT_Orb,SMaxRty 012lF4 00F6 00F8 00FB 3C 75 89 8e CMP JNE MOV MOV AL, STt~ue TL_SET _.RTRY [S1 J. TT _.. Orb, ex [SIJ. TT_Ol'~bs, DS 12I1Z1 05 5C 10 5C 1;;:: , ; called to retry either a Set Receive or Set Send command. ;----------------------------------------------------------------------- ; TL_SET_RTRY I I tZlIZlFE IZl0FF lZI100 51 Ie I I f f ,t f '. • I • C ;Sj..c.ip ORB setup ; if not present ;Save full address ; if it is present ;----------------------------------------------------------------------; This is both the reentry point for TL-SET-TOPN and the subroutine iZtIZIFE • ;Capture ORB indicator ; Assume Y'IC' ORB C' ."~ LRBEL NEAR 52 PUSH PUSH PUSH BX CX OX 0101 0:1.0'+ 0107 010B 8£1 5C 06 88 4C 04 C6 L~4 01 FF E8 121043 R MOV MOV MOV CALL BX, [S1]. RR ex, [SIJ. CCB [S1J.TT_ST,STrSU TL,,_OIJ_CMNO 12110E 011.0 lZl:l12 0115 !ZII :1.7 BA B0 BIZI 75 B0 MOV MOV CMP JNE MOV AH,AL AL, ST1'~ue AH,STrSU SNxit AL,SFalse ;Save result code ;Assume command executed ; Reset . .~et I..WY'I cc.de if Y'lot 011'3 IZillA 0118 5j!:.) 59 5B POP POP POP DX CX BX ;Restore registers aY'ld ex it 011C 0121. 80 75 50 B0 56 BE E8 5E 58 E8 ~''::I E0 0121 FC FF 0;:::: III 1 ;Save registers used by transporter routine ;Fetch transporter addresses result record and CCB, record passage in TST ; ;Execute the command ; 01E;3 e112L~ 121126 IZl1 ;:::7 01i:::A ell E:D lZtl.;:::E 012F 1211 ~32 IZIIZlC6 00C6 00C7 00C8 00D9 0132 013i::: SNxit: TRACE E/E+S:TL-SET-XXXX + CMP BYTE PTR EC.Trce,STrue + JNE 110008 + PUSH AX + MOV AL,0 + PUSH S1 + MOV S1,OFFSET 110009 + CALL EM_TRACE + POP S1 + POP AX + JMP NEAR PTR 1?0008 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 1?0009 LRB <,OFFSET 11000B - OFFSET 11000A) 3E 0008 E 00 0F 00 00C6 R 0000 F" 01 90 00 •• ( f c + 11 Lt5 i.:::F f L~5 ;:~B t:~ ...J~ 3A + + + + 1?000A PC DATA PC:CODE 110008 DB "E/E+S:TL-SET-XXXX" ENDS SEGMENT PUBLIC 'CODE' NEAR LABEL ( • • • c. The IBM Personal Computer MACRO Assembler 01-14-84 0132 C3 PAGE 1-23 • RET ; 0133 TL_SET RECV ENDP ; ;*********************************************************************** ;Module name: ; Vet"'s i ':."In: c Send Message (TL-SET-SEND) I 2. 0 ; ;Last Update: 22 December 1983 ( ; ; Flmct ion: • • ; The Send Message routine is called by any TLD routine to send a message of any kind to another machine. The call parameters are the offset of the TST entry and an ORB location if a wait for completion is required. If there is an ORB its location is recorded in the TST entry; if there is no ORB, a maximum size retry count is recorded instead of the ORB location. :{ The actual work of the routine is done by the TL-SET-TOPN execution sequence of TL-SET-SEND. ( ; ; Pro:.ced ure: Program Logic Description, Section 2.6.1 ; I ;Called by: TL-DQ-CRQ, TL-INIT-TLD, TL-RCV-ICS, TL-FETCH-LC, TL-RTN-RSLT, TL-SEND-NLM, LC-RECV-SRVR f ; ;Routines called: ; ;lnput: = = (SI) Offset TST entry (AL) - $True if ORB present (DS):(BX) Location of the ORB ; ;Output: « TL-DO-CMND (AL) = (AH) = $True if successful $False if not successful Return code from transporter ( ; ;Error procedures: None ; ;Written by: R.B. Talmadge, Computer Technology Ltd ; ;Updates: • c • None. ; ;*********************************************************************** f • ; 0133 0133 0138 013A 013B 013D TL_SET_SEND 80 3E 0008 E 00 75 0F 50 B0 00 56 + + + + + PROC NEAR TRACE S:TL-SET-SEND CMP BYTE PTR EC. Trce, $True JNE ??000C PUSH AX MOV AL,0 PUSH SI f\ c\ ( The IBM Personal Computer MACRO Assembler 01-14-84 (- c( , 013E 014:1. 01 Lt4 0:1.45 0146 0149 0009 012109 00DA 00DB 00E8 0149 0149 014'3 BE 00D9 R E8 0000 E 5E 58 EB 01 '30 00 00 53 3A 54 4C 20 53 + + + + + + + + + + + PAGE 1-24 • SI,OFFSET ??000D MOV EM_TRACE CALL POP SI POP AX JMP NEAR PTR ??000C PC_CODE ENDS PC_DATA SEGMENT PUBLIC ' DATA' ??000D LRB <, OFFSET ??000F - OFFSET ??000E) ??000E PC_DATA + PC_CODE + ??000C EB A3 DB "S:TL-SET-SEND" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR JMP ( • ;That was easy ; 014B TL_SET_SEND f ENDP ; '. « ;************************************************************************ ;Module name: Timeout Setup (TL-SET-TIME) I ; ;VersioY"r: 2.0 t ; ;Last Update: 5 January 1984 ; ; FI"\Y"rct i '::'Y"I: ( I f ;Procedure: f The Timeout Setup routine is called by any TLD routine to set up a timing loop for receipt of a message. The call parameters are the offset of a TST entry already setup to receive, the location of an ORB, and a network address. The expiration time is calculated from the value in field RB.OP of the ORB. An Echo command timing loop is started with interrupt service routine set to TL-INT-TIME, which is part of TL-SET-TIME. That routine ends the timing loop if a message is received, or if time-out occurs. t ( Program Logic Description, Section 2.6.1 ; ;Called by: TL-FETCH-LC ; ;Routines called: ; ;Input: ( (SI) (AL) (DS):(BX) TL-DO-CMND, TL-BYT-OUT, DM-ERR-LOG = = = Offset TST entry NAD of machine expected to send message Location of the ORB • ; c ;Output: • ;Error procedures: None I ; An error message is logged if a timing loop is already in progress when the routine is called ; ;Written by: R.B. Talmadge, Computer Technology Ltd ; ;Updates: • Nc.ne ; ;*********************************************************************** c- C' • ( f • I TL SET_TIME 12114B 1Z114B IZlt51Z1 121152 121153 121155 0:l56 121159 III :l5C 1Z115D I~H5E • PAGE The IBM Personal Computer MACRO Assembler 1211-14-84 81Z1 75 5121 BIZI 56 BE E8 5E 58 EB 01Z1EB R 1210121121 E 1211 9121 0161 0164 0t66 81Z1 3C 00 74 1211 C3 0167 12I16C 016E 121171 80 75 C6 C6 • • ( -I- 121121 IZIIZI 0D 5-' ~ 3A 5'+ 4C 2D NEAR S: TL-'SET-TIME TRACE CMP BYTE PTR EC.Trce,$True -IJNE ??01211121 PUSH AX + -IMOV AL,12I PUSH SI + MOV SI,OFFSET ??12I011 + CALL EM_TRACE + POP SI + POP AX + -IJMP NEAR PTR 1?012110 -I- PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' LRB <,OFFSET ??012113 - OFFSET ??012112) + ??0011 3E IZIIZIIZIB E I21IZ1 IZIF 121161 01Z1E8 01Z1E8 IZIIZIE9 IZIIZIEA IZIIZIF7 121161 III H; :t PROC 1-25 5':1 ~, + + ?10012 "S:TL-SET-TIME" DB PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' NEAR + ??001121 LABEL -I- I CMP ,JE RET [S I J • PN, $Tt"'ue TMEst ;Just exit if the message has already beel"1 t"'ece i ved CMP VarOP. PN, $Tt"'ue TMEok [SIJ.PN,$False [BX]. CC, $OPtte. ;If a timing loop is already in progress treat the request as if it timed out $MNDI2I3 AX AL,$MNDI2I3 ;Then log an error I ; •• I 017i.~ el175 0177 0:l7(~ 12117B TMEst: 3E 121094 R 00 I2IE 1214 01 1217 1213 5121 BIZI 0B E8 00 IZI 121 E 58 C3 ~TNE MOV MOV LOG PUSH MOV CALL POP RET -I- + + + DM_EI~R_LOG AX and return to the caller If the loop can be started, store the current time in field TT.ORB of the VarOP TST entry, save ORB offset, turn on timil"lg flag, and start off the first echo command f ; 1Z117C 12117D 017E t 0181 0182 0183 IZI184 0186 0:lB8 0l8A TMEf.:;.k: 51 52 A2 121096 R 9C FA 50 21 I2IC 1215 E6 21 58 EL~ + + + .... -I-I- + PUSH PUSH MOV DISABLE PUSHF CLI PUSH IN OR OUT POP CX DX VarOP.SK,AL ;Save working registers ;Save NAD ;Mask off transporter AX AL, $P82c'p1 AL,$P82EML $P82c'p1, AL AX ( « • • • + 0188 9D 01.8C 018E 019121 0195 01.99 Illi9C 01.9F B4 CD C6 89 BE 89 89 01Ac~ ':3C + 0:lA3 01A4 0lA5 01.A7 + IliIAB !lIlAC FA 50 E4 2:1 24 FA E6 ;:::1 58 9D 01AD 01AE 01B1 01B4 1Z11 B7 53 8A 8B 8D E8 01BA 01.BC 01BF 01C2 !l11C4 B1 88 8B 80 E8 01C7 0:1.CB 1Zt1CE 01,01 01D4 01D5 IlHD6 C6 44 01 FF 8B L~C 04 8B 5C 06 E8 0043 R 5B 5A 59 i:::C 21. 06 0094 R 00 36 009E R •• I • ( ( ill:!. A':3 01D7 0:1.DC 01DE 0lDF 0lEl !lllE2 01E5 iZIlE8 01.E9 01.EA 01.ED 00F7 00F7 00F8 00F9 80 75 50 B0 56 BE E8 5E 58 EB + + 009 Lt R 4C 1121 54 12 ( I. PAGE The IBM Personal Computer MACRO Assembler 01-14-84 + + + + + -I- POPF TIME MOV INT MOV MOV MOV MOV MOV ENABLE PUSHF CLI PUSH IN AND OUT POP POPF 1-26 ;Get the current time AH, c~CH PN, $Tt~ue Dsz, SI SI,OFFSET Val"~OP [SI]. TT __ Orb, CX [SI]. TT _Ol"~bs, DX Val"~OP. Val·~OP. ;Set timing loop flag ;Save TST entry offset ;Now point to VarOP TST ;Save the ; cUl"~t~eY"lt time ;Restore transporter t AX AL,$P820pl AL,$P82enb $P82c.p 1, AL AX 4C 02 5C 04 5F 04 000B R BX CL,[SI].SK BX, [SI]. CCB BX, [BX]. Sc.ck TL_BYT_OUT 02 4C 03 5C 04 IF 12100B R MOV MOV MOV LEA CALL ;Now make sure there CL, $Echc. is an Echo command [SIJ. TT _OP, CL in the TST entry BX, [SI]. CCB and i Y"I the CCB BX, [BX]. CC_CmY"ld TL_BYT_OUT MOV MOV MOV CALL POP POP POP [SI].TT_ST,$TrSU ;Set TST status CX, [SI].CCB ;60 do the first Echo BX, [SI]' RR TL_DO_ClvtND ;Restore registers BX DX CX 00 00F7 R 0000 E 01 90 00 0D 45 3A 54 4C 2D 53 ;Fetch NAD ;Calculate transporter addt~ess aY"ld send NAD t .:. memc.ry E:TL-SET-TIME TRACE CMP BYTE PTR EC.Trce,$True + .TNE 770014 + -IPUSH AX MOV AL,0 + PUSH SI + MOV SI,OFFSET 77001.5 + CALL EM_TRACE + POP SI + POP AX + 3MP NEAR PTR 770014 + + PC_CODE ENDS -I- PC_DATA SEGMENT PUBLIC 'DATA' <,OFFSET 710017 - OFFSET 770016) + 770015 LRB + + 770016 DB I 21.H PUSH MOV MOV LEA CALL 3E 000B E 00 0F • I ( ( • • "E:TL-SET-TIME" ( • The IBM Personal Computer MACRO Assembler 01-14-84 IZi105 0:1.EO 01ED 01ED PAGE 1--27 • + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 770014 LABEL NEAR C3 RET c: ;Return to caller The following routine is the TL-INT-TIME interrupt service routine, which is an integral part of the TL-SET-TIME routine. This routine checks if there is a timing loop, and if so checks for time expired. If it has expired, the ORB completion flag is set accordingly~ and the receive is cancelled. If time remains, another Echo is issued. :c; f ( I • • I ," 01EE 01EE 01F3 01F'5 0:lFt; 01F8 0:lF'3 01FC ~HFF 0200 eli:~0 :l 0204 0105 121105 0107 0108 0115 0204 TL INT_TIME 80 75 50 B0 55 BE E8 5E 58 EB 31::': 000B E IZlIZI 0F 00 121105 R 0000 E 01 '30 00 00 ... ;;J,:!i 3A 5'+ 4C 2D 4':3 ~ \ • :( NEAR TRACE S:TL-INT-TIME + CMP BYTE PTR EC.Trce,STrue + JNE 7?0018 + PUSH AX + MOV AL,0 + PUSH SI + MOV SI,OFFSET ??001'3 + CALL EM_TRACE + POP SI + POP AX + JMP NEAR PTR ??0018 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + ??001'3 LRB <,OFFSET 7?001B - OFFSET ??001A> • ( + + ??001A DB "S:TL-INT-TIME" + PC_DATA ENDS I + PC_CODE SEGMENT PUBLIC 'CODE' + ??0018 LABEL NEAR 0i:~04 I LABEL 020'+ 0207 0i20'3 80 3C 00 74 01 C3 CMP JE RET LSI], PN, STrue TIMlp 020A 0;::;0E iZli210 80 7C 03 IZl2 74 01 C3 TIMlp: eMP JE RET [SIJ.TT_OP,SEcho TIMlpp 0i211 0214 0217 0219 8B 8B 3C 74 TIMlpp: MOV MOV CMP JE ;If flag is true, ; go process timing loop ;Exit if no timing loop ; ;Continue if last ; command was Echo ; Ex it if YIC.t ; ( t" 7C 0A 5D 10 C0 20 DI, [: S I J • Ds z BX, [DIJ. TT_Ot~b AL, STt~EA TIMlp0 ;Fetch Receive TST entry offset ;Fetch location ORB ;Echo not acknowledged is the same as timeout If timeout occurs, the timing loop is ended, an End Receive is issued for the socket, and the ORB completion code is set ; • • ( 0,;::1 B 021E 0221 C5 04 01 C5 05 1211 C6 07 03 T I MClut: MOV T I MCIt.lX : MOV MOV 0;::::24 8A 4D 04 MOV [:SIJ.PN,SFalse [D I J • PN, SF a 1 f:5e [BXJ.CC,SOPtto ;Turn off timing ;Turn off reception ;Set timeout into ORB CL, [DIJ.Sock ;Fetch receive socket number ( c • c The IBM Personal Computer MACRO Assembler 01-14-84 1-28 ;Calculate transporter addt~ess aYld sel'"ld socket to CCB 0i:::27 022A 8B 7C 04· 80 50 04 E8 IZt00B R MOV LEA CALL 01, [SI J. CCB BX, [01]. Soc 10{. TL_BYT_OUT 02.3121 Bl 88 80 E8 MOV MOV LEA CALL ;Now insert the End CL, $El'"ldRcv :; Receive in the TST [SI].TT_OP,CL and into the CCB BX, [D!]. CC._Cr(l1'Id TL_BYT_OUT 1Z1~::2D 0c!32 t PAGE 0~::35 0237 10 4C 03 lD 000B R Reenter here to do either the End Receive or Echo command and then return to the interrupt driver t ; 0i.:::.3A 02.3E 0;;~41 0244 0i;~47 0;:::4B 02"t8 0249 024A 0i:~4B 024D 0i:::4F 0251 0~::52 I "n~:55 0257 025A 12I25C 0i:::5E 0261 IZI i::: 63 C6 8B 8B EB TIMxit: MOV MOV MOV CALL RET 44 01 FF 4C 04 5C 06 0043 R C -:~, 9C FA 50 E4 21 0C 05 E6 21 58 9D B4 CD 8B 3A 74 80 32 2C 21 44 llZl E5 03 C1 3C E4 + + + + + + + + + + 3E: ED 2B C8 86 D6 0;:::70 027i::: 32 F6 i:::B D0 0i::74 B0 F6 03 3i::: 0276 IZli::::7 8 027A • ( [.m 44 1;:;: 0i:::67 0i:::6A rZli!:::6C 026E 027C 0i::::7D 86 Ci+ 32 E4 9C FA 3C E1 D0 E4 ( « If the Echo was acknowledged, test for timeout :; ;Mask off transporter TIMlp0: DISABLE PUSHF CLI PUSH AX AL., $P82.:.p 1 IN AL.,$P82EML OR $P820p1,AL OUT AX POP POPF ;Get current time TIME AH,2CH MOV 21H INT ;If hours value of previous AX, [SIlo rr_Orb MOV not equal to current AH,CH CMP increment current minutes TIMlpl JE ; field by 1 hour ADD CL'60 ;Isolate minutes fields AH,AI-I TIMlpl: XIJR XOR CH,CH ;CL has minutes difference CX,AX SUB MOV XCHG XOR XCHG XOR SUB AX, r.SI].TT_Orbs AL,AH AH,AH DL,DH DH,DH DX,AX MOV MUL AL,60 CL DX,AX AH,AH ADD XOR + + [SIJ.TT_ST,$TrSU ;Set TST status CX, [SI].CCB ;Go do the command BX,[SIJ.RR TI..._DO_CMND c ENABLE PUSHF CLI ;Isolate seconds value ; of previous time ;Isolate seconds value of cUl"~t~eYlt time ;Seconds difference in DX I :;Cc.rJ1pute total d i ffet~el'"lce il'"l ; secc.nds ;Restore transporter c f • The IBM Personal Computer MACRO Assembler 01-14-84 e- 027E 027F 0i:::81 0283 0285 0286 0287 028A ( ( 121i.~8C 50 E4 24 E6 58 9D 8A 3B 7D 12128E EB AA 2l. FA 21 + + + + + + 47 01 D0 8D PAGE 1-29 PUSH IN AND OUT POP POPF MOV CMP JGE AL, CBXJ.OP DX,AX TIMol..lt ;Compare difference ; with period requested ;Timeout if not less JMP TIMxit ;Redo Echo if less AX AL,$P820pl AL, $P82eYlb $P820pl,AL AX (' ( ; ; ( 0;:::90 TL SET_TIME ENDP ; ;*********************************************************************** ( ;Module name: Return Command Result I ; ;Last Update: 4 January 1983 t- ;F'.tYlction: (TL-RTN-RSLT) I ; ;Version: 2.0 ; The Return Command Result routine is called by the Command Interpreter to return the result of a command to the requesting machine. TL-RTN-RSLT returns the data from the location specified by the ORB, and also sends the current value of the disk status in field RQ.DSC ( ;.'•f ; ; Pt~clced u re : Program Logic Description, Section 2.6.2 ; ;Called By: CI-MAIN ; TL-SET-SEND, TL-WRD-OUT, TL-BYT-OUT TL-DTA-OUT, LC-RTN-RSLT ;Routines called: ; ;Input: DS:(SI) = Location of the ORB ; ;Output: Completion code returned in ORB ; ;Error procedures: None ; ;Written by: R.B. Talmadge, Computer Technology Ltd ( ; ; Updat es: ( N';)Yle ; ;*********************************************************************** ; TL_RTN_RSLT 0290 t: I' 0290 0295 0297 121298 029A 12129B 80 75 50 B0 56 BE 3E 000B E 00 0F 00 0115 R + + + + + + PROC NEAR TRACE S:TL-RTN-RSLT CMP BYTE PTR EC. Trce, $True JNE ??001C PUSH AX MOV AL,0 PUSH SI MOV SI,OFFSET ??001D ( f c c) f PAGE The IBM Personal Computer MACRO Assembler 1211-14-84 029E 1Z12Al 0i:::AE~ 02A3 0i:::A6 121115 0115 121116 0117 121 1 i:::4 0i.:::A6 02A6 I f 02A6 1Z12A'3 0i:::AD IZIE~AE E8 121000 E 5E 58 EB 1211 '30 0121 0D c--. .:J.5 3A 54 4C 2D 52 + + + + + + + + + + + EM_TRACE CALL POP SI POP AX JMP NEAR PTR ??1ZI1Z11C PC CODE ENDS PC DATA SEGMENT PUBLIC 'DATA' <,OFFSET ??1ZI1Z11F - OFFSET ??1ZI1Z11E} ??1ZI01D LRB - ??1ZI1Z11E PC - DATA PC - CODE + ??1ZI1Z11C 02B4 IZli:::B6 02B8 0i:::BA 1Z12BB 1Z12BE DB "S:TL-RTN-RSLT" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR MOV MOV PUSH MOV C6 1214 FF C6 44 1211 1121 ::,7 8B 3E 12112104 E ; o i::: Bi.::: 1-3121 C'~ ~':J •• ;Denote 'operation in progress' ;Operation retry count :; Save t~eg i st et' and find top item in CRQ • If the top item is not queued or is not the current command, exit with an 'invalid ORB' indication MOV AND eMP JE POP MOV RET 8A 1215 2L~ CIZI 3C CIlI 74 05 5F C6 1214, lZIi::: (SI J. CC, $OPi rip (SIJ.OP,$MaxRty DI DI, RG!. Top c AL, [DIJ.Use ;Fetch Usage field and test flag bits AL,$RQUseR+$RQUseE AL,$RQUseR+$RQUseE RSLok ;Go process if conditions ok DI ;If not, restore register' [SIJ.CC,$OPtrb indicate termination, aY'ld ex it il If the CRQ item is OK, test fClt' a local Cit"'" immediate c·::;.mmarld arid pass the batorl to the app'r~op'r'iate rc.l.tt i rle if eithe'r~ :; 1Z12BF 02Ci.::: lZIi:::C'+ F6 1215 ;:::121 74 03 E'3 0121121121 E RSLcrl-!. : TEST JZ .IMP lZIi:::C7 FE, 1215 10 74 05 5F C6 1214 00 C3 RSLY'llc: TEST JZ POP MOV RET :; 0;::-::C(~ 1ZIi.:::CC 0i:::CD IZl2D121 ) 0i:::01 02D2 • • f RSLdo: 53 51 1Z1,~~03 52 1Z12D4 0i:::07 02DA 020C 8B 3B 7E 8B 02DF 89 4C 1212 '+D 02 4C 1212 03 4C 1212 (DIJ.Use,$RQUseL ;If local, trarlsfel'" to RSLrilc Local Commarld Serld l"I::tut i Irle LC RTN RSLT - - I (DIJ.Use,$RQUseI RSLdo ;If i rlt errla I , set DI operat i OY'I cClmplete, Y'IO [S I J • CC, $OPcrle aY'ld exit I If a the cClmmaY'ld is fl"clm arlClther machi Y'le, set up the CCB arid uset~ contrcll a'r~ea for the message, move the data frclm mer.1CIl'~y tCI the t rarlsport er, aY'ld execute the seY'ld clpel"at ion ( PUSH PUSH PUSH MOV CMP JLE MOV ~SLd01 : MOV el"\'~clr, BX CX DX CX, [DIJ. Len CX, [SI J. Sze RSLdol CX, (SI J. Sze ;Save WOl"k i Y'lg Registel"s (S I J. Sze, CX ;Save data 1 eY'lgt h ;Reply length from CRQ ; Compare with leY'lgth i Y'I ORB aY'ld tal-!,e the smallel" of the values • The IBM Personal Computer MACRO Assembler 1211-14-84 INC MOV ADD CALL CX BX, TnnRPY. RR BX,TYPE RRKD TL._WRD_OUT ;Add 1 for disk status ;Compute transporter ; address control area ;Insert reply length 8A 0E 012101 E 8D 5F 0;::: E8 01210B R MOV LEA CALL CL.,RQ.Dsc BX, (BX]. Dstat TL_BYT_OUT ;Fetch disk status ;Transporter address status ;Insert disk status 12131215 8B "~C 02 8B IE 012174 R 56 8B 74· 04 E8 121085 R 5E -MOV MOV PUSH MOV CALL POP ; F et L II d ..d; a It'i.'n··t§.t.b a ru:L CX, CST J. S:ze ;0;1 tl'~aY'lsp':lrtel'~ "i:\ddl'~ess data BX,TrmRPY.Dtl SI ;Memory address of data SI, [SIL RB_Dat.:.~ ;Insert data into transporter TL._DTA_OUT SI 0306 0309 030D 121310 SA 8B 8D E8 MOV MOV L.EA CALL CL, [DI]. NAD BX, Tl~I'I1RPY. CC8 BX, (BXJ. Dhost TL_BYT_OUT 121313 0315 121318 121318 8B DE B8 121121121121 BE 01216C R E8 12113:3 R MOV MOV MOV CALL BX,SI ;ORB offset to BX for TL-SET-SEND AX,STrue ;Indicate there is an ORB SI,OFFSET TrmRPY ;Fetch TST entry offset TL SET_SEND and go do transmission 1212E3 1ZI~::E7 1Z12EA lZIi2ED 1Z12Fl 12I~::F4 lZIi2F7 1212FA 121 i::: FE 1212FF • • 4D 01 1E 1211217121 R 5F I2IB 01211Z1B R B>x, 0)( 1 -rill(. l1y. t-c...- (6)':1. D...+~ ex.) Cal. 'll. _ ,; R'fc:t, T A (.(A...P ....~ ~ "..11,,«Sf ~t t3 , dll.p..I~~ '-bt.. 12 W(G:P..-a) uT , / ;Fetch network address ;Compute transporter location ; to place the address ; Put i Y'lt 0::' CCB Now restore registers and wait around until the completion flag in the ORB changes, then exit. The flag will be changed by the TL-INT-RSLT routine (see below), which is the interrupt service routine for socket BIZI send, TST entry TrmRPY. 12131E 12132121 1Z13E::I. 03f~c~ 0~323 0324 • ( ; I I 1-31 41 8B IE 007i::: R 83 C3 0",· E8 1Z11211A R 0~::E2 I PAGE 0327 032A 032C~ 121331. 0333 8B F3 5A 59 58 5F E8 0121121121 E 8121 75 F6 74 E8 3C 07 0A 1216 1211211211 E 80 03 121393 R MOV POP POP POP POP CALL SI,BX DX CX BX Dl TL II'H_WAIT CMP JNE TEST JZ CALL. (SI]. CC, SOPtcl RSLdx RG\. Dsc, SRQdse RSLdx TL_FETCH_LC LABEL NEAR ;Restore all registers t ;Call the wait routine ;Exit unless incorrect ; control length failure ;If so, and if the disk status shows error, send result via Fetch LC f' ; RSLdx 0336 c f 121336 033B 033D 033E 034121 121341 0;3i~4 121347 ( 80 75 5121 BIZI 56 BE E8 5E 3E I2I1Z1I21B E 121121 0F 121121 0124 R 12112100 E + + + + + + + + TRACE E:TL-RTN-RSLT CMP BYTE PTR EC. Tl'~ce, STt~l.le ??12I1212121 JNE PUSH AX AL,I2I MOV SI PUSH SI,OFFSET ??0021 MOV EIYI TRACE CALL SI POP - • • c t PAGE The IBM Personal Computer MACRO Assembler 01-14-84 0348 121349 034C 1Z!124 012'+ 0125 0:1.26 0133 034C 034C 58 00 0D 45 3A 54 4C 2D 52 034C C3 1-3i::: POP AX JMP NEAR PTR 7?0020 + ..1- PC CODE ENDS + PC DAT(.:l SEGMENT PUBLIC 'DATA' LRB <,OFFSET 7?0023 - OFFSET 1?0022) + 770021 + EB 01 90 f - + c + 771Z1022 DB "E:TL--HTN'-RSLT" + PC DATA ENDS + PC CODE SEGMENT PUBLIC 'CODE' + 770020 LABEL NEAR therl ex it F~ET ;----------------------------------------------------------------------; The following routine is the TL-INT-RSLT interrupt service routine, ; which is an integral part of the TL-RTN-RSLT routine (Section 2.6.2) ( ;----------------------------------------------------------------------- ; TL_INT_RSLT 034D 034D 0""''''''::;' ;:Jt;:;;. 0354 'I..J 0355 0357 0358 035B 0:~5E 035F 1 0:~E,0 013'+ 0135 !l1142 0363 « 80 75 50 B0 56 BE E8 5E 58 EB 3E 000B E 00 0F 00 0133 R 01210121 E 01 90 0363 0133 0133 • I 00 0D o:::"~ ;.;J':' 3(4 54 4C 2D 4'3 0363 0368 0369 036B 0:3E,E 036F c- :. NEAR TRACE S:TL-INT-RSLT CMP BYTE PTR EC. Trce, STrue JNE ??0024 PUSH AX + MOV AL,0 + PUSH SI + MOV SI,OFFSET 170025 + CALL EM_TRACE + POP SI + POP AX + JMP NEAR PTR 770024 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + ?70025 LRB <,OFFSET 770027 - OFFSET ??0026) + + + ( + + 7?0026 DB "S:TL-INT-RSLT" + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 7?0024 LABEL NEAR !l1363 0366 LABEL f 81Z1 3C 00 74 08 50 BIZI 13 E8 0000 E 58 C-' ,:, CMP JE LOG PUSH MOV CALL POP RET + + + + [SI J. PN, STl"~ue RSLokk $MND06 AX AL,SMND06 DM .- ERR LOG AX • ; Thet~e sh.:.uld be art ORB llLog arl 9'l'... ·r.... -:I ....... and - exit if YIO ORB ; 0371Z1 0373 ( • ( !l1;375 0377 037A 8B A8 75 C6 C3 5C 10 81Z! 04 07 00 RSLokk: MOV TEST JNZ MOV RET ex, (SI]. rr_Ot~b AL., $Tl"~Nl71 RSLrlg [BX:J.CC,$OPcne ;Fetch ORB locat i01"1 ft~c'fI1 ;Set comp 1 et i C'Y', code arid eHit if 5t..tcces!sful cc.m pI et i C'YI TST errtry • ( ( • The IBM Personal Computer MACRO Assembler 01-14-84 « 037B 037D 037F 0382 c ( ( 3C 83 75 04 C6 07 07 C3 RSLYlg: CMP JNE IVIOV RET PAGE AL,$TrCL RSLYlgl CBX].CC,$OPtcl 1-33 • ; If receive socl + + 11003E DB "E: TL-SEND--NLM" + PC_DATA ENDS + PC_CODE SEGMENT PUBLIC 'CODE' + 1?003C LABEL NEAR t + • I RET ;----------------------------------------------------------------------The following routine is the TL-INT-NLM interrupt service routine, which is an integral part of the TL-SEND-NLM routine. This routine retries the transmission if there is a failure, until either there is success or the retry count is exeeded. It also restarts Name Lookup message reception when the transmission sequence is done. c ;----------------------------------------------------------------------t- ( • The IBM Personal Computer MACRO Assembler 01-14-84 PAGE 1-41 IZI56 I=" 0561=" 0574 IZI~576 ( 0577 057'3 057A 057D 058121 121581 0!582 0585 019A 019A 0:l9B 01.9C 01A8 121585 tZI585 tZI585 0588 '( 058~=! 81Z1 75 5121 B0 56 BE E8 5E 58 EB S : TL _. I NT -·NLIYI TRACE CMP BYTE PTR EC.Trce,STrue + JNE 17121040 + + AX PUSH -IMOV AL,0 -IPUSH SI MOV SI,OFFSET 77121041 + CALL EIYI_ TRACE + -IPOP SI + POP AX + JMP NEAR PTR ??0040 + PC_CODE ENDS + PC_DATA SEGMENT PUBLIC 'DATA' + 77012141 LRB <,OFFSET 77121043 - OFFSET 770042) 3E 000B E 00 0F 00 1Z119A R 1211210121 E 1211 90 00 0C 53 3A 54 4C 2D + 4~., 17012142 PC_DATA + PC_CODE + 710040 -I- -I- 80 3C 00 ..:, 7!5 0-' E9 121000 E 058D 1Z158F A8 80 74 1219 0591 1215':34 0!596 121599 FE 4C 10 ; NSlgo: 74 04 E8 1Z10FE R C3 DB "S:TL-INT-NLM" ENDS SEGMENT PUBLIC 'CODE' LABEL NEAR CIVIP JNE 3MP [SI]. PN, $Tt~ue NSIgo LC_INT_NLM ;If there is an ORB pass the baton to the Local Command int rtn TEST AL,STrNG JZ NSlt~s ;If the entry is for sucessful transmission, restart reception DEC JZ CALL RET BYTE PTR [SIJ.TT_Orb NSh~s TL._SET _.RTHY ( ;Decrement the retry count ;Restart reception if zero ;If not, do a retry ;Return to driver 'f Reenter here if successful or retry count exceeded • « ; 059(4 1Z15':3C tZI591=" 1Z15Ac~ 05A3 B0 01 BE 001218 R E8 1Z10AB f~ C'·' ..:, NSIt~s: MOV MOV CALL RET TL SEND NLM ; AL,SFalse SI,OFFSET RcvNLM TL SET_RECV ; Set fOt~ rio ORB, assure TST pointer, req !.lest rest a t"t , and exit « ENDP ;*********************************************************************** ; ; 05A3 • c ! ;*********************************************************************** t' ( End of the Assembly housekeeping goes here PC_CODE ENDS PUBLIC PUBLIC PUBLIC PUBL I C PUBLIC PUBL I C TT TTbgrl TTend I~cv I CS RcvNLM Tt"mNLM ; T8T heade . .~ ;Start of regular T8T entries ;End of regular entries ;T8T entry for IC8 receive ;T8T entry for NLM receive ;T8T entry for NLM transmit « • .' f The IBM Personal Computer MACRO Assembler 01-14-84 PAGE 1-42 f • c « f PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC PUBLIC TrmNAD VarOP TL_BYT_IN TL_WRD_IN TL_DTA_IN TL_BYT_OUT TL_WRD_OUT TL_DTA_OUT TL_DD_CMND TL_SET_RECV TL_SET_SEND TL_SET_RTRY TL_RTN_RSLT TL_FETCH_LC TL_SEND_NLM TL_SET_TIME ;TST entry for sending NAD ;TST entry for variable opns ;Fetch byte from transporter ;Fetch word from transporter ;Fetch string from transporter ;Put byte into transporter ;Put word into transporter ;Put data into transporter ;Execute transporter command ;Setup message receive ;Do message transmission ;Do a command retry ;Return command result ;Fetch long command ;Send Name Lookup message ;Timeout setup « ( r • « END I t t I f • • • t { • ( ( ( c • ( f ( • • The IBM Personal Computer MACRO Assembler 01-14-84 PAGE Symbols-I t N a I • • " I • :( e fI1 COMPARE. . • • • • • • • • • DISABLE. • • • ••• ENABLE • ENTER. • EX IT • • • " EYE. • " Q A ~ .. u u • c 000F 0003 0003 0012 000E, 012101 001l. 0002 • • FILLIT FIV. • • GEN_START. LOG.. • • • MOVEB. • • • • • • • • • • • MOVEONE. • • • • • • • • RESTORE. • SCANB. • SELEX IT. SELliEST. SELSAVE. SIVa • • START. STATUS • TENTER TEX IT. TIME • • TRACE. • • o IZI o i.::: 0005 000F 000E 000l 0012 121002 000D 0018 0003 001A 0001 001213 0002 012101. 0009 f Structures and records: N a m e CCBLK. • • • CC_CMND. RRA. • • SOCK • • • • • • • • CC_DATR. • • • • • • • • D(~Tl_ • c • Q CONLN. DI--lOST. CRQE • • USE. • NAD. • LEN .... CMND • CRQI···I • • (~ST • DSC. • 1:11 A • .. " .. .. Q II .. .. II II II a • A • .. a • • • • • • •• •••• " n III U "" AN" .. '" Q II .. .. BOT. • • • ECL • • .. • END_ T(JJ:f N _ ~ • U • III U. iii it at N .. .. Width Shift # I 000C 0000 0002 0004 012106 0008 000A 000B 0008 000121 001211 012102 001214 0008 01210121 12101211 001212 0004 001216 12104121 1211210121 001218 01211219 t fields Width IVlask. ( I 12101214 121005 00l.A • The IBM Personal Computer MACRO Assembler 01-14-84 •• c . " • I EC FLG • . TReE • • • COLD • EC_TRM • • MAX. • • • !\IEXT • • • DI R. • !\lAM. • • SERV • EC_ATRU. • EC_ATRS. EC_ATRL. • EC._ TBI • TL TMC~{ • • TL TMRS • • KEEPOUT • . INTDFR DOSDKD DOSDKS DDRH • DDRHS. TCKD • • • TCKS • Lf • 01 NEAI~ Number l..C_FETCi·-l LC. U::_ I NT_NLM • L.C_.. RCV __ CMND. :( IlA • L NEAI~ L NEAR L NEAR L NEAR L NEAR L NEAR 0075 0079 04':3B 04Bl 04B6 L NE~",li 047:".5 NEAR 047B SUGOK. • L L NEAI~ 0451 8UGHTY " L NEAR 04·65 NEAR SUGTI~M • • • • NlJll1bel'~ NlJfI1bel'~ 046C 0001 0000 • L NEAR L NEAR 0248 L NEAR 0E~6:1 L • TBINT(~$. TENV$. • T I IYILP.. • T I tr1L.PtZI • TII'r'ILP:l .. • • • 0.:::~0A PAGE Symb.:.ls-4 fExt el'" 1"1 a 1 Ext et"Y'la 1 PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE ( c, c, External Ext el'~Y'la J. c Extet~Y'lal Ext (o'.?n'·la]. Extel'~l"Ial PC_CODE PC_CODE PC_CODE I PC_DATA PC_DATA Global PC_DATA !3lobal Extet~l"Ia PC - CODE PC_CODE PC_CODE PC_CODE PC_CODE PC._CODE PC_CODE PC_CODE PC_CODE PC __ CODE PC_CODE PC_CODE PC._CODE PC __ CODE PC_CODE PC_CODE PC_CODE PC._CODE PC_CODE PC._CODE PC_CODE PC,._CODE PC __ CODE PC_CODE PC_CODE I 1 (' I,' I I • ( f- The IBM Personal Computer MACRO Assembler 1211-14-84 TIIVIL.PP " TIMOUT . TJMOUX . TllvlXIT TL$. TL._BYT_IN • • TL. __ 8YT _OUT • TL_DO_CMND ."...... TL_DTA_IN. • • • •••••• TL._DTA_DUT ......... . TL_FETCH_IC. • • • • • " TL_FETCH_LC. • • • • " • • • TL._INT_LCR • TL __ INT._LCT .. TL __ I NT _N~~D • • "OI .. ,~ ... .UP n.IIMa II.un ... n f • • TL_INT._RSL T .. TL._INT_TIME • • TL._ I I\no_lNA IT.. • TL_OUTA. • • • • • TL.._I~CV _ I CS .... TL_RCV_NLM .. .. • .. TL_RTN_RSLT.. TL._SET _. eTR .. TL_ SET . ,)~ECV. TL_SET_RTRY. TL._SET._.SEND. TI.__ BET _.TIME. TL_SET_TOPN. TL._WRD_IN. • TL_WRD_OUT TMEOK.. • TMEST. • TRACE$ • TRt:JOK. TRGFHY TI~GTIVIE n .. • .. • • • • • • .. • • • • • p a '. . . . TFmTf'lIF .. TRIV!GD. THMN~m • .. TF~MNLM 'rHMr~py " .. TT " " TTBGN. ( • • . " . . .. .. • • ••••••• TTEND. .. $$DIR. " $$N('=lf'1!. • $$NEXT • $$SE:RV .. $ALLNAD.. " $~:')TRNRI't1. • v(':~ROP.. $C{:,~LLC~~. $C~1LLCB. " " " " .. • .. .. • .. L L L L NEAR NEAR NEAR NEAR 121211 121218 NUfl1bet~ NEAR NEAR NEAR 01211211 IZJI2I2C 1211211218 1211214:3 12112198 12112185 121121121121 121393 12143::; IZI LtC4 121121121121 IZl56F 12134D 01EE 0121121121 N N N N N L N L L L L L L L L PROC PROC PROC PRoe NEAI~ 1211212L~ L.. 01210121 1211211210 029121 121514 121000 I2II21AB 121121 FE N NEAR NEAR PROC PROC PROC PROC NEAR PROC PROC NEAR PROC N I:':O~~OC 12I12111~ L N N N N L N N L PI~OC NEAR PROC NEAR NEAR NEAR NEAr~ L NEAR L NE~~R ".U"_" I2Ic~ 1 E 0i::~3A 12I14·B 0121EE 0039 017C 121167 NlJmber~ 01211211 L NEAR IZl4EIZI L NEAR 121 4· FIZI L NEAR 1214F7 L NEAR 0502 L 12112114 008121 L 0014 12112158 12112144 L 121014 L 12112114 006C L Dwmm 1211211214 E BYTE 012108 r" BYTE 121 rllA 8 L 121014 121094 NlJmbet~ 001218 Number 12101218 Numbet~ 001214 NIJrt1bel"~ 121 121 121 A Nl.\ff1bet~ 0121FF Number 121121121121 Number 12112123 Nml1bet~ 01211B PAGE Symbols-5 PC_.CODE PC . _CODE PC_CODE PC._CODE PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE { Global Global Global Global Global Length Length Length Length Length =I2II21I21D =12I00F =121042 =012113 =12112113 ( Extet~l"laJ. PC_CODE Global PC_CODE PC_CODE Length =121181 PC_CODE PC_CODE PC_.CODE Extet~l"laJ. PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE PC_CODE PC __ CODE PC_CODE PC_CODE PC_CODE PC._CODE PC._CODE PC __ CODE PC_DATA PC_DATA !=')C_DATA PC_DAHi PC_DF-iTA PC_DATA PC_DATA PC_DATA Global Length Global Length Length =12101218 Global Length Glclbal Global LeY',gth Global Lel"lgth Global G l.:.ba I =12111213 =008F =12112188 =012118 :::::121145 Lel"lgt h :::: 00 121 t:) LeI"!!;! t h =12101 c: ( :( Globf.lll Glc.b,al Global Global Global Global • ( t • • • t. « • , • The IBM Personal Computer MACRO Assembler 01-14-84 • • ( Symbols'-6 ( SCALLDI . . . SCALL.DS. .. $CALLEM. • $C~1LLK'~. • 'tlCALL.TI'{. " $CAL.LTIYl. " SCAL.l..TP.. • SCLINT • .. 't;CONS. • .. SCONSPT • • $CTLGO .. • ~pCTL IS • • SCTLRP " $DIINT SDTAGO • $D1'AIS • $DTALC " $DTAND • SDTANL • .. SDTARP " SECHO. • SENDRCV. '$;EI\IINT • SFALSE::: " SINITT • $INITTA .. SINT$. " SLCABT " SLC~=lOI-{ .. " Ntlfllber~ • • Numbet" • • Nl.lfl1bel~ Numbet~ NUl'llbet~ Numbet~ Numbet~ .. Numbet~ Numbet~ Numbet~ • Numbet~ • Nt.lmbet~ Number NI.lrilbel'~ Numbet~ NI.lfl1bel~ • ..... .. • • • Al ias Numbet' Numbet~ • Al iias NUn1bet~ Numbel'" Ntlmbe'r~ Nl.\mbel'~ Nl.Il'llbet~ Numbel~ NI.\rnbel'~ NUl'l1ber~ •• _ .. "",n" .. ,,11 • " • .. • " " .. • .. • .. " .. • •• • • • .. SLCM~=lXL. • PAGE 'iiLCNDP .. SLCOPN • SIYlAXDLV. SMAXMSG. SMAXRTV. SMAXTBD" SMAXWTE. $MND00 • $IYlNDIZl1 • $IVINDI2IE: • $!vIND03 • $MNDIZI4 " ~;IYlNDIZI5 • $\vINDIZI6 .. $!''lNTIZlI(~ • $MNTI2I1. • S~'lNTIZl :llll. $MNTIZI1,l. SIYlNTIZI1 i:;:. $MNT0;;:: • $!YINT0:3 " $MNTIZI4 .. • .. .. .. • .. .. .. .. • " • Numbet' Al ias Al ias Alias Number" Numbet" NUfl1bet~ Numbet" • • .. • • • • Numbet~ Nl.ll'llber Number " Numbet~ .. Number Number Number • Nl.lmbel'~ Nt\mbel'~ • • Numbet~ • NUl'l1bet~ N 1.lm bel''' • • Nl.lt'I1bet~ • Nl.lmbel'~ Number" NUl'l1bel~ Numbel'~ $MNT!Z16 " " • • ~H'i\NT07 • • • » • • I\lumber Number" 0066 0021 000A 0034 001C 0067 0001 0i:::4D 008121 0040 0000 IZIIZl04 01Z103 024C 121002 0004 $MAXTBD 1211Z100 12101 E: $MAXTBD 0002 001121 12I24E 0001 121020 121100 00CD 00FF 0000 SMAXTBD $FAL.SE STRUE 7FFF 012166 0010 0211 1Z100A 0001 0009 000A 000B 000C 001.1 0013 0002 0003 0010 0012 0014 0004 121005 12101216 121007 012108 01210D ( c t I f ( '. \ I • • • • The IBM Personal Computer MACRO Rssembler 01-14-84 SIVlNT08 • Numbel'~ • Numbel'>' $tr1NTll~'3 jf;\v! T n f.m .. • . $\YITDEL. .. • .. Numbet~ • Numbel'~ • Numbet~ SN~mm\ ( f • !t'NAIVlEL.N.. ~;Nl...nNY .. $!\IL.BYE <,f;NLDNY S f\,' LD!31-\ • NI.lmbet~ Numbel'~ Nurtlbel'~ Number $NLHI .... Numbet~ SNLIDN Number $!\lU.JHO .. SNLWHR .. 1;ONE u • S[)PCNE • ~;OP I NL .. SOPINP u SOPTCL • SOPTDF • '$;(]PTNG $OPTRB .. S(JPTTr·-: " SOPTTCJ .. SP82EML. $P8;:::ENB.. SPBi:=.:ECl I .. SP82CJP0. SPBi20P:l. .. Nurt1bet~ SP82RIS. '. Numbel"~ .. NlJmber~ Number Nurt1bel"~ u • • • • • • •• •• • .. NlJmber~ .. Number . Numbet~ Numbet~ • • Numbel'~ • NUfl1bet~ • • • • • Numbel'~ Numbel'~ Number Numbel"~ Numbel'~ Numbel'~ • • • • • Numbel'~ • • • • • • Number • • • • • • • NUl'l1bet~ • Numbel'" Nurl1bet" Number SRQD8E • SRQENT • SHQFUL • $~~QIVIT .. • $1~QU8E:::E. • .. • • • $RGH.JSER. !f;SEND. • .. ........ • • • • • • .. ~HWU8E:L • .. SRQCSZE. $RGlU8E I. • Number~ SPBi.:::n'IL • • SPROID .. • SRDRAM .. • SRDRAIVI L • SRDSTAT. • $SKNUM • S8NDNAD. $Sm\RC .. • • Numbel'~ • u • .. .. • • • • • Numbel'~ Numbel"~ Nl.lfIlbel'~ NurI1be!'~ Numbe!'" NI.lmbel'~ Number Number Numbe\'~ Number SSETUP • • • u .. • • NlJmbe\'~ Numbel'~ NWl1ber $SOKRL .. Numbel'~ SSO!-\r~M NUfl1bel'~ $SOKTD $SOH,TM $8T1NT $TACCB • • .. • " Numbel'~ 1\1I.lfIl be r NI.lmbel'~ Numbe,," 01210E 01210F 0003 0000 12104121 000A 0001 00FF 00FF 121001 121000 0010 0002 0003 0001 121 01Z1 0 0001 0121FF 0007 0004 0005 0002 012106 0003 0005 00FA 0020 00i20 0021 000B 001211 01FE 0249 0248 02'+8 0004 0080 0001 00FF 0000 0080 0010 121020 0040 0040 00F0 0060 00CF 00B0 00A0 012180 00BI2I 0080 024F 05C6 PAGE 8yrnbols-7 ( ( f ( f ( • • • The IBM Personal Computer MACRO Assembler 01-14-84 c: c STRDTL. • • STARR. • • • • ••• STBINIT • • • • • • • • • • • • • STBINTI. • • • • • • •• STBNOTK. • • • • • • • • • • • • STBRENB. •••••••••• '-*nBI~TCK. ••• ••• STICKMX. • • •••••••• STRAPFL. • • • • • • • • • • • • STRCCON. •••••••••• STRCDSK. STRCHRD. .. $TRCL.n • STRDL. • STREA. • STREDY • $TRENB .. " .. u .. Q • snus .... I I I I STRIT.. $TRNG. S·fRNR. STI=-!NS. ~;TROK. « • • c Numbet~ NUfl1bet~ Numbel'~ Numbet~ Number Numbet~ Numbet~ Numbel'~ Numbet~ Number NUfl1bet~ NUfl1bet~ Numbew Numbet~ • • • • NUfl1bet~ Number Numbel'~ • • • • • • • • " Numbel'~ Nl,.\mbet~ Numbel'~ • • • • • • • • • • 00FF 0000 01Z11Z11 0001 121248 o i::: 4 A 024B 024'3 0000 00Cl 00A8 00AA 00B7 01Z1ED 00B7 00B'3 00C6 0132 00CE, 00C8 00D9 0149 00D9 00DB 00E8 121161 00E8 IZl0EA 00F7 NUI'''lbel'~ Numbel'~ Numbel'~ • Numbel'~ Numbel'~ NUfl1bet~ L. E L • L L E L L L .. • E • • • • L L L • p • • • • • " " n E L » n ??0013 • Numbet~ Nl..lmbel'~ • " u " " • u • 05D6 05D;::: IZl010 008121 12I0DF 0040 0020 000A 0001 000i=: 12101211 0004 0083 0081 0tZIC0 0080 0020 0084 0086 0080 0085 0082 000121 0010 00FE 007F NUfllbel'~ L L ?'?000F • ?'?0011Zl ??0IZIj,:t Numbet~ Nurnbel'~ "?0IZJ0121 • • • Numbet~ Numbet~ Nl.lrtlbel'~ STRPND STRSS. STRST. • STRSU. • • STRUE. • • SVIR_DRVla SWHClf!'-)M I • SWf~CTRH. • '$WRCTRL. • $WRRAIVI • SWRSTBE. • 'PIERO. • • ??etlZl01 ??001Z12 ? 70003 7 ~) 001Z1i!. ??0005 771ZttZI06 ? '? 121007 ??01Z11Z18 ? '?IZIIZI0'3 ';1 ? 1Zl01Z1~~ ? ? IZIIZltZlB ??IZl0IZ1C ? ?0lZl0D ? ?IZlIZIIZlE Numbet~ L L. E NEAR WORD BYTE BYTE NEAR WORD BYTE BYTE NEAR WORD BYTE BYTE NEAR WORD BYTE BYTE NEAR WORD BYTE BYTE PAGE Symbols-8 •• •• .( ( PC._CODE PC_DATA PC_DAHi PC_DATA PC_CODE PC_DATA PC_DATA PC_DATA PC_CODE PC __ DATA PC_DATA PC_DATA PC_CODE PC_.. DATA PC_DATA PC_DATA PC._CODE PC_DATA PC._DATA PC._DATA • f • ( ( The IBM Personal Computer MACRO Assembler 01-14-84 • , • « ?70014 . ??12HZI15 . 7 ':)012116 . ?70017 " ';>':10018 " ? ? IZt01 9 . • " . . 7?001A • . . • • . ??IZl01B . ??001C " 7? 1211211 D ? 701211E . ??01ZtlF. ? 701212121 .. ??IZt0E~1 . II ??1ZI02c: II II II ??0023 .. 77012124 ??0025 If .. II ?70025 • ?70027 • " • • . ? ?0IZtE~B • I ??00i.:::'3 ??002A ??01Zl2B ??0IZti.::C ?7002D ??00E:E ??002F ?? 01213121 . ?'?003i.~ .. • • • • • • • • . . • " D II ??0033 • . ?701Zt34 • ??0035 . • ( « ( 770035 ?70037 ??0038 ??0039 ??003A ??01Z13B ??0IZt3C 7?003D 77003E 7?003F 7?004121 7?0041 ??0042 ??0043 • . . » • • • • • • • • • Wat~rli l~lg Severe E'r~t~C:lrs El'~l'~Ot~S III • . • • U " L NEAR L WORD L BYTE F BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE F BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L BYTE E BYTE L NEAR L WORD L.. BYTE E BYTE 01ED 00F7 00F':~ 0105 0204· 0106 01121B 0115 02A6 0115 0117 0124 03'+C 0124 01i:::6 121133 0363 0135 0142 03A9 01.42 0144· QH51 0434 0151. 01.53 0160 0'+4B 0150 0162 016E 04DA 016E 0170 017C 052A 017C IZl17E 01BB 056E 01BB 01BD 019A 0~;B5 019A 019C 01AB PAGE PC._CODE PC_DATA PC_Df-HA PC_DATA PC_.CODE PC_DATA PC_DATA PC_mHA PC_CODE PC_DATA PC_DATA Symbols-9 c· PC_D~nA PC_CODE PC_DATA PC_DATA PC .._DATA PC_CODE PC_DATA PC_DATA PC_DATA PC_CODE PC_DATA PC_.DATA PC_DATA PC_CODE PC_DATA PC_DATA PC_.. DATA PC_CODE PC_DATA PC_DATA PC_DATA PC_CODE PC_DATA PC_. DATA PC_DATA PC_CODE PC_DATA PC_DAH·) PC_DATA PC_CODE PC_DATA PC_DATA PC_DATA PC_CODE PC._DATA PC_DATA PC_DATA t ( .( ( f •• •
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Create Date : 2017:11:16 15:56:54-08:00 Modify Date : 2017:11:16 16:18:49-08:00 Metadata Date : 2017:11:16 16:18:49-08:00 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Format : application/pdf Document ID : uuid:7da320a8-4851-eb47-b9ea-644fff167d65 Instance ID : uuid:0196b389-5745-4446-8313-8d02a48d3efc Page Layout : SinglePage Page Mode : UseNone Page Count : 156EXIF Metadata provided by EXIF.tools