IMD 1.16: 1/09/2008 12:32:27 84-93460-02 f46002 system generation diskette os4(G410) 10-9-87    @0{)vvЀЀsQpk)p " }fA __M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MB087101209591497871012095914 871012095914 0F46002 VOLOS4 SYS GENERATION DISKETTE (G410)   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_M@qGyy GGG`HX@ b G`^Y e GQ @@p@987 85P@ G:پN 8)0. * C'xC# b# }BK, @0DAJL w+™ЀЀΖQA1"   i  ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G7H@pܾrCHC C GTq` Lg gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYSG @ @G6BDāCGDĀ# BC @E OBOVicEdDanoP8){ @ƤI@0@¡Ǥ ǣ)@IЀЀ؀QA1*@ ΍╢@+kUŒk5mEEEBE5E3--E2E1PIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJBUFSEM:EBASEM:E ZBSEM:E JE:HIGHS E:HIGHO E:HIGHL JE:SYSFLGE:ERRTABE:BUFSEMJE:BASEM E:ZBSEM E:CIBHD JE:LL2 E:LL1 E:EXEC JE:SLFP E:CIFP E:PRINT JE:SLU E:RCI E:GFN JE:ICH E:ISM E:MSG JE:IJCL E:JCL E:UF JE:SF E:UATP E:UAT JE:LOW E:HIGH E:ERR JE:LDR E:LOAD E:MONE JE:MON O0SEGMENTBLANK TABLE: o  KLOAD:B EXEC:E PRINT:E KERRTAB:ESLFP:E CIFP:E KF:SLU RCI:E GFN:E KICH:E ISM:E MSG:E KIJCL:E JCL:E UF:E KSF:E UATP: UAT:OS KLDR:E LOAD:E MONE:E KMON:E FM:SVC NR:SL CIB: im MACRO (F510) @ig$g#g"g!g ggtgtgtgggt gggggggggtgtgtLDg LD g Z1g lg dg dgd gtggggttttttt t t t ttttikg>i:ikg>i:ikg>i:m*** OS4SYS.LIB - REV F3m00 ***JOS4ERLC:OS4ERCD:EXEC:E JIJCL:E LOAD:E MONE:E JMON:E O0SEGMENTBLANK OS4TABL:o JKF:CONN I:IO E:HIGHS KE:HIGHO E:HIGHL JCL:E KF:SLU  SF:E E:MSG KE:LDR E:LL2 E:LL1 KE:LOW E:HIGH E:EXEC KE:ERR im MACRO (F510) @igEXEC:: SYSggLD1gƞg þmM)f E) ]]ⴤB1C: :t  ̃ !_ pC PE` C    p0! pCPEst!;t-ttLDttt t t t g bIwC C @U or llkKB́ Qȃ_Aـ ԄQ`( QBTKCBǞ H!CE pC ùC @KP@E O QF@ +z CIg ƀv:#  [Gtt t tOC  EXEC:: NOT FOUND  B AD TYPE CODE PROGRAM T OO LARGE LOAD ERROR  NO EXECUTION ADDRESS  UAT WIPED OUT SYSTEM  EXCEPTION XXXX OCCURRE D AT LOCATION XXXX%I @2NK0M9K+U'# JMSG:E O0SEGMENTBLANK OS4: o =KE:SLU I:IO im MACRO (F510) @ig /p(p(C @`p D+E` B@ C @/ph@ph ?ph@kphE@ /p p?p(+p(# OCtSLJPRINT:E O0SEGMENTBLANK OS4: o 1KR:SIG R:BGIN F:CONN KR:WAIT PRI:SMA4PRNTDB: KNO:ABORTim MACRO (F510) @ig:t @`` D@1HNF LODL)OB`H:*) # `@:t(xt tOVSTJLDR:E O0SEGMENTBLANK OS4: o 4KI:LOAD E:HIGHL E:HIGH im MACRO (F510) @ig @pJp@`H@Bƒ C ADEFGH F HAEG@h @ 6@6@6@6I pB# ttJPRINT: O0SEGMENTBLANK OS4: o KR:END R:SIG I:IO KF:CFNO E:UATP PRI:SMA4im MACRO (F510) @iZPPOBgƻ: C @@ B+{āc  0 0$::   :: w 1:  1: Z:t:ZPtZPJNO:ABORTERRTAB:EI:IOER O0SEGMENTBLANK OS4: OTABLE: o ]KI:IO R:ISIG R:IWAI KI:ERS3 I:ERS2 I:ERTB im MACRO (F510) @ig ׀!ӄҢҢ̀ @QD@QBkz A@ N JÀA+kUǺ :d:d:d  y X R C x r ck 4  >ttttthdddddigOCOCOC CRX> = ihg ABCD EFG(H6IBJKKUL]MdNlOvPQRSTUVWXYZ  NOT READY WRITE PRO TECT TIME OUT POWER FAIL  VOLUME NOT ON U NIT  VOLUME NOT FOUND   LOGICAL UNIT NOT R ELEASED  BAD CHECK SUM  UNASSIGNED DEVICE L OGICAL UNIT NOT IN UAT END OF MEDIA  HARDWAR E ERROR  ILLEGAL OPERA TION NON-EXISTANT MEMO RY ADDR  ADDR IN SYSTE M MEMORY DIRECTORY FUL L  DISK NOT LABELED  FILE ADDR OV ILLEGAL AU  AU NOT FOUND  W RITE DIRECT EOF  FILE  NOT EXTENDABLE ILLEGAL FILE ADDR ALLOCATION  TABLE ERROR  SYSTEM US AGE ONLY BAD FCB CHAIN FILE OPEN FILE NOT  OPEN ILLEGAL FILE POIN TER  UNIT NOT GIVEN  UNASSIGNED FCB  BUFFE R HAS WRITE PENDING D ISK FULL RTX ERROR UNDEFINED ERRORJI:ABRT I:DOSV I:DOER O0SEGMENTBLANK OS4: o 8KI:ECTT E:MONE I:ERS3 KI:ERS2 I:ERS1 R:ISIG KR:IWAI I:ERTB  im MACRO (F510) @ig GG GBp aFbDcE /ph@ph?ph@kph# gFaDbEc# g# ttttttttJR:XDOR O0SEGMENTBLANK OS4: o CKI:ABRT I:ERTB I:ERS3 KI:ERS2 I:ERS1 R:ISIG KR:IWAI im MACRO (F510) @ig /ph@ph/ph@ph ?ph@kph?ph@kph Ģ/ph@ ph`pHK Q KRQH ?ph@kph`pC# tttttttJE:RTXEX E:USTEX E:ST0EX JE:DOREX E:STKSV E:STKTP JE:MEMTP E:USRTP E:CNMTP JE:AERTP E:UINTP O0SEGMENTBLANK OS4: o 3KR:XDOR E:MONE OS4ERLC:KOS4ERCD:im MACRO (F510) @igg Ÿǟg žǜgœǙgšǖg˜Ǔg–ǐg”Ǎ p+gLJgc # gttttJTDB ECB R:INIT O0SEGMENTBLANK OS4TABL:OTABLE: o HKRTX: E:RTXEX E:USTEX KE:ST0EX E:DOREX E:STKSV KE:STKTP E:MEMTP E:USRTP KE:CNMTP E:AERTP E:UINTP KUAT:OS E:INIT FPSIZE: KEMPSIZE:EMP: FPOOL: NR:MAPDB R:MBXL R:SL NR:ECBL R:TDBL im MACRO (F510) @iig ttii gkdt iigkn0t lllttlii't ii(tii)t ii*tii+t ii,tii-tii/tii0tii1tii2tiJI:ERTD O0SEGMENTBLANK OS4TABL:OTABLE: o H KI:IOER NR:TDBL im MACRO (F510) @iigkdHtiHJPRI:SMA4PRNTDB: O0SEGMENTBLANK OS4TABL:OTABLE: o HKPRINT: PRI:MAX NR:SL R:TDBL im MACRO (F510) @iigkdHtiHi ktgt>IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII OS4GEN.JCL --- ASSEMBLE OS4CONFIG (93461-70-G400) ALL SOURCE AND OBJECT FILES ASSUMED TO BE ON UF CREATES LISTING ON LO NOTE: THIS FILE ASSUMES THAT YOU HAVE ALREADY CREATED YOUR OWN CONFIGURATION R EQUIREMENT IN OS4CONFIG.ASM BY COPYING/EDITING ONE OF THE FOLLOWING: OS4::CONFIG.ASM FOR NM4/DC5 WITH AUTO:CONFIGURE ON AND DISKS= HCDC(DH00 ON :15), MCDC(DM00 ON :14)  WTC(DH10 ON :14), TCU(DH20 ON :14) OS4S:CONFIG.ASM FOR SCOUT WINCHESTER (DH00 ON :15) IF YOU HAVE NOT GENERATED AN OS4CONFIG.ASM, STOP NOW! PAUSE TYPE C TO CONTINUE, X TO STOP MACRO OS4CONFIG(D=SF/GEN+SF/IOS+SF/IOSD+SF/MCSDIBCIB,L=) LINK NEW SYSTEM? IF SYSTEM IS ON FLOPPIES - TYPE X, THEN DO OS4GENFLINK.JCL  IF SYSTEM IS NOT ON FLOPPIES - TYPE C AND CONTINUE NO LINK -  TYPE X PAUSE DO OS4GENLINK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII OS4GENLINK.JCL --- LINK OS4 SYSTEM (93460-71-G400) ALL OBJECT FILES ASSUMED TO BE ON UF  ALL LIBRARY FILES ASSUMED TO BE ON SF CREATES BINARY AND MAP ON UF PAUSES TO CREATE A NEW OS::.SYS ASSIGN X4=LO ASSIGN LO=OS4GEN.MAP LINK OS4GEN=SF/OS4SYS+OS4CONFIG+SF/OS4AUX+SF/MCS ASSIGN LO=X4 //COPY NEW::.SYS=SF/BOOT3.BIN+OS4GEN.BIN REPLACE OS::.SYS WITH NEW::.SYS ? TYPE X IF NO TYPE C IF YES PAUSE //COPY OS::.SYS=NEW::.SYS IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII/ OS4GENFLINK.JCL --- LINK OS4 SYSTEM ON FLOPPIES (93461-71-G400) / ALL OBJECT & LIBRARY FILES ASSUMED TO BE ON UF / CREATES .BIN AND .MAP ON UF / PAUSES TO CREATE A NEW OS::.SYS / /JOB / /DISMOUNT SF / / INSERT LINKER FLOPPY (84-93460-04) INTO SF UNIT / AND RE-ASSIGN LOGICAL UNITS /PAUSE --- THEN TYPE 'C' TO CONTINUE /MOUNT SF / /LINK OS4GEN=OS4SYS+OS4CONFIG+OS4AUX /DISMOUNT SF / / RE-INSERT SYSTEM FLOPPY INTO SF UNIT / AND RE-ASSIGN LOGICAL UNITS /PAUSE --- THEN TYPE 'C' TO CONTINUE /MOUNT SF / / CREATE A NEW OS::.SYS? /PAUSE --- AND TYPE 'C', 'X' OTHERWISE. //COPY SF.OS::.SYS=BOOT3.BIN+OS4GEN.BIN EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII JE:GFN O0SEGMENTBLANK OS4: o KGFN:E im MACRO (F530) @igtJGFN:E O0SEGMENTBLANK OS4: o KF:CONN E:UF ISM:E KC:HEAD F:SLU im MACRO (F530) @i I1ECNBCO# g $'/p(p(` D/ph @ph)@BCOD6D Z `+ʀP COB BT€RQ EV AQ mWG C W90.r@ VBCOOVttt 00ߞހP D  /NBy M  `+f ,NQ (Vy ) 5` @P  `+ON sVWNy%ZrY['O CP  /NM D%Y' B4BC] Ҁ O? ?ph@kphD?p( +p(# r pN N igIRN 1N1  # tJE:ISM O0SEGMENTBLANK OS4: o KISM:E im MACRO (F530) @igtJISM:E O0SEGMENTBLANK OS4: o hKCIBP: SBP: ICH:A  im MACRO (F530) @ig /p(p(` BDCEA ׂI `+C Uф@z 0 :D A FE [ _ E :E ED DAQ\DQZBN!BB  @BCN1@CA,D,E, @k%'jACN€M DB BEB CA?p(+p(# t ttJE:ICH O0SEGMENTBLANK OS4: o KICH:E im MACRO (F530) @igtJICH:A  ICH:E O0SEGMENTBLANK OS4: o ?KCIBUF: CIAC: SBP: im MACRO (F530) @ig/p(p(` g /p(p( MNQ@ ϪSW /p(p(Nq%  ' z ` ?p(+p(M? p(+p(# '?p(+p(L 0ntttJSBP: O0SEGMENTBLANK OS4: o KCIBP: im MACRO (F530) @ig MN1EMM M1ÉB I@@Mǁ# tJE:RCI O0SEGMENTBLANK OS4: o KRCI:E im MACRO (F530) @igtJRCI:E LCIBUF:  CIAC: CIBP: LSLFP:E CIFP:E O0SEGMENTBLANK OS4: o KI:IO F:SLU im MACRO (F530) @ig 1 æ := :/ph@ph ?ph@kphF:E ª # @SAyVCIt SLCIM VSLOShhhh h@JCIBUF: CIAC: CIBP: O0SEGMENTBLANK OS4: o im MACRO (F530) @igggJE:UF E:SF O0SEGMENTBLANK OS4: o KUF:E SF:E im MACRO (F530) @iggttJUF:E SF:E O0SEGMENTBLANK OS4: o KR:EX F:SLU im MACRO (F530) @igg Ǡ1DSB# :"SFUFtJE:SLU O0SEGMENTBLANK OS4: o KF:SLU im MACRO (F530) @igtJE:MON O0SEGMENTBLANK  OS4: o KR:END im MACRO (F530) @ig:JFM:SVC O0SEGMENTBLANK oKR:SATD R:GATD F:DMNT KF:MONT F:CONN F:DELE KF:CREA im MACRO (F530) @gJF:CREA O0SEGMENTBLANK SFM: o pKR:GATD F:RTFN F:EXITS KF:INITS F:CKMT F:MOUNT KF:DFNO F:BAX F:INFO KF:RDW F:SVU F:GBS KR:GVSH F:GTAU F:CFEN KF:GTFN F:GFCB F:RDIB KF:GDIB F:INB F:ADE KF:SND im MACRO (F530) @ig ϤA  FDZ YBZ  Z B ą   Y H H H @   DggZAZg Zuttt ttttttt tt tttt ttt ttJF:DELE O0SEGMENTBLANK SFM: o KF:EXITS F:INITS F:DUAT KF:MOUNT F:DFNO F:RTAU KF:INFO F:BAX F:AULS KF:SFAU F:CRAU F:RBF KF:RDW F:GFCB F:RDIB KF:GDIB R:GVSH F:RTFN KF:GBS F:CFEN F:FOP KF:SND F:SVU im MACRO (F530) @ig ѤA  ʄZH ĞƞΞ ЀWX AZ  TZ T U VETi`Z Ӏ`Z͠AZ QZgZAsttt tttttt t tttt ttt ttttttJF:CFNO F:CONN O0SEGMENTBLANK SFM: o _KF:EXITS F:INITS F:CKMT KF:MOUNT F:DFNO F:SLUS KF:GLUS F:RDIB F:GDIB KF:SFC F:RLU R:GVSH KF:SND F:SVU F:GFCB MFM:SFM im MACRO (F530) @ig ͠Y ABS A  ZZߠYۀAB ā A@Ѐ ĀBĉZ Ċ¨ć§ā@ giZAZwg ABZZCANtttt ttttt tt t uttt JF:DUAT FLIST F:DMOUNTJF:MOUNT F:DMNT F:MONT O0SEGMENTBLANK SFM: o 0KI:IO F:EXITS F:INITS KF:CKMT B:HEAD F:BAX KF:INFO F:GLST F:RLST KF:SVU F:SLUS F:GLUS KF:RDIB F:GDIB F:RLU1 KF:AULS F:GBS F:RBF KI:TCU im MACRO (F530) @ifggg *B1:A  QB1NBɀ 6[ 1 gttt tttt sqowlg ! _ "* H1K QJGBĀZ B B C @C @ pā_B __ __6  1  B* pE/ p p_/p p @*31*_1A&# /p p@pKp@gtg *B1RBJQD C ggt t t t t tg N OQJ?QC @ QB[TP G ` QRS GGG _\ ºG!ac B BR IG*S F@ B, @ GBĝBR  IG SB # tttttt{tJF:CKMT O0SEGMENTBLANK SFM: o  im MACRO (F530) @ig Y 1C# MTJF:EXITS F:INITS O0SEGMENTBLANK SFM: o im MACRO (F530) @ig C @C @C @C @C @ `p@ FYcgB/p $p# JF:SVU F:SND F:SFC JF:RLU1 F:RLU F:GNE JF:GFCB F:FOP F:DFNO JF:ADE O0SEGMENTBLANK SFM: o KF:GDIB F:RDIB F:ADEX KF:INB F:SLU R:GVSH KR:BFLN R:ISIG R:IWAI KF:BAX F:RDW F:GBF KF:RBF F:GBS F:CRAU KF:AULS F:SFAU F:GCB im MACRO (F530) @ig  I[QbGWX Z/p(p(Y @IC @C U?p(+p( # URV_ S  R_ 3C# tttt t t tttt tgYIA@AĊ# g PB1LZĀ6P1PA# gƒċ# tg IGVWXWBG!  R]^TVC SS UR` `1 ^SB `G G! RBR$# # tt Ξgg Q;/ph@ph@(РP +?ph@kph P+ P6oP   @ 瞛Pvu  Ā  ΦQ/ph@ph  ?ph@kph ?ph@kph # ?ph@kphvtttZPMTtg  ZB+E(z(# g ^][` WXS SEI@ Z # Y\΀[ PW XG[ # I\ a`\+U*ZZ# ttt lt t g YB1Jy YQ^ \YQg!WXW XJS+XW7y B N OMƠQ ?K # }{y Bv N O7ӠQM I+9\Y\+\JR9P(P# JFM:SFM O0SEGMENTBLANK SFM: o KR:GATD F:BLOCK F:MOUNT KF:ERQ F:CEO3 F:CEOF KR:IWAI R:GVSH I:ECTT KF:WXFR F:WTWP F:UWFP KF:UPWP F:TRUN F:SFD KF:SFAU F:RXFR F:SCR KF:RMOV F:RLWP F:SLUS KF:RDIB F:INFO F:GTWP KF:GTFP F:LEGR F:GLUS KF:GDIB F:GCB F:RDW KF:RBW F:RBF F:GBS KF:GBF F:FCHK F:FAUS KF:EXTD F:EOFR F:DBF KF:DALC F:CRAU F:CPAU KF:CFEN F:CEOB F:BAX KF:AULS F:ADEX im MACRO (F530) @im*** SFM.LIB - REV G350 m *** g \F6\AB [ IZF cL\FXN9C  AIn////////// B[GZI # t"t$t A6AkDYLWXFXC  ///////eet WXADA ASO`N CZNZYN NYCYTڀ`LSt+tt(t#t tt tt XWFA  Z [NWOX I  ^G [NWOX WXQAPGAt%t A6QSÂYK> A>YQFXQfxtt aWX&A%EA [ SÂlYHAg YDfc#LWXā 5 A6ADYF  ////////222}}/ 1/ WXAPQB WXGA; A6XSÀYR SDAYA \Awt tDt(t#t.t)t-t!t t tt tGG n„WNXOAhPQf BbWX``G^AY \;[A6`SÀY RZRAHPPYAaA WFXFAAA@P> jttt &&WXY )C+ NOAWXA GA;SD ABf×E J EI\YSYZ Zt tt tt tG v2WXPQY )nB BWXB \B[rZE J EI\YSONeLDZttt(t#t `E`5 A6ALWXj F מ D SAGV WE [NO WXP [ I1/ WXWXLāt ҠA+! DSAG V NCWXM [ IA+WXN FрOF [WX EA;WXA Ă/ ttt(tt.Dt)LNO[5 FFA A6AAA` AA׀F̄F @BK@" @+ `  @6F@F@`` /AB`@ CV UF̈́F` ʀ6 AAA  A@(@( À# ‘D }ttt&t*t t,ttt't ޭqqA6B6D 6BπF ĠA A Z_Aפ`AS RF̄FN6@BK@" H @(_GBCA _@``EF D`@ 1`G CABŀ À@@`@!C `A F@F@ā ܉ ZL  Z__ttttt5JF:WXFR F:WTWP F:WMOV JF:UWRQ F:UWFP F:UPWP JF:TRUN F:SFD   F:SCR JF:RXFR F:RMOV F:RLWP JF:RAMV F:LEGR F:GTWP JF:GTFP F:FCHK F:FAUS JF:EXTD F:ERQ F:EOFR JF:DALC F:CPAU F:CEO3 JF:CEOF F:CEOB F:BLOCK JF:BLNK F:ADEX O0SEGMENTBLANK SFM: o KI:DOIO R:IWAI R:ISIG KF:SFAU F:RTFN F:RTAU KF:RBW F:INB F:INFO KF:GTFN F:GTAU F:RDIB KF:GDIB F:RBF F:GBS KF:RDW F:CRAU F:CFEN KF:BAX  F:AULS im MACRO (F530) @ig A_AVBVtttt  BV TBV UA__dc +*OW+NR TTOxCR_f UЀVŞH_BWt t t ;˄`_21s `A`'&  f_`_ A[   +@(R+@(@# QF*UR+UV ATVU #  )/ph@ph?ph@kphrt ttt g \Y/p(p(E%G @  }*19 ' ?p(+p(Y# g YDLPWX T]VB G S^YSBYDEQ` LPLπIY@SB I NZZI QE# g5SN# gPQg WXʸNO F # [|g TV]R]TSUR^S # ttirg Yx^A]AZ ؠQÈJ^* +DYY^yEDD Y]AZNW OXQEDZ င\\1g*\ "E8Y @Y]RVU  ǀWNXObttt tt |DZZIon DـDed ZπDZ%@AІ̆VUV # tttg NO@AGVA PÀYCY# g2V# g AVUT# g MB TUA/ąV # ttgA1 # gL# gANO# g  WPXQY)=EYPY # g NYR€YNN# g A+# tg  qSÒZNZ# g _@APOQ`H%} 'F +`HPu `@_P# g ZB+F C8# g AEYF@Y# g AWXĂ/ # g NVWXW# gYNY# gA+# tg YS@@YCYZBZ @GVWX@ Y# g Q# C @g Q# C A @\"\S@"VS O 6ĈEN 6ОEN 6Q `*%VB`H`H5Q `*%VBt`H`H5Q `%VA`HA`HA'kK* Q`V`H 6*%`H`H '. 5D@5c # JF:SFAU F:RTFN F:RTAU JF:SLUS F:RDIB F:INFO JF:INB F:GTFN F:GTAU JF:GLUS F:GDIB F:GCB JF:CRAU F:CFEN F:BAX JF:AULS F:AGTW O0SEGMENTBLANK SFM: o VKR:GTS  F:RDW F:GBS KF:RBF R:ISIG R:IWAI KR:BFLN im MACRO (F530) @ig S SRKRPQWSРB GVNOPSǀS P S # }ttg RBG NOS GS G !GVNO# }gS. Q# g  @5 7 GԠBG! S R/646sR/ph@ph S/ph@phR S= O=OVN2N? ph@kphS?ph@kphR +JzR G G! RSAJSҀRR   7# ?ph@kph?ph@kph# g  BG! ]^ # g I C U# g B+# g !+# g B SZR RS SB 9P FQƀVVUJ 1 NĀ9   `NW E 6i V  sĀS SB VNO  S[  E 1 NĀ # *|%AttJF:GBF O0SEGMENTBLANK  SFM: o KF:GSEC im MACRO (F530) @igQ Q # tJF:GBS O0SEGMENTBLANK SFM: o KF:GSEC F:IRBF F:RDS im MACRO (F530) @ig BQKQ# PP{tttJF:IRBF F:RBW F:RBF O0SEGMENTBLANK SFM: o /KR:IACB BUF:S1 R:ISIG KBUF:S2 BUF:CT B:HEAD KF:RLST F:GLST im MACRO (F530) @igQ QQgQ Qg Q ߘ Q+ K/1FǎÌNJw # ttttttttJF:IRBD F:RDW F:RBD O0SEGMENTBLANK SFM: o KF:IRBF F:WRS im MACRO (F530) @igQ QQgQ Qg PQ6PP# ttJF:DBF O0SEGMENTBLANK SFM: o KF:IRBD F:AQB B:HEAD KF:RLST F:GLST im MACRO (F530) @ig +1NA6Q Qp # tttttJF:GSEC F:AQB  F:CBA JF:WRS F:RDS F:RLST JF:GLST O0SEGMENTBLANK SFM: o KB:HEDS BUF:CT BUF:S2 KBUF:S1 B:HEAD R:IWAI KR:ISIG I:DOIO im MACRO (F530) @ig# ttg z*1]*BO NQ6J,! A Q+^^ QNOBA! # ttg G{ Q|{(( Ā  ? A  /6-6 C @Q# g)g )FP'FQDBL EDB G E LQDBL EPFFIćĈăąЄ# gz# g# ttttttJR:BFLN B:HEDS B:HEAD JBUF:CT BUF:S2 BUF:S1 O0SEGMENTBLANK TABLE: o KBUF:N NBUF:: BUF: im MACRO (F530) @iggggtglglJUAT:S O0SEGMENTBLANK TABLE: o KD:DH00 D:DM01 D:DF01 KI:IO D:TY00  D:TR00 KD:TP00 D:TK00 D:PR00 KD:PP00 D:LP00 D:DM00 KD:DF00 D:CR00 im MACRO (F530) @ig CRt LPt PPt PRtTKtTPtTRtTYtF0t F1tD0t D1tH0tJF:SLU I:SLU I:RET JI:STUR I:STU0 I:POWR JI:NEOB I:FINI I:WAIT JI:STUP I:DOIO I:IO O0SEGMENTBLANK IOS: o ,KI:ERS1 I:ERTB I:DOER KI:DOSV I:ABRT I:ECTT KR:SACT R:SPRI R:ISIG KR:GPR R:IWAI C:HEAD KI:WDT im MACRO (F530) @im*** IOS.LIB - REV F420 m ***g  C @C @C @C @C @C @ `p҄GI@DEF LA1MH F@6EQM@IG k F@6IM IāM/p $p# J ho6Mekk@6M_@6;Ztttt ttt @Р1MIA BC # ABx# gg !+@ D   # # U=+vUvg  BCF0  9FXB +  N1C 6C8F09C +g HF@6E,o# g # g BKQ\6ƀF I DL 1 N6H 1 N Bȉ@AH# g MCMC+CM # # gC+C # tt tt tg /ph@phC+Cq?ph@kph# ttg C6# 6B # # g 섁@ +k @1# t JI:INIT I:WDAC I:KWDT JI:LWDT R:RTCI I:DOGY JI:WDT O0SEGMENTBLANK IOS: OTABLE: o K+KR:WCP R:ITIC R:ISIG KR:IWAI C:HEAD I:POWR im MACRO (F530) @ifxgg  _H ܕ܄+Ϟ j@F@ `+11Xdtdtttdtdig>i1igg@dgp.i1g A s⑂@ @AF ## # tdddJI:ERS3 I:ERS2 I:ERS1 JI:ERTB O0SEGMENTBLANK TABLE: o im MACRO (F530) @iggggJI:DOER I:DOSV I:ABRT O0SEGMENTBLANK IOS: o im MACRO (F530) @iggg# JI:OVL O0SEGMENTBLANK IOS: o uKI:IO im MACRO (F530) @ig p`pA A bDBO Ϡ  1E O S p# G AE A@BF EG  HK 1 ETRIP E AO sO G @iNJK˜F C@@BF]GG@o FS#ab?O0SEGMENTBLANK IOS: o im MACRO (F530) @iJI:LOAD O0SEGMENTBLANK IOS: o KI:LDEXITI:LDINITI:LDMAINim MACRO (F530) @ig [IFF# tttJI:LD410SO0SEGMENTBLANK IOS: o KI:LDEXITI:LDINITI:LDMAINim MACRO (F530) @ig EJ C  C  C  C K EEEEtt HI [EE6€C E/E6J C ېEE 6C]CE E6C‰ĀKĀLāO FŽĀɀK ĀLāMĂFF_#  HIF3 6E EE A6@B  FD6A+&DHƒI# lWt @_)E/E6  KLM# J C C # |JI:LDEXITI:LDINITI:LDMAINO0SEGMENTBLANK IOS: o (KI:IO im MACRO (F530) @ig ]p pSRXN ` P 0Q Q Y Z О E@ @ E 1Q]‚p#  @M SA G[C  tq [LL@fLOLoLmMNMIG qXQ3ĤX;\ @`XS%'`@\'X# h A@ QA[1DHV ]' F[1DHV)NGQB IT#HL[1۠Y1Y@" Y&ZA& Z[1DHVIGa@ Zs1@N Y@& VV<V9V6[1CHV1I2 1G@CZQCY QG C pÀYZA@@ eZ1B@Z`GG }YY&Z@# g p``p^] )5]@AB_g ][Y@QADQZQBY@ ĈE6Bg^ p# ZJD:TV00 O0SEGMENTBLANK IOS: OTABLE: o KTYTOF: TYEOL: TY00BF: KTYELI: C:TY0 NTY: im MACRO (F530) @igktTV00Ptt<tttJD:TK00 O0SEGMENTBLANK IOS: OTABLE: o   KTYTOF: TYEOL: TY00BF: KTYELI: C:TY0 NTY: im MACRO (F530) @igktTK00Htt<_tttJD:TY00 O0SEGMENTBLANK IOS: OTABLE: o KTYTOF: TYEOL: TY00BF: KTYELI: C:TY0 NTY: im MACRO (F530) @igktTY00Htt<_tttJD:TP00 O0SEGMENTBLANK IOS: OTABLE: o KTYEOL: TY00BF: C:TY0 NTY: im MACRO (F530) @igktTP00P t<ttJD:TR00 O0SEGMENTBLANK IOS:  OTABLE: o KTY00BF: C:TY0 NTY: im MACRO (F530) @igktTR00P  <_tJC:TY0 O0SEGMENTBLANK IOS: OTABLE: o KI:EOB TY:FUN TY:WRT KTY:RD NTY: CIB: im MACRO (F530) @igklltttt?tJTY00BF: O0SEGMENTBLANK IOS: OTABLE: o im MACRO (F530) @igJTYELI: TYTOF: TYEOL: O0SEGMENTBLANK IOS: o im MACRO (F530) @ig g g JD:LP00 O0SEGMENTBLANK IOS: OTABLE: o %KC:LP0 ND:LP0 im MACRO (F530) @igktLP00 Q9!2#   JC:LP0 O0SEGMENTBLANK IOS: OTABLE: o KI:EOB LP:FUN LP:WRT ND:LP0 CIB: im MACRO (F530) @igkllttt?tJLPPUF: LPTOF: O0SEGMENTBLANK IOS: o im MACRO (F530) @igg JLPEOL: O0SEGMENTBLANK IOS: o im MACRO (F530) @ig JDPEOL: O0SEGMENTBLANK IOS: o im MACRO (F530) @ig JD:CR00 O0SEGMENTBLANK IOS: OTABLE: o gKCR:TAB C:CR0 NCR: im MACRO (F530) @igktCR00PtPJC:CR0 O0SEGMENTBLANK IOS: OTABLE: o KI:EOB CR:WRT CR:FUN KCR:RD NCR: CIB: im MACRO (F530) @igklltttt?tJD:PP00  O0SEGMENTBLANK IOS: OTABLE: o  KC:PP0 NPP: im MACRO (F530) @igktPP00  JC:PP0 O0SEGMENTBLANK IOS: OTABLE: o KI:EOB PP:FUN PP:WRT NPP: CIB: im MACRO (F530) @igkllttt?tJD:PR00 O0SEGMENTBLANK IOS: OTABLE: o KC:PR0 NPR: im MACRO (F530) @igktPR00  _JC:PR0 O0SEGMENTBLANK IOS: OTABLE: o KI:EOB I:OPEN PR:RD NPR: CIB: im MACRO (F530) @igklltttt?tJD:DF03 O0SEGMENTBLANK IOS: OTABLE: o  (KC:DF0 NZ:DF03 DF: im MACRO (F530) @igktlDF03AA M  MJD:DF02 O0SEGMENTBLANK IOS: OTABLE: o (KC:DF0 NZ:DF02 DF: im MACRO (F530) @igktlDF02AA M  MJD:DF01 O0SEGMENTBLANK IOS: OTABLE: o (KC:DF0 NZ:DF01 DF: im MACRO (F530) @igktlDF01AA M  MJD:DF00 O0SEGMENTBLANK IOS: OTABLE: o (KC:DF0 NZ:DF00 DF: im MACRO (F530) @igktlDF00AA M  MJC:DF0 O0SEGMENTBLANK IOS: OTABLE: o )KI:EOB DF:FUN DF:WRT KDF:RD NDF: CIB: im MACRO (F530) @igklltttt?tfdJD:DM03 O0SEGMENTBLANK IOS: OTABLE: o (KC:DM0 NZ:DM03 DM: im MACRO (F530) @igktlDM03AA   &JD:DM02 O0SEGMENTBLANK IOS: OTABLE: o (KC:DM0 NZ:DM02 DM: im MACRO (F530) @igktlDM02AA   &JD:DM01 O0SEGMENTBLANK IOS: OTABLE: o (KC:DM0 NZ:DM01 DM: im MACRO (F530) @igktlDM01AA    OJD:DM00 O0SEGMENTBLANK IOS: OTABLE: o (KC:DM0 NZ:DM00 DM: im MACRO (F530) @igktlDM00AA    OJC:DM0 O0SEGMENTBLANK IOS: OTABLE: o )KI:EOB DK:FUN DK:WRT KDK:RD NDM: CIB:  im MACRO (F530) @igklvttt?tdJD:DH00 O0SEGMENTBLANK IOS: OTABLE: o (KC:DH0 NZ:DH00 DH: im MACRO (F530) @igktlDH00AA  7  &7 @LJD:DH01 O0SEGMENTBLANK IOS: OTABLE: o (KC:DH0  NZ:DH01 DH: im MACRO (F530) @igktlDH01AA  7  &7 @LJD:DH02 O0SEGMENTBLANK IOS: OTABLE: o (KC:DH0 NZ:DH02 DH:  im MACRO (F530) @igktlDH02AA  7  &7 @LJD:DH03 O0SEGMENTBLANK IOS: OTABLE: o (KC:DH0 NZ:DH03 DH: im MA  CRO (F530) @igktlDH03AA  7  &7 @LJC:DH0 O0SEGMENTBLANK IOS: OTABLE: o )KI:EOB DK:FUN DK:WRT KDK:RD NDH: CIB: im MACRO (F530) @igklvttt?tdJC:HEAD O0SEGMENTBLANK IOS: OTABLE: o NCIB: im MACRO (F530) @iglJPP:FUN LP:FUN TY:FUN JPP:WRT LP:WRT TY:WRT JPR:RD TY:RD O0SEGMENTBLANK IOS: o KI:QWAIT I:OPCL I:VCNT KI:SIV FBW: FBR: KI:STAT I:ECTT I:RST KI:SDIO I:TRTB I:TRLL KI:RET I:EMEM I:FINI KI:NEOB I:WAIT I:DIO KI:STUP im MACRO (F530) @iggg EDπF ĠB΋QG F ʀDt TRt DلDI3BJEK AC̀FyDO FB6E@6ArP + 1QCܗ 0 y yBD+KFQ FQFWB wPB ЄP瀑GG[矋t t ttt tttt  O [DFF 6EEKhhhgfB ewF@0 CXJQB 1h6ǀy C D D P+KFQFB JGy ÂGG 1pPAC ttt  Ӟw@KQB@6 1U@ KCNJĂ ܄6À  @KQNDI@lJ FJCIIBΠQ :ʜNyJQKQĀJ/6 C6(tttt tttLPtgg IPRED)D DNF  EKB F ЀQ6@ JPĀF  6 M_CK _%'3 oPDJ IQDF6AKF QC K_%+'PQϟt (tt= L K IDGDQ h IIADDI IFXJQCcKF6 +DJ B%QC*˞aa ' QQ ICB1 F DPQ_QAFNDtM EKM B%'Q_ J  K@* H% '@(KK+I_K#BK` M@#QbAIIDMN F6 FKK _IQҠMK 1yAʠMK1yv DBKFFM ` K@P QQҞ Q MJM`UEK>Q h KMeII ΀_E6 q.y' IICđB @1B  P;XJQ p# c p+p(z/*tt ttttttt c}ggg BJFF $ #  ʠK` D II  ӠB1P1wD+KB  I螮 ҠB K D IIF   FBDQKNy @HID@DÀDsI 1pD+KGfCI I  ^ B BܗI ICF  ŠB, @KQB@6T tLPtt  Bt  LBZ :KI  D IKI D ItTYTKPPTP C @.9X𪴀Ā#  @ NC C    zC KNpJC KN{#  AJFBW: FBR: O0SEGMENTBLANK IOS: o  KI:SIV I:SDIO I:ECTT KI:RET I:STAT I:VCNT KI:RST I:NEOB I:STU  P KI:FINI I:WAIT I:DIO im MACRO (F530) @ig DIBK̈́JSC DIFF I EDמОсKy  D5 ͠C FK ICD EKnC CFF DBK CILUCC IDGKC Ǟ{xtt t tttttt؞g DIBK̈́JFGF c0 DCIĐ IK  ֠CKD@yNq āKJpGFCDEK @CC:`DI7 9݀FF DCB K Ā$#I" I G}!!wDI @lJ_6D/6Bht tt )KF@6+%'6*  6|EK+D@*l# JCR:WRT CR:FUN CR:RD O0SEGMENTBLANK IOS: o KI:VCNT I:OPCL I:ECTT KI:EMEM I:RET I:NEOB KI:RST I:TRLT I:STAT KI:TRLL I:WAIT I:STUP KI:FINI I:DIO im MACRO (F530) @ig EDрF PDIB NCDIEKמ؞ٞ DIDBJ1B 6GBK' B /6yF  ̠BǀII  F ^D DBP KDB ā BKB6À  }J/6wurtt t tt t t"tt ttttg cg @ SlB TtJI:TRLT O0SEGMENTBLANK IOS: o 3im MACRO (F530) @ig C )@aE+ 6֤ N 6LN 6 # F D# F J `+ K D`y # N I# PARITY (Y/N) ? ttLtttJAC:FIO O0SEGMENTBLANK IOS: o ^KI:TRTB I:VCNT AC:RSB KAC:SNDCKAC:SNDSQAC:SNDQ KAC:RDCK AC:T6AX AC:SNDFNKAC:OPNCKAC:STUP AC:MEMTSim MACRO (F530) @ig FNDN.8 *E %E'JQ  DOPE JB6AÁE N@6Ar@N@6AEOJO  + - 1 0tt t t t FQŀQFƠB B@`` U`@D Kb#  K D\# FQ cQFBܗ[# @``  T`@D KB# FQ lQFBOCNF # JB# PI # dt @O DE Kg# ODEKa# FN P LDOE LOKDJNF LzOLDELN 6@F@6A  KJ 鞔瞍OLVt t ttOt @6BB L LLL 7L 3 Lɞ/L> L I 7 \\\\ OL- EOONCOL LP E%'LOOI PE%r+' # # /*`AOL`# tttJMT:FUN MT:POS MT:WRT JMT:RD O0SEGMENTBLANK IOS: o KI:RATE I:SRTC I:VCNT KI:ECTT I:EMEM I:RST KI:DIO I:RET I:FINI KI:NEOB I:WAIT I:RPF KI:STUP im MACRO (F530) @ig CBJg FXJQCB J䄘ęAО @B@6EC  BܐψDI @o6@ 6@6DAJ DC?6T@_ 6RN @ w@BC ?6CBJ,BJtwuwu{t.ttg nFXM MBhg ℕCXJQH܄B YĘXęZJI@B рF @60ƠC  D@6:@6[AA B/6<A&4$ B /6@%%ߠBCH F E@6@6R@6@ 6M CZ@b7+?#K[g F    EDB# DA # p܀# BWX GC/C CC C Aq@BĚC# t sttt tt BWXCGJ đJ@6@6@/6CN #  ܑ# ĕ  # @KQN74 @6C$x p܀ p܀#  CBJ?@/6# @O6B#  C̀J@ KQ]ĕ  @6IܚrC A p܀ p܀# CBJt0t`.JDP:FUN DP:WRT DP:RD O0SEGMENTBLANK IOS: o *KI:SRTC I:DEOF I:USEC KI:HARD I:RATE I:DCAL KI:ECTT I:OPEN I:EMEM KI:RST I:RET I:FINI KI:NEOB I:WAIT I:RPF KI:SIV I:STUP im MACRO (F530) @igg EDCB؟DA ԟӠBK *1B ˟ˠB C DJ BG!KĩF N9XKQA  CC BC KC  IĀ J .a'C I C  CB Q̪ĩRICđttt ttt t ̪ĩRDICđ   C C @AC ֒GBCC Hĕɞ t$tt  @6^vCBDCD N EBEK IDJC I  @Eޟ- @* 1J @*1y @*1 Br @*13@68C  @*1/:B @*1[g 1Cĕ-C C  BC  C C  C  C CBC  CH @JQ# tt )tttt t  C# A# KEK# B G # JBP:FUN O0SEGMENTBLANK IOS: o KR:GPR R:ISIG R:SPRI KR:IWAI I:RET I:RPF KI:WAIT I:NEOB I:ECTT KI:EMEM Y:PLGIV Y:SETIV KY:XAIO Y:XBIO Y:DOIO KY:XLAT im MACRO (F530) @ig MCF 4Lltt ȠM{EDI ED RC P  AJ66 C EF6Q M+B QF  C+B6ttt t t t tttt t  ES k VRC 䓠SKFD_I FSI]V IQ R C QM !KKMJ6F 6A@4Bttt B6B# Cݐ 6# IB I  RC  BX# JA# JBP:EOB O0SEGMENTBLANK IOS: o KR:RE12 Y:XBIO I:EMEM KI:EOB Y:DMRE Y:PLGIV KY:SETIV Y:XLAT Y:DOIO im MACRO (F530) @ig   DIC A JR@6MF6K@60@ t SIF0XNA ąNiXL WQE@ąC1Þ{@t S AS@F@X0Q 60܀ID@RĂ6   K6FVA TKD^ݞ@6N L֞T6LNXWQTI 6 TKDF  IKFBP]BZ 36+. @" *k%6H D@h@h5D@h@h 5'jBJ'jBFttttttt% VS VVS:<JY:PLGIV Y:SETIV Y:XAIO JY:XBIO Y:DMRE Y:XLAT JY:DOIO O0SEGMENTBLANK IOS: o KI:EMEM im MACRO (F530) @ig FD9 QD ΔFB#  KDCA# BD@AJN1 XC  FN)XB HC FX0QAI݀KDF F@9 8@K @6 T # @@C @X G # DA@?C XG!# ? tgC# gNXC # lmnopuyz{g CC C  # gCyg CN Ā# Eg C@B@A N ā# JSNITZ I:QWAIT I:OPCL JI:OPEN I:VCNT I:ECTT JI:COMP I:EOB I:EMEM JI:RPF I:SIV I:SDIO JI:DIO I:TRTB I:TRLL JI:RST I:STAT O0SEGMENTBLANK IOS: OTABLE: o  KR:WAIT R:IWAL I:RET KR:RE12 R:SSIG NR:SL im MACRO (F530) @igB@SA# g  F@6 @`E%  } *19'`@F@6 A # Eg g  JCOC H # g  C kF0 A@ ĀeDK@A A@ āF6܂# g C݄g # g C B@%.y$# gCC # g  "&$@&@## # gܗ+g A !@ )A G֏@'G# gC# g jtttg BF ?@@ā6F @ā6C # g:d:d# ikg>O0SEGMENTBLANK oim MACRO (F100) JEM:430 O0SEGMENTBLANK EMLTR: o KEM:MULF EM:CSKF EM:SUBF KEM:DIVF EM:ADDF EM:FLOATKEM:FIX EM:DMSE EM:IMSE KEM:JSTE EM:JMPE EM:CSKE KEM:XORE EM:ORE EM:ANDE KEM:EXCHEEM:SUBE EM:ADDE KEM:STR EM:LDR im MACRO (F100) igJEM:410 O0SEGMENTBLANK EMLTR: o KEM:MULF EM:CSKF EM:SUBF KEM:DIVF EM:ADDF EM:FLOATKEM:FIX EM:DMSE EM:IMSE KEM:JSTE EM:JMPE EM:CSKE KEM:XORE EM:ORE EM:ANDE KEM:EXCHEEM:SUBE EM:ADDE KEM:STR EM:LDR EM:SDRA KEM:RDRO EM:RDR EM:SDRO KEM:SDR EM:RDLO EM:RDL KEM:SDLO EM:SDL EM:RR KEM:SR EM:SL EM:JSKE KEM:STR2 EM:LDR2 EM:DIV KEM:CEA EM:CSM EM:SUBC im MACRO (F100) ifgJEM:410X O0SEGMENTBLANK EMLTR: o KEM:SDRA EM:RDRO EM:RDR KEM:SDRO EM:SDR EM:RDLO KEM:RDL EM:SDLO EM:SDL KEM:RR EM:SR EM:SL KEM:JSKE EM:STR2 EM:LDR2 KEM:DIV EM:CEA EM:CSM KEM:SUBC im MACRO (F100) ig JEM:430X O0SEGMENTBLANK EMLTR: o KEM:DMSE EM:IMSE EM:JSTE KEM:JMPE EM:CSKE EM:XORE KEM:ORE EM:ANDE EM:EXCHEKEM:SUBE EM:ADDE EM:STR KEM:LDR im MACRO (F100) igJEM:FLPT O0SEGMENTBLANK EMLTR: o KEM:MULF EM:CSKF EM:SUBF KEM:DIVF EM:ADDF EM:FLOATKEM:FIX im MACRO (F100) igJEM:COPYEO0SEGMENTBLANK EMLTR: o KEM:STR2 EM:LDR2 EM:STR KEM:LDR im MACRO (F100) igJEM:DADD EM:ADDF O0SEGMENTBLANK EMLTR: o :KEM:SL02 EM:UPCKFEM:COMPLKEM:XFP EM:FP im MACRO (F100) ig# g BCDB1ABC D !E-E*GC V B B# BB # !EEECD# * N 5# ttttJEM:SUBF O0SEGMENTBLANK EMLTR: o KEM:ADDF im MACRO (F100) ig# tJEM:MULF EM:DMUL O0SEGMENTBLANK EMLTR: o 4KEM:SL07 EM:SL01 EM:UPCKFKEM:XFP EM:FP im MACRO (F100) ig DBBCDEE EE# g G N GH GDN G GGG CD# ttttJEM:DIVF O0SEGMENTBLANK EMLTR: o ;KEM:OVFL0EM:SR01 EM:SL06 KEM:SL07 EM:COMPLEM:UPCKFKEM:XFP EM:DMUL EM:FP im MACRO (F100) ig DBBQ# C DE+E+*# CG CCDQÀCD# G G # GHIGNH# ttttttttJEM:CSKF O0SEGMENTBLANK EMLTR: o KEM:UPCKFEM:DADD im MACRO (F100) ig C @QBBRRc # ttJEM:FIX O0SEGMENTBLANK EMLTR: o JKEM:FF EM:COMPLEM:UPCKFKEM:SR01 EM:SL01 im MACRO (F100) ig ÄB%*h-B1A NONBB# # +2* +1m# *2Q+*1 d# B1ANO 1Q#  NOM M# M M # NOM M# ttttJEM:FLOATO0SEGMENTBLANK EMLTR: o KEM:FF EM:DNORMEM:COMPLim MACRO (F100) ig B 1A)BNO# ttJEM:DIV O0SEGMENTBLANK EMLTR: o KEM:COMPLEM:W3 EM:R3 KEM:MREF im MACRO (F100) ig M0BBBBGC BGB1D+1A@AB0M# tttJEM:SUBC O0SEGMENTBLANK EMLTR: o KEM:W1 EM:R1 EM:MREF im MACRO (F100) ig M0@IG0M# ttJEM:JSKE O0SEGMENTBLANK EMLTR: o  KEM:MREF im MACRO (F100) ig QPONMLKk p`c # JEM:CEA O0SEGMENTBLANK EMLTR: o KEM:W2 EM:MREF im MACRO (F100) ig # tJEM:CSM O0SEGMENTBLANK EMLTR: o  KEM:R2 EM:MREF im MACRO (F100) igF# RR# tJEM:LDR2 O0SEGMENTBLANK EMLTR: o KEM:W2 EM:MREF im MACRO (F100) igN# tJEM:STR2 O0SEGMENTBLANK EMLTR: o KEM:R2 EM:MREF im MACRO (F100) igN# tJEM:LDR O0SEGMENTBLANK EMLTR: o KEM:W2  EM:MREF im MACRO (F100) ig# tJEM:STR O0SEGMENTBLANK EMLTR: o KEM:R2 EM:MREF im MACRO (F100) ig# tJEM:ADDE O0SEGMENTBLANK EMLTR: o  KEM:W2 EM:R2 EM:MREF im MACRO (F100) igM00M# ttJEM:SUBE O0SEGMENTBLANK EMLTR: o  KEM:W2 EM:R2 EM:MREF im MACR O (F100) igM00M# ttJEM:EXCHEO0SEGMENTBLANK EMLTR: o KEM:W2 EM:R2 EM:MREF im MACRO (F100) ig# ttJEM:JMPE O0SEGMENTBLANK EMLTR: o KEM:MREF im MACRO (F100) igR# JEM:JSTE O0SEGMENTBLANK EMLTR: o KEM:MREF im MACRO (F100) igR+R# JEM:IMSE O0SEGMENTBLANK EMLTR: o KEM:MREF im MACRO (F100) igM0܀R0M# JEM:DMSE O0SEGMENTBLANK EMLTR: o  KEM:MREF im MACRO (F100) ig M0 HJR0M# JEM:ANDE O0SEGMENTBLANK EMLTR: o KEM:W1 EM:R1 EM:MREF im MACRO (F100) ig# ttJEM:ORE O0SEGMENTBLANK EMLTR: o KEM:W1 EM:R1 EM:MREF im MACRO (F100) ig# ttJEM:XORE O0SEGMENTBLANK EMLTR: o KEM:W1 EM:R1 EM:MREF im MACRO (F100) ig# ttJEM:CSKE O0SEGMENTBLANK EMLTR: o  KEM:R1  EM:MREF im MACRO (F100) igK# RR# tJEM:SL O0SEGMENTBLANK EMLTR: o KEM:W2 EM:R2 im MACRO (F100) ig.2# # ttJEM:SR O0SEGMENTBLANK EMLTR: o KEM:W2 EM:R2 im MACRO (F100) ig.2#  # ttJEM:RR O0SEGMENTBLANK EMLTR: o  KEM:W2 EM:R2 im MACRO (F100) ig .2I@*# I@#C # ttJEM:SDL O0SEGMENTBLANK EMLTR: o KEM:W3 EM:R3 EM:SL01 KEM:SHIFTim MACRO (F100) ig5# tttJEM:SDLO O0SEGMENTBLANK EMLTR: o KEM:SDL EM:SHIFTim MACRO (F100) igM00M# tJEM:RDL O0SEGMENTBLANK EMLTR: o  KEM:W3 EM:R3 EM:SHIFTim MACRO (F100) igN6@ 5# ttJEM:RDLO O0SEGMENTBLANK EMLTR: o  KEM:W3 EM:R3 EM:SHIFTim MACRO (F100) ig M0N50M# ttJEM:SDR O0SEGMENTBLANK EMLTR: o KEM:W3 EM:R3 EM:SR01 KEM:SHIFTim MACRO (F100) ig5# tttJEM:SDRO O0SEGMENTBLANK EMLTR: o KEM:SDR EM:SHIFTim MACRO (F100) igM00M# tJEM:RDR O0SEGMENTBLANK EMLTR: o  KEM:W3 EM:R3 EM:SHIFTim MACRO (F100) ig N 65# ttJEM:RDRO O0SEGMENTBLANK EMLTR: o  KEM:W3 EM:R3 EM:SHIFTim MACRO (F100) ig M0 N 50M# ttJEM:SDRA O0SEGMENTBLANK EMLTR: o  KEM:W3 EM:R3  EM:SHIFTim MACRO (F100) ig M0 N 50M# ttJEM:FP O0SEGMENTBLANK EMLTR: o KEM:ILTRPEM:CEA0 EM:CSKF KEM:DIVF EM:MULF EM:SUBF KEM:ADDF EM:LOADFR:EMLTR im MACRO (F100) ig NO@ RA9@ A8*2+# ttttttttJEM:FF O0SEGMENTBLANK EMLTR: o  KR:EMLTR EM:FLOATEM:FIX im MACRO (F100) ig@RNOA8# ttJEM:MREF O0SEGMENTBLANK EMLTR: o 4KEM:CSKE EM:XORE EM:ORE KEM:ANDE EM:DMSE EM:IMSE KEM:JSTE EM:JMPE EM:EXCHEKEM:SUBE EM:ADDE EM:STR2 KEM:LDR2 EM:STR EM:LDR KEM:CSM EM:CEA EM:JSKE KEM:SUBC EM:DIV EM:CEA0 KR:EMLTR im MACRO (F100) ig @RA9@*A # tttttt t tt t t t%* A tttt A6AA6AtttttJEM:SHIFTO0SEGMENTBLANK EMLTR: o )KR:EMLTR EM:RR EM:SR KEM:SL EM:SDRA EM:RDRO KEM:RDR EM:SDRO EM:SDR KEM:RDLO EM:RDL EM:SDLO KEM:SDL EM:ILTRPim MACRO (F100) ig @RA8.A6A   t t t t t t t t ttttt  t tttJR:EMLTR LR:EMUL O0SEGMENTBLANK EMLTR: o -KEM:ILTRPEM:SHIFTEM:MREF KEM:FF EM:FP NDLIST im MACRO (F100) igh C @C @`pä@Ak p`c # k tktk\tktk ~1A vm*** EMLTR.LIB - REV F00m0 ***tJEM:SR09 EM:SR02 EM:SR01 JEM:SL06 EM:SL07 EM:SL05 JEM:SL02 EM:SL01 O0SEGMENTBLANK EMLTR: o im MACRO (F100) iggggg# ggg# N#  N # JEM:COMPLO0SEGMENTBLANK EMLTR: o  im MACRO (F100) ig @IGVA # JEM:UPCKFO0SEGMENTBLANK EMLTR: o  im MACRO (F100) ig 1Q# .i|# JEM:LOADFO0SEGMENTBLANK EMLTR: o KEM:UPCKFim MACRO (F100) ig CDE6A)BCDE# tJEM:CEA0 O0SEGMENTBLANK EMLTR: o im MACRO (F100) ig ?66/66 # R B# Q B# P B# JEM:OVFL0EM:XFP O0SEGMENTBLANK EMLTR: o &KEM:DNORMim MACRO (F100) ig CDEM M# CDE*g MMRA R# BNO# tJEM:DNORMO0SEGMENTBLANK EMLTR: o #KEM:SR09 EM:SL01 im MACRO (F100) ig QGV+ + *2F+3.a" p܀ p܀#  I# *6# ttJEM:W3 EM:W2 EM:W1 O0SEGMENTBLANK EMLTR: o im MACRO (F100) igA֒g AN2XC N# P# O# Q# gN@p# @JEM:R3 EM:R2 EM:R1 O0SEGMENTBLANK EMLTR: o im MACRO (F100) igA֒g AN2XC N# P# O# Q# gr@N# @JEM:ILTRPO0SEGMENTBLANK EMLTR: o KR:TRAPX im MACRO (F100) igAIk p`tJEM:FP O0SEGMENTBLANK  DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:FF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:MREF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SHIFTO0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:ADDF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SUBF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:MULF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:DIVF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:CSKF O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:FIX O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:FLOATO0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:DIV O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) ig tJEM:SUBC O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:JSKE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:CEA O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:CSM O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:LDR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:STR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:LDR2 O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:STR2 O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:ADDE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SUBE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:EXCHEO0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:JMPE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:JSTE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:IMSE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:DMSE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:ANDE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:ORE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:XORE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:CSKE O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SL O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:RR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SDL O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SDLO O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:RDL O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:RDLO O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SDR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SDRO O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:RDR O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:RDRO O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJEM:SDRA O0SEGMENTBLANK DUMMY: o KEM:ILTRPim MACRO (F100) igtJR:UITH R:JSKE R:MPM2 JR:MPM1 R:BTC1 R:WLKS JR:CNTK R:CDRG R:SNSW JR:SREG R:PFK R:PFLG JR:CNSM R:FAT1  R:FATL JRTX: O0SEGMENTBLANK RTX: o KR:PATCH R:WAIT R:SIG KR:END R:BGIN R:PWRF KR:IDOR R:CNSL R: LSTK KR:KSTK R:AETH R:USTH KR:CNTH R:EMUL R:DBUG KR:STRT R:SETH R:UMTH KR:WLAC R:TICI R:TKAC NR:ECBL im MACRO (F530) @i l tl9C @_9 C @? P Px!@p@g C @ *P z ał S 9*qtt tg>g >gt>g g g ggggg{gc tg~g  getJt ttttt 5|t tt im*** RTX.LIB - REV F320 m ***JR:PATCH O0SEGMENTBLANK RTX: o im MACRO (F530) @igJMDBUG4 LDEBUG4 O0SEGMENTBLANK DEBUG: o MG:Z G:Y G:X MG:W G:V G:U MG:T G:S G:R MG:Q G:P G:O MG:N G:M G:L MG:K G:J G:I MG:H G:G G:F MG:E G:D G:C MG:B G:A G:9 MG:8 G:7 G:6 MG:5 G:4 G:3 MG:2 G:1 G:0 im MACRO (F100) ihg  ~˞u1 3bf'rm l9mxY    v8Z[ܡ#  A `Q˾ ( :ӂG - :ӂ" )  m*** DEBUGM.OBJ - REV E8m00 ***  pP0 @0B բ` h  }c? ¢‚ pP0/o  X)C $ `)C ")P C ")C " `m M D B U G 4 E 8 0 0 ӟe  }u#u"u!u uuuuuuuuuuuuuuuuuuu u u u u uuuuuuuuu  ӂzӾ P AC Q@ X= Y:ԽѾ K3 L0 S- D* C'ԟK =ӟ{  } ӟ|"  *ٽ҆ Y Q G ҽ؆ R  ƜƘ™LBLCLFLL LSLJLILGLRȝ ǞF 9} Ğ|QEr , , `熂՟ _ٞ\  b} ` J B YK QJfߞւ  cޡ @ޟޝ `@E ;߽RA@EN@Aޏǎ  Qފ ,^:F & o*| x ` D `枞oY* Qd Ѐ_Ѐ āZ@AĄ܃T B ` ǁ D瞄*L_U3 ` Ģ1*/) 'r "Bƽу۽ֽ Cā / X Ń ѽ۞i ] с߆@ڃ۽ցBǢ  ,ž[ + - * X /KJƎߞ^ [{ xނZ  ,ş|˽с߆ ۽ޅ{ўu , Žֆx@FC pq LL (w{u c |JQB_yľ߾ˆr pp| IƎQ ,Ž Ƈ ,ƂpIư k , ,Htr  Hm -ņց -ņ߆;:\\ÂF -1tт-ڃ+Ԟx  ’@"Fz@ Ό  F ō l #߆.bƝ ޙޖJQ!’ ފދJQĽ %ӂԞu  U  B * ӂGo h fe "cIaM  K Y&V&RR `QKL$kK N =ӂD D GӂA   :Ӟ  ӟL ӟ{ y 9u    : ӂw @0ƵQ¾ ˢ̂C C 96C C  " z a ࢜0 `a  ´C /6 C C 6 C C 6C h  Q¾{”C "C  C  I6 , ƽƇ ,Ƃp Iưk , ,Ht r Hm -Ɔ ׁ -Ɔ('\\ ÂF -t҂ ՞x ’@"Fz@  Ό F ƍ l #.b ƝޙޖJQ!’ ފދJQŽ % ՞u U  B * ԂGo  h fe "cI aM K Y&V& RR `QKL$kK N =ԂDD GԂA   : Ԟ ԟL  ԟ{  y9u     :Ԃw @0Ƶ Q¾ˢ̂C C 96 C C " z a ࢜0  `a ´C /6 C C  6 C C 6C  h Q¾{” C "C C I6D ÎA6TO6T6T  Gj F I  Dҽhg Ԟx  @9@@? R6A W ߍ?ÌˌJR>JKSB|ҝ  ={ ӆv trLDLELILRLW Ɩd ,ka  ņy xÆw pQAlýkL= \L>L:|öbL<L=L ^]\Q  HǞ wq qno = < > :ba  ~ y C 1 =Ԃ C 2 =Ԃ C 3 = M =ԃTܽҞH& ƽ׆ =FFEFCCE =:7& 5-Ɠ,& Ɠ$Q߇ƽ? lJDBG4:CNTDBG4:LP DEBUG4 O0SEGMENTBLANK DEBUG: o MG:Z G:Y G:X MG:W G:V G:U MG:T G:S G:R MG:Q  G:P G:O MG:N G:M G:L MG:K G:J G:I MG:H G:G G:F MG:E G:D G:C MG:B  G:A G:9 MG:8 G:7 G:6 MG:5 G:4 G:3 MG:2 G:1 G:0 im MACRO (F100) ig  ~֞8O] &Ea3x _|l* | } ~gҡ# A ` Q T ( :ӂ< - :ӂ" )  m*** DEBUGS.OBJ - REV E8m00 ***  pP0 @0B բ` h  } c= ¢‚ pP0/o  X)C $ `)C ")P C ")C " `m D E B U G 4 E 8 0 0 ӟe  }u#u"u!u uuuuuuuuuuuuuuuuuuu u u u u uuuuuuuuu  ӂzӾ P AC Q@ X= Y:ԽѾ K3 L0 S- D* C'ԟK =ӟ{  } ӟ| @)C " )PC ")C " `r"  *ٽ҆ Y Q  A Gҽ؆ R Ƥ D V W ƚ›LBLCLFLLLS LJLILGLRLZߝ Ǟ< !} {҆u łt P L łj T P BŁ P ӂY T H TŅ Ğ| QEF , , ` ՟ _ٞ0 6} ` J B YK QJ f䞁ւ cޡ @ ޟޝ `@E ; RA@EN@Aޏǎ Qފ ,^:F & o*| x ` D `랞oY* Qd Ѐ_Ѐ āZ@AĄ܃T B ` ǁ D임*L_U3 ` Ģ1*/) 'r "Bƽу۽ֽ C凑ā  / X Ń ѽ۞i Ğ] с䆫@ڃ۽ցBǢ ,ž[ + - * X /KJƎ^ [{ xނZ  ,ş| ֽL  P ޽с ۽۽޺{  ўq kɆȂ Gާ}ަyޠ }y E ~  .  E ~  .ޣ ރfN  ,Žֆs@FC  kqLL (w{u  ^|JQBZy L S TўNM   Isľˆ_]] | IƎ> ,ŽƇ , ƂpIưk , ,Htr H m -ņց - ('\\ÂF - tтڃԞx ’ @"Fz@ Ό F ō l# .bƝޙޖJ Q!’ފދ JQĽ %ӂԞu  U B * ӂGo h f e "cIaM K Y &V&RR ` QK L$kK N =ӂDD G ӂA   :Ӟ ӟL  ӟ{ y9 u    :ӂw  @0ƵQ¾ˢ̂ C C 96C C " z a ࢜0 `a ´C  /6 C C 6 C  C 6C h  Q¾{”C "C C  I6A A@ ` ` 1$V.btttigggJR:ABUF O0SEGMENTBLANK RTX: o KR:DISP R:GETM R:SACT im MACRO (F530) @ig # !IA)CLttt JR:RBUF O0SEGMENTBLANK RTX: o  KR:DISP R:GIVM R:SACT im MACRO (F530) @ig# !ItttJR:SACT R:RE12 R:SCHMAPJR:NTQENTR:EVCK R:IDLEX JR:DAQX R:DA R:IACB JR:DISP O0SEGMENTBLANK RTX:  OTABLE: o KR:KSTK R:DSPRDYim MACRO (F530) @ig g!CDCg!CBg p c # g /#qP@#I""B1F@ y@(@mg /P P!U%'yg oF1M+@Anj_+BB ߆yID # ttdiiHg o p_+  ߍyo p   # dddiieg 9 ܆@g ?p(Āp(`@qEB `@ Op(+p( @`@qDB{y`H@ĀOp(+p( # JMTZ:DISPLR:DSPRDYO0SEGMENTBLANK RTX: o KR:NTQENTR:EVCK R:IDLEX im MACRO (F530) @igh /"qO!Co#QʀFA/p c # tttJR:DSPRDYO0SEGMENTBLANK RTX: o KR:NTQENTR:EVCK R:IDLEX im MACRO (F530) @ig /"qI!C?#Qp c # tttJR:KSTK R:LSTK O0SEGMENTBLANK TABLE: o @im MACRO (F530) @ig@gJR:INI1 R:PWRF R:STRT O0SEGMENTBLANK RTX: o QKR:RTXEX I:INIT R:SREG KR:SNSW R:CDRG R:PFK KR:PFLG R:DISP R:NOPF KR:UINI R:LSTK R:KSTK im MACRO (F530) @ig @0 PßQA@pg AA o0_t t tttttttt ttg vA rphjBCDpE F0AmedP@ [@ !䃞W JR:FPMAX R:FPCNT R:GVST JR:GVSH R:GTS O0SEGMENTBLANK RTX: OTABLE: o 1im MACRO (F530) @ig O%1L%&ߦ/ # g ܋ /&&1„% # g ܋ ?%%& # ddiggi1JR:RFB R:AFB O0SEGMENTBLANK RTX: o  KR:GTS R:GVST im MACRO (F530) @igA)`pE # g|ttJR:PAUS O0SEGMENTBLANK RTX: o KR:DISP R:SACT R:PRID im MACRO (F530) @ig@ A#  # )"` 1I{@#Ā#tttJR:TRAPX R:USTREXR:SETH JR:UMTH R:USTH R:CNTH JR:AETH O0SEGMENTBLANK RTX: o UKR:FATL im MACRO (F530) @igC @IgC @IgC @IgC @Ig I`pFg !`@qC p@1 ptg  !1Eā䃀*! oqC@1gIfJR:SYSX R:TABL R:XPTE JR:RTXEX R:DOOREXR:STR0EXO0SEGMENTBLANK RTX: OTABLE: o (KR:HALT R:FATL im MACRO (F530) @igI g I H!ID H@Iqtigg /}g ?|g ?|di ?!1qB@1I ndtii(JREINI: LR:RINT O0SEGMENTBLANK RTX: o QKR:CNTK R:DECB R:NECB KR:SECB R:CNSM R:TICP KR:KTIC R:LTIC R:TKAC im MACRO (F530) @ifgh "!+,-#⿂ @ @A BCDEF  䃤.qEA@ 6y# FNf1I@  @ vg1E z Ih1Dă{ # tttttttttJR:DECB R:NECB R:SECB O0SEGMENTBLANK RTX: o  im MACRO (F530) @ig3qA # g  i# g# JR:DCHK O0SEGMENTBLANK RTX: o im MACRO (F530) @ig JO@ 1LJIq# # JR:NOPF O0SEGMENTBLANK RTX: OTABLE: o iKR:FATL R:EMPI R:HIGH KR:INIT R:INI1 R:BGINI KR:RINT R:RIWAL R:SSIG KR:WLKS im MACRO (F530) @ii didiig ȃȇȃȇȂvÂuàJ *+$ DB$  @@Ģ$@ĪHI  f)% JS `k  z&‹DI ttddtttttt tt +߅{ # ddi  0 @P`p $(,048 OCOC OC,.AT=;kg>;ig:χ:d:d$:d/ y X x B   ! q>B|{ñ C F E: d7:d= hCEC @   Û㕣f&!1ç1>/Njc ;dd.ttttJCONSINT:PCI:INITO0SEGMENTBLANK OS4:  o im MACRO (F530) @ifgg# IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL GEN.MAC - GENERAL EQUATES & MACROS (93420-1A-E300) TITL .... C O N T E N T S *************** * * * GEN.MAC * * * *************** * * ASCII EQUATES * CONTEXT BLOCK (STACK) EQUATES * SYMATT BIT VALUE EQUATES * DIO INTERRUPT VECTOR EQUATES * CONSOLE DEVICE ADDRESS & FUNCTION CODES * STATUS REGISTER EQUATES * FIXED MEMORY ADDRESS ASSIGNMENTS * BIT:??? MACROS * COPY:M MACRO * EXCH:M MACRO * RET: MACRO * DUP: MACRO * DOOR SERVICE CALL MACRO * R:CHMAP MACRO TITL .... R E V I S I O N H I S T O R Y * * E300 - ADDED R:CHMAP MACRO * STEVE CUNIFF SRC 27/JUN/84 * * E200 - ADDED STACK INDEXED (K-RELATIVE) BIT TO THE SYMATT BITS. * SEE 'KNXBT:'. MHAYES 30/NOV/83 * TITL .... M I S C E L L A N E O U S E Q U A T E S * ASCII EQUATES * PARTY: EQU :00 SET PARITY BIT OFF NU: SET :00++PARTY: ASCII NULL LF: SET  :0A++PARTY: ASCII LINE FEED FF: SET :0C++PARTY: ASCII FORM FEED CR: SET :0D++PARTY: ASCII CARRIAGE RETURN RO: SET :7F++PARTY: ASCII RUBOUT * * CONTEXT BLOCK (STACK) EQUATES * LAST:L EQU 0 CALLER'S L REGISTER LAST:S EQU 1 CALLER'S S REGISTER LAST:A EQU 2 CALLER'S A REGISTER LAST:Q EQU 3 CALLER'S Q REGISTER LAST:X EQU 4 CALLER'S X REGISTER LAST:Y EQU  5 CALLER'S Y REGISTER LAST:P EQU 6 CALLER'S P REGISTER (RETURN ADDRESS) CBL: EQU LAST:P+1 LENGTH OF CONTEXT BLOCK * *  SYMATT BIT VALUE EQUATES * ABSBT: EQU :8000 ABSOLUTE RELBT: EQU :4000 RELATIVE REGBT: EQU :2000 REGISTER EXT: EQU :1000 EXTERNAL INDBT: EQU :0800 INDIRECT LITBT: EQU :0400 LITERAL NXBT: EQU :0200 POST INDEXED PNXBT: EQU :0100 PRE INDEXED UNDBT: SET :0080 UNDEFINED NULL: EQU :0040 NULL SYMER: EQU :0020 EVALUATION ERROR BYTRL: EQU :0010 BYTE RELOCATABLE KNXBT: EQU :0008 STACK INDEXED (K-RELATIVE) TITL * DIO INTERUPT VECTOR EQUATES * IV:AIO EQU 0 AUTO I/O IV:CNT EQU 1 BYTE COUNT IV:BUF EQU 2 BUFFER ADDRESS IV:JSK EQU 4 JSK $+1 IV:EOB EQU 5 EOB ADDRESS * * CONSOLE DEVICE ADDRESS & FUNCTION CODES * CONDA: EQU 0//3 CONSOLE DEVICE ADDRESS CSSFC: EQU 0 CONSOLE SENSE SWITCH FUNCTION CODE CIRFC: EQU 1 CONSOLE INTERRUPT RESET FUNCTION CODE CDR: EQU 4 CONSOLE DATA REGISTER FUNCTION CODE TITL .... S T A T U S R E G I S T E R E Q U A T E S * STATUS REGISTER BIT POSITION EQUATES * CY: EQU 0 CARRY OV: EQU 1 OVERFLOW BY: EQU 2 BYTE MODE CI: EQU 4 CONSOLE INTERRUPT ENABLED RI: EQU 5 REAL TIME CLOCK INTERRUPT ENABLED XA: EQU 6 EXTENTED ADDRESSING MODE INT: EQU 8 INTERRUPTS ENABLED IM12: EQU 12 LEVEL 0 WORD INTERRUPT MASK IM13: EQU 13 LEVEL 0 EVEN! T INTERRUPT MASK UX: EQU 13 EXCEPTION RETURN FOR UNRECOVERABLE ERROR RX: EQU 14 EXCEPTION RETURN FOR RECOVERABLE ERROR * * STATUS REGISTER BIT VALUE EQUATES * CY:V EQU :1 CARRY OV:V EQU :2 OVERFLOW BY:V EQU :4 BYTE MODE B3:V EQU :8  RESERVED STATUS BIT 3 CI:V EQU :10 CONSOLE INTERRUPT ENABLED RI:V EQU :20 REAL TIME CLOCK INTERRUPT ENABLED XA:V EQU :40 EXTENDED ADDRESSING MODE B7:V EQU :80 RESERVED STATUS BIT 7 INT:V EQU :100 INTERRUPTS ENABLED IM12:V EQU :1000 LEVEL 0 WORD INTERRUPT MASK IM13:V EQU :2000 LEVEL 0 EVENT INTERRUPT MASK TITL .... F I X E D M E M O R Y E Q U A T E S * FIXED MEMORY ADDRESS ASSIGNMENTS * PUPA: EQU :80 POWER UP ADDRESS UITA: EQU :84 UNIMPLEMENTED INSTRUCTION TRAP ADDRESS UMTA: EQU :88 UNINSTALLED MEMORY TRAP ADDRESS PFTA: EQU :8C POWER FAILURE TRAP ADDRESS EACA: EQU :90 EFFECTIVE ADDRESS CALCULATION ADDRESS RTCNC: EQU :91 REAL TIME CLOCK INCREMENT ADDRESS RTCIA: EQU :92 READ TIME CLOCK INTERRUPT ADDRESS CONIA: EQU :94 CONSOLE INTERRUPT ADDRESS CNTA: EQU :98 CHARACTER/NUMERIC EXCEPTION TRAP ADDRESS SOTA: EQU :9C STACK OVERFLOW TRAP ADDRESS SETA: EQU :9C STACK EXCEPTION TRAP ADDRESS USTA: EQU :A0 USER TRAP ADDRESS SYTA: EQU :A4 SYSTEM TRAP ADDRESS AETA: EQU :A8 ARITHMETIC EXCEPTION TRAP ADDRESS TITL .... B I T : ? ? ? M A C R O S ** MACRO: BIT:EQU, BIT:SET, & BIT:WORD * BUILD A 16-BIT ARRAY OF BITS AND ASSIGN IT APPROPRIATELY * * CALLING SEQUENCE: (LABEL) BIT:??? (BIT1),(BIT2),...,(BIT8) * BIT1-BIT8 = BIT POSITIONS TO BE TURNED ON ** SPACE 2 BIT:EQU MACRO EQU MACLAB BIT:SET MACENT  SET MACLAB BIT:WORD MACENT WORD MACLAB A: SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) A: SET 1//#(1)++A: BIT:LOOP  #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC * IFF #(0,'NULL') #(-1) #(0) A: ENDC ENDM TITL .... C O P Y M E M O R Y - M E M O R Y M A C R O ** MACRO: COPY:M * COPY THE CONTENTS OF ONE MEMORY CELL TO ANOTHER * * CALLING SEQUENCE: (LABEL) COPY:M MEM1,REG,MEM2 * MEM1 = ADDRESS OF SOURCE MEMORY CELL * REG = REGISTER TO BE USED FOR TRANSFER * MEM2 = ADDRESS OF DESTINATION MEMORY CELL ** SPACE 2 COPY:M MACRO COPY #(1),#(2) COPY #(2),#(3) ENDM TITL .... E X C H M E M O R Y - M E M O R Y M A C R O ** MACRO: EXCH:M * EXCHANGE THE CONTENTS OF TWO MEMORY CELLS * * CALLING SEQUENCE: (LABEL) EXCH:M MEM1,MEM2 * MEM1,MEM2 = MEMORY ADDRESSES OF CELLS TO BE EXCHANGED ** SPACE 2 EXCH:M MACRO EXCH #(1),A EXCH A,#(2) EXCH A,#(1) ENDM TITL .... R E T U R N M A C R O ** MACRO: RET: * RETURN WITH A VALUE IN THE A REGISTER * * CALLING SEQUENCE: (LABEL) RET:A VALUE * VALUE = VALUE TO RETURNED IN THE A REGISTER ** SPACE 2 RET: MACRO COPY =#(1),A RSK ENDM TITL .... D U P ( L I C A T E ) M A C R O ** MACRO: DUP * DUPLICATE THE GIVEN BYTE THE NUMBER OF TIMES SPECIFIED. * * CALLING SEQUENCE: (LABEL) DUP 'TEXT',NUM * 'TEXT' = BYTE STRING (DUPLICATION STARTS IN COLUMN 1) * NUM = NUMBER OF TIMES TO DUPLICATE ** SPACE 2 DUP MACRO A:: SET #(1,?)-1 IFT #(2)>0 #(1,2,A::) Q:: SET #(2)-1 DUP #(1),Q:: ENDC ENDM TITL .... S Y S T E M S E R V I C E C A L L M A C R O ** M" ACRO: * GENERATE A CALL TO A SYSTEM SERVICE THROUGH THE DOOR * * CALLING SEQUENCE: (LABEL) * SERVICE NAME = NAME OF SYSTEM SERVICE * PBA = PARAMETER BLOCK ADDRESS (CALL DEPENDENT) * THE PBA MAY BE ANY VALID M4D12 ADDRESS OR * ANY DIRECT OR INDIRECT UNINDEXED ADDRESS ** SPACE 2 F:CFNO MACRO F:CFNO/26 F:CONN MACENT F:CONN/24 F:CREA MACENT F:CREA/22 F:DELE MACENT F:DELE/23 F:DMNT MACENT F:DMNT/29 F:MONT MACENT F:MONT/25 * I:IO MACENT I:IO/7 I:LOAD MACENT I:LOAD/30 I:LD410S MACENT I:LD410S/31 I:OVL MACENT I:OVL/35 * R:ABUF MACENT R:ABUF/13 R:AWAL MACENT R:AWAL/17 R:BGIN MACENT R:BGIN/3 R:CINT MACENT R:CINT/8+:8000 R:CTIC MACENT R:CTIC/19 R:CWAL MACENT R:CWAL/21 R:DBUG MACENT R:DBUG/0+:8000 R:END MACENT R:END/4+:8000 R:GATD MACENT R:GATD/27 R:GPRI MACENT R:GPRI/6+:8000 R:GTOD MACENT R:GTOD/16+:8000 R:ITIC MACENT R:ITIC/11 R:IWAL MACENT R:IWAL/18 R:MTIC MACENT R:MTIC/20 R:PAUS MACENT R:PAUS/12 R:RECV  MACENT R:RECV/10 R:RBUF MACENT R:RBUF/14 R:SATD MACENT R:SATD/28 R:SEND MACENT R:SEND/9 R:SIG MACENT R:SIG/1 R:SPRI MACENT R:SPRI/5 R:STOD MACENT R:STOD/15+:8000 R:WAIT MACENT R:WAIT/2 R:AFB MACENT R:AFB/32+:8000 R:RFB MACENT R:RFB/33 R:EX MACENT R:EX/34 * * * X: SET #(0,'/')-1 LOAD #(0,1,X:) X: SET X:+2 Y: SET #(0,X:,30) IFT #(1,?) S: SYMATT #(1) X: SET NXBT:++PNXBT:**S:=0 X: SET INDBT:**S:<>0+X:*X://13 ENDC IFF #(1,?) X: SET Y:**:8000//-14--3//13 ENDC * WORD Y:**:00FF++:1A00++X: STRAP INSTRUCTION IFT X: IFT #(1,?) WORD #(1,) DIRECT OR INDIRECT UNINDEXED PARAMETER ENDC IFF #(1,?) WORD 0 NO PARAMETER ENDC ENDC IFF X: M4D12 #(1) M4D12 PARAMETER ENDC * IFF \Y://-15**:00000001=#(?) NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM SPACE 3 TITL .... R : C H M A P M A C R O * * R:CHMAP MACRO * GENERATES A CALL TO R:SCHMAP.THIS IS TO BE USED TO CHANGE * THE MAP FOR LOADING PURPOSES ONLY. * * R:CHMAP MAPDESC * * MAPDESC = ADDRESS OF MAP DESCRIPTOR BLOCK * R:CHMAP MACRO SRC EXTR R:SCHMAP SRC JSK R:SCHMAP SRC WORD #(1) SRC ENDM SRC SAVE END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII# IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII$ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII. BOOT3 BINOS4SYS LIBOS4GEN JCL OS4GENLINK JCL OS4GENFLINKJCL OS4AUX LIB GEN MAC MCS LIBMCSDIBCIB MACOS4::CONFIGASMIOSD MACIOS MAC<e% 871012095914871012095914871012130649e,871012095914871012095914871012095914e871012095914871012095914871012095914e871012095914871012095914871012095914871012095914871012095914871012095914e871012130059810520140639871012130406e871012130102840731161809871012130412& e%871012130109860806154507871012130414 e871012130113860807092043871012130416 e871012130116860806114628871012130418 el871012130119861008152316871012130518 e 871012130224840627164216871012130525 e871012130232820907163836871012130529de' 9871012130237840731182339871012130539e+)871012130250860807092832871012130547e@ 871012130259860806100542871012130634e!A871012130350850402120148871012130646( ?JMC:FUN MC:WRT MC:RD O0SEGMENTBLANK IOS: o KMC:DTABLMC:ETABLMC:DCR KMC:ECR MC:REDY MC:IO2 KMC:IO1 MC:IOERRMCFBW: KMCFBR: I:STAT I:ECTT KMC:OPCL MC:VCNT MC:SIV KI:TRTB I:TRLL I:EMEM KI:RET I:FINI I:STUP im MACRO (F400) @im*** MCS.LIB - REV F200 m ***g EDAF ŠB ΦQ  ÀDD DIBJEK CF㞋ttTRtttt DOFB6AρE@6A rP + 1QCܗ 0y eBD+ KFQFQFM APB ЄP GG]O cD FF6EEKttt t  xxMvAuF @0 CXJQB1h 6ǀy C DD P +KFQFBJ Gy ÂGGM PACIB @61T@ KSNJĂ ܄6ÀMbf  tttt  DIJJCIIHttg IPRED@A= ׀DDNF 3  EKBJF QP  !F A6 M_SM A4K_%'-  iPDJ IQDF6AKFttt t ttt tt QnSi MedfAdAK_% +'PQL K  IDDQ II9 A4M102A m0ADDIIFXJQJ K QAKF 6+DJ B%QC*˞ aa' QQ ICB 1€F DPQ_QAFNDttt" EKM B%'Q_ J  K@* H% '@(KK+I_K#BK` M@#QgAIIDMN F6 FKK_IQAžHU 0 SKIP ALL IF ALREADY DEFAULTED IFT WDLEN:=5 WDLEN2: SET 0 AS DEFINED IN HARWARE SPEC. ENDC IFT WDLEN:=6 WDLEN2: SET 1%2  " " " ENDC IFT WDLEN:=7 WDLEN2: SET 2%2 " " "  ENDC IFT WDLEN:=8 WDLEN2: SET 3%2 " " " ENDC IFT WDLEN:<5 WDLEN2: SET 0 DEFAULT TO FIVE NOTE W,'INVALID CHAR.LENGTH,DEFAULTS TO 5' ENDC IFT WDLEN:>8 WDLEN2: SET 3%2 DEFAULTS TO EIGHT NOTE W,'INVALID CHAR.LENGTH,DEFAULTS TO 8' ENDC  ENDC STPBIT1: SET '##(4,1,2)' STOP BIT GIVEN ? 1.5 MAYBE ? STPBIT2: SET '##(4,2,3)' " " " " " PRTYBI:: SET '##(5)' EVEN OR ODD PARITY ? IF ANY. IFT STPBIT1:=0 NULL PARAMETER ? STPBIT: SET  2%6 1 STOP BITS DEFAULT ENDC IFT STPBIT1:<>0 SOME PARAMETER GIVEN (1.5 ?) IFT STPBIT1:='1.' IFT STPBIT2:='.5' IF 1.5 THEN VALUE IS 1 STPBIT: SET 1%6 ENDC ENDC IFF STPBIT2:='.5' NOT 1.5 ? STPBIT1: SET #(4) NOT IN ASCII IFT STPBIT1:=1 1? STPBIT: SET 2%6 VALUE IS 2 ENDC IFT STPBIT1:=2 2? STPBIT: SET 3%6 VALUE 3 ENDC IFT STPBIT1:>2 >2? NOTE E,'INVALID STOP BITS PARAMETER' ENDC ENDC ENDC IFT PRTYBI::=0 IF PARITY IS DEFAULTED.. PRTYBIT: SET 0 IFT WDLEN:=0 IF WORD LENGTH I+ S ALSO DEFAULTED IFF DEV:--'TV' AND DEVICE IS 'TV' PRTYBIT: SET 3%4 DEFAULT TO 'EVEN' PARITY FOR 'TV' MASK: SET :3000 DISREGARD PARITY ERROR IN THIS CASE ENDC ENDC ENDC IFT PRTYBI::='E' PRTYBIT: SET 3%4 'E' MEANS ENABLE PARITY (EVEN) ENDC IFT PRTYBI::='O' 'O' MEANS ENABLE PARITY (ODD) PRTYBIT: SET 1%4 ENDC * NAM D:#(1) D:#(1) CHAN D:#(1,1,3) DI:PER WORD FLG: DI:FLG - FLAG WORD WORD C:#(1) DI:CIB - CIB ADDRESS WORD 0  DI:FCB - FCB ADDRESS IFT #(2,?) IS THERE A DEVICE NAME ? BYTE '##(2)' DI:NAME - DEVICE NAME 4 ASCII CHAR.S ENDC IFF #(2,?) IS IT NULL? BYTE '##(0,1,4)' DI:NAM - DEVICE NAME 4 ASCII CHAR.S ENDC RES 2,0 WORD SPB: DI:SPB - TIMER SHIFT PER BYTE WORD WBT: DI:WBT - TIMER BASE TIME WORD DSW1: DI:DSW(1) READ WORD DSW2: DI:DSW(2) WRITE WORD 0 DI:DSW(3) POSITION WORD DSW4: DI:DSW(4) FUNCTION RES 2,0  WORD CPL: DI:CPL - CHAR.S PER LINE BYTE BOF:,LPP: DI:LPP - BOTTOM OF FORMS CNT/LINES PER PAGE WORD BMI: DI:BMI - BRANCH/MODE (INPUT) WORD BMO: DI:BMO - BRANCH/MODE (OUTPUT)  IFT DEV:--'LP' IFT EOL:<>0 EXTR TYEOL: WORD TYEOL: DI:EOL - POINTER TO END OF SEQUENCE ENDC IFT EOL:=0 WORD 0 ENDC IFT TOF:<>0 EXTR TYTOF:  WORD TYTOF: ENDC IFT TOF:=0 WORD 0 ENDC WORD MASK: DI:ERM - ERROR MASK FOR STATUS WORD 0 DI:LC - LINE COUNTER WORD EDT: DI:EDT - EDIT CHARACTER IFT ELI:<>0 EXTR TYELI: WORD TYELI: ENDC IFT ELI:=0 WORD 0 ENDC WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUFFER IFT PU:<>0 WORD TYEOL: DI:EOL - POINTER TO END OF LINE SEQUENCE ENDC IFT PU:=0 WORD 0 DI:EOL - NULL POINTER TO EOL SEQ. ENDC ENDC IFF DEV:--'LP' IFT #(8,?) NEED LINE FEED?  EXTR DPEOL: YES, STORE POINTER WORD DPEOL: AUTOMATIC LINE FEED ENDC IFF #(8,?) EXTR LPEOL: WORD LPEOL: NO AUTOMATIC LINE FEED ENDC EXTR LPTOF:,LPPUF: WORD LPTOF: TOP OF FORM SEQUENCE WORD :3800 DI:ERM - ERROR MASK FOR STATUS  WORD -LPP: DI:LC - LINE COUNTER WORD 0 DI:EDT - EDIT CHARACTER WORD 0  DI:ELI - ADDR.OF EOL SEQ. ON INPUT WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUFFER WORD LPPUF: DI:PU - POINTER TO POWER UP SEQUENCE ENDC IFT TYPE:#(1,3,4)<=3 AUTOECHO? WORD ,  CH:#(1,3,4)%12++9 DI:CTRL - AUTOECHO IN BOARD ENDC IFT TYPE:#(1,3,4)>=4 NO AUTOECHO ?  WORD 0 ENDC WORD STPBIT:++PRTYBIT:++WDLEN2:++:2 DI:MODE - MODE CONTROL WORD TYPE:#(1,3,4) DI:TYPE - DEVICE TYPE OPT: SYMVAL OPT:MC#(1,3,4) IFT OPT:=0 WORD 0 ENDC IFT OPT:<>0 WORD OPT:MC#(1,3,4) ENDC WORD 0 DI:UTBL - USER'S SPECIAL CHAR.TABLE POINTER #(1)BF: RES 2,0 TWO WORD INTERNAL BUFFER ORG O: ENDM TITL TITL OPTIONAL SPECIAL CHARACTER TABLE GENARATING MACRO SPACE 1 * THIS MACRO WILL ALLOW THE USER TO GENERATE A SPECIAL CHARATER * TABLE OF 256 CHARATERS. THERE ARE 3 WAYS TO USE THIS MACRO: * * 1) OPT:MC MCXX,PAR,PAR,PAR,...,ETC. (UP TO 12 PARAMETERS) * WHERE XX=DIB IDENTIFICATION * PAR=HEX.VALUE OF THE CHARACTER * * 2) OPT:MC *MCXX,PAR,PAR,...,ETC. (UP TO 12 PARAMETERS) * WHERE * INDICATES A CONTINUATION OF THE TABLE * IDENTIFIED BY THE DIB XX * * 3) OPT:MC * (NO PARAMETERS AT ALL) TO INDICATE THE END OF THE TABLE * THIS FORM OF THE MACRO MUST FOLLOW THE LAST MACRO * USING THE * FOR ALL DIB TABLES. * * TO SUMMARIZE: * THE OPT:MC MACRO WITH PARAMETERS (MAX.12) AND NO * * MUST ALWAYS BE USED TO BEGIN A SPECIAL CHARACTER TABLE FOR ANY DIB * IF MORE THAN 12 CHARACTERS ARE TO BE REQUIRED THEN THE SAME MACRO * WITH AN * IN THE IDENTIFYING PARAMETER MUST BE USED. AS MANY AS * NEEDED OF THESE MACRO MAY BE USED, WITH THE ONLY CONDITION THAT * FOLLOWING THE LAST CONTINUATION MACRO AN ENDING MACRO WITH NO * * OR PARAMETERS AT ALL BE USED. * * THE REASONING BEHIND TAKING THIS APPROACH IS THE MANNER IN WHICH * THE TABLE IS BUILT AND THE NEED TO RESTORE AT THE END OF THE * TABLE, THE LOCATION COUNTER OF THE BLANK SEGMENT. * * EACH TABLE WILL CONTAIN THE TOTAL NUMBER OF CHARACTERS FOR THAT * TABLE IN THE FIRST WORD OF THE TABLE * * IN ORDER TO ACCOMPLISH THIS RESULT CERTAIN CHECKS WERE INCLUDED * IN THE MACRO WHICH ITS RESULT WILL VARY FROM THE 1ST AND 2ND PASS * OF THE MACRO ASSEMBLER. THE MAIN CODE TO BE CONCERNED IS THAT WHICH * TAKES CARE OF ADDING THE TOTAL COUNT OF CHARACTERS EACH TIME THE * MACRO USING THE * IN THE 1ST IDENTIFYING PARAMETER IS FOUND. TITL TITL SPACE 2 OPT:MC MACRO CNT: SET #(?)  IFT CNT:=0 ORG O: ENDC IFT CNT:<>0 CNT: SET #(?)-1 IFF #(1,'*') LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM TRICK: SYMVAL M:#(1,3,4)  IFT TRICK:=0 M:#(1,3,4) SET 0 ENDC OPT:MC#(1,3,4) WORD M:#(1,3,4)+CNT: ENDC IFT #(1,'*') M:#(1,4,5) SET M:#(1,4,5)+CNT: ENDC CNT: SET $+CNT: ENDC OPT:GEN MACENT IFT $:F ADDR2: SET :F0&ADDR: LETS ASSUME THERE MIGHT SOMETHING IFT ADDR:<>ADDR2: IN LOWER NIBBLE NOTE E,'INVALID DEVICE ADDRESS' ENDC  ENDC IFT ADDR:=0 ADDR: SET MCSDA: DEFAULT DEVICE ADDRESS ENDC CHAN: SYMVAL #(1,4,4)  RETRIEVE CHANNEL NO. IFT CHAN:>=4 NOTE W,'CHAN.NO.MUST BE 0-3' ENDC WORD CHAN:%1+ADDR: CI:DA - DEVICE ADDRESS + CHANNEL NO. VECT: SYMVAL #(3) GET INTERRUPT ADDR. VALUE IFT VECT:=0 VECT: SET MCSIV: DEFAULT INTERRUPT VECTOR ADDRESS ENDC IFT VECT:>:1FFF MUST BE BELOW 8K OF MEMORY NOTE E,'INTERRUPT VECTOR ADDRESS IS TOO LARGE' ENDC WORD VECT: CI:IV  - INTERRUPT VECTOR WORD 0 CI:UNI - RESERVED WORD MC:RD CI:RD - ENTRY POINT TO READ WORD MC:WRT CI:WRT - ENTRY POINT TO WRITE WORD 0 CI:POS - ENTRY POINT TO POSITION WORD MC:FUN CI:FUN - ENTRY POINT TO FUNCTION JST R:SA12 DISABLE EOB INTERRUPTS  SIN 4 COPY =:20,X DISABLE I/O FUNCTION JMP !LOW  DO REST OF EOB WORD 0 CI:T1 - TEMP CELL WORD 0 CI:T2 - TEMP CELL  WORD 0 CI:APR - PRIORITY OF ACTIVITY WORD 0 CI:TIB - TIB ADDWORDS WORD 1 CI:USM - CONTROLLER USAGE SEMAPHORE WORD 0 CI:TIM - TIMER WORD 0  CI:CSM - COMPLETION SEMAPHORE WORD 0 CI:CFL - COMPLETION FLAG !LOW EXTR I:EOB WORD  CHAN:%1++ADDR:++:2209 OUT INSTRUCTION (X-REG) COPY =$-CI:EOB2-1,X CIB ADDRESS JMP *$+1 WORD I:EOB ORG O: ENDM END .  TITL OS4DICONFIG - SYSTEM CONFIGURATION (93461-10-G400) *************************************************************** * *  R E V I S I O N H I S T O R Y * * REV E600 - ADDED CIB:DF AS PER CHANGES REQUIRED BY NEW * IOSDIBCIB, IOSD.MAC, AND INCLUSION OF SCOUT * FLOPPY HANDLER. MJD 16DEC80. * * REV E700 - THIS SYSTEM IS NOW SET FOR 81 COLUMNS. * THIS INCLUDES THE CARRIAGE-CONTROL * CHARACTER. SLM 18FEB81. * * REV F000 - SET UP NAM FOR DEFAULT LOAD ADDRESS * (LOAD:B) SD 1/MAY/81 * * REV F100 - SET UP EMP: AND EMPSIZE: PARAMETERS FOR * SYSTEM EMP SPACE. * CWK 06/AUG/82. * * REV F200 - ADDED CIB AND DIB MACRO CALLS FOR THE WTC 5 1/4" * WINCHESTER. * V.PENRY APR 85 * * REV G350 - COMPLETE RATIONALISATION OF ALL CONFIG FILES. WTC * DRIVER CHANGED TO USE THE NEW WTC (REV B5 OR LATER) * NOTE THAT ALL PREVIOUS REVISIONS OF THE WTC WILL * NOT FUNCTION WITH THIS DRIVER. * * REV G360 - ACC DIBS AND CIBS ADDED TO CONFIG FILE. IN ORDER FOR * THESE TO OPERATE CORRECTLY, THE SYSTEM MUST HAVE BEEN *  GENERATED WITH IOSTTY AT REV F400 (OR LATER) AND * IOSD.MAC AT REV F420 (OR LATER). * *  MJD 23/06/86 * * REV G400 - REFERENCE TO AUTO-CONFIGURE ADDED TO FILE * *  MJD 18/07/86 *************************************************************** TITL ... BUFFER POOL & FREEPOOL DEFINITION * SYSTEM NAM UAT:OS NAM UATP: NAM PRI:MAX NAM FPOOL:,FPSIZE:  NAM EMP:,EMPSIZE: NAM JCL:E NAM LOAD:B LOAD CONSINT:,I:OVL LOAD CLK50: DELETE THIS LINE IF 60HZ TIMEBASE * LOAD AUTO:CFG DELETE THIS LINE TO SWITCH OFF AUTO-CONFIGURATION *  NORMALLY SWITCHED OFF IN USER CONFIGURATION * * EMULATOR LOAD DIRECTIVES * LOAD R:EMLTR  REQUIRED FOR ANY EMULATOR USAGE * LOAD EM:410X MAKES A 410 LOOK LIKE A 430 LOAD EM:410 MAKES A 410 LOOK LIKE AN OPTIONED 490 * LOAD EM:430X MAKES A 430 LOOK LIKE A 490 * LOAD EM:430 MAKES A 430 LOOK LIKE AN OPTIONED 490 * LOAD EM:FLPT ADDS FLOATING POINT INSTRUCTIONS ONLY * * GENERATE BUFFER POOL * BUF:R 3 * * DEFAULT LOAD ADDRESS LOAD:B EQU :200 * * DEFINE MAXIMUM NUMBER OF /PRINT COMMANDS * TO BE QUEUED UP WITHOUT WAITING * PRI:MAX EQU 4 * * DEFINE FREEPOOL SIZE * OS4 RECOMMENDED SIZE = 20 BLOCKS * MULTED RECOMMENDED SIZE = 60 BLOCKS * BLOCKS EQU 20 FPSIZE: EQU PRI:MAX*2+BLOCKS*12 FREEPOOL SIZE * * DEFINE EMP SIZE * EMPSIZE: EQU 0 TITL ... DIB & CIB GENERATION * * THE FOLLOWING DIB & CIB GENERATION SECTION DEALS WITH * THE MOST COMMONLY USED DEVICES ON MAXI-BUS/DATACASE & SCOUT * FOR DEVICES SUCH AS THE ASYNC MUX/PICO FLOPPY/MAG TAPE * ADD THE DIB & CIB AS DETAILED IN THE INPUT OUTPUT SUBSYSTEM * (IOS/ 4) REFERENCE MANUAL 93430-90 * * TERMINAL DEVICES DIBS AND CIBS * * DIO & PICO DIBS & CIBS (DEVICE ADR. :F0 & INT. VECTOR :C0) * TVDIBCIB TV00,:F,4,:C0 DIO CARD VDU/CRT (CHANNEL 4) DIB:LP LP00,133,57,LF: DIO CARD LINE PRINTER (CHANNEL 7) * DIB:ST PP00 PAPER TAPE PUNCH (CHANNEL 6) * DIB:ST PR00 PAPER TAPE READER (CHANNEL 5) * DIB:ST CR00 CARD READER (CHANNEL 0) * * EIO DIBS & CIBS (DEVICE ADR. :F0 & INT. VECTOR :1C0) * * TVDIBCIB TV00,:F,4,:1C0,EIO EIO CARD VDU/CRT (CHANNEL 4) * DIB:LP LP00,133,57,LF:,,CIB:  EIO CARD PARALLEL LP (CHANNEL 7) * CIB:LP LP00,:F,7,:1C0 EIO PARALLEL LP CIB * * ACC DIBS & CIBS (DEVICE ADR. :F0 & INT. VECTOR :180) * * TVDIBCIB TV00,:F,4,:180 ACC CARD VDU/CRT (CHANNEL 4) * DIB:LP LP00,133,57,LF:,,CIB:,SER ACC SERIAL PRINTER (CHAN 7) * CIB:LP LP00,:F,7,:180 ACC PRINTER CIB * * SCOUT MCS CARD DIBS AND CIBS * * DIB:MCTV MC00,TV00 SCOUT MCS CARD CHANNEL 0 TV * DIB:MCLP MC01,LP00,,,,133,57,LF:,5 MCS CARD LP (SERIAL) CHANNEL 1 * DIB:MCTV MC02,TV01 SCOUT MCS CARD CHANNEL 2 TV * DIB:MCTV MC03,TV02 SCOUT MCS CARD CHANNEL 3 TV * CIB:MC MC00 SCOUT MCS CHANNEL 0 CIB * CIB:MC MC01 SCOUT MCS CHANNEL 1 CIB * CIB:MC MC02 SCOUT MCS CHANNEL 2 CIB * CIB:MC MC03 SCOUT MCS CHANNEL 3 CIB * * FLOPPY DISK DIBS AND CIBS * * QUARTER MEGABYTE DRIVES (53696 CONTROLLER, 8" ONLY) DIB:DF DF00 DRIVE 0 DIB:DF DF01 DRIVE 1 CIB:DF DF00,:11 * ONE MEGABYTE DRIVES (53818 CONTROLLER, 8" OR 5 1/4") * DIB:DFQ DF00 DRIVE 0 * DIB:DFQ DF01  DRIVE 1 * CIB:DFQ DF00,:11 * SCOUT (54124 CONTROLLER) 8" OR 5 1/4" FLOPPY DISK DRIVES * DIB:DS DF02 8" DRIVE 2 * DIB:DS DF03 8" DRIVE 3 * OPT:DS MINI,UNI OPTION SWITCH TO 5 1/4" DRIVES * DIB:DS DF00,512D,77*2,4 5 1/4" DRIVE 0 * DIB:DS DF01,512D,77*2,4 5 1/4" DRIVE 1 * CIB:DS DF00 * * MEDIUM CAPACITY (MCDC) DIBS AND CIBS * DIB:DM DM00,10 DRIVE 0 10MB  DIB:DM DM01,10 DRIVE 1 10MB DIB:DM DM02,5 DRIVE 2 5MB DIB:DM DM03,5  DRIVE 3 5MB CIB:DM DM00,:14 * * HIGH CAPACITY (HCDC) DIBS AND CIBS * DIB:DH DH00,40  DRIVE 0 40MB DIB:DH DH01,80 DRIVE 1 80MB DIB:DH DH02,150 DRIVE 2 150MB  DIB:DH DH03,300 DRIVE 3 300MB CIB:DH DH00,:15 * * 8" WINCHESTER (53872 CONTROLLER) * *  DIB:DK DH00,QWIN,10 DRIVE 0 QUANTUM 10MB * DIB:DK DH00,QWIN,40 DRIVE 0 QUANTUM 40MB * CIB:DK DH00,QWIN,:15 * * TCU CONTROLLED 5 1/4" WINCHESTERS * * DIB:DK DH20,5WIN,4,:131,1,:0101,0 10MB SEGATE TCU * DIB:DK DH20,5WIN,4,:131,1,:0101,0 10MB CMI 5412 TCU * DIB:DK DH20,5WIN,8,:140,2,:0101,:8401 26MB R0 ODIME TCU * DIB:DK DH20,5WIN,6,:27F,4,:0101,0 40MB CMI 6640 TCU * DIB:DK DH20,5WIN,7,:285,4,:0201,0  46MB ATASI 3046 TCU * DIB:DK DH20,5WIN,6,:33D,4,:0101,0 52MB MICROPOLIS 1304 TCU * DIB:DK DH20,5WIN,7,:396,4,:0101,0 65MB MAXTOR TCU DIB:DK DH20,5WIN,15,:396,8,:0101,0 140MB MAXTOR TCU CIB:DK DH20,5WIN,:14,,TCU * * WTC CONTROLLED 5 1/4" WINCHESTERS * * DIB:DK DH10,5WIN,4,:127,1,:0101,0,0 10MB SEGATE WTC * DIB:DK DH10,5WIN,4,:127,1,:0101,0,0 10MB CMI 5412 WTC * DIB:DK DH10,5WIN,8,:136,2,:0101,:8401,0 26MB RODIME WTC * DIB:DK DH10,5WIN,6,:275,4,:0101,0,0 40MB CMI 6640 WTC * DIB:DK DH10,5WIN,7,:27B,4,:0201,0,0 46MB ATASI 3046 WTC * DIB:DK DH10,5WIN,6,:333,4,:0101,0,0 52MB MICROPOLIS 1304 WTC * DIB:DK DH10,5WIN,7,:38C,4,:0,0,0,0 65MB MAXTOR WTC DIB:DK DH10,5WIN,15,:38C,8,:0101,0,0 140MB MAXTOR WTC  CIB:DK DH10,5WIN,:14,,WTC * * SCOUT (54140 CONTROLLER) WINCHESTERS * * DIB:DK DH00,SWI DRIVE 0 10MB * CIB:DK DH00,SWI * TITL ... UNIT ASSIGNMENT TABLE * * UNIT ASSIGNMENT TABLE * * USER SCRATCH SECTION (MUST NOT BE CHANGED!) * UAT:AA UAT:OS UNIT ASSIGNMENT TABLE UAT:EE 'X1',0 USER SCRATCH UAT:EE 'X2',0 USER SCRATCH UAT:EE 'X3',0 USER SCRATCH UAT:EE 'X4',0 USER SCRATCH * * DEVICE ASSIGNMENT SECTION * UNITS MAY BE ADDED OR ASSIGNMENTS CHANGED IN THIS SECTION, * BUT THE ORDER OF LOGICAL UNITS SHOULD NOT BE ALTERED AND * LOGICAL UNITS SHOULD NOT BE DELETED. ADD UNITS AT THE END * OF THIS SECTION IF NECESSARY. * * ********************************************************* * STANDARD ASSIGNMENTS FOR MAXI-BUS/DATACASE * UAT:EE 'SI',D:TV00 STANDARD INPUT UAT:EE 'LO',D:TV00 LISTING OUTPUT UAT:EE 'SF',D:DF00 SYSTEM FILE UAT:EE 'UF',D:DF00 USER FILE UAT:EE 'OC',D:TV00 OPERATOR CONSOLE UAT:EE 'CI',D:TV00 COMMAND INPUT UAT:EE 'SL',D:TV00 SYSTEM LOG UAT:EE 'SO',D:TV00 STANDARD OUTPUT UAT:EE  'SA',D:TV00 STANDARD ALTERNATE UAT:EE 'LD',0 LOAD PROGRAM UAT:EE 'OV',0 LOAD OVERLAY  UAT:EE 'XX',D:DF00 SCRATCH FILE UAT:EE 'PO',D:LP00 PRINT OUTPUT * * ********************************************************* * STANDARD ASSIGNMENTS FOR SCOUT WITH MCS CARD * * UAT:EE 'SI',D:MC00 STANDARD INPUT *  UAT:EE 'LO',D:MC01 LISTING OUTPUT * UAT:EE 'SF',D:DF00 SYSTEM FILE * UAT:EE 'UF',D:DF01 USER FILE *  UAT:EE 'OC',D:MC00 OPERATOR CONSOLE * UAT:EE 'CI',D:MC00 COMMAND INPUT * UAT:EE 'SL',D:MC00 SYSTEM LOG * UAT:EE 'SO',D:MC00 STANDARD OUTPUT * UAT:EE 'SA',D:MC00 STANDARD ALTERNATE * UAT:EE 'LD',0  LOAD PROGRAM * UAT:EE 'OV',0 LOAD OVERLAY * UAT:EE 'XX',D:DF01 SCRATCH FILE * UAT:EE 'PO',D:MC01 PRINT OUTPUT * ********************************************************* * * SYSTEM SCRATCH SECTION (M1 UST NOT BE CHANGED!) * UAT:EE 'Z1',0 SYSTEM SCRATCH UAT:EE 'Z2',0 " UAT:EE 'Z3',0  " UAT:EE 'Z4',0 " UAT:EE 'Z5',0 " UAT:EE 'Z6',0 " UAT:EE 'ZP',0 PRINT INPUT UAT:ZZ END OF UAT * * PERMANENT UAT * TABLE: REL * SHARABLE TABLE: UATP: RES 4,0 RES UAT:NV*2,0 " * * JCL STACK SPACE * JCLMAX: EQU 5 JCLST: WORD JCLMAX: JCL:E WORD 0 RES JCLMAX:*4,0 * RESERVE FREEPOOL SPACE * FPOOL: RES FPSIZE:,0 * * RESERVE EMP SPACE * EMP: RES EMPSIZE:,0 END * TITL I O S D . M A C - IOS DEVELOPMENT EQUATES & MACROS (93421-1A-F430) TITL .... CONTENTS ************************* * * * IOSD.MAC * * * ************************* * * DIB EQUATES * CIB EQUATES * TIB EQUATES * DIO DEVICE EQUATES * NON-DIO DEVICE EQUATES * BIT:WORD MACRO *  BIT:EQU MACRO * BIT:SET MACRO * INT:SEQ MACRO * DIB:ST MACRO * CIB:ST MACRO * TVDIBCIB MACRO * CIB:DK MACRO * CIB:DF MACRO * CIB:DFQ MACRO * CIB:DP: MACRO * OPT:DS MACRO * DIB:DK MACRO * DIB:DM MACRO * DIB:DH MACRO * DIB:DF MACRO * DIB:DFQ MACRO * DIB:DS MACRO * CIB:DM MACRO * CIB:DH MACRO * CIB:DS MACRO * DIB:DP MACRO * CIB:DP MACRO * COND  MACRO * COND1 MACRO * D:AC MACRO * DIB:TV MACRO * DIB:LP MACRO * C:AC MACRO *  CIB:TV MACRO * CX:AC MACRO * DIB:MT MACRO * CIB:MT MACRO * DIB:BP MACRO * DBP:O  MACRO * CIB:BP MACRO TITL .... REVISION HISTORY * * REV E500 - ADDED FIFTH PARAMETER TO DIB:LP TO SPECIFY TIME-OUT * SHIFT COUNT VALUE (FOR THE AXIOM IMP-2 PRINTER) * MSS RICHARDSON * * REV E600 - REA 10156 FIXED (CX:AC MACRO); REA'S 10168, 10173 * FIXED (CIB:BP MACRO) *  DCR 15/JAN/81 * * REV E700 - CHANGED LINE PRINTER TO 81 COLUMNS. SLM 2/MAR/81 * * REV F000 - INT:SEQ MACRO FIXED SD 2/APR/81 * FIXED FS: IN READ/WRITE DSW WORDS FOR DISK BLOCK I/O * EQUATED FROM DFQDA: TO DFDA: FOR QUAD FLOPPY DIB * DIB:DFQ TO GENERATE CORRECT CHAN NAME. * (REAS FIXED: 10192,12979,12977,12976) * * REV F100 - ADDED DIB:DK, CIB:DK, DISK FAMILIES. * ALSO, INCLUDES CHANGES FOR SCOUT MULTI-CHANNEL SERIAL * IO HANDLER. * CWK 24/SEP/81. * * REV F101 - CHANGED DI:ERM FROM :2000 TO :3B14 FOR USE IN * IOSTTY.ASM (CHARACTER DRIVER). * VAW & CWK 02/OCT/81. * *  CHANGED CIB:DK TO CORRECT FAMILY LOGIC. * ALSO, FIXED RD,WRT,POS&FUN ENTRY POINTS *  FOR DFQ. ALSO, INCLUDED DFQ IN EOB SEQUENCE. * CHANGED FAM:PHXN AND FAM:PHXA EQU NAMES TO2  FAM:PHWS * AND FAM:PHNS. THIS CHANGES ITS MEANING; IT * NOW REFERS TO WHETHER OR NOT THE DRIVE HAS * SPO OPTION SO WE CAN MAKE SURE DH REFERS TO * THE FIXED VOLUME. * MDB & CWK 07/OCT/81. TITL * * REV F200 - CHANGED 'TPC:' TO 'SPA:' IN PHOENIX DIB AREA, * BEING PREVIOUSLY INCORRECT. * CWK 13/OCT/81 * * * REV F300 - ADDED 16-MB DEFAULT TO PHOENIX SIZE IN DIB * ADDED FD: AND SPCH OPTIONS TO CX:AC MACRO * FOR ASYNCH MUX. * ADDED EDT: OPTION TO D:AC FOR ASYNCH MUX * MOVED DI:LPP AND DI:CPL DOWN IN ASYNCH MUX * DIB FOR USE BY DRIVER. * PFT 4/FEB/82 * * - ADDED SCOUT WINCHESTER DISKS TO DIB:DK AND * CIB:DK MACROS. THE FAMILY IDENTIFIER * IS SWI. * CWK 08/AUG/82. * * - MADE THE TIMEOUT VALUE FOR ALL WINCHESTER * DISKS 7*8 AND SPB IS :FFFF FOR SCOUT * WINCHESTER DISKS. *  CWK 07/SEP/82. * TITL * REV F400 - FIXED CIB:DK SO THAT IT VALIDATES THE DEVICE ADDR * OF THE UFDC, WHICH IS PASSED AS A PARAMETER IN A * CIB:DS CALL. A VALID ADDRESS IS ANYTHING BETWEEN * 4 & :FC THAT HAS THE 2 LOW-ORDER BITS TURNED OFF. * MHAYES 02/JUN/83 * - UPDATED DIB:DK SO THAT 5-1/4" WINCHESTER DRIVES * MAY BE GEN'D INTO SYSTEM. ALSO ADDED A TEST WHEN AU'S * PER DISK ARE CALCULATED; AN ERROR IS GENERATED IF * IT WINDS UP WITH MORE THAN 32,767 (:7FFF) AU'S. * - ADDED EQUATES TO BE USED BY LABEL WHEN PROCESSING * 5-1/4" WINCHESTERS. (SEE 'MISCELLANEOUS EQUATES' & * 'EQUATES FOR DISK DEVICE FAMILIES') *  MHAYES 04/OCT/83 * - FIXED THE WORD IN CIB:TV (CI:IV) THAT WAS GENERA- * TING THE INTERRUPT VECTOR ADDRESS. IT WAS COMPUTING * THE ADDRESS INCORRECTLY. *  CKEATING & MHAYES 11/OCT/83 * * - ADDED MACROS TO CREATE DIB & CIB FOR THE STREAMER *  TAPE. (DIB:STR & CIB:STR) * MHAYES 28/OCT/83 * * - ADDED A PARAMETER TO DIB:LP SO THAT IT'S POSSIBLE TO * GEN A NON-STANDARD CIB FOR THE LP. IF INCLUDED, THE *  STANDARD CIB FROM IOSDIBCIB IS NOT USED. THE CIB IS * CREATED BY A CALL TO CIB:LP IN OS4CONFIG.ASM. * ADDED CIB:LP TO CREATE THE NON-STANDARD CIB (SEE * ADDITIONAL ENTRY POINT TO C:AC) *  CKEATING & MHAYES 28/OCT/83 * * - ADDED A 5TH PARAMETER TO TVDIBCIB. USER MUST SPECIFY * 'EIO' OR 'DIO' FOR THE TV CONTROLLER. THE EIO HANDLES * 'BREAK' DIFFERENTLY. 3 * MHAYES 05/JAN/83 * * REV F410 - ALTERED DISC CIBS AND DIBS TO ACCOMODATE THE * WINCHESTER/TAPE CONTROLLER. * - ADDED 3 WORDS TO DISC CIB (WORDS #39-41) *  - UTILIZED WORD 26 OF CIB AS FLAG FOR TCU OR WTC * ALL CHANGES ARE FLAGGED WITH 'F410' *  V.PENRY 21AUG84 * * * REV F420 EXTRA PARAMETER ADDED TO DIB:LP TO INDICATE IF *  PRINTER IS A SERIAL DEVICE (DIFFERENT COMMAND WORDS * AND STATUS CHECKS ARE THEN ENABLED). NOTE THAT THIS *  THIS OPTION IS * MANDATORY * FOR USE WITH THE ACC. * * ALSO OUTPUT BRANCH MODE COMMANDS ALTERED FOR TV'S * TO ACCOMODATE DIFFERENT LOCATION OF RTS BIT IN * ACC COMMAND WORD. THESE CHANGES WILL BY DEFAULT ALSO * APPLY TO THE DIO/EIO BUT HAVE NO SIGNIFICANT EFFECT. * *  MJD 17/06/86 * * REV F430 DIB:DK WAS IGNORING THE SECTORS-PER-AU PARAMETER * IF THE FAMILY WAS A SCOUT WINCHESTER. THIS IS NOW * FIXED. ALSO DEFAULT IS NOW 4 SECS-PER-AU AS PER * LATEST LABEL. * MJD 01/08/86 **************************************************************************** TITL DIB EQUATES * DEVICE INFORMATION BLOCK (DIB) * DI:PER EQU 0 PEER POINTER DI:FLG EQU 1 DIB FLAGWORD DI:CIB EQU 2 MASTER CIB ADDRESS DI:FCB EQU 3 FILE CONTROL BLOCK LIST HEAD DI:NAM EQU 4 DEVICE NAME (4 CHARACTERS) DI:DN EQU 6 DEDICATION NUMBER DI:DS EQU 7 DEDICATION SEMAPHORE DI:SPB EQU 8 WATCHDOG TIMER -- NUMBER OF SHIFTS PER BYT DI:WBT EQU 9 WATCHDOG TIMER -- BASE TIME DI:DSW EQU 10 DEVICE SPECIFICATION WORDS (10-13) * 14-15 RESERVED * * DIB FLAGWORD *  EQU 15 ALWAYS ZERO FOR DIB DIF:ND EQU 14 NO DEDICATION ON THIS DEVICE DIFAM:DP EQU 13  DI:DDN IS A POINTER TO A DEDICATION NUMBER DIF:NT EQU 12 NO TIMER FOR READ DIF:RT EQU 11  RETRY ON POWER FAIL DIF:FC EQU 10 FORM CONTROL DIF:OP EQU 9 DEVICE IS OPEN. DIF:MC EQU 8 SCOUT MULTI-CHANNEL PSEUDO-OPEN FLAG DIF:INI EQU 7 SET TO 1 WHEN TCU/WTC CONTR. HAS BEEN INITIALIZED DIF:NCFL EQU 2 FLIST IS NONCONTIGUOUS DIF:UI EQU 1 DEVICE SUPPORTS UNSOLICITED INPUT DIF:BF EQU 0 BUFFER FLAG FOR CARD READER DIF:MT EQU 0 DISK IS MOUNTED DIF:NM EQU 1 NO AUTOMATIC MOUNT ON DISK TITL * DEVICE INFORMATION BLOCK FOR CHARACTER DEVICES * DI:CPL EQU 16 CHARACTERS PER LINE DI:LPP EQU 17 BOTTOM OF FORM COUNT/LINES PER PAGE DI:BMI EQU 18 BRANCH/MODE WORD FOR INPUT DI:BMO EQU 19 BRANCH/MODE WORD FOR OUTPUT DI:EOL EQU  20 POINTER TO END OF LINE SEQUENCE DI:TOF EQU 21 POINTER TO TOP OF FORM SEQUENCE DI:ERM EQU 22 ERROR MASK FOR STATUS DI:LC EQU 23 LINE COUNTER DI:EDT EQU 24 EDIT CHARACTER DI:4 ELI EQU 25 END OF LINE SEQUENCE FOR INPUT DI:BUF EQU 26 POINTER TO 2 WORD INTERNAL BUFFER DI:PU EQU  27 POINTER TO POWER UP SEQUENCE * * DEVICE INFORMATION BLOCK FOR SCOUT MULTI-CHANNEL SERIAL IO HANDLER * DI:CTRL EQU 28 BOARD CONTROL WORD (AUTO-ECHO INCLUDED) DI:MODE EQU 29 MODE WORD (CHAR. LENGTH, NO. OF BYTES, ETC.) DI:TYPE EQU 30 TYPE OF DEVICE (TV, LP, TK, ETC. (#) ) DI:SPC EQU 31 CONFIG. SPECIAL CHAR. TABLE ADDR. PTR. DI:UTBL EQU 32 USER'S SPECIAL CHAR. TABLE ADDR. PTR. * * DEVICE INFORMATION BLOCK FOR CARD READER * *I:CPL EQU 16 CHARACTERS PER CARD *I:LPP EQU 17 =0, NOPAGES ON CARD READER *I:BMI EQU 18 BRANCH/MODE WORD FOR INPUT DI:CBA EQU 19 CURRENT BUFFER ADDR DI:ABA EQU 20 ALTERNATE BUFFER ADDR, =0 FOR NO DOBLE BUF DI:TRT EQU 21  TRANSLATION TABLE ADDR *I:ERM EQU 22 ERROR MASK FOR STATSUS TITL * DEVICE INFORMATION BLOCK FOR DISKS * DI:BPS EQU 16 BYTES PER SECTOR DI:SPT EQU 17 SECTORS PER TRACK DI:TPC EQU 18  TRACKS PER CYLINDER DI:CPD EQU 19 CYLINDERS PER DISK DI:SPA EQU 20 SECTORS PER ALLOCATION UNIT DI:CYL EQU 21 CUURRENT CYLINDER FOR FLOPPY DI:TRY EQU 22 HARD/RATE ERROR RETYR COUNT DI:VTS EQU 23 VTOC SEMAPHORE DI:ATS EQU 24 ALLOCATION TABLE SEMAPHORE DI:HOS EQU 25 HEAD OFFSET DI:HSA EQU 26 HEAD SEMAPHORE ADDR DI:FAM EQU 27 DISK DEVICE FAMILY. DI:FLP EQU 28 FLIST POINTER IN AU DI:FLN EQU 29 FLIST LENGTH IN SECTORS DI:ALO EQU 30 ALLOCATION TABLE SECTOR ADDR DI:BPA EQU 32 BYTES PER AU DI:APD EQU 31 AU'S PER DISK DI:SBF EQU 33  SECTORS PER BUFFER DI:SAU EQU 34 DI:BIT EQU 35 BIT # DI:CUR EQU 36 CURRENT COUNT DI:REQ EQU 37 REQUESTED NUMBER OF AUS DI:FND EQU 38 NUMBER FOUND DI:FAU EQU 39 FOUND AU START * * DEVICE INFORMATION BLOCK FOR MINI-FLOPPY * DI:BMW EQU 21 DI:INT EQU 40 DI:SCT EQU 41 DI:SEC EQU 42 * * DEVICE INFORMATION BLOCK FOR 5-1/4" WINCHESTERS * (UNDER T.C.U. OR W.T.C.) * DI:SPW EQU 41 STEP PULSE WIDTH, STEP PERIOD DI:RWC EQU 42 REDUCED WRITE CURRENT CYLINDER, OVERLAP SEEK DI:WPC EQU 43 WRITE PRECOMPENSATION, W.T.C. F410 * * DEVICE INFORMATION BLOCK FOR MAGTAPE * DI:BLKCT EQU 16 BLOCK COUNT DI:SERV EQU 17 ADDRESS OF MAGTAPE SERVICE ROUTINES DI:BMR EQU 20 BRANCH/MODE WORD REWIND DI:OMW EQU 21 ORIGINAL MODE WORD DI:MASK  EQU 24 ERROR MASK DI:FLAG EQU 25 ERROR FLAGS DI:THWS EQU 26 TEMPORARY H/W STATUS * * DEVICE INFORMATION BLOCK FOR STREAMER TAPE * DI:BMRW EQU 18 BRANCH ADDR FOR READ/WRITE DI:BMPF EQU 19 BRANCH ADDR FOR POSITION/FUNCTION DI:IPS EQU 20 DRIVE SPEED - INCHES PER SECOND TITL * DEVICE INFORMATION BLOCK FOR ASYNCH MUX * DI:FIO EQU 18 ADDRESS OF FORMATTED I/O ROUTINE DI:CNFG EQU 19 ADDRESS OF CONFIGURATION ROUTINE * * FLAGWORD BITS FOR ASYNCH MUX DIB * DIF:DC EQU 3 SET FOR 5 DYNAMIC CONFIGURATION DIF:FA EQU 4 SET IF FA: HANDLER LOADED * * DEVICE INFORMATION BLOCK FOR BISYNC PICO * DI:DVS EQU  16 DEVICE STATE WORD DI:OPT EQU 17 OPTION TABLE DI:SID EQU 29 STATION IDENTIFIER  TITL CIB EQUATES * CONTROLLER INFORMATION BLOCK (CIB) * CI:PER EQU 0 PEER POINTER CI:FLG EQU 1  CIB FLAGWORD CI:MST EQU 2 MASTER LINK CI:DIB EQU 3 SUBORDINATE LINK (DIB LIST HEAD) CI:PRI EQU  4 REQUEST PRIORITY CI:DA EQU 5 DEVICE ADDRESS CI:IV EQU 6 DEVICE INTERRUPT VECTOR LOCATION CI:RD EQU 8 ENTRY POINT TO READ CI:WRT EQU 9 ENTRY POINT TO WRITE CI:POS EQU 10 ENTRY POINT TO POSITION CI:FUN EQU 11 ENTRY POINT TO FUNCTION CI:EOB EQU 12 12-15 EOB SEQUENCE * JST R:SA12 USE SYSTEM STACK * COPY TIB,Y TIB ADDR OBVIOUSLY * JMP *$+1 *  DATA I:EOB EOB ADDR CI:T1 EQU 16 TEMP CI:T2 EQU 17 TEMP CI:APR EQU 18  SAVEED PRIORITY OF ACTIVITY USING CIB CI:TIB EQU 19 TIB ADDR CI:USM EQU 20 CONTROLLER USAGE SEMAPHORE CI:TIM EQU 21 WATCH DOG TIMER CALCULATED INTERVAL CI:CSM EQU 22 COMPLETION SEMAPHORE CI:CFL EQU 23 COMPLETION FLAG * * CIB FLAGWORD * CIF:PU EQU 14 POWER UP OCCURED CIF:TO EQU 13 TIME OUT CAUSED COMPLETION CIF:OO EQU 12 OVERLAPPED OPERATIONS CIF:EIO EQU 11  EIO/DIO FLAG (1=EIO, 0=DIO) (F400) TITL * CONTROLLER INFORMATION BLOCK FOR DISK * (DIFFERENT FORMAT FOR TCU & WTC) * CI:RAT EQU 24 RATE ERROR RETRY COUNT CI:HRD EQU 25 HARD ERROR RETRY COUNTER CI:WIN EQU 26 SET TO 1 IF USING WTC FOR 5 1/4" WIN F410 CI:OPC EQU 27 OP CODE CI:DCB EQU CI:OPC  START OF DISK CONTROL BLOCK CI:UNT EQU 28 UNIT CI:CYL EQU 29 CYLINDER CI:SEK EQU 30  RELATIVE SEEK COUNT CI:SEC EQU 31 SECTOR CI:CNT EQU 32 WORD COUNT CI:BUF EQU 33  BUFFER ADDR CI:IEA EQU 34 INTERRUPT ENABLE & ADDR * * CONTROLLER INFORMATION BLOCK FOR HIGH CAPACITY DISK * (DIFFERENT DEFINITIONS FOR TCU & WTC DRIVERS) * CI:IOB EQU 35 NEXT IOB ADDR CI:WP EQU  36 WORDS PROCESSED CI:CST EQU 37 CONTROLLER STATUS CI:DST EQU 38 DRIVE STATUS CI:MSB EQU 39 MSB/LSB TAPE TERMINATION INFO, W.T.C. F410 CI:DEC EQU 40 DATA ERROR COUNT, TAPE  W.T.C. F410 CI:URC EQU 41 UNDERRUN COUNTER, TAPE W.T.C. F410 CI:DIV EQU 42 INTERRUPT VECTOR, JSK CI:EOB (F410 39-->42) CI:SSA EQU 40 SEEK COMPLETE SEMAPHORE ADDR TITL * CONTROLLER INFORMATION BLOCK FOR FLOPPY * CI:FWP EQU 35 WORDS PROCESSED CI:FST EQU 36 STATUS CI:FIV EQU 37 INTERRUPT VECTOR CI:FT1 EQU 38 TEMP CI:EIV EQU 39 ERROR INTERRUPT VECTOR *6  * CONTROLLER INFORMATION BLOCK FOR MINI-FLOPPY * CI:CLK EQU 27 RESET WAIT TIME (MINI FLEXIBLE) * *  CONTROLLER INFORMATION BLOCK FOR MAGTAPE * CI:RTY EQU 24 RATE ERROR RETRY COUNT CI:WCNT EQU 26 WAIT RETRY COUNT CI:TIC EQU 27 WAIT TIMER VALUE CI:MODE EQU 28 LAST PICO MODE WORD * * CONTROLLER INFORMATION BLOCK FOR ASYNCH MUX * CI:OPT EQU 24 ADDRESS OF CHANNEL OPTION TABLE OP:SCT EQU 2 OFFSET OF SPEC CHAR TABLE IN CIB EXTENSION * * CONTROLLER INFORMATION FOR SCOUT MULTI-CHANNEL SERIAL * CI:EOB2 EQU 24 2ND PART IN EOB ROUTINE  TITL TIB EQUATES * TEMPORARY INPUT BLOCK (TIB) - USER'S STACK * TI:IOB EQU 0 IOB ADDRESS TI:FCB EQU  1 FCB ADDR TI:DIB EQU 2 DIB ADDRESS TI:CIB EQU 3 CIB ADDRESS TI:BCT EQU 4  REQUESTED BYTE COUNT TI:BUF EQU 5 BUFFER ADDRESS TI:FC EQU 6 FUNCTION CODE TI:SOF EQU 7 SOFTWARE STATUS TI:PRI EQU 13 TEMPOARY SAVE FOR ACTIVITIES PRIORITY. * * TIB ON ENTRY TO HANDLERS * TI:CRI EQU 12 ADDR OF CURRENT RECORD INDEX * * TIB FOR DIO * TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:ACT EQU 9 ACTUAL BYTE COUNT TI:BMW EQU 10 BRANCH/MODE WORD TI:IBF EQU 11  INTERMEDIATE BUFFER ADDR * * TIB FOR SCOUT MULTI-CHANNEL SERIAL IO HANDLER * TI:CMD EQU 10 COMMAND CONTROL WORD TI:IV EQU 19 RECEIVE/TRANSMIT INTERRUPT VECTOR LOCATION TI:CHR EQU 20 NEGATIVE COUNT SPECIAL CHARS. TI:SAVE1 EQU 21 TEMPORARY STORAGE TI:SAVE2 EQU 22 " " " " " " * * TIB FOR DISKS * *TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:SEC EQU 9 SECTOR NUMBER TI:TRK EQU 10 TRACK NUMBER (HEAD NUMBER) TI:CYL EQU 11  CYLINDER NUMBER * * TIB FOR MAGTAPES * TI:FCSS EQU 21 FILE MANAGER FUNCTION CODE SAVE TI:BCSS EQU 22 BLOCK COUNT SAVE * * TIB FOR ASYNCH MUX * TI:UTL EQU TI:CRI UTILITY PARAMETER TI:OPT EQU 18 ADDR OF OPTION TABLE GOES HERE TI:SCT EQU 19 ADDR OF SPECIAL CHAR TABLE GOES HERE TI:GCB EQU 20 FLAG SET IF CIB OCCUPIED TI:KSAVE EQU 21 SAVE K REG HERE ON ENTRY TI:SYSTM EQU 22 NON-ZERO TO ALLOW TIMOUT * * TIB FOR BISYNC PICO * TI:IST EQU 10 DEVICE STATUS (FROM INTERRUPT ROUTINE) TI:FLG EQU 18 FLAG FOR NON-BCB OPERATION TI:BCB EQU 19 ADDRESS OF BCB CURRENTLY BEING PROCESSED TI:CAF EQU 20 COMPARE ADDRESS FLAG ON READ TI:PFE EQU 21 FLAG FOR POWER FAIL TERMINATION TI:STT EQU 22 STATUS RETURNED FOR BCB CHAIN * * TIB ON RETURN FROM HANDLERS * *TI:ACT EQU 9  ACTUAL BYTE COUNT TI:HWS EQU 10 HARDWARE STATUS (TWO WORDS) TI:HW2 EQU 11 HARDWARE STATUS WORD 2 * * TIB EQUATES * TI:T1 EQU 14 TEMP CELL TI:T2 EQU 15 TEMP CELL TI:T3 EQU 16  TEMP CELL TI:T4 EQU 17 TEMP CELL TI:QUO EQU 18 RELATIVE AU TI:TVW EQU TI:QUO TV WAIT COUNT TI:REM EQU 19 REMIANDER OF SECTOR OR AU CALCULATION TI:RAU EQU 20 EXTENT RELATIVE AU BASE TI:PAU EQU 7  21 EXTENT PHYSICAL AU BASE TI:NAU EQU 22 NUMBER OF AUS IN EXTENT TI:FP1 EQU 23 WORKING FILE POINTER TI:FP2 EQU 24 WORKING FILE POINTER TI:WRQ EQU 25 WORKING REQUEST COUNT TI:PL EQU TI:WRQ PARAMETER LIST ADDR TI:WAC EQU 26 WORKING ACTUAL COUNT TI:FNO EQU TI:WAC FNO TI:WSF EQU 27 WOKING SOFTWARE STATUS TI:UBX EQU 28 USERS BUFFER INDEX TI:CAU EQU 29 CURRENT AU TI:CNX EQU 30 CURRENT INDEX TI:T5 EQU 31 TEMP CELL TI:T6 EQU 32 TEMP CELL TI:FCS EQU 33 FUNCTION CODE SAVE TI:BCS EQU 34 BYTE COUNT SAVE TI:BUS EQU 35 BUFFER ADDR SAVE TIBLN: EQU 36 TIB LENGTH TITL DIO DEVICE EQUATES * DISTRIBUTED I/O * IODAD: SET :F IOD ADDRESS (MAY ONLY BE :C,:D,:E OR :F) IODIB: SET :C0 IOD INTERRUPT ADDRESS BASE * CRCN: SET 0 CARD READER CHANNEL NUMBER CRDA: SET IODAD:%3+CRCN:%1 . DEVICE ADDRESS CRIA: SET CRCN:%3+IODIB: . INTERRUPT ADDRESS * MTCN: SET 1 MAGNETIC TAPE CONTROLLER CHANNEL NUMBER MTDA: SET IODAD:%3+MTCN:%1 . DEVICE ADDRESS MTIA: SET MTCN:%3+IODIB: . INTERRUPT ADDRESS * TVCN: SET 2 CRT  CHANNEL NUMBER TVDA: SET IODAD:%3+TVCN:%1 . DEVICE ADDRESS TVIA: SET TVCN:%3+IODIB: .  INTERRUPT ADDRESS * IECN: SET 3 IEEE INTELLIGENT CABLE CHANNEL NUMBER IEDA: SET IODAD:%3+IECN:%1 . DEVICE ADDRESS IEIA: SET IECN:%3+IODIB: . INTERRUPT ADDRESS * TYCN: SET 4 TELETYPEWRITER CHANNEL NUMBER TYDA: SET IODAD:%3+TYCN:%1 . DEVICE ADDRESS TYIA:  SET TYCN:%3+IODIB: . INTERRUPT ADDRESS * PRCN: SET 5 HIGH SPEED PAPER TAPE READER CHANNEL NUMBER PRDA: SET IODAD:%3+PRCN:%1 . DEVICE ADDRESS PRIA: SET PRCN:%3+IODIB: . INTERRUPT ADDRESS * PPCN: SET 6 HIGH SPEED PAPER TAPE PUNCH CHANNEL NUMBER PPDA: SET IODAD:%3+PPCN:%1 .  DEVICE ADDRESS PPIA: SET PPCN:%3+IODIB: . INTERRUPT ADDRESS * LPCN: SET 7 LINE PRINTER CHANNEL NUMBER LPDA: SET IODAD:%3+LPCN:%1 . DEVICE ADDRESS LPIA: SET LPCN:%3+IODIB: . INTERRUPT ADDRESS TITL NON-DIO DEVICE EQUATES * NON-DIO * DFCN: SET :11 DFDA: SET  DFCN:%3 DISK, STANDARD FLOPPY * DFQDA: SET DFDA: DISK, QUAD FLOPPY * DMCN: SET :14 DMDA: SET DMCN:%3 DISK, MEDIUM CAPACITY * DHCN: SET :15 DHDA: SET DHCN:%3 DISK, HIGH CAPACITY SWDA: SET DHCN:%3 DISK, SHUGART WINCHESTER QWDA: SET DHCN:%3 DISK, QUANTUM WINCHESTER PHDA: SET DHCN:%3 DISK, PHOENIX * DSDA: SET :30 DISK, SCOUT DSIA: SET :C8 INTERRUPT VECTOR ADDRESS (SAME AS MT) DSMOD: SET :8407 IBM FORMAT, 8", SINGLE DENSITY MAX:SPT SET 26 MAXIMUM SECTORS ON A TRACK = 26 FGAP: SET 26 26 BYTE GAP3 (BETWEEN DATA AND NEXT HEADER) FGAP2: SET 58 4 54 BYTE GAP3 FOR DOUBLE DENSITY * DPDA: SET 6 DEFAULT PICO-FLOPPY CHANNEL IS 6 * ETIODAD: SET :F CHANNEL NO. FOR IOD WITH EXTRA TV-S ETIODIB: SET :C0 INTERRUPT VECTOR BASE FOR THAT IOD MCSDA: SET :40 DEFAULT DEVICE ADDRESS FOR SCOUT MULTI-CHANNEL SERIAL * * THE INTERRUPT ADDRESS SPACE FOR THE SCOUT MCS WAS ALLOCATED * BELOW LOCATION :200 BECAUSE IT MUST ALSO FUNCTION IN CONJUNCTION * WITH THE SCOUT SPI BOARD WHICH INTERRUPTS TO THE SAME LOCATIONS * AS THE DIO. INTERRUPT VECTOR ADDRESS MUST BE BELOW 8K. * MCSIV: SET :180 DEFAULT INTERRUPT BASE ADDRESS TITL DIB & CIB GENERATION SUPPORT EQUATES & MACROS * * MISCELLANEOUS EQUATES * R:SA12 EQU :3F LF: EQU :A FF: EQU :C CR: EQU :D WIN:5IN EQU  :12 DISPLACEMENT INTO LABEL'S TABLE FOR 5-1/4 WINCH * * EQUATES FOR DISK DEVICE FAMILIES. * FAM:DM EQU :1 PERTEC MEDIUM CAPACITY DISK DRIVES FAM:DH EQU :2 CDC STORAGE MODULE DISK DRIVES FAM:SWIN EQU :3 NM4 SHUGART WINCHESTER DISK DRIVES FAM:QWIN EQU :4 NM4 QUANTUM WINCHESTER DISK DRIVES FAM:PHWS EQU :5 CDC PHOENIX DISK WITH SPO OPTION FAM:PHNS EQU :6 CDC PHOENIX DISK WITHOUT SPO OPTION FAM:5WIN EQU :7 5-1/4" WINCHESTER DRIVES FAM:SWNS EQU :13 NM4 SHUGART WINCHESTER DISK DRIVES ON SCOUT FAM:QWNS EQU :14 NM4 QUANTUM WINCHESTER DISK DRIVES ON SCOUT FAM:SWI EQU :15 SCOUT WINCHESTER DRIVES FAM:HARD EQU :20 HARD DISK CEILING * FAM:DF EQU :20 STANDARD FLOPPY DRIVES FAM:DP EQU :21 MINI-FLOPPY DRIVES FAM:DFQ EQU :22 QUAD FLOPPY DRIVES * * FAM:DS EQU :30 SCOUT FLOPPY DRIVES REF: LABEL REVISION F410 07AUG84 * * BUILD A WORD OF BITS MACRO * BIT:WORD MACRO WORD MACLAB BIT:EQU MACENT EQU MACLAB BIT:SET MACENT SET MACLAB * BIT:SET SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) BIT:SET SET 1//#(1)++BIT:SET BIT:LOOP #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC IFF '##(0,1,1)'='N' #(-1) #(0) BIT:SET ENDC ENDM TITL * MACRO FOR INTERRUPT SEQUENCE * INT:SEQ MACRO JST R:SA12 COPY =$-CI:EOB-1,X CIN ADDR JMP *$+1  IFF #(1,?) EXTR I:EOB WORD I:EOB ENDC IFT #(1,?) EXTR #1 WORD #(1) ENDC ENDM * * STANDARD DIB MACRO * * SUPPORTS: TK00 TY00 TP00 TR00 TV00 * LP00 (81,57,LF:) CR00 PP00 PR00 *  DF00 DF01 DF02 DF03 (ALL FLOPPIES ARE SINGLE DENSITY) * DM00 DM01 (BOTH ARE 5MB) * DM02 DM03 (BOTH ARE 10MB) * DH00 (40MB) * DH01 (80MB) * DH02 (150MB) * DH03 (300MB) * DIB:ST MACRO LOAD D:#(1) ENDM * * STANDARD CIB MACRO FOR DM0 AND DH0 * CIB:ST MACRO LOAD C:#(1,1,3) ENDM TITL ** MACRO: TVDIBCIB * * USAGE: TO CREATE DIB'S AND CIB'S FOR OTHER CRT'S ADDED * TO THE SYSTEM.... * * TVDIBCIB NAME,CHAN * TVDIBCIB NAME,BDAD,CHAN,VECT,CTRL * * NAME = DEVICE NAME (4 CHARACTERS) * CHAN = CHANNEL NUMBER FOR THIS DEVICE * BDAD = BOARD ADDRESS (DEFAULT = :F) * VECT = BASE VECTOR FOR THE BOARD (DEFAULT = :C0) * CTRL = TV CONTROLLER ('EIO' FOR EIO, 'DIO' FOR DIO (DEFAULT)) * (THIS P9 ARAMETER IS NEEDED FOR THE CIB ONLY) * * EXAMPLE: TVDIBCIB TV01,3 * * THIS CREATES DIB & CIB FOR TV01 ON CHANNEL 3 * * TVDIBCIB TV02,:C,3,:80 * * THIS CREATES DIB & CIB FOR TV02 AT DEVICE ADDR :C6 *  AND WITH A DATA VECTOR AT :98 (:80 + 3*8) * * TVDIBCIB TV00,:F,4,:1C0,EIO * *  THIS CREATES A DIB & CIB FOR TV00 ON THE DATACASE * USING THE EIO BOARD. NOTE THAT INTERRUPTS ARE OFFSET *  BY :100. ** SPACE 1 TVDIBCIB MACRO * * GENERATE DIB FOR THIS TERMINAL * DIB:TV #(1),#(2),#(3),#(4) * *  GENERATE CIB FOR THIS TERMINAL * CIB:TV #(1),#(2),#(3),#(4),#(5) ENDM TITL SCOUT DIB CONFIGURING MACRO * * OPTIONAL CONFIGURATION MACRO FOR SCOUT FLOPPY DIB * OPT:DS MACRO DS DSMOD: SET DSMOD:&:7F++:8400 ONLY FIELD NOT REQUIRED IS 'GAP='  IFT #(1,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(2,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(3,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(4,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(1,'UNI') DSMOD: SET DSMOD:--:8000 ENDC IFT #(2,'UNI') DSMOD: SET DSMOD:--:8000  ENDC IFT #(3,'UNI') DSMOD: SET DSMOD:--:8000 ENDC IFT #(4,'UNI') DSMOD: SET DSMOD:--:8000  ENDC IFT #(1,'GAP=') YYY: SET #(1,?) DSMOD: SET #(1,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(2,'GAP=') YYY: SET #(2,?) DSMOD: SET #(2,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(3,'GAP=') YYY: SET #(3,?) DSMOD: SET #(3,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(4,'GAP=') YYY: SET #(4,?) DSMOD: SET #(4,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(1,'REV') DSMOD: SET DSMOD:--:400 ENDC IFT #(2,'REV') DSMOD:  SET DSMOD:--:400 ENDC IFT #(3,'REV') DSMOD: SET DSMOD:--:400 ENDC IFT #(4,'REV') DSMOD:  SET DSMOD:--:400 ENDC ENDM TITL DISK DIB MACROS * * THIS IS THE GENERALIZED DIB:DK MACRO WHERE A STANDARD * FORMAT GIVEN BELOW CAN BE FOLLOWED TO SET UP A DIB FOR * ANY DEVICE. * * HOS/UNIT WORD - SINCE THERE ARE TWO VOLUMES PER UNIT (AS WITH * THE PERTEC DRIVES), IT IS NECESSARY TO SET THE UNIT BYTE * TO "1" WHICH WILL CAUSE THE UNIT NUMBER DESIRED TO BE * SHIFTED 1 BIT TO THE RIGHT THUS OBTAINING THE ACTUAL * UNIT NUMBER. * * SPO OPTION - THE SPO OPTION IS AVAILABLE IF A USER DESIRES TO * AUTOLOAD FROM THE FIXED PLATTER. AS OPPOSED TO NON-SPO, * THE SPO OPTION SWITCHES WHICH DRIVE YOU ARE TALKING TO - * IN OTHER WORDS, THE FIXED BECOMES THE REMOVABLE AND VICE * VERSA. TO OVERCOME THIS PROBLEM, THE TABLE BELOW IS USED * TO KEEP THE FIXED VOLUME AS DH00, DH02 ... & * TO KEEP THE REMOVABLE AS DH01, DH03 ... * ALL THAT IS NEEDED IS TO TOGGLE THE VOLUME CONTROL BIT * OF THE HOS WORD. * * LOGICAL/PHYSICAL DEVICE HOS(NO SPO) HOS(SPO) * ----------------------- ----------- -------- * 0 / 0 :  :10 0 * 1 / 0 0 :10 * 2 / 1  :10 0 * 3 / 1 0 :10 * ETC..... * * * FORMAT --- * * DIB:DK ,[,] * * -- TWO LETTER CODE FOR THE FAMILY TYPE * EG. DM,DH,DF,DS,DP * WHERE DH IS USED FOR PHNS,PHWS,QWIN,SWIN,QWNS,SWNS * DF IS USED FOR DFQ * * -- IS THE SPECIFIC FAMILY FOR THE DIB. THE LIST * OF ALL POSSIBLE FAMILY NAMES IS GIVEN ABOVE IN THE * EQU'S WHERE QWNS AND SWNS HAVE NOT BEEN AS YET * IMPLEMENTED AND ARE IN FOR FUTURE USE. * * -- ARGUMENTS 3 TO N CORRESPOND TO ARGUMENTS 2 TO * N-1 IN THE STANDARD CALLS (EG: DIB:DM, DIB:DH ...) * * NOTE: WHEN CALLING THE DIB:DK MACRO FOR THE 5-1/4" WINCHESTERS, * THERE ARE 7 PARAMETERS FOR THE T.C.U. AND * 8 PARAMETERS FOR THE W.T.C. F410 * * DIB:DK DHnn,5WIN,TPC,CPD,SPA,SPW-SP,RWCC-OS,WPC F410 * * where: DHnn is the family type & unit * 5WIN is the family name *  TPC is tracks per cylinder * CPD is cylinders per disk * SPA is sectors per AU *  SPW-SP is step pulse width, step period * RWCC-OS is reduced write current cyl, overlap seek * WPC is write precompensation (required in WTC) F410 * DIB:DK MACRO FAM: SET FAM:#(2) SET FAMILY TYPE. DIB: #(1),#(3),#(4),#(5),#(6),#(7),#(8) F410 ENDM * DIBS FOR THE PME/PLU DISK CONTROLLERS, THE SCOUT AND * NM4 FLOPPY DISK CONTROLLERS, AND THE MINIFLOPPY * PICO. * DIB: MACRO DIB:DM MACENT DM *** DISK CARTRIDGE DRIVE DIB MACRO *** DIB:DH MACENT DH *** DISK PACK DRIVE DIB MACRO *** DIB:DF MACENT DF  *** STANDARD FLOPPY DISK DIB MACRO *** DIB:DFQ MACENT DFQ *** QUAD FLOPPY DISK DIB MACRO *** DIB:DS MACENT DS *** SCOUT FLOPPY DISK DIB MACRO *** DIB:DP MACENT DP *** MINIFLOPPY PICO DIB MACRO *** LPOOL O: SET $ TABLE: REL SHARABLE TABLE:  SYSTEM XXX: SET 1 (FIX THE BUG IN MACRO) YYY: SET 1 (DITTO) BMW: SET -1 UNIT: SET 0 SET THE UNIT TO 0, CHANGE LATER IF DM,PHWS,PHNS IFT #(0,?) FAM: SET FAM:#(0) SET FAMILY NAME IF NOT DIB:DK  ENDC IFT FAM:=FAM:DS UNIT: SET '##(1,4,4)'-'0'&3 SET UNIT TO IF SCOUT ENDC HOS: SET 0 SET HOS TO 0, CHANGE LATER IF DM,PHWS,PHNS IFF FAM:=FAM:DS BPS: SET 512 ALLL HARD DISKS ARE 512 BYTE SECTORS IFF FAM:=FAM:5WIN DON'T NEED MB INFO FOR THE 5-1/4" MB: SYMVAL #(2) MEGABYTES ENDC IFT FAM:=FAM:DM UNIT: SET 1 FOR MCDC, UNIT = SHIFT COUNT HOS: SET '##(1,4,4)'-'0'&1*2 SPT: SET 12 SECTORS PER TRACK TPC: SET 2 TRACKS PER CYLINDER SPA: SET ; 1 SECTORS PER AU CPD: SET 203 CYLINDERS PER DISK, 5MB IFT MB:=10 CPD: SET 406  ENDC ENDC IFT FAM:=FAM:DH TPC: SET 5 SPT: SET 32 CPD: SET 823 SPA: SET 8 IFT MB:=40 CPD: SET 411 SPA: SET 4 ENDC IFT MB:=150 TPC: SET 19 CPD: SET 411 ENDC IFT MB:=300 SPA: SET 16 TPC: SET 19 ENDC ENDC IFT FAM:=FAM:SWIN TPC: SET 2 CPD: SET 256 SPT: SET 16 SPA: SET 1 IFT MB:=10 TPC: SET 4 ENDC ENDC * IFT FAM:=FAM:QWIN TPC: SET 2 CPD: SET 512 SPT: SET 16 SPA: SET MB:/10 IFT MB:=20 TPC: SET 4 ENDC IFT MB:=40 TPC: SET 8 ENDC ENDC * T1: SET FAM:=FAM:PHWS IFT FAM:=FAM:PHNS++T1: IFF #(2,?) MB: SET 16 DEFAULT PHOENIX DISK CAPACITY IN MB ENDC TPC: SET  MB:/16 UNIT: SET 1 SET UNIT TO 1 FOR SHIFT IN MCDC CPD: SET 823 SPT: SET 32 SPA: SET 1 IFT MB:=48 SPA: SET 4 ENDC IFT MB:=80 SPA: SET 8 ENDC DN: SET #(1,4,4) T1: SET DN:/2*2=DN:  IFT T1: HOS: SET :10 SET HOS TO :10 IF UNIT IS EVEN ENDC IFT FAM:=FAM:PHWS HOS: SET :10-HOS: TOGGLE HOS IF FAMILY IS PHWS ENDC ENDC * IFT FAM:=FAM:5WIN 5-1/4" WINCHESTER? IFT #(7,?) 7TH PARAMETER: CONTROLLER IS WTC F410 SPT: SET 16 ENDC IFF #(7,?) NO 7TH PARAMETER: USING TCU F410 SPT: SET 18 ENDC TPC: SET #(2) CPD: SET #(3) SPA: SET #(4) ENDC ENDC * IFT FAM:=FAM:SWI TPC: SYMVAL #(2) CPD: SYMVAL #(3) IFF #(2,?) TPC: SET 4  ENDC IFF #(3,?) CPD: SET 300 ENDC SPT: SET 16 IFF #(4,?)  SPA: SET 4 ENDC  ENDC T1: SET FAM:=FAM:DF IFT FAM:=FAM:DFQ++T1: IFT FAM:=FAM:DFQ BPS: SET 256 ENDC IFT FAM:=FAM:DF BPS: SET 128 ENDC SPT: SET 26 CPD:  SET BPS:/128*77 SPA: SET 512/BPS: TPC: SET 1 ENDC IFT FAM:=FAM:DP BPS: SET 128 SPT: SET 16 CPD: SET 35 SPA: SET 4 TPC: SET 1 BMW: SET :200 ENDC IFT FAM:=FAM:DS BMW: SET DSMOD:++:1900 TPC: SET 1 BPS: SET 128 SD SECTOR SIZE DEFAULT = 128 BYTES XXX: SET  #(2,?) YYY: SET #(3,?) CPD: SET 77 8 IN. DISKS USUALLY HAVE 77 TRACKS SPT: SET 5208-73 IFT  BMW:&:200 IS IT A 5 1/4 IN. DRIVE? SPT: SET 3125-67 BIT TIMES PER TRACK (LESS HEADER) CPD: SET 35 DEFAULT IS 35 TRACKS PER DISK ENDC IFT #(2,?)>0 BPS: SYMVAL #(2) IFT '##(2,XXX:,XXX:)'='D' BMW: SET BMW:+:80 SET DOUBLE DENSITY FLAG IFT XXX:=1 BPS: SET 256 DD SECTOR SIZE DEFAULT = 256 BYTES ENDC ENDC ENDC IFT #(3,?) IFF '##(3,1,1)'='*' CPD: SYMVAL #(3) <  ENDC XXX: SET #(3,?)-1 IFT '##(3,XXX:,YYY:)'='*2' TPC: SET 2 XXX: SET #(3,?)-2 IFT XXX:>0 CPD: SYMVAL #(3,1,XXX:) ENDC ENDC ENDC XXX: SET BPS:+33+FGAP: SPT: SET SPT:-33 SECTORS PER TRACK LESS ONE SECTOR O/H IFT BMW:&:80 XXX: SET BPS:+61+FGAP2: BYTE TIMES PER SECTOR SPT:  SET SPT:+SPT:+5 (61 NOT 66 OVERHEAD BYTES) ENDC SPT: SET SPT:-BPS: DATA IN THAT FIRST SECTOR SPT: SET SPT:*97/100 ALLOW 3% SPEED VARIATION SPT: SET SPT:/XXX:+1 NUMBER OF SECTORS PER TRACK IFT SPT:>MAX:SPT SPT: SET MAX:SPT ENDC SPA: SET 512/BPS: IFT SPA:=0 SPA: SET 1 ENDC ENDC APD: SET SPT:*TPC:*CPD:/SPA: AU'S PER DISK IFT APD:>:7FFF NOTE E,'TOO MANY AU'S - MUST BE <= 32,767 (:7FFF)' ENDC NAM D:#(1) D:#(1) CHAN #(1,1,2): WORD 0 DI:FLG WORD #1 COMMON DIB CONFIG WORD C:#(1,1,3) DI:CIB WORD #2 COMMON DIB CONFIG HEAD Z:#(1) DI:FCB WORD #3 COMMON DIB CONFIG BYTE '##(1)' DI:NAM WORD #4,5 COMMON DIB CONFIG WORD 0  DI:DN WORD #6 WORD 0 DI:DS WORD #7 SPB: SET -9 WBT: SET 1*8 T1: SET FAM:=FAM:DS T1: SET FAM:=FAM:DF++T1: T1: SET FAM:=FAM:DFQ++T1: IFT FAM:=FAM:DP++T1: SPB: SET -6 WBT: SET 2*8 ENDC T1: SET FAM:=FAM:SWIN T1: SET FAM:=FAM:QWIN++T1: T1: SET FAM:=FAM:SWI++T1: IFT FAM:=FAM:5WIN++T1: WBT: SET 7*8 IFT FAM:=FAM:SWI SPB: SET -1 ENDC ENDC WORD SPB:  DI:SPB WORD #8 COMMON DIB CONFIG WORD WBT: DI:WBT WORD #9 COMMON DIB CONFIG BIT:WORD FA:,FB:,FS:,DA:,DB:,UF: WORD #10 COMMON DIB CONFIG BIT:WORD FS:,DA:,DB:,UF: WORD #11 COMMON DIB CONFIG BIT:WORD  WORD #12 COMMON DIB CONFIG BIT:WORD OP:,CL: WORD #13 COMMON DIB CONFIG RES 2,0 WORDS 14-15 (COMMON DIB) RESERVED WORD BPS: DI:BPS WORD #16 BYTES/SECTOR (ALL DISCS) XXX: SYMVAL SEC:TRK USER SPECIFIED SECTORS/TRACK? IFT XXX: WORD SEC:TRK DI:SPT WORD #17 SECTORS/TRACK (ALL DISCS)  ENDC IFF XXX: WORD SPT: DI:SPT WORD #17 SECTORS/TRACK (ALL DISCS) ENDC WORD TPC: DI:TPC WORD #18 TRACKS/CYLINDER (ALL DISCS) WORD CPD: DI:CPD WORD #19 CYLINDERS/DISC (ALL DISCS) WORD SPA: DI:SPA WORD #20 SECTORS/A.U. (ALL DISCS) WORD BMW: DI:BMW WORD #21 CURRENT CYLINDER (ALL DISCS) IFT FAM:=FAM:SWI BYTE 1,10 DI:TRY WORD #22 HARD/RATE ERR RETRY COUNT (ALL DISCS) ENDC IFF FAM:=FAM:SWI BYTE 3,10 DI:TRY WORD #22 HARD/RATE ERR RETRY COUNT (ALL DISCS) ENDC WORD 1 DI:VTS WORD #23 RESERVED (ALL DISCS) WORD 1  DI:ATS WORD #24 RESERVED (ALL DISCS) BYTE UNIT:,HOS: DI:HOS -- UNIT AND HEAD OFFSET WORD #25 W= ORD 0 WORD #26 -- MEANINGFUL FOR SCOUT ONLY WORD FAM: DI:FAM -- DEVICE FAMILY WORD #27  WORD APD:/2 DI:FLP WORD #28 F-LIST ADDRESS (ALL DISCS) WORD CPD: DI:FLN WORD #29 ENTRIES IN F-LIST (ALL DISCS) WORD APD:/2+CPD: DI:ALO WORD #30 POINTER TO FREE AU MAP (ALL DISCS) WORD APD:  DI:APD WORD #31 # OF AU'S ON DISC (ALL DISCS) WORD BPS:*SPA: DI:BPA WORD #32 BYTES PER AU (ALL DISCS)  IFT BPS:>256 FOR LARGE SECTOR DISKS, BUFFER=SECTOR WORD 1 DI:SBF WORD #33 SECTORS PER BUFFER (ALL DISCS) ENDC IFF BPS:>256 FOR SMALL SECTOR DISKS, BUFFER=512 BYTES WORD 512/BPS:  DI:SBF WORD #33 SECTORS PER BUFFER (ALL DISCS) ENDC RES 6,0 DI:SAU - DI:FAU WORDS #34-39  RESERVED (ALL DISCS) IFT FAM:=FAM:DS IFF DSMOD:&:200 IF A STANDARD FLOPPY DRIVE XXX: SET :AF24  IFT #(4,?) XXX: SET #(4)--:F+1%12--XXX:&:F000--XXX: ENDC IFT #(5,?) XXX: SET #(5)+1&:FE--XXX:&:FF--XXX: ENDC IFT #(6,?) XXX: SET #(6)+15%4--XXX:&:0F00--XXX: ENDC ENDC  IFT DSMOD:&:200 IF A MINI-FLOPPY XXX: SET :2F18 IFT #(4,?) XXX: SET #(4)+1/2--:F+1%12--XXX:&:F000--XXX: ENDC IFT #(5,?) XXX: SET #(5)+3/2&:FE--XXX:&:FF--XXX: ENDC IFT #(6,?) XXX: SET #(6)+31%3--XXX:&:0F00--XXX: ENDC ENDC WORD XXX: DI:INT WORD #40 INTERVAL TIMER SPECS. ENDC IFT FAM:=FAM:DP MINI-FLOPPY? WORD -1 DI:INT (WORD 40) WORD 0 DI:SCT (WORD 41) WORD 0 DI:SEC (WORD 42) ENDC * IFT FAM:=FAM:5WIN 5-1/4" WINCHESTER? WORD 0 USED BY SCOUT (WORD 40) WORD #(5) DI:SPW (STEP PULSE WIDTH - WORD 41) WORD #(6) DI:RWC (REDUCED WRITE CURRENT CYL - WORD 42) IFT #(7,?) CHECK THAT WE'RE USING WTC F410  WORD #(7) DI:WPC (WRITE PRECOMP - WORD 43 (WTC)) F410 ENDC W.T.C. ONLY F410 ENDC 5 1-4" WINCHESTER -- GENERAL * ORG O: ENDM TITL DISK CIB MACROS *  MINIFLOPPY CIB MACRO (REFORMATTER) * CIB:DP MACRO IFT #(?)>1 CIB:DP: DP00,#(1)%3+#(2)%1 ENDC  IFF #(?)>1 CIB:DP: DP00 ENDC ENDM * * TO CREATE DISC CIBS UNDER THE TCU OR WTC CONTROLLERS, ONE MUST * USE THE MACRO 'CIB:DK' NOT 'CIB:DH'. (IF CIB:DH IS USED THE * COMPUTER WILL GET VERY CONFUSED.....) * * THIS IS THE GENERALIZED CIB MACRO FOR ALL BUT THE MINIFLOPPY * PICO. IT HAS THE FOLLOWING FORMAT: * *  CIB:DK ,[,,,] * F410: NEW PARAMETER FOR 5 1/4" WINCHESTER * * -- DM,DH,DS,DF,DP * WHERE DH IS USED FOR: QWIN,SWIN,PHWS,PHNS * DF IS USED FOR: DFQ * * -- SET TO 00. * * -- FAMILY NAME (SEE DIB> :DK FOR LIST). * * -- DEVICE ADDRESS (USES DEFAULT IF NOT SPECIFIED). * * -- INTERRUPT ADDRESS (APPLICABLE TO SCOUT AND MINI ONLY) * (USES DEFAULT IF NOT SPECIFIED). * * -- CONTROLLER TYPE (APPLICABLE TO 5 1/4" WINCHESTER ONLY) F410 * WTC -- WINCHESTER/TAPE CONTROLLER F410 *  TCU -- TRANSPORT CONTROLLER UNIT F410 * Must be specified if family type is 5WIN F410 * CIB:DK MACRO FAM: SET FAM:#(2) CIB: #(1),#(3),#(4),#(2),#(5) F410 ENDM CIB:  MACRO DK CIB:DM MACENT DM CIB:DH MACENT DH CIB:DS MACENT DS CIB:DF MACENT DF CIB:DFQ MACENT DFQ CIB:DP: MACENT DP IFF #(0,'DK') FAM: SET FAM:#(0) SET FAM: IF NOT CIB:DK ENDC LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM  NAM C:#(1,1,3) C:#(1,1,3) CHAN CIB: CI:PER DEVAD: SYMVAL #(2) IFF #(2,?) IFT #(4,?) DEVAD: SET  #(4,1,2)DA: SET DEVAD: IF FAMILY NAME GIVEN ENDC IFF #(4,?) DEVAD: SET #(0,1,2)DA: SET DEVAD: IF FAMILY NAME NOT GIVEN (NOT CIB:DK). ENDC ENDC IFT DEVAD:<:20 T1: SET FAM:=FAM:DS IFF FAM:=FAM:DP++T1: DEVAD: SET DEVAD:%3 ENDC IFT FAM:=FAM:DP DEVAD: SET ETIODAD:%3+DEVAD:%1 ENDC ENDC IFT FAM:=FAM:DS IFT DEVAD:&3>0 NOTE E,'ILLEGAL DEVICE ADDRES - BITS 0 & 1 MUST BE OFF' ENDC ENDC  WORD 0 CI:FLG - FLAG WORD HEAD CIB: CI:MST - MASTER CIB LINK HEAD #(1,1,2): CI:DIB WORD :7600 CI:PRI WORD DEVAD: IFT FAM:<:20 CHECK IF HARD DISK IFT  #(1,'ST') IF WE'RE CHEATING AND CIBBING IN WTC TAPE F410 EXTR WT:RD,WT:WRT,WT:POS,WT:FUN F410  WORD 0,0,WT:RD,WT:WRT,WT:POS,WT:FUN TAPE DRIVER LOCATIONS F410 ENDC  F410 IFF #(1,'ST') F410 EXTR DK:RD,DK:WRT,DK:FUN  WORD 0,0,DK:RD,DK:WRT,0,DK:FUN ENDC F410 ENDC T1: SET FAM:=FAM:DFQ CHECK IF DF OR DFQ IFT FAM:=FAM:DF++T1: " " EXTR DF:RD,DF:WRT,DF:FUN WORD 0,0,DF:RD,DF:WRT,0,DF:FUN ENDC IFT FAM:=FAM:DP EXTR DP:RD,DP:WRT,DP:FUN XXX: SYMVAL #(3) IFF #(3,?) XXX: SET DEVAD:&:E%2+ETIODIB: ENDC WORD XXX:,0,DP:RD,DP:WRT,0,DP:FUN  ENDC IFF FAM:=FAM:DS INT:SEQ I:EOB ENDC IFT FAM:=FAM:DS EXTR UF:RD,UF:WRT,UF:FUN XXX: SYMVAL #(3) IFF #(3,?) XXX: SET DSIA: CI:IV ENDC WORD XXX:,0,UF:RD,UF:WRT,0,UF:FUN DSMOD: SET :8407 RESTORE DEFAULT VALUE TO DSMOD INT:SEQ UF:EOB ENDC WORD 0 CI:T1 WORD 16 (COMMON CIB CONFIG) WORD 0 CI:T2 WORD 17 (COMMON CIB CONFIG) WORD 0 CI:APR WORD 18 (COMMON CIB CONFIG) WORD 0 CI:TIB WORD 19 (COMM? ON CIB CONFIG) WORD 1 CI:USM WORD 20 (COMMON DIB CONFIG) WORD 0 CI:TIM  WORD 21 (COMMON CIB CONFIG) WORD 0 CI:CSM WORD 22 (COMMON CIB CONFIG) WORD 0  CI:CFL WORD 23 (COMMON CIB CONFIG) WORD 0 CI:RAT WORD 24 (DISCS: MED,HIGH,FLOP) WORD 0 CI:HRD WORD 25 (DISCS: MED,HIGH,FLOP) *  F410 * IFT FAM:=FAM:5WIN IF 5.25" WINCHESTER CHECK FOR CNT TYPE F410 IFF #(5,'TCU')  DO WE HAVE A CONTROLLER? F410 IFF #(5,'WTC') IF SO, RIGHT KIND?? F410 NOTE E,'*E*E*E*E*E*E*E*E*E*E*E*E*E*' F410 NOTE E,'ILLEGAL CONTROLLER TYPE FOR 5.25" WINCHESTER' F410  NOTE E,'SHOULD BE EITHER "TCU" OR "WTC"' F410 ENDC END CONTROLLER CHECK F410 ENDC END CONTROLLER CHECK F410 IFT #(5,'TCU') IF T.C.U. SET CIB WORD 26 TO 0 F410 WORD 0 CI:WIN WORD 26 FLAG FOR TCU F410 ENDC  IFT #(5,'TCU') F410 IFT #(5,'WTC') IF W.T.C. SET CIB WORD 26 TO 1  F410 WORD 1 CI:WIN WORD 26 FLAG FOR WTC F410 ENDC IFT #(5,'WTC')  F410 ENDC IFT FAM:=FAM:5WIN F410 * IFF FAM:=FAM:5WIN IF NOT 5.25" WIN, SET WORD 26 TO 0 F410 WORD 0 CI:WIN WORD 26 F410  ENDC IFF FAM:=FAM:5WIN F410 * * IFF FAM:=FAM:DP WORD 0  CI:OPC WORD 27 (DISC: HI, MED & FLOPPY) WORD 0 CI:UNT WORD 28 (DISC: HI, MED & FLOPPY)  WORD 0 CI:CYL WORD 29 (DISC: HI, MED & FLOPPY) WORD 0 CI:SEK WORD 30 (DISC: HI, MED & FLOPPY) WORD 0 CI:SEC WORD 31 (DISC: HI, MED & FLOPPY) WORD 0 CI:CNT WORD 32 (DISC: HI, MED & FLOPPY) T1: SET FAM:=FAM:DFQ IFF FAM:=FAM:DF++T1: WORD 0 CI:BUF  WORD 33 (DISC: HI, MED) WORD C:#(1,1,3)+CI:DIV CI:IEA WORD 34 (DISC: HI,MED) WORD 0 CI:IOB WORD 35 (HI & MED) WORD 0 CI:WP WORD 36 (HI & MED) WORD 0 CI:CST WORD 37 (HI & MED) ENDC WORD 0 CI:DST WORD 38 (HI & MED)/WORD 33 (FLOPPY) WORD 0  CI:MSB WORD 39 (HI & MED)/WORD 34 (FLOPPY) F410 WORD 0 CI:DEC WORD 40 (HI & MED)/WORD 35 (FLOPPY) F410 WORD 0 CI:URC WORD 41 (HI & MED)/WORD 36 (FLOPPY) F410 * IFT FAM:=FAM:DF++T1:  JSK C:#(1,1,3)+CI:EOB WORD 0 WORD 38 FLOPPIES & QUAD FLOPPIES ENDC JSK C:#(1,1,3)+CI:EOB ENDC IFT FAM:=FAM:DP WORD -2 CI:CLK WORD 27 (MINI FLEXIBLE DISCS ONLY) @  ENDC ORG O: ENDM TITL ASYNC MUX OPTIONS MACRO * MACRO TO CONDITIONALLY GENERATE A SYMBOLIC REFERENCE OR ZERO WORD * COND MACRO 0 COND1 MACENT 1 IFT #(2) IF CONDITION TRUE WORD #(1) GENERATE SYMBOLIC REFERENCE ENDC IFF #(0) IF ALTERNATE ENTRY, DON'T ASM IFF #(2) IF CONDITION FALSE WORD 0 GENERATE ZERO WORD ENDC ENDC ENDM * * USEFUL VALUES * DIF:DC EQU 3 BIT NUMBER FOR DYNAMIC CONFIGURATION DIF:FA EQU 4 BIT NUMBER TO SELECT FA: HANDLER DIF:AB EQU 7 BIT NUMBER TO REQUEST AUTO-BAUDING OPT:DC EQU 1%DIF:DC SET THE BIT OPT:FA EQU 1%DIF:FA SET THE BIT OPT:FC EQU 1%DIF:FC SET THE BIT FOR FORM CONTROL OPT:AB EQU 1%DIF:AB SET THE BIT * * BAUD RATE VALUES * BD:50 EQU 0 BD:75 EQU 1 BD:110 EQU 2 BD:135 EQU 3 BD:150 EQU 4 BD:300 EQU 5 BD:600 EQU 6 BD:1200 EQU 7 BD:1800 EQU 8 BD:2000 EQU 9 BD:2400 EQU :A BD:3600 EQU :B BD:4800 EQU :C BD:7200 EQU :D BD:9600 EQU :E BD:19200 EQU :F TITL ASYNCH MUX DIB MACRO * * THIS MACRO GENERATES A DIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS * * 0 1 2 3 4 5 6 7 8 * D:AC CCDD[,OPTS,DEV,EDT,LPOPTS] * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM DIB ENTRY * POINT NAME 'D:CCDD'. * A REFERENCE TO CIB NAME 'C:CCDD' WILL BE GENERATED. * THE OPTIONAL 'OPTS' FIELD MAY CONTAIN THE OPTION SPECIFIERS: * * OPT:DC MEANING, DYNAMICALLY CONFIGURE AT FIRST OPEN * OPT:FA MEANING, LOAD FA: HANDLER * OPT:AB MEANING, REQUEST AUTO-BAUDING DURING CONFIG * OPT:FC MEANING, 1ST CHAR IS FORM CONTROL * * IF MORE THAN ONE OPTION IS TO BE SPECIFIED, THE OPTIONS ARE SEPARATED * BY PLUS (+) SIGNS. * AUTO-BAUDING IS EFFECTIVE AT THE FIRST OPEN ONLY IF DYNAMIC CON- * FIGURATION IS ALSO SPECIFIED. * * THE OPTIONAL 'DEV' FIELD MAY CONTAIN THE FOLLOWING ASYNC MUX * CHANNEL DEVICES: * * TV MEANING CHANNEL IS FOR STANDARD TV USE * LP MEANING CHANNEL IS FOR STANDARD LP USE * NULL MEANING CHANNEL IS GENERAL PURPOSE * * THE OPTIONAL 'EDT' FIELD CONTAINS A HEX REPRESENTATION OF THE * EDIT CHARACTER. THE STANDARD DEFAULT IS ':08'. * * THE OPTIONAL 'LPOPTS' FIELD IS SIGNIFICANT ONLY IF THE 'DEV' FIELD IS * 'LP'. IN THIS CASE THE PARAMETERS IN THIS FIELD HAVE THE SAME FUNCTIONS * AS PARAMETERS 2 IN THE DIB:LP MACRO. * * NON-STANDARD DEVICES CAN BE INTERFACED USING THE GENERAL PURPOSE 'DEV' * OPTION APPROPRIATELY PATCHED USING THE PATCH MACRO. * ******************************************************************** * * THERE IS ALSO AN ENTRY POINT FOR DIB:TV AND DIB:LP. * THEIR CORRESPONDING FORMATS ARE: * * DIB:TV TVnn[,address],cn[,inta] * * WHERE: TVnn is the name of any device used in this DIB * (e.g. TV00, TV01...) * * address is the device address; default is :F (shifted *  with channel number :C6) * * cn is the channel number for this device * * inta  is the interrupt vector address specified by the * board switch; default is :C0 * * * DIB:LP LPnn[,cpl][,lpp][,LF:][,spb][,CIB:][,SER] * * WHERE: LPnn is the device name (e.g. LP00, LP01) * * cpl is the number of characters per line printed by * the device plus 1 (format control); default is 81 * * A  lpp is the number of lines per page printed by the * device; default is 57. * * LF: specifies that the printer does not have the * automatic line feed capability; default is *  automatic line feed * * spb watchdog timer (shifts per byte). Defines the * number of positions the byte count needs to be * shifted in order to form the time in seconds for *  watchdog timer calculations. Refer to Topic 7.2 * for details. * * CIB: specififies that a non-standard CIB is needed. * If included, the standard CIB from IOSDIBCIB is *  not used. An explicit call to CIB:LP is made from * OS4CONFIG.ASM. * * SER indicates that the printer is a serial device. * This flag MUST be set for use with an ACC. * D:AC MACRO AC DIB:TV MACENT TY DIB:LP MACENT LP LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM D:#(1) ASYNC CHANNEL DIB ENTRY POINT NAME  IFT #(0,'LP') D:#(1) CHAN D:#(1,1,3) ENDC IFF #(0,'LP') D:#(1) WORD 0 DI:PER PEER POINTER (NO PEERS) ENDC P2: SET 2 PARAMETER OFFSETS P3: SET 3 P4: SET 4 P5: SET 5 IFT #(0,'AC') P2: SET 5 P3: SET 6 P4: SET 7 P5: SET 8 IFT #(3,'TV') EXTR TYEOL:,TYTOF:,TYELI: ENDC EXTR AC:CNFG DYNAMIC CONFIGURATION ROUTINE ENTRY POINT EXTR AC:FIO FORMATTED I/O ROUTINE ENTRY POINT D:: SET 0 PREPARE FOR DEFAULT 'OPTS' FIELD IFT #(2,?) IF 'OPTS' FIELD EXISTS D:: SET #(2) EVALUATE OPTIONS ENDC WORD D:: ASSEMBLE FLAGWORD ENDC IFT #(0,'TY') EXTR TYEOL:,TYTOF:,TYELI: BIT:WORD DIF:NT,DIF:FC DI:FLG FLAGWORD ENDC * IFT #(0,'LP') BIT:WORD DIF:FC IFF #(6,?) IF STANDARD CIB, GENERATE EXTR EXTR C:#(1,1,3) ENDC ENDC * IFF #(0,'LP') WORD C:#(1) ENDC * IFT #(0,'LP') IFF #(6,?) WORD C:#(1,1,3) STANDARD CIB ENDC IFT #(6,?) WORD C:#(1) NON-STANDARD CIB ENDC ENDC * WORD 0 DI:FCB FCB ADDR (NOT USED) BYTE '##(1)' DI:NAM DEVICE NAME WORD 0 WORD 0 IFF #(0,'LP')++#(3,'LP') WORD 0 DI:SPB WATCHDOG SHIFTS/BYTE WORD -1 DI:WBT WATCHDOG BASE TIME (NO WATCHDOG) ENDC IFT #(0,'LP')++#(3,'LP') SPB:: SET -3 DEFAULT SHIFT COUNT IFT #(P5:,?) SHIFT COUNT SPECIFIED? SPB:: SET #(P5:) THEN USE IT! ENDC WORD SPB:: DI:SPB (SHIFTS/BIT) WORD 4*8 DI:WBT WATCHDOG BASE TIME ENDC * O:: SET $ IFT #(0,'AC') TRAILER OF ASYNC MUX DIB WORD -1,-1,0,-1 ALL READ, WRITE, FUNCTION ALLOWED RES 2,0 LAST TWO WORDS OF STANDARD DIB RES 2,0 FIRST TWO WORDS OF AMUX SPECIFIC DIB IFT D::&OPT:DC ASSEMBLE IF DYNAMIC CONFIG CALLED FOR COND AC:FIO,D::&OPT:FA REFERENCE FIO OR SPACER WORD AC:CNFG REFERENCE CONFIGURATOR ENDC IFF D::&OPT:DC ASSEMBLE IF NO CONFIGURATION COND1 AC:FIO,D::&OPT:FA REFERENCE FIO OR ASSEMBLE NOTHING WORD 0 ENDC ENDC ORG O:: IFT #(0,'TY')++#(3,'TV') BIT:WORD FA:,UF: READ BIT:WORD FA:,UF:,WP: WRITE BIT:WORD 0 POSITION BIT:WORD WF:,TF:,SC:,OP:,CL: FUNCTION RES 2,0 LAST TWO WORDS OF STANDARD DIB WORD 80 DI:CPL - CHARACTERS PER LINE WORD 0 DI:LPP - BOTTOM OF FORMS CT/LINES PER PAGE IFT #(0,'AC') ORG $+2 FIELDS ALREADY PLACED ENDC IFF #(0,'AC') WORD :1618 DI:BMW - BRANCH MODE WORD FOR INPUT WORD :1616 DI:BMO - B BRANCH MODE WORD FOR OUTPUT ENDC WORD TYEOL: DI:EOL - POINTER TO EOL SEQUENCE WORD TYTOF: DI:TOF - POINTER TO TOF SEQUENCE WORD :2000 DI:ERM - ERROR MASK FOR STATUS WORD 0 DI:LC - LINE COUNTER IFT #(0,'AC') IFT #(4,?) IS THE 'EDT' CHAR SPECIFIED? WORD #(4) YES, THEN USE THE SPECIFIED CHAR ENDC IFF #(4,?) IS THE 'EDT' CHAR NOT SPEC'D WORD :08 DI:EDT - DEFAULT EDIT CHARACTER ENDC ENDC IFF #(0,'AC') WORD :08 DI:EDT - DEFAULT EDIT CHARACTER ENDC WORD TYELI: DI:ELI - ADDRESS OF EOL SEQUENCE ON INPUT WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUF WORD TYEOL: DI:PU - POINTER TO POWER UP SEQUENCE #(1)BF: RES 2,0 TWO WORD INTERNAL BUFFER ENDC IFT #(0,'LP')++#(3,'LP') WORD 0 NO READS BIT:WORD FA:,UF: WRITE FUNCTIONS ALLOWED WORD 0 NO POSITION FUNCTIONS ALLOWED BIT:WORD OP:,CL:,WF:,SC:,TF: ALLOWED OTHER FUNCTIONS LPP: SET 57 LINES/PAGE BOF: SET 3 BOTTOM OF FORMS COUNT (LINES) CPL: SET 81 DEFAULT LINE LENGTH IS 81 CHARS IFT #(P2:,?) CPL: SET #(P2:) ENDC IFT #(P3:,?) LPP: SET #(P3:) ENDC RES 2,0 LAST TWO WORD OF THE STANDARD DIB WORD CPL: DI:CPL - CHARACTERS PER LINE BYTE BOF:,LPP: DI:LPP - BOTTOM OF FORMS CT/LINES PER PAGE IFT #(0,'AC') ORG $+2 FIELDS ALREADY PLACED ENDC IFF #(0,'AC') WORD 0 DI:BMW - BRANCH MODE WORD FOR INPUT IFF #(7,'SER') WORD :1210 DI:BMO - BRANCH MODE WORD FOR OUTPUT ENDC ENDC IFT #(7,'SER') WORD :1616 - SERIAL PRINTER GO ENDC IFT #(P4:,?) EXTR DPEOL: WORD DPEOL: ENDC IFF #(P4:,?) EXTR LPEOL: WORD LPEOL: ENDC EXTR LPTOF:,LPPUF: WORD LPTOF: IFF #(7,'SER') WORD :3202 PARALLEL PRINTER DEVICE ENDC IFT #(7,'SER') WORD :2000 SERIAL PRINTER DEVICE ENDC WORD -LPP: DI:LC - LINE COUNT WORD 0 WORD 0 WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUFFER WORD LPPUF: DI:PU - POINTER TO POWER UP SEQUENCE #(1)BF: RES 2,0 TWO WORD INTERNAL BUFFER ENDC ORG O: ENDM TITL ASYNCH MUX CIB MACRO * * THIS MACRO GENERATES A CIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS: * * C:AC CCDD,DA,CN,IV * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM CIB ENTRY * POINT NAME 'C:CCDD'. * A REFERENCE TO CIB EXTENSION NAME 'CX:ACDD' WILL * BE GENERATED. * 'DA' IS THE 'DIO' STYLE DEVICE ADDRESS (4 BITS), * 'CN' IS THE CHANNEL NUMBER (0-7), AND 'IV' IS THE INTERRUPT * ADDRESS SET BY THE INTERRUPT VECTOR ADDRESS SWITCH ON THE BOARD * * NOTE: A 5TH PARAMETER WAS ADDED FOR USE WITH CIB:TV ENTRY POINT. * THE EIO BOARD ON THE DATACASE REQUIRES SPECIAL HANDLING WHEN A * 'BREAK' IS ISSUED. #5 SPECIFIES WHETHER A DIO OR AN EIO IS * INSTALLED. IF EIO, THEN BIT 11 IN THE FLAGWORD IS SET, ELSE IT'S * ZERO. * MHAYES 05/JAN/84 * C:AC MACRO AC CIB:TV MACENT TY CIB:LP MACENT LP C LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM C:#(1) ASYNC CHANNEL CIB EXTR #(0):WRT TRANSMIT DRIVER IFF #(0,'LP') EXTR #(0):RD RECEIVER DRIVER ENDC EXTR #(0):FUN FUNCTION DRIVER C:#(1) CHAN CIB: CI:PER PEER LINK IFT #(5,'EIO') TV ON AN EIO BOARD? (F400) WORD :0800 CI:FLG - FLAGWORD (BIT 11 SET) ENDC IFF #(5,'EIO')  TV ON A DIO BOARD? (F400) WORD 0 CI:FLG - FLAGWORD ENDC HEAD CIB: CI:MST MASTER LINK WORD D:#(1) LINK TO DIB (CI:DIB) WORD :7400 CI:PRI REQUEST PRIORITY IFT #(3,?) IF DEVICE ADDRESS AND VECTOR SPECIFIED WORD #(2)%3+#(3)%1 DEVICE ADDR WORD #(4)%-6%3+#(3)%3 CI:IV INTERRUPT VECTOR ADDR ENDC IFF #(3,?) IF NO DEVICE ADDR AND VECTOR SPEC IFT #(0,'AC') NOTE E,'NO DEVICE ADDRESS SPECIFIED FOR ASYNC MUX CIB' ENDC WORD ETIODAD:%3+#(2)%1 CI:DA DEVICE ADDRESS WORD #(2)%3+ETIODIB: CI:IV INTERRUPT VECTOR ENDC WORD 0 CI:UNI RESERVED * * SIMPLY REFER TO ALL DRIVER MAIN ENTRIES SINCE THEY ARE ALL * IN THE SAME CONTROL SECTION AND WILL ALL BE LOADED * IFF #(0,'LP') WORD #(0):RD READ ENTRY ENDC IFT #(0,'LP') WORD 0 ENDC WORD #(0):WRT WRITE ENTRY WORD 0 NO POSITION ENTRY WORD #(0):FUN FUNCTION ENTRY  INT:SEQ I:EOB INTERRUPT SEQUENCE WORD 0 CI:T1 TEMP WORD 0 CI:T2 TEMP WORD 0 CI:APR REQUESTORS SAVED PRIORITY WORD 0 CI:TIB ADDR OF TIB WORD 1 CI:USM CONTROLLER USAGE SEMA4 WORD 0 CI:TIM WATCHDOG COUNTS WORD 0 CI:CSM COMPLETION SEMA4 WORD 0 CI:CFL COMPLETION FLAG IFT #(0,'AC') WORD CX:AC#(1,3,4) CI:OPT ADDR OF OPT+SPEC CHAR TBL ENDC ORG O: ENDM TITL ASYNCH MUX CHAN OPTION TABLE MACRO * * OPTION TABLE CIB EXTENSION FOR ASYNC MUX CHANNEL * * CALLING SEQUENCE IS: * * CX:AC DD,BAUD,FD:,SPCH * * WHERE 'DD' IS A TWO DIGIT STRING USED TO FORM THE CIB EXTENSION * ENTRY POINT NAME 'CX:ACDD' * 'BAUD' IS THE TERMINAL BAUD RATE * "FD:" SPECIFIES AN OFF-SET VECTOR ON RECIEVE FOR FULL-DUPLEX * OPERATION.(SEE 2.1.8.1 OF 53778-91 ASYNCH MUX REF MAN). * DEFAULT IS NO OFF-SET VECTOR * * "SPCH" DESIGNATES SPECIAL CHARACTERS THAT ARE IGNORED BY * THE DRIVER. DEFAULT IS RUBOUT AND UNDERSCORE (:7F5F). * IF ONLY ONE CHAR IS DESIRED, ENTER IT TWICE (:7F7F). * * CX:AC MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM CX:AC#(1) TABLE ADDR CX:AC#(1) EQU $ START OF CIB EXTENSION IFT #(3,?) ANY OFF-SET SPECIFIED? WORD :23CD FULL-DUPLEX OFFSET ENDC IFF #(3,?) NO OFF-SET SPECIFIED? WORD :21CD NO OFF-SET ENDC WORD BD:#(2)%8+:3037 IFT #(4,?) WORD #(4) ENDC IFF #(4,?) WORD :7F5F SPECIAL CHAR TABLE, ,_ ENDC ORG O: ENDM TITL MAGTAPE DIB MACRO * DIB MACRO * * DIB:MT #(1) --- #(1) = MTXX, XX = UNIT # * DIB:MT MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN MT: DI:PER WORD 0 DI:FLG WORD C:MT0 DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS WORD -4 DI:SPB WORD 3*8 DI:WBT BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW - READ BIT:WORD FA:,FB:,FS:,DB:,WP:,UF: DI:DSW - WRITE BIT:WORD SBF:,SBR:,SKF: DI:DSW - POSITION BIT:WORD RWD:,OFL:,EBL:,EFM:,OP:,CL:,SS:,WF: DI:DSW - FUNCTION RES 2,D 0 RESERVED WORD 0 DI:BLKCT WORD 0 DI:SERV WORD :0230 DI:BMI WORD :0250 DI:BMO WORD :0240 DI:BMR WORD 0 DI:OWM WORD :0005 DI:TRY WORD 1 DI:VTS WORD 0 DI:MASK WORD 0 DI:FLAG WORD 0 DI:THWS ORG O: ENDM TITL  STREAMER TAPE DIB MACRO * DIB MACRO * * DIB:STR #(1) --- #(1) = STXX, XX = UNIT # * #(2) --- #(2) = INCHES PER SECOND (30 OR 90) * * ADDED "SS:" AND "PL:" TO FUNCTION MODIFIERS FOR READ STATUS,WTC *  F410 * DIB:STR MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN ST: DI:PER (PEER POINTER - WORD 0) WORD 0 DI:FLG (DIB FLAG WORD - WORD 1) WORD C:ST0 DI:CIB (MASTER CIB ADDR - WORD 2) HEAD Z:#(1) DI:FCB (FCB LIST HEAD - WORD 3) BYTE '##(1)' DI:NAM (DEVICE NAME - WORDS 4 & 5) WORD 0 DI:DN (RESERVED - WORD 6) WORD 0 DI:DS (RESERVED - WORD 7) WORD -4 DI:SPB (WATCHDOG, SHIFTS PER BYTE - WORD 8) WORD 7*8 DI:WBT (WATCHDOG BASE TIME - WORD 9) BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW (READ - WORD 10) BIT:WORD FA:,FB:,FS:,DB:,WP:,UF: DI:DSW (WRITE - WORD 11) BIT:WORD RFM: DI:DSW  (POSITION - WORD 12) BIT:WORD OP:,CL:,WF:,RWD:,EET:,RT:,SS:,PL: DI:DSW (FUNCTION - WORD 13) RES 2,0  (RESERVED - WORDS 14,15) WORD 0 DI:BLKCT (BLOCK COUNT - WORD 16) WORD 0 DI:SERV (RESERVED - WORD 17)  WORD :0210 DI:BMRW (BRANCH ADDR FOR READ & WRITE - WORD 18) WORD :0290 DI:BMPF (BRANCH ADDR FOR POS & FUN - WORD 19)  WORD #(2) DI:IPS (INCHES PER SECOND - WORD 20) WORD 0 DI:OWM (ORIGINAL MODE WORD - WORD 21) WORD 0 DI:TRY  (RESERVED - WORD 22) WORD 1 DI:VTS (RESERVED - WORD 23) WORD 0 DI:MASK (RESERVED - WORD 24) WORD 0 DI:FLAG (RESERVED - WORD 25) WORD 0 DI:THWS (TEMP H/W STATUS - WORD 26) ORG O: ENDM TITL MAG TAPE CIB MACRO * CIB MACRO * * CIB:MT #(1) -- DEVICE ADDRESS / CHANNEL * #(2) -- INTERRUPT VECTOR * CIB:MT MACRO * * DEFAULTS FOR MAG TAPE * MTDA: SET :F0 MT DEFAULT DEVICE ADDRESS MTCHAN: SET :02 MT DEFAULT CHANNEL NUMBER MTINTV: SET :C8 MT DEFAULT INTERRUPT VECTOR LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM EXTR MT:RD,MT:WRT,MT:POS,MT:FUN C:MT0 NAM C:MT0 CHAN CIB: CI:PER (PEER POINTER - WORD 0) WORD 0 CI:FLG (CIB FLAG WORD - WORD 1) HEAD CIB: CI:MST (MASTER LINK - WORD 2) HEAD MT: CI:DIB (DIB LIST HEAD - WORD 3) WORD :7600 CI:PRI (REQUEST PRIORITY - WORD 4) IFF #(1,?) WORD MTDA:++MTCHAN: CI:DA - DEFAULT (DEV ADDR - WORD 5) ENDC IFT #(1,?) WORD #(1) CI:DA - USER DEFINED (DEV ADDR - WORD 5) ENDC IFF #(2,?) WORD MTINTV: CI:IV - DEFAULT (INTERRUPT VECTOR - WORD 6) ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED (INTERRUPT VECTOR - WORD 6) ENDC WORD 0 CI:UNI (RESERVED - WORD 7) WORD MT:RD CI:RD (READ ENTRY POINT - WORD 8) WORD MT:WRT CI:WRT (WRITE ENTRY POINT - WORD 9) WORD MT:POS CI:POS (POSITION ENTRY POINT - WORD 10) WORD MT:FUN CI:FUN (FUNCTION ENTRY POINT - WORD 11) INT:SEQ I:EOB CI:EOB (EOB SEE QUENCE - WORDS 12-15) DOUBLE 0 CI:T1,CI:T2 (TEMP - WORDS 16,17) WORD 0 CI:APR (SAVED PRIORITY OF ACTIVITY USING CIB - WORD 18) WORD 0 CI:TIB (TIB ADDR - WORD 19) WORD 1 CI:USM (CONTROLLER USAGE SEMAPHORE - WORD 20) WORD 0 CI:TIM (WATCHDOG TIMER CALCULATION INTERVAL - WORD 21) WORD 0 CI:CSM (COMPLETION SEMAPHORE - WORD 22) WORD 0 CI:CFL (COMPLETION FLAF - WORD 23) WORD 0 CI:RAT/CI:RTY (RESERVED - RATE ERROR RETRY COUNT - WORD 24) WORD 0 CI:HRD (HARD ERROR RETRY COUNT - WORD 25) WORD -720 CI:WCNT (WAIT RETRY COUNT - WORD 26) WORD -2 CI:TIC (WAIT TIMER VALUE - WORD 27) WORD 0 CI:MODE (LAST PICO MODE WORD - WORD 28) ORG O: ENDM TITL STREAMER TAPE CIB MACRO * CIB MACRO * * CIB:STR #(1) -- DEVICE ADDRESS / CHANNEL * #(2) -- INTERRUPT VECTOR * CIB:STR MACRO * * DEFAULTS FOR STREAMER TAPE * STDA: SET :F0 MT DEFAULT DEVICE ADDRESS STCHAN: SET :0C MT DEFAULT CHANNEL NUMBER STINTV: SET :F0  MT DEFAULT INTERRUPT VECTOR LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM EXTR ST:RD,ST:WRT,ST:POS,ST:FUN C:ST0 NAM C:ST0 CHAN CIB: CI:PER (PEER POINTER - WORD 0) WORD 0 CI:FLG (CIB FLAG WORD - WORD 1) HEAD CIB: CI:MST  (MASTER LINK - WORD 2) HEAD ST: CI:DIB (DIB LIST HEAD - WORD 3) WORD :7600 CI:PRI (REQUEST PRIORITY - WORD 4) IFF  #(1,?) WORD STDA:++STCHAN: CI:DA - DEFAULT (DEV ADDR - WORD 5) ENDC IFT #(1,?) WORD #(1) CI:DA - USER DEFINED (DEV ADDR - WORD 5) ENDC IFF #(2,?) WORD STINTV: CI:IV - DEFAULT (INTERRUPT VECTOR - WORD 6) ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED (INTERRUPT VECTOR - WORD 6) ENDC WORD 0 CI:UNI (RESERVED - WORD 7) WORD ST:RD CI:RD (READ ENTRY POINT - WORD 8) WORD ST:WRT CI:WRT (WRITE ENTRY POINT - WORD 9) WORD ST:POS CI:POS (POSITION ENTRY POINT - WORD 10) WORD ST:FUN CI:FUN (FUNCTION ENTRY POINT - WORD 11) INT:SEQ I:EOB CI:EOB (EOB SEQUENCE - WORDS 12-15)  DOUBLE 0 CI:T1,CI:T2 (TEMP - WORDS 16,17) WORD 0 CI:APR (SAVED PRIORITY OF ACTIVITY USING CIB - WORD 18) WORD 0 CI:TIB (TIB ADDR - WORD 19) WORD 1 CI:USM (CONTROLLER USAGE SEMAPHORE - WORD 20) WORD 0 CI:TIM (WATCHDOG TIMER CALCULATION INTERVAL - WORD 21) WORD 0 CI:CSM (COMPLETION SEMAPHORE - WORD 22) WORD 0 CI:CFL (COMPLETION FLAF - WORD 23) WORD  0 CI:RAT/CI:RTY (RESERVED - RATE ERROR RETRY COUNT - WORD 24) WORD 0 CI:HRD (HARD ERROR RETRY COUNT - WORD 25) WORD 0 CI:WCNT (WAIT RETRY COUNT - WORD 26) WORD -8 CI:TIC (WAIT TIMER VALUE - WORD 27) WORD 0 CI:MODE (LAST PICO MODE WORD - WORD 28) ORG O: ENDM TITL BISYNC PICO DIB MACRO * * BISYNC PICO DIB MACRO * DIB:BP MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN BP:#(1,3,3) WORD 0 WORD C:BP#(1,3,3) DI:CIB WORD 0 DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS IFF #?>1 WORD -7  DI:SPB ENDC IFT #?>1 WORD #(2) ENDC WORD 1 DI:WBT WORF D 0 READ MASK WORD 0 WRITE MASK WORD 0 POSITION MASK WORD  :1F FUNCTION MASK WORD 0 RESERVED WORD 0 RESERVED V: SET 0  IFT #?>4 V: SET #(5,?)-2%11++:8000 ENDC WORD V: DI:DVS V: SET 0  IFT #?>2 V: SET #(3)%2 IFT #?>3 V: SET V:++#(4) ENDC ENDC WORD 0 DI:OPT WORD V:%8 WORD BPO:02 WORD BPO:03 WORD BPO:04 WORD BPO:05 WORD BPO:06 WORD BPO:08 WORD BPO:08 WORD BPO:09 WORD BPO:10  WORD BPO:11 IFT #?>4 BYTE #(5) DI:SID ENDC ORG O: ENDM  TITL BISYNC PICO OPTION TABLE MACRO * * BISYNC PICO OPTION TABLE MACRO * BPO:02 SET :0016 DEFAULT SYNC CHARACTER BPO:03 SET :1610 DEFAULT DLE CHARACTER BPO:04 SET :FF1F DEFAULT PAD AND ITB CHARACTERS BPO:05 SET :1703 DEFAULT ETB AND ETX CHARACTERS BPO:06 SET :0102 DEFAULT SOH AND STX CHARACTERS BPO:08 SET :0405 DEFAULT EOT AND ENQ CHARACTERS BPO:09 SET :1530 DEFAULT NAK AND ACK0 CHARACTERS BPO:10 SET :313B DEFAULT ACK1 AND WACK CHARACTERS BPO:11 SET :3C05 DEFAULT RVI AND TTD CHARACTERS * DBP:O MACRO  IFF #?=16 NOTE 5,'WRONG NUMBER OF PARAMETERS' ENDC BPO:02 SET #(2) BPO:03 SET #(2)%8++#(1) BPO:04 SET #(3)%8+#(4) BPO:05 SET #(5)%8+#(6) BPO:06 SET #(7)%8+#(8) BPO:08 SET #(9)%8+#(10) BPO:09 SET  #(11)%8+#(12) BPO:10 SET #(13)%8+#(14) BPO:11 SET #(15)%8+#(16) ENDM TITL BISYNC PICO CIB MACRO * * BISYNC PICO CIB MACRO * CIB:BP MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM C:#(1,1,3) NAM C:#(1,1,3) EXTR BP:FUN,BP:EOB CHAN CIB: CI:PER RES 2,0 HEAD BP:#(1,3,3) CI:DIB WORD :7600 CI:PRI WORD #(2) CI:DA WORD #(3) CI:IV  WORD 0 CI:UNI WORD 0 CI:RD WORD 0 CI:WRT WORD 0  CI:POS WORD BP:FUN CI:FUN JST R:SA12 INTERRUPT SEQUENCE COPY =$-CI:EOB-1,X JMP *$+1 WORD BP:EOB DOUBLE 0 CI:T1, CI:T2 WORD 0 CI:APR WORD 0 CI:TIB WORD 1 CI:USM RES 3,0 RESERVED ORG  O: ENDM SAVE END IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL I O S . M A C - IOS GENERAL EQUATES & MACROS (93420-1B-F210) TITL ..... CONTENTS ******************* *  * * IOS.MAC * * * ******************* * * UAT:AA MACRO * UAT:EE MACRO * UAT:ZZ MACRO * G  BUF:R MACRO * IOB:A MACRO * IOB EQUATES * IOU: MACRO * IOR: MACRO * I/O ERROR BLOCK EQUATES * DCIOB:A MACRO (G350) * I:LOAD PARAMETER BLOCK (LOAD:) EQUATES * LOAD: MACRO * OVL:A MACRO * OVL: MACRO TITL .... REVISION HISTORY * * * REV F210 - 1. ADDED A PARAMETER TO IOB:A MACRO TO ENABLE DATA CHAINING *  FOR THE WTC. THIS WILL BE STORED IN WORD 1, PREVIOUSLY * RESERVED, OF THE I/O BLOCK. * *  2. NEW MACRO 'DCIOB:A' TO SUPPLY A DATA CHAIN BLOCK FOR * THE WTC. * * (CORRESPONDS TO REVISION G350 OF OS4) * V.PENRY 01 MAR 85 * * * * REV F200 - 1. ADDED POSITION & FUNCTION MODIFIERS FOR THE * QIC-02 STREAMER TAPE. * 2. ADDED STREAMER TAPE INTERFACE (PICO) STATUS BITS. * MHAYES 5/NOV/83 * TITL ... UAT:AA UAT:EE UAT:ZZ UA:CHK  EQU :F09E * UAT:AA LABEL START UNIT ASSIGNMENT TABLE * * UAT:EE LUN,ADDRESS UAT ENTRY * *  UAT:ZZ END OF UAT * * LABEL LABEL TO ASSOCIATED WITH UAT * LUN LOGICAL UNIT NAME * ADDRESS ADDRESS OF DIB OR FCB * * UAT:AA MACRO MACLAB LPOOL O: SET $ SHARABLE TABLE: TABLE: REL LOAD I:IO WORD UA:CHK #1 WORD UAT:ND-$-4%-1 RES 3,0 UAT:NV SET 0 ENDM * UAT:EE MACRO WORD #1 S: SYMATT #2 IFT S:&UNDBT: EXTR #2 ENDC WORD #2 UAT:NV SET UAT:NV+1 ENDM * UAT:ZZ MACRO S: SYMATT #1 IFF S:&NULL: IFT #(1,'FORTRAN')>0 SNAM UAT:ND ENDC ENDC UAT:ND EQU $ IFF S:&NULL: IFT #(1,'FORTRAN')>0 RES UAT:NV*2,0 ENDC ENDC ORG O: ENDM TITL .... BUF:R MACRO ************************************************************ * BUFFER POOL GENERATION MACROS + * * * CALLING SEQUENCE * * BUF:R #1 * *  * * #1 - NUMBER OF BUFFERS * ************************************************************ * BUF:LN EQU 512 * * BUF:R - GENERATE BUFFER POOL * BUF:R MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: LOAD FM:SFM NAM BUF:N BUF:N EQU #(1) P: SET BUF:N BUF:LOOP MACENT IFT P: CHAN BUF: CHAIN LINK CHAN BUF:: STATIC LINK RES 4,0 WORD BUF:LN LENGTH RES 2,0 SECTOR RES 7,0 RES BUF:LN/2,0 BUFFER LENGTH P:  SET P:-1 BUF:LOOP ENDC IFF P: ORG O: P: SET 1 ENDC ENDM TITL .... IOB:A MACRO * IOB:A IOB,LUN,OPC,OPM,BCT,BUF,CGI,OPO,DCH * * * IOB LABEL TO BE ASSIGNED TO START OF IOB * LUN LOGICAL UNIT NAME OR NUMBER * OPC  OPERATION CODE * RE: EQU 0 READ * WR: EQU 1 WRITE * PO: EQU 2 POSITION *  FU: EQU 3 FUNCTION * OPM OPERATION MODIFIER * UF: EQU 0 UNFORMATTED * FA: EQU 1 FOH RMATTED ALPHANUMERIC * FB: EQU 2 FORMATTED BINARY * DA: EQU 3 DIRECT FORMATTED ALPHA *  DB: EQU 4 DIRECT FORMATTED BINARY * WP: EQU 5 WRITE PROMPT * FS: EQU 8 FORMATTED STREAM *  DS: EQU 12 DIRECT STREAM * * BCT REQUESTED BYTE COUNT * BUF I/O BUFFER ADDRESS * CGI ADDRESS OF CURRENT FILE INDEX OR ZERO * OPO OPTIONAL MODE OF OPERATION * SB: EQU 11 START IN SECOND BYTE OF BUFFER * ER: EQU 12 DON'T CALL DOIO ERROR ROUTINE, GO TO USER * DCH ENABLE DATA CHAINING FOR THE WTC *  CONTAINS THE LABEL OF THE DATA CHAIN I.O.B. * * * TITL MACRO IOB:A IFT #?<7 NOTE 5,'NOT ENOUGH PARAMETERS' ENDC #1 WORD #2 LOGICAL UNIT NAME /NUMBER IFT #(9,?) IS THERE A NINTH PARAM?? WORD #9 OPTIONAL DATA CHAINING ENABLED FOR WTC G350 ENDC IFF #(9,?) WORD 0 DEVICE DEDICATION NUMBER ENDC WORD #7 OPTIONAL ADDRESS OF CFI S: SYMVAL #8 IFF S:=0 IFT #8>15 S: SET #8  VALUE, NOT BIT EQUATE ENDC IFF #8>15 S: SET 1%#8 ENDC ENDC WORD #3%4+#4+S:  WORD #5 BYTE COUNT WORD #6 I/O BUFFER ADDRESS WORD 0 ACTUAL COUNT PROCESSED WORD 0 SOFTWARE STATUS ENDM TITL INPUT/OUTPUT BLOCK (IOB) * INPUT/OUTPUT BLOCK (IOB) * IO:LUN EQU 0 LOGICAL UNIT NAME/NUMBER IO:DDN EQU 1 DEVICE DEDICATION NUMBER IO:CRI EQU 2 ADDRESS OF CURRENT RECORD INDEX IO:CFI EQU IO:CRI CURRENT FILE INDEX POINTER IO:FC EQU 3 FUNCTION CODE IO:BCT EQU 4 BYTE COUNT REQUESTED IO:BUF EQU 5 I/O BUFFER ADDRESS IO:ACT EQU 6 ACTUAL COUNT PROCESSED IO:ST EQU 7 SOFTWARE STATUS * BISYNC PICO ONLY IO:HED EQU IO:BUF FIRST BCB ON CHAIN IO:LST EQU IO:ACT LAST BCB PROCESSED * * FUNCTION CODE BITS * * BITS 15-6 MODE OF OPERATION ER: EQU 12 DON'T CALL DOIO ERROR ROUTINE,GO TO USER SB: EQU 11 START ON SECOND BYTE OF BUFFER HA: EQU 10 USED BY HALT I/O FUNCTION. UD: EQU 9 UN-DEDICATE DEVICE AFTER PERFORMING I/O * ER:V EQU 1%ER: SB:V EQU 1%SB: TITL OPERATION CODES RE: EQU 0 READ WR: EQU 1 WRITE PO: EQU 2 POSITION FU: EQU  3 FUNCTION * UNKNOWN OPEN: EQU 4 OPEN CLOSE: EQU 5 CLOSE * ASYNCH MUX ONLY SBU: EQU 4 SEND BUFFER SNL: EQU 6 SEND END-OF-LINE SEQUENCE ('SEND NEW LINE') SBK: EQU 5 SEND 'BREAK' SCC: EQU 7 SEND CONTROL CHARACTER WMR: EQU :C WRITE MODEM REGISTER WOT: EQU :D WRITE OPTION TABLE WSC: EQU :E WRITE SPECIAL CHAR TABLE * BISYNC PICO ONLY IR: EQU  8 IMMEDIATE RETURN ON OPEN IR:V EQU 1%IR: BIT MASK TITL OPERATION MODIFIERS FOR READ/WRITE * *  OPERATION MODIFIERS FOR READ/WRITE (BITS 0-3) * UF: EQU 0 UNFORMATTED (BACKUP/RESTORE FOR WTC TAPE READ & WRITE) FA: EQU :B FORMATTED ALPHANUMERIC (TAPE ONLY READ/WRITE FOR WTC) FB: EQU :A FORMATTED BINARY FS: EQU :8 FORMATTED STREAM CD: EQU :2 SCOUT MULTI-CHANNEL SERIAL CHAR. DETECT (EOB) WP: EQU 1 WRITE PROMPT DA: EQU :F DIRECT ALPHANUMERIC DB: EQU I  6 DIRECT BINARY DS: EQU :C DIRECT STREAM BS: EQU FS: SEQUENTIAL STREAM BINARY SA: EQU :9 SEQUENTIAL STREAM ALPHA RB:  EQU FB: SEQUENTIAL RECORD BINARY RA: EQU FA: SEQUENTIAL RECORD ALPHA DSB: EQU DS: DIRECT STREAM BINARY DSA: EQU :D DIRECT STREAM ALPHA DRB: EQU :E DIRECT RECORD BINARY DRA: EQU DA: DIRECT RECORD ALPHA TITL OPERATION MODIFIERS FOR POSITION * * OPERATION MODIFIERS FOR POSITION (BITS 0-3) * FAB: EQU 0 FILE POINTER ABSOLUTE BYTES FRB: EQU 1 FILE POINTER RELATIVE BYTES WAB: EQU 2 WRITE POINTER ABSOLUTE BYTES WRB: EQU 3  WRITE POINTER RELATIVE BYTES AR: EQU 4 ABSOLUTE RECORDS RR: EQU 5 RELATIVE RECORDS RFP: EQU 6 READ FILE POINTER RWP: EQU 7 READ WRITE POINTER * * MAGTAPE ONLY * SBF: EQU 8 SKIP BLOCKS FORWARD SBR: EQU 9 SKIP BLOCKS REVERSE SKF: EQU 10 SKIP FILES FORWARD * * STREAMER TAPE ONLY * WFM: EQU 8 WRITE FILE MARK RFM: EQU 9 READ FILE MARK * * SCOUT MULTI-CHANNEL SERIAL HANDLER ONLY * WC: EQU 14 TRANSFER USER'S SPEC. TABLE PTR. TO DIB TITL OPERATION MODIFIERS FOR FUNCTION * * OPERATION MODIFIERS FOR FUNCTION (BITS 0-3) * OP: EQU 0 OPEN CL: EQU 1 CLOSE PL: EQU 2 PUNCH LEADER WF: EQU 3  WRITE FILE MARK (WTC ALSO) DF: EQU 4 DEVICE DEPENDENT FUNCTION SS: EQU 5 SELECT HARDWARE STATUS (WTC READ STATUS) TF: EQU 6 TOP OF FORM SC: EQU 7 SOFTWARE CONTROL * * MAG & STREAMER TAPES ONLY * RWD: EQU 8 REWIND * * MAGTAPE ONLY * OFL: EQU 9 OFF-LINE EBL: EQU 10 ERASE BLOCK EFM: EQU 11 ERASE FILE MARK EOV: EQU 12 DO END OF VOLUME UBF: EQU 13 USER SUPPLIED BUFFER FUNCTION MOD. * * STREAMER TAPE ONLY * EET: EQU 9 ERASE ENTIRE TAPE RT: EQU 10 INITIALIZE CARTRIDGE (RETENSION) * * FOR OPEN BL: EQU 1 BLOCK I/O TITL * * FOR ASYNCH MUX * ROT: EQU 1 READ OPTION TABLE CM: EQU 1 SPECIAL CHARACTER MATCH OPTION (ADD TO RBF:) RMR: EQU 2 READ MODEM REGISTER RM: EQU 2 RANGE MATCH OPTION (ADD TO RBF:) RBF: EQU 4 READ BUFFER AE: EQU 8 FIRMWARE AUTO ECHO OPTION (ADD TO RBF:) * TO: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT HARDWARE WRITE ON WOT, WSC ID: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT DATA TRANSFER ON RBF * * BISYNC PICO ONLY DOT: EQU 0 DUMP OPTION TABLE OPN: EQU 1 OPEN CLS: EQU 2 CLOSE EXU:  EQU 3 EXECUTE REQUEST SAA: EQU 4 SET AUTO ANSWER TITL SOFTWARE STATUS * * SOFTWARE STATUS * IOERR: EQU 15 ERROR CAUSED I/O TERMINATION * BISYNC PICO ONLY IOCOM: EQU 14 OPERATION COMPLETION FLAG * BITS 13-12 DESCRIBE CONCURRENT CONDITIONS TFORM: EQU 1%12 TOP OF FORM BFORM: EQU 2%12  BOTTOM OF FORM * RETRY: EQU 11 A RETRY WAS REQUIRED TO PERFORM THE OPERAT EOM: EQU 10 END OF MEDIUM ENCOUNTERED DURING OPERATION DELDA: EQU 9 DELETED DATA READ FROM FLOPPY DISK * ASYNCH MUX ONLY RANGM: EQU 8 RANGE MATCH OCCURRED ON RECEIVE LBK: EQU 7 TRANSMIT STATUS ONLY, LINE BREAK SEEN BY RECV HALF CHARM: EQU 7 CHARACTER MATCH OCCURRED ON RECEIVE * * J  IOS4 ERROR CODES * BITS 0-5 OF STATUS WORD CONTAIN LOWER BYTE OF ERROR CODE * BIT 6 SET FOR UNRECOVERABLE * ERROR CLASSES ER:IOR EQU 0 I/O RECOVERABLE ER:IOU EQU 1 I/O UNRECOVERABLE SPACE 3 *  NORMAL RETURN CODES NORML: EQU 0 NORMAL I/O COMPLETION EOF: EQU 1 END OF FILE (GOING FORWARD) BOF: SET 3 BEGINNING OF FILE * * STREAMER TAPE INTERFACE (PICO) STATUS BITS * ST:EXC EQU 0  EXCEPTION ST:RDY EQU 1 FORMATTER/DRIVE READY ST:IDLE EQU 2 PICO IDLE TITL .... IOU: IOR: MACROS * MACROS FOR IOS4 ERROR CODES * IOR: FOR RECOVERABLE * IOU: FOR UNRECOVERABLE * MACRO IOU: #1 EQU 1%6+#2 ENDM MACRO  IOR: #1 EQU #2 ENDM * * ERROR CODES * IOR: HALTD:,1 I/O HALTED IOR: NORDY:,2 NOT READY IOR: WRTPR:,3 WRITE PROTECT IOR: TIMOT:,4 TIME OUT IOR: PWRFL:,5 POWER FAIL & UNABLE TO RECOVER IOR: DDTNA:,6 DDT NOT AVAILABLE,CFM ONLY IOR: VOLNU:,7 VOLUME NOT ON UNIT IOR: VOLNF:,8 VOLUME NOT FOUND IOR: NOREL:,9 LOGICAL UNIT NOT RELEASED IOR: AGAIN:,10 TRY AGAIN IOR: MNTAPE:,11 MOUNT NEXT VOLUME (MAG TAPE ONLY) * IOU: CKSUM:,1 BAD CHECK SUM IOU: UNDEV:,2 UNASSIGNED DEVICE IOU: NIUAT:,3 LUN NOT IN UAT IOU: REOM:,4 REACHED END OF MEDIA IOU: HARDW:,5 HARDWARE ERROR IOU:  ILLOP:,6 ILLEGAL OPERATION FOR THIS DEVICE IOU: NEMEM:,7 NON-EXISTANT MEMORY ADDR IOU: INRTX:,8 MEMORY ADDR IN SYSTEM ARTEA IOU: DIRFL:,9 DIRECTORY FULL IOU: NOLAB:,10 DISK NOT LABELED IOU: FAOV:,11 FILE ADDR OVERFLOW IOU: ILLAU:,12 ILLEGAL AU IOU: AUNF:,13 AU NOT FOUND IOU: WDEOF:,14 WRITE DIRECT HIT EOF IOU: NOTXT:,15 NOT EXTENDABLE IOU: ILLFA:,16 ILLEGAL FILE ADDR IOU: ALOFU:,17 ALLOCATION TABLE FOULED UP IOU: SYSUG:,18 SYSTEM USAGE ONLY IOU: FCBCH:,19 FCB CHAIN BAD IOU: FILEO:,20 FILE OPEN IOU: NOPEN:,21 FILE NOT OPEN IOU: FNOP:,21 FILE NOT OPEN IOU: OONWR:,22  OLD OR NEW WRONG, CFM ONLY IOU: ILLFP:,22 ILLEGAL FILE POINTER IOU: NOUNT:,23 UNIT NOT GIVEN IOU: UNFCB:,24 UNASSIGNED FCB IOU: BUFWP:,25 BUFFER HAS WRITE PENDING IOU: NOAU:,26 NO MORE FREE AU'S IOU: BADTC:,27 BAD TYPE CODE IOU:  ABORT:,28 ABORT IOU: LDSR:,29 DSR NOT UP (ASYNCH MUX ONLY) IOU: BRKDT:,30 'BREAK' DETECTED ON RECEIVE (ASYNCH MUX ONLY) IOU: PE:,31 PARITY ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: OE:,32 OVERRUN ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: UBTSM:,33 USER'S BLOCK TO SMALL IOU: ONOOR:,34 OVERLAY NUMBER OUT OF RANGE IOU: DVNAL:,35 DEVICE NOT ALLOCATED TO USER (BISYNC PICO) IOU: DVNOP:,36 DEVICE NOT OPENED (BISYNC PICO) IOU: ILLCM:,37 ILLEGAL COMMAND (BISYNC PICO) IOU: DVINO:,38 DEVICE INOPERATIVE (BISYNC PICO) IOU: EOTPD:,39 EOT FAILED PAD CHECK (BISYNC PICO) IOU: NAKPD:,40 NAK FAILED PAD CHECK (BISYNC PICO) IOU: MSGAB:,41 MESSAGE ABORTED (BISYNC PICO) IOU: BCCER:,42 BCC ERROR (BISYNC PICO) IOU: ILLCC:,43 ILLEGAL CONTROL CHARACTER (BISYNC PICO) IOU: RCVOR:,44 RECEIVE OVERRUN (BISYNC PICO) IOU: LGOVR:,45 LEADING GRAPHICS OVERRUN (BK ISYNC PICO) IOU: RTXER:,63 RTX ERROR * * I/O ERROR BLOCK EQUATES * IOE:AC EQU 0 ACB ADDR OF ERROR ACTIVITY IOE:EC EQU 1 ERROR CODE IOE:K EQU 2 K-REG OF ACTIVITY WITH ERROR IOE:DI EQU 3 DIB ADDR IOE:TI EQU 4 TIB ADDR TITL  DCIOB:A MACRO * * * DCIOB:A IOB,BCT,BUF,CHAIN * * TO BE USED IN CONJUNCTION WITH HE 'DCH' PARAMETER IN IOB:A *  TO ENABLE DATA CHAINING FOR THE WTC (DISC FUNCTIONS ONLY) * * IOB NAME OF DCIOB BLOCK * BCT BYTE COUNT * BUF BUFFER ADDRESS * CHAIN NEXT DCIOB ADDRESS (0 DISABLES DATA CHAINING) * * MACRO DCIOB:A  IFT #?<3 NOTE 5,' NOT ENOUGH PARAMETERS ' ENDC * #1 WORD #2+1%-1 CONVERT BYTE COUNT TO WORD COUNT WORD #3 BUFFER ADDRESS WORD 0 RESERVED WORD #4 NEXT DCIOB ADDRESS ENDM SPACE 2 * DCIOB:A EQUATES DCIO:WC EQU 0 DCIO:BUF EQU 1 DCIO:2 EQU 3 SPACE 3 TITL I:LOAD & I:LD410S PARAMETER BLOCK EQUATES & MACROS * PARAMETER BLOCK EQUATES * LD:LUN EQU 0 LOAD FILE LUN LD:BUF EQU 1 FILE INPUT BUFFER ADDRESS LD:OFF EQU 2 RELOCATION OFFSET LD:HLL EQU 3 HIGH LOAD LIMIT LD:LLL EQU 4 LOW LOAD LIMIT LD:XAD EQU 5 EXECUTION ADDRESS LD:HAD EQU 6 HIGHEST ADDRESS LOADED LD:FLG EQU 7 FLAG WORD LD:SDA EQU 8 SLAVE DEVICE ADDRESS (410S ONLY) LD:STP EQU 8 TOP-DOWN LOAD STEP VALUE (I:LOAD ONLY) LD:SIZE EQU 9 SIZE OF LOAD SERVICE PARAMETER BLOCK * *  LD:FLG (FLAG WORD) EQUATES * LDF:ERR EQU 15 ERROR OCCURRED DURING LOAD LDF:IOE EQU 14 I/O ERROR LDF:BTC EQU 13 BAD TYPE CODE ERROR LDF:ADE EQU 12 ADDRESSING ERROR LDF:NOS EQU 11 NO 410S AT SPECIFIED DEVICE ADDRESS (410S ONLY) LDF:MAE  EQU 10 MEMORY ADDRESS ERROR (16-32K) (410S ONLY) * LDF:PM EQU 2 PUBLIC MEMORY IN UPPER 32K (410S ONLY) LDF:EXA EQU 1 EXECUTION ADDRESS SPECIFIED (410S ONLY) LDF:EX EQU 0 INITIATE 410S EXECUTION (410S ONLY) TITL * PARAMETER BLOCK GENERATION MACRO * * LABEL LOAD: LUN,OFF,(BUF),(HLL),(LLL),(XAD),(FLG),(SLV) * LOAD: MACRO WORD #(1) LD:LUN .. LUN WORD #(3)+0 LD:BUF .. INPUT BUFFER ADDRESS WORD #(2) LD:OFF .. RELOCATION OFFSET WORD #(4)+0 LD:HLL .. HIGH LOAD LIMIT WORD #(5)+0 LD:LLL .. LOW LOAD LIMIT WORD #(6)+0 LD:XAD .. EXECUTION ADDRESS (410S ONLY) WORD 0 LD:HAD .. HIGH LOAD ADDRESS/NEXT FREE ADDRESS WORD #(7)+0 LD:FLG .. FLAG WORD (410S ONLY) IFT #(8,?) WORD #(8) LD:SDA .. USER SLAVE DEVICE ADDRESS (410S ONLY) ENDC IFF #(8,?) WORD :F0 LD:SDA .. DEFAULT SLAVE DEVICE ADDRESS (410S ONLY) ENDC * S: SET #(?)<2 S: SET #(?)>8++S: IFT S: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL I:OVL PARAMETER BLOCK EQUATES AND MACROS * * OV:A BLOCK EQUATES * OVA:LUN EQU 0 LUN ENTRY IN OV:A BLOCK OVA:ADR EQU 1 DIRECTORY ADDRESS ENTRY IN OV:A BLOCK OVA:LEN EQU 2 LENGTH ENTRY IN OV:A BLOCK * OVL:A MACRO #(1) WORD #(2) LUN TO USE FOR OVERLAYS WORD #(3) ADDRESS OF USER'S DIRECTORY BLOCK WORD #(4) LENGTH OF USER'S DIRECTORY BLOCK ENDM OVL: MACRO MACLAB OVL:A #(-1),#(1),#(2),#(3) ENDM SPACE 2 SAVE END L IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MB087101209591497871012095914 871012095914 0F46002 VOLOS4 SYS GENERATION DISKETTE (G410)