File 1) DSK:IOLIB.MAC created: 1753 18-AUG-1975 File 2) DSK:IOL5.MAC created: 1716 27-MAR-1975 1)1 SUBTTL Rob Cook Jun-75 v:5A 1) IF1,< **** 2)1 SUBTTL ROB COOK NOV-73 V:4 2) IF1,< ************** 1)1 PATCH$ <206,207,210,211,212,213,214,215,216,217> 1) $$IOL==:BYTE (3)$VCOD (9)$VMAJ (6)$VMIN (18)$VEDT **** 2)1 $$IOL==:BYTE (3)$VCOD (9)$VMAJ (6)$VMIN (18)$VEDT ************** 1)2 206 Correct bug in $RSWIT which caused Ill Mem Ref if an out of 1) range value were supplied to a switch - stack problem. 1) 207 Correct bug in definition of ERR$$ in IOLIB. The definition 1) had not been changed with the new format flag word. 1) 210 Correct bug in $RSWIT which forced user to type switch name in 1) full for the first switch name in the table 1) 211 Correct bug in $RPATH which forgot the PPN mask if no SFD 1) was given 1) 212 Fix bug in 210 1) 213 Fix $SWTDY to return date/time in Universal format 1) 214 Fix stack problems on error in $RDATE 1) 215 make $cnviu, $cnvui entry points 1) 216 fix $BEGCC to use the program name from $IDPNM for the TMP 1) filename if argument to $BEGCC is -1 1) 217 fix $READ to give EOF return on reading nul from byte-pointer 1) ! 1)3 COMMENT ! 1) REVISIONS MAKING UP V:5 OF IOLIB: **** 2)2 REVISIONS MAKING UP V:5 OF IOLIB: ************** 1)6 DEFINE ERR$$(TXT,COD,TYP,OP),< ;[207] fix definition 1) TMP$$==EC$IND+[+[ASCIZ \'TXT'\]] 1) IFNB ,< 1) TMP$$==TMP$$+<<$ECT'TYP>B17>> 1) OP T1,[TMP$$] **** 2)5 DEFINE ERR$$(TXT,COD,TYP,OP),< 2) TMP$$==EC$IND+[+[ASCIZ \'TXT'\]] 2) IFNB ,< 2) TMP$$==TMP$$+<<$ECT'TYP>B11>> 2) OP T1,[TMP$$] ************** 1)11 JUMPE P1,RPA02 ;[211] save PPN in PATH block? 1) MOVEM T3,(P1) ;[211] save PPN mask too 1) MOVEM T2,2(P1) ;[170] YES, DO IT 1) RPA02: ;[211] here to proceed with SFD 1) IFN FT$SFD,< **** 2)10 SKIPE P1 ;[170] SAVE PPN IN PATH BLOCK? 2) MOVEM T2,2(P1) ;[170] YES, DO IT 2) IFN FT$SFD,< ************** 1)13 MOVNI P1,2 ;[210] Flag 'no match' for starters 1) JUMPE P2,RSW10 ;NO USER TABLES IS FINE File 1) DSK:IOLIB.MAC created: 1753 18-AUG-1975 File 2) DSK:IOL5.MAC created: 1716 27-MAR-1975 **** 2)12 SETZ P1, ;INITIALISE AGAIN 2) JUMPE P2,RSW10 ;NO USER TABLES IS FINE ************** 1)14 AOJE P1,DUPLSW ;[210] P1/-1 means duplicate on user table 1) SOJL P1,NOMATC ;[212] P1/-2 means no match in user table 1) MOVE T1,P1 ;[212] P1/+n is ok index in user table 1) JRST RSW30] ;PROCESS IT **** 2)13 JUMPL P1,DUPLSW ;ALSO 2) JUMPE P1,NOMATC ; UNKNOWN 2) MOVE T1,P1 ;GET USER INDEX BACK 2) JRST RSW30] ;PROCESS IT ************** 1)14 AOJE P1,DUPLSW ;[212] error if duplicate 1) RSW30:! ;SWITCH NAME MATCHED. P2 POINTS TO TABLE. T1 CONTAINS INDEX. **** 2)13 JUMPL P1,DUPLSW ;ERROR IF DUPLICATE 2) RSW30:! ;SWITCH NAME MATCHED. P2 POINTS TO TABLE. T1 CONTAINS INDEX. ************** 1)16 PJUMPL T2,OORNGE ;[206] OUT OF RANGE 1) CAMLE T2,T3 ;CHECK AGAINST MAX 1) JRST OORNGE ;[206] OUT OF RANGE 1) ;FALL INTO $SWDPB **** 2)15 PJUMPL T2,$$DRNG## ;OUT OF RANGE 2) CAMLE T2,T3 ;CHECK AGAINST MAX 2) JRST $$DRNG## ;OUT OF RANGE 2) ;FALL INTO $SWDPB ************** 1)16 OORNGE: ;[206] value out of range 1) POP P,(P) ;pop stack 1) PJRST $$DRNG## ;setup error code 1) PRGEND **** 2)15 PRGEND ************** 1)16 PUSH P,T1 ;[213] save away delimiter 1) MOVE T1,T2 ;[213] set up args for $CNVIU 1) MOVE T2,T3 ;[213] 1) CNVIU$ ;[213] convert date/time from internal to Universal form 1) MOVE T2,T1 ;[213] set arg. for return 1) POP P,T1 ;[213] recover delimiter 1) PJRST $SWDPB## ; **** 2)15 PJRST $SWDPB## ; ************** 1)24 JRST RNGERR ;[214] no, range error 1) IMULI T3,^D31 ;CONVERT TO INTERNAL FORM **** 2)23 PJRST $$DRNG## ;NO, ERROR 2) IMULI T3,^D31 ;CONVERT TO INTERNAL FORM ************** 1)24 JUMPL T2,RNGERR ;[214] exit if out of range 1) CAIGE T2,^D64 ;MUST BE AFTER 1964 1) JRST RNGERR ;[214] File 1) DSK:IOLIB.MAC created: 1753 18-AUG-1975 File 2) DSK:IOL5.MAC created: 1716 27-MAR-1975 1) SUBI T2,^D64 ;ADJUST TO INTERNAL FORM **** 2)23 PJUMPL T2,$$DRNG## ;EXIT IF OUT OF RANGE 2) CAIGE T2,^D64 ;MUST BE AFTER 1964 2) PJRST $$DRNG## ; 2) SUBI T2,^D64 ;ADJUST TO INTERNAL FORM ************** 1)24 RNGERR: ;[214] number out of feasible range 1) POP P,(P) ;pop stack 1) PJRST $$DRNG## ;exit through error return 1) PRGEND **** 2)23 PRGEND ************** 1)30 PJRST $POPJ1## ;{217] endfile 1) REA20: ;HERE TO READ A BYTE FROM FILE **** 2)29 POPJ P, ; 2) REA20: ;HERE TO READ A BYTE FROM FILE ************** 1)72 ENTRY $CNTDT,$cnvui ;[215] 1) RADIX 10 **** 2)71 ENTRY $CNTDT 2) RADIX 10 ************** 1)73 ENTRY $CNNOW,$cnvnu ;[215] 1) $CNNOW:: **** 2)72 ENTRY $CNNOW 2) $CNNOW:: ************** 1)74 ENTRY $CNVDT,$cnviu ;[215] 1) RADIX 10 **** 2)73 ENTRY $CNVDT 2) RADIX 10 ************** 1)74 POP P,T1 ;[216] recover CCL entry code 1) SKIPGE t1 ;[216] load program name if -1 1) HLRZ t1,$IDPNM(I) ;[216] using 1st 3 characters only 1) MOVEM t1,$IDCCL(I) ;[216] store away 1) JUMPE T1,BEG10 ;[216] exit if non-CCL entry 1) PUSHJ P,$TMPFD## ;build a tempcore FDB **** 2)73 POP P,$IDCCL(I) ;save CCL entry code 2) SKIPN T1,$IDCCL(I) ;CCL entry? 2) JRST BEG10 ;no: exit normally 2) PUSHJ P,$TMPFD## ;build a tempcore FDB **************