From 4004a326545fc294821707378dd8e6b026df8be1 Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Thu, 8 Mar 2018 21:20:03 -0500 Subject: [PATCH] Cleanup more typos. --- src/cdrsr6.mac | 654 ++++++++++++++++++++++++++++---------------------------- src/cdrsrx.mac | Bin 8040 -> 8203 bytes src/errcon.mac | 1 - src/jobdat.mac | Bin 7551 -> 9727 bytes src/lptser.mac | 11 +- src/mtasrx.mac | 36 ++-- src/mtcsr6.mac | 68 ++++-- src/nulseg.mac | Bin 3020 -> 3024 bytes src/pltser.mac | 16 +- src/ptpser.mac | Bin 6367 -> 6381 bytes src/ptrser.mac | Bin 4120 -> 4152 bytes src/ptysrf.mac | Bin 7047 -> 7052 bytes src/ptysrh.mac | 31 ++- src/sysmak.mac | Bin 1249 -> 1194 bytes 14 files changed, 425 insertions(+), 392 deletions(-) diff --git a/src/cdrsr6.mac b/src/cdrsr6.mac index 68b70ce..bc5cc0a 100644 --- a/src/cdrsr6.mac +++ b/src/cdrsr6.mac @@ -1,327 +1,327 @@ -TITLE CDRSR6 - CARD READER SERVICE FOR PDP-6 CARD READER -SUBTTL /TH TS3.17 18 OCT 67 V001 -XP VCDRS6,001 - ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP - - ;PARAMETERS - - ;HARDWARE - - CRDONE=10 - CRBUSY=20 - CRBIN=40 - CRALL=100 - CRMISS=200 - CREOC=400 - CREOFF=1000 - CRERR=2000 - CRNRED=4000 - - CRCONO=CRBUSY+CRBIN+CRALL - CDR=114 - - COD029=5252 ;029 CONTROL CARD IS 12-0-2-4-6-8! - - ;IOS - - CRMFST=40000 ;LH - CRMIMG=100000 ;LH - CRMBIN=200000 ;LH - CRM029=100 ;RH - - MINHNG=^D15 ;NO. OF TIMES TO OBEY HUNG CODE BEFORE REALLY BECOMING HUNG - -CDRHNG: CONSO CDR,CRERR ;POWER OFF OR OTHER SUCH CATASTOPHE? - TLNN IO,IOFST ;NO - CARD JAMMED? - JRST CDRINI ;YES - PRINT HUNG MSG. - AOS (PDP) ;NEVER ERROR RETURN - CONSZ CDR,CRMISS ;FEEDCHECK? - CONSZ CDR,CRNRED ;YES - READER READY? - SOSA TAC,LOPCNT ;NO - PICK UP HUNG LOOP COUNTER - JRST CDRSTR ;YES - GIVE ANOTHER CONO - JUMPGE TAC,STOIOS ;COUNT NOT EXPIRED - LEAVE ACTIVE - SOS (PDP) ;EXPIRED - PRINT HUNG MSG. - -CDRINI: CONO CDR,0 ;CLEAR HARDWARE - HLLZS CDRCON ;CLEAR CONSO BITS - POPJ PDP,0 ;RETURN - - INTERNAL FTCHECK,FTMONP - -IFN FTCHECK+FTMONP,< -EXTERNAL CDRDDB,CRDIS,CRTEM,CDRCON,LOPCNT -> -IFE FTCHECK+FTMONP,< -;CDR DEVICE DATA BLOCK - INTERN CDRDDB -CDRDDB: -CDRDAT: SIXBIT /CDR/ - XWD 2*HUNGST,34 ;BUFFER LONG ENOUGH FOR BINARY CARDS - 0 - EXP CDRDSP - XWD DVCDR+DVIN,14403 - 0 - 0 - XWD PROG,0 - 0 - 0 -CRDIS: JRST . -CRTEM: 0 ;TEMP FOR PARTIAL WORDS -CDRCON: 0 ;CONSO FLAGS -LOPCNT: 0 -> - -ENTRY CDRSR6 -EXTERN CPOPJ1,ILLOUT,PIOMOD,SETACT,SETBYT,CDRCHN,PIOFF,PION,HNGSTP -INTERN CDRDSP - -;CDR SERVICE DISPATCH TABLE (SHORT) - - JRST CDRINI ;INITILIZATION - JRST CDRHNG ;HUNG DEVICE IS CHECKED -CDRSR6: -CDRDSP: JRST CDRINI ;RELEASE - CLEAR DEVICE - POPJ PDP,0 ;CLOSE - NOTHING SPECIAL - JRST ILLOUT ;OUTPUT WON'T WORK - ;INPUT IS OK - TLZN IOS,IOBEG ;BEGINNING OF FILE? (NO MORE). - CONSO CDR,CREOFF ;BUTTON PUSHED? - TLZA IOS,CRMBIN+CRMIMG ;CLEAR TRASH - JRST CREOF ;END OF FILE PUSHED WHILE IOACT WAS 0 -CDRIN1: CONO CDR,0 ;CLEAR ANY SPURIOUS FLAGS - CONSO CDR,CRERR!CRMISS!CRNRED ;POWER OFF,LEFT OVER FEED-CHECK OR NOT READY - JRST .+3 ;NO - OK - PUSHJ PDP,HNGSTP ;YES - PRINT REMINDER & HALT JOB - JRST CDRIN1 ;GO TRY AGAIN WHEN USER TYPES 'CONT' - TLO IOS,IOFST+CRMFST ;NEW OPERATION - LDB TAC,PIOMOD ;SPEED UP TESTING OF MODE - CAIN TAC,B ;.. - TLO IOS,CRMBIN ;BINARY MODE - CAIN TAC,I - TLO IOS,CRMIMG ;IMAGE MODE - PUSHJ PDP,SETBYT ;LH(TAC):=700+PROG OR 4400+PROG - MOVEM TAC,DEVPTR(DEVDAT) ;SAVE BYTE SIZE -CDRSTR: MOVEI TAC,MINHNG ;HERE TO RESTART CDR ON FEED-CHECK - MOVEM TAC,LOPCNT ;RESET HUNG LOOP COUNTER - PUSHJ PDP,SETACT - MOVE TAC,[XWD CRDONE,CRCONO] - CONO PI,PIOFF - CONO CDR,CDRCHN(TAC) ;START CDR - HLRM TAC,CDRCON ;AND LOOK FOR IT - CONO PI,PION - POPJ PDP,0 ;RETURN TO UUOCON - - -INTERN CDRINT -EXTERN CDRSAV,IOSET,SETIOD,STOIOS,CDRCHN - -CDRINT: CONSO CDR,@CDRCON - JRST CDRINT - JSR CDRSAV - MOVEI DEVDAT,CDRDDB - MOVE IOS,DEVIOS(DEVDAT) - PUSHJ PDP,IOSET - CONSZ CDR,CRMISS - TRO IOS,IODERR ;DEVICE ERROR - CONSO CDR,CRERR+CREOFF+CREOC - JRST CRDATA ;JUST A DATA INTERRUPT - CONSZ CDR,CRERR ;HARDWARE LOSS? - JRST CDRERR ;YES - JRST CDREOC ;NO. MUST BE END OF CARD -CREOF: TLOA IOS,IOEND ;MARK END,SKIP TO CROFF -CDRERR: TRO IOS,IODERR ;CDR DEVICE ERROR HERE -CROFF: PUSHJ PDP,CDRINI ;STOP THE DEVICE - TRZ IOS,IOACT -CRLST1: MOVEI TAC,MINHNG - MOVEM TAC,LOPCNT ;RESET HNG. LOOP CNT. - TLO IOS,IOFST+CRMFST - TLZE IOS,IOW ;JOB WAITING FOR CDR? - PUSHJ PDP,SETIOD ;YES. WAKE IT UP -CREXIT: MOVEM ITEM,DEVCTR(DEVDAT) - JRST STOIOS - -CRCONT: MOVEI TAC,CDRCHN ;PI CHANNEL - CONO CDR,CRCONO(TAC) ;MAKE IT GO AGAIN - TLO IOS,CRMFST ;FIRST COLUMN, BUT NOT FIRST IN BUFFER - JRST CREXIT ;AND RETURN - - - -CRDATA: DATAI CDR,DAT - TLZN IOS,CRMFST ;COLUMN 1? - XCT CRDIS ;NO. SUBROUTINE HAS BEEN SET UP - TRNE IOS,IODERR ;POSSIBLE FEED CHECK? - CONSO CDR,CRNRED ;YES - READER READY? - JRST .+4 ;YES - GENUINE DATA ERROR - TLO IOS,CRMFST ;RESET 1ST COL. FLG. - TRZ IOS,IODERR ;CLEAR ERROR INDICATION - JRST STOIOS ;AND LET HUNG LOGIC SORT THINGS OUT - TLNE IOS,CRMIMG ;IMAGE MODE? - JRST CRFSTI ;YES, DON'T CHECK FOR EOF CARD - TRC DAT,7400 - TRCN DAT,7400 ;12,11,0 AND 1 PUNCH? - JRST CREOF1 ;YES. AN EOF CARD. - TLNE IOS,CRMBIN - JRST CRFSTB ;BINARY CARD FIRST COLUMN - MOVEI TAC,CRASCI ;HERE ON ASCII FIRST COLUMN - HRRM TAC,CRDIS ;FOR SUCCEEDING COLUMN INTERRUPTS - CAIE DAT,COD029 ;029 CONTROL CARD? - JRST CRASCI ;NO. PROCESS THE CARD. - TDO IOS, [XWD IOBEG,CRM029] ;FLAG FOR EOC AND TRANSLATOR - JRST CRIGNOR ;FLUSH REST OF THIS CARD - -CRASCI: MOVEI TAC,0 ;CLEAR TAC - CAIN DAT,5000 - MOVEI DAT,4202 ;12-0 => 12-8-2 - CAIN DAT,3000 - MOVEI DAT,2202 ;11-0 => 11-8-2 - LDB TAC1,[XWD 110300,DAT] ;12,11,0 ROWS TO TAC1 - TRNE DAT,3 ;8 ZONE? - TRC TAC1,7 ;YES, PERMUTE TAC1 - TRNE DAT,74 ;4 BIT? - TRO TAC1,10 ;YES - TRNE DAT,314 ;2 BIT? - TRO TAC,2 ;YES - TRNE DAT,525 ;1 BIT? - TRO TAC,1 ;YES - TRNN IOS,CRM029 ;HAS 029 CODE BEEN IMPLIED? - TRO TAC1,20 ;NO. MOVE UP TO 026 CODE TABLE - LDB DAT,CRCV2(TAC) ;GET THE ASCII CHARACTER - PUSHJ PDP,CRSTOD ;STORE IT - JRST CREXIT ;AND RETURN - -CRCV2: POINT 7,CRCNV(TAC1),6 - POINT 7,CRCNV(TAC1),13 - POINT 7,CRCNV(TAC1),20 - POINT 7,CRCNV(TAC1),27 - - -EXTERN CDRCHN - -CRFSTI: LSH DAT,30 - MOVEM DAT,CRTEM ;SAVE AS LEFT 12 BITS - JSP TAC,CREXI1 ;GET ANOTHER COLUMN - LSH DAT,14 - IORM DAT,CRTEM ;THROW IN MIDDLE 12 BITS - JSP TAC,CREXI1 ;ANOTHER COLUMN - IORB DAT,CRTEM ;RIGHT 12. SAVE IN CRTEM FOR DEBUG -CRBIN2: PUSHJ PDP,CRSTOD ;ENTRY HERE FROM BIN CARDS - MOVEI TAC,CRFSTI ;ANOTHER 3 COLUMNS COME NEXT -CREXI1: HRRM TAC,CRDIS ;WHERE TO GO FOR NEXT COLUMN - JRST CREXIT ;RETURN FROM INTERRUPT - -CDREOC: CONSO CDR,CREOFF - TLNE IOS,IOEND ;END OF FILE? - JRST CREOF ;YES. SHUT OFF CDR - TLNN IOS,CRMIMG+CRMBIN ;IMAGE OR BIN? - JRST CRENDA ;ASCII - TLNN IOS,CRMIMG ;IMAGE? - JRST CRENDB ;BINARY. - MOVE DAT,CRTEM ;HERE ON EOC AND IMAGE - PUSHJ PDP,CRSTOD ;STORE LAST 2 COLUMNS IN BUFFER -CRENDB: PUSHJ PDP,CRADV1 ;ADVANCE BUFFER -CRENDC: MOVEI TAC,CDRCHN ;PI CHANNEL - CONO CDR,CRCONO(TAC) ;GO FOR NEXT CARD - JRST CRLST1 ;SET UP FOR NEXT CARD,DISMISS INTERRUPT, - ;ALSO WAKE UP JOB IF IN IOW - -CRFSTB: MOVEI TAC,-5(DAT) - TRNE TAC,17 ;ROWS 6-9=5? - TRO IOS,IOIMPM ;NO. NOT A BIN CARD - LSH DAT,-4 ;GET COLUMNS 1-5 - JUMPE DAT,CRIGNOR ;IGNORE BINARY CARDS WITH 0 WORD COUNT - MOVEM DAT,CRTEM ;SAVE AS WORD COUNT - JSP TAC,CREXI1 ;GET COLUMN 2 - HRL DAT,CRTEM ;(COUNT)CKSUM - MOVSS DAT ;(CKSUM)COUNT - JRST CRBIN2 ;STORE DAT AND GET REST OF CARD - - -EXTERN STOSQD,STODAT,ADVBFF - -CRENDA: TLZE IOS,IOBEG ;WAS THIS A 029 CONTROL CARD? - JRST CRCONT ;YES. NO CRLF. - MOVEI DAT,15 ;CARRIAGE RETURN - PUSHJ PDP,CRSTOD ;STORE - MOVEI DAT,12 ;LINE FEED - PUSHJ PDP,CRSTOD ;STORE - LDB TAC1,PIOMOD ;GET MODE - CAIN TAC1,AL ;ASCII LINE? - JRST CRENDC ;YES -WORD COUNT WILL HAVE BEEN COMPUTED & BUFFERS ADVANCED - CAIL ITEM,^D82 ;ROOM FOR ANOTHER CARD + CRLF? - JRST CRCONT ;YES. DO SO - PUSHJ PDP,STOSQD ;NO. STORE WORD COUNT - JRST CROFF ;CAN'T RETURN HERE, BUT ... - JRST CRENDB ;PROCEED TO ANOTHER BUFFER - -CREOF1: TLO IOS,IOEND ;HERE ON EOF CARD. MARK FOR EOC -CRIGNOR: JSP TAC,CREXI1 ;GET MORE COLUMNS - JRST .-1 ;AND IGNORE THEM. - -CRSTOD: PUSHJ PDP,STODAT ;STORE DAT IN BUFFER - JRST CRPOFF ;ADDRESS CHECK,IOBKTL,IODTER (CKSUM) - JRST CRADV ;BUFFER FULL OR BUFFER DONE - POPJ PDP,0 ;SIMPLE OK STORED RETURN - -CRADV: TLNE IOS,CRMBIN ;BINARY? - JRST CRIGNOR ;WAIT FOR END OF CARD -CRADV1: TLNE IOS,IOFST ;VIRGIN BUFFER? - POPJ PDP,0 ;YES. KEEP THIS ONE - PUSHJ PDP,ADVBFF ;ADVANCE TO ANOTHER BUFFER - SKIPA ;NO BUFFER AVAILABLE - POPJ PDP,0 ;OK. RETURN -CRPOFF: POP PDP,TAC - JRST CROFF - - -;CODE CONVERSION FOR THE 029 KEYPUNCH - -;THE FOLLOWING EQUIVALENCES ARE ARTIFICIALLY DEFINED - -;029 KEYTOP ;ASCII 35 ;ASCII 37 -;CENT [ [ -;0-8-2 ] ] -;VERT BAR ^ HAT = L.C. VERT BAR -;UNDERBAR _ UNDERBAR -;NEGATION \ TILDE = L.C. NEGATION - - ;CHARACTERS ;ZONE/DIGITS -CRCNV: ASCII / 123/ ;N/N-3 - ASCII .0/ST. ;0/N-3 - ASCII /-JKL/ ;11/N-3 - ASCII /HI[./ ;12,8/N-3 - ASCII /&ABC/ ;12/N-3 - ASCII /QR!$/ ;11,8/N-3 - ASCII /YZ],/ ;0,8/N-3 - ASCII /89:#/ ;8/N-3 - ASCII /4567/ ;N/4-7 - ASCII /UVWX/ ;0/4-7 - ASCII /MNOP/ ;11/4-7 - ASCII /<(+^/ ;12,8/4-7 - ASCII /DEFG/ ;12/4-7 - ASCII /*);\/ ;11,8/4-7 - ASCII /%_>?/ ;0,8/4-7 - ASCII /@'="/ ;8/4-7 - -;CODE FOR THE 026 KEYPUNCH A LA H HYMAN - - ASCII / 123/ ;N/N-3 - ASCII .0/ST. ;0/N-3 - ASCII /-JKL/ ;11/N-3 - ASCII /HI?./ ;12,8/N-3 - ASCII /+ABC/ ;12/N-3 - ASCII /QR:$/ ;11,8/N-3 - ASCII /YZ;,/ ;0,8/N-3 - ASCII /89_=/ ;8/N-3 - ASCII /4567/ ;N/4-7 - ASCII /UVWX/ ;0/4-7 - ASCII /MNOP/ ;11/4-7 - ASCII /)]&/ ;11,8/4-7 - ASCII /("#%/ ;0,8/4-7 - ASCII /@^'\/ ;8/4-7 - - - END - \ No newline at end of file +TITLE CDRSR6 - CARD READER SERVICE FOR PDP-6 CARD READER +SUBTTL /TH TS3.17 18 OCT 67 V001 +XP VCDRS6,001 + ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP + + ;PARAMETERS + + ;HARDWARE + + CRDONE=10 + CRBUSY=20 + CRBIN=40 + CRALL=100 + CRMISS=200 + CREOC=400 + CREOFF=1000 + CRERR=2000 + CRNRED=4000 + + CRCONO=CRBUSY+CRBIN+CRALL + CDR=114 + + COD029=5252 ;029 CONTROL CARD IS 12-0-2-4-6-8! + + ;IOS + + CRMFST=40000 ;LH + CRMIMG=100000 ;LH + CRMBIN=200000 ;LH + CRM029=100 ;RH + + MINHNG=^D15 ;NO. OF TIMES TO OBEY HUNG CODE BEFORE REALLY BECOMING HUNG + +CDRHNG: CONSO CDR,CRERR ;POWER OFF OR OTHER SUCH CATASTOPHE? + TLNN IO,IOFST ;NO - CARD JAMMED? + JRST CDRINI ;YES - PRINT HUNG MSG. + AOS (PDP) ;NEVER ERROR RETURN + CONSZ CDR,CRMISS ;FEEDCHECK? + CONSZ CDR,CRNRED ;YES - READER READY? + SOSA TAC,LOPCNT ;NO - PICK UP HUNG LOOP COUNTER + JRST CDRSTR ;YES - GIVE ANOTHER CONO + JUMPGE TAC,STOIOS ;COUNT NOT EXPIRED - LEAVE ACTIVE + SOS (PDP) ;EXPIRED - PRINT HUNG MSG. + +CDRINI: CONO CDR,0 ;CLEAR HARDWARE + HLLZS CDRCON ;CLEAR CONSO BITS + POPJ PDP,0 ;RETURN + + INTERNAL FTCHECK,FTMONP + +IFN FTCHECK+FTMONP,< +EXTERNAL CDRDDB,CRDIS,CRTEM,CDRCON,LOPCNT +> +IFE FTCHECK+FTMONP,< +;CDR DEVICE DATA BLOCK + INTERN CDRDDB +CDRDDB: +CDRDAT: SIXBIT /CDR/ + XWD 2*HUNGST,34 ;BUFFER LONG ENOUGH FOR BINARY CARDS + 0 + EXP CDRDSP + XWD DVCDR+DVIN,14403 + 0 + 0 + XWD PROG,0 + 0 + 0 +CRDIS: JRST . +CRTEM: 0 ;TEMP FOR PARTIAL WORDS +CDRCON: 0 ;CONSO FLAGS +LOPCNT: 0 +> + +ENTRY CDRSR6 +EXTERN CPOPJ1,ILLOUT,PIOMOD,SETACT,SETBYT,CDRCHN,PIOFF,PION,HNGSTP +INTERN CDRDSP + +;CDR SERVICE DISPATCH TABLE (SHORT) + + JRST CDRINI ;INITILIZATION + JRST CDRHNG ;HUNG DEVICE IS CHECKED +CDRSR6: +CDRDSP: JRST CDRINI ;RELEASE - CLEAR DEVICE + POPJ PDP,0 ;CLOSE - NOTHING SPECIAL + JRST ILLOUT ;OUTPUT WON'T WORK + ;INPUT IS OK + TLZN IOS,IOBEG ;BEGINNING OF FILE? (NO MORE). + CONSO CDR,CREOFF ;BUTTON PUSHED? + TLZA IOS,CRMBIN+CRMIMG ;CLEAR TRASH + JRST CREOF ;END OF FILE PUSHED WHILE IOACT WAS 0 +CDRIN1: CONO CDR,0 ;CLEAR ANY SPURIOUS FLAGS + CONSO CDR,CRERR!CRMISS!CRNRED ;POWER OFF,LEFT OVER FEED-CHECK OR NOT READY + JRST .+3 ;NO - OK + PUSHJ PDP,HNGSTP ;YES - PRINT REMINDER & HALT JOB + JRST CDRIN1 ;GO TRY AGAIN WHEN USER TYPES 'CONT' + TLO IOS,IOFST+CRMFST ;NEW OPERATION + LDB TAC,PIOMOD ;SPEED UP TESTING OF MODE + CAIN TAC,B ;.. + TLO IOS,CRMBIN ;BINARY MODE + CAIN TAC,I + TLO IOS,CRMIMG ;IMAGE MODE + PUSHJ PDP,SETBYT ;LH(TAC):=700+PROG OR 4400+PROG + MOVEM TAC,DEVPTR(DEVDAT) ;SAVE BYTE SIZE +CDRSTR: MOVEI TAC,MINHNG ;HERE TO RESTART CDR ON FEED-CHECK + MOVEM TAC,LOPCNT ;RESET HUNG LOOP COUNTER + PUSHJ PDP,SETACT + MOVE TAC,[XWD CRDONE,CRCONO] + CONO PI,PIOFF + CONO CDR,CDRCHN(TAC) ;START CDR + HLRM TAC,CDRCON ;AND LOOK FOR IT + CONO PI,PION + POPJ PDP,0 ;RETURN TO UUOCON + + +INTERN CDRINT +EXTERN CDRSAV,IOSET,SETIOD,STOIOS,CDRCHN + +CDRINT: CONSO CDR,@CDRCON + JRST CDRINT + JSR CDRSAV + MOVEI DEVDAT,CDRDDB + MOVE IOS,DEVIOS(DEVDAT) + PUSHJ PDP,IOSET + CONSZ CDR,CRMISS + TRO IOS,IODERR ;DEVICE ERROR + CONSO CDR,CRERR+CREOFF+CREOC + JRST CRDATA ;JUST A DATA INTERRUPT + CONSZ CDR,CRERR ;HARDWARE LOSS? + JRST CDRERR ;YES + JRST CDREOC ;NO. MUST BE END OF CARD +CREOF: TLOA IOS,IOEND ;MARK END,SKIP TO CROFF +CDRERR: TRO IOS,IODERR ;CDR DEVICE ERROR HERE +CROFF: PUSHJ PDP,CDRINI ;STOP THE DEVICE + TRZ IOS,IOACT +CRLST1: MOVEI TAC,MINHNG + MOVEM TAC,LOPCNT ;RESET HNG. LOOP CNT. + TLO IOS,IOFST+CRMFST + TLZE IOS,IOW ;JOB WAITING FOR CDR? + PUSHJ PDP,SETIOD ;YES. WAKE IT UP +CREXIT: MOVEM ITEM,DEVCTR(DEVDAT) + JRST STOIOS + +CRCONT: MOVEI TAC,CDRCHN ;PI CHANNEL + CONO CDR,CRCONO(TAC) ;MAKE IT GO AGAIN + TLO IOS,CRMFST ;FIRST COLUMN, BUT NOT FIRST IN BUFFER + JRST CREXIT ;AND RETURN + + + +CRDATA: DATAI CDR,DAT + TLZN IOS,CRMFST ;COLUMN 1? + XCT CRDIS ;NO. SUBROUTINE HAS BEEN SET UP + TRNE IOS,IODERR ;POSSIBLE FEED CHECK? + CONSO CDR,CRNRED ;YES - READER READY? + JRST .+4 ;YES - GENUINE DATA ERROR + TLO IOS,CRMFST ;RESET 1ST COL. FLG. + TRZ IOS,IODERR ;CLEAR ERROR INDICATION + JRST STOIOS ;AND LET HUNG LOGIC SORT THINGS OUT + TLNE IOS,CRMIMG ;IMAGE MODE? + JRST CRFSTI ;YES, DON'T CHECK FOR EOF CARD + TRC DAT,7400 + TRCN DAT,7400 ;12,11,0 AND 1 PUNCH? + JRST CREOF1 ;YES. AN EOF CARD. + TLNE IOS,CRMBIN + JRST CRFSTB ;BINARY CARD FIRST COLUMN + MOVEI TAC,CRASCI ;HERE ON ASCII FIRST COLUMN + HRRM TAC,CRDIS ;FOR SUCCEEDING COLUMN INTERRUPTS + CAIE DAT,COD029 ;029 CONTROL CARD? + JRST CRASCI ;NO. PROCESS THE CARD. + TDO IOS, [XWD IOBEG,CRM029] ;FLAG FOR EOC AND TRANSLATOR + JRST CRIGNOR ;FLUSH REST OF THIS CARD + +CRASCI: MOVEI TAC,0 ;CLEAR TAC + CAIN DAT,5000 + MOVEI DAT,4202 ;12-0 => 12-8-2 + CAIN DAT,3000 + MOVEI DAT,2202 ;11-0 => 11-8-2 + LDB TAC1,[XWD 110300,DAT] ;12,11,0 ROWS TO TAC1 + TRNE DAT,3 ;8 ZONE? + TRC TAC1,7 ;YES, PERMUTE TAC1 + TRNE DAT,74 ;4 BIT? + TRO TAC1,10 ;YES + TRNE DAT,314 ;2 BIT? + TRO TAC,2 ;YES + TRNE DAT,525 ;1 BIT? + TRO TAC,1 ;YES + TRNN IOS,CRM029 ;HAS 029 CODE BEEN IMPLIED? + TRO TAC1,20 ;NO. MOVE UP TO 026 CODE TABLE + LDB DAT,CRCV2(TAC) ;GET THE ASCII CHARACTER + PUSHJ PDP,CRSTOD ;STORE IT + JRST CREXIT ;AND RETURN + +CRCV2: POINT 7,CRCNV(TAC1),6 + POINT 7,CRCNV(TAC1),13 + POINT 7,CRCNV(TAC1),20 + POINT 7,CRCNV(TAC1),27 + + +EXTERN CDRCHN + +CRFSTI: LSH DAT,30 + MOVEM DAT,CRTEM ;SAVE AS LEFT 12 BITS + JSP TAC,CREXI1 ;GET ANOTHER COLUMN + LSH DAT,14 + IORM DAT,CRTEM ;THROW IN MIDDLE 12 BITS + JSP TAC,CREXI1 ;ANOTHER COLUMN + IORB DAT,CRTEM ;RIGHT 12. SAVE IN CRTEM FOR DEBUG +CRBIN2: PUSHJ PDP,CRSTOD ;ENTRY HERE FROM BIN CARDS + MOVEI TAC,CRFSTI ;ANOTHER 3 COLUMNS COME NEXT +CREXI1: HRRM TAC,CRDIS ;WHERE TO GO FOR NEXT COLUMN + JRST CREXIT ;RETURN FROM INTERRUPT + +CDREOC: CONSO CDR,CREOFF + TLNE IOS,IOEND ;END OF FILE? + JRST CREOF ;YES. SHUT OFF CDR + TLNN IOS,CRMIMG+CRMBIN ;IMAGE OR BIN? + JRST CRENDA ;ASCII + TLNN IOS,CRMIMG ;IMAGE? + JRST CRENDB ;BINARY. + MOVE DAT,CRTEM ;HERE ON EOC AND IMAGE + PUSHJ PDP,CRSTOD ;STORE LAST 2 COLUMNS IN BUFFER +CRENDB: PUSHJ PDP,CRADV1 ;ADVANCE BUFFER +CRENDC: MOVEI TAC,CDRCHN ;PI CHANNEL + CONO CDR,CRCONO(TAC) ;GO FOR NEXT CARD + JRST CRLST1 ;SET UP FOR NEXT CARD,DISMISS INTERRUPT, + ;ALSO WAKE UP JOB IF IN IOW + +CRFSTB: MOVEI TAC,-5(DAT) + TRNE TAC,17 ;ROWS 6-9=5? + TRO IOS,IOIMPM ;NO. NOT A BIN CARD + LSH DAT,-4 ;GET COLUMNS 1-5 + JUMPE DAT,CRIGNOR ;IGNORE BINARY CARDS WITH 0 WORD COUNT + MOVEM DAT,CRTEM ;SAVE AS WORD COUNT + JSP TAC,CREXI1 ;GET COLUMN 2 + HRL DAT,CRTEM ;(COUNT)CKSUM + MOVSS DAT ;(CKSUM)COUNT + JRST CRBIN2 ;STORE DAT AND GET REST OF CARD + + +EXTERN STOSQD,STODAT,ADVBFF + +CRENDA: TLZE IOS,IOBEG ;WAS THIS A 029 CONTROL CARD? + JRST CRCONT ;YES. NO CRLF. + MOVEI DAT,15 ;CARRIAGE RETURN + PUSHJ PDP,CRSTOD ;STORE + MOVEI DAT,12 ;LINE FEED + PUSHJ PDP,CRSTOD ;STORE + LDB TAC1,PIOMOD ;GET MODE + CAIN TAC1,AL ;ASCII LINE? + JRST CRENDC ;YES -WORD COUNT WILL HAVE BEEN COMPUTED & BUFFERS ADVANCED + CAIL ITEM,^D82 ;ROOM FOR ANOTHER CARD + CRLF? + JRST CRCONT ;YES. DO SO + PUSHJ PDP,STOSQD ;NO. STORE WORD COUNT + JRST CROFF ;CAN'T RETURN HERE, BUT ... + JRST CRENDB ;PROCEED TO ANOTHER BUFFER + +CREOF1: TLO IOS,IOEND ;HERE ON EOF CARD. MARK FOR EOC +CRIGNOR: JSP TAC,CREXI1 ;GET MORE COLUMNS + JRST .-1 ;AND IGNORE THEM. + +CRSTOD: PUSHJ PDP,STODAT ;STORE DAT IN BUFFER + JRST CRPOFF ;ADDRESS CHECK,IOBKTL,IODTER (CKSUM) + JRST CRADV ;BUFFER FULL OR BUFFER DONE + POPJ PDP,0 ;SIMPLE OK STORED RETURN + +CRADV: TLNE IOS,CRMBIN ;BINARY? + JRST CRIGNOR ;WAIT FOR END OF CARD +CRADV1: TLNE IOS,IOFST ;VIRGIN BUFFER? + POPJ PDP,0 ;YES. KEEP THIS ONE + PUSHJ PDP,ADVBFF ;ADVANCE TO ANOTHER BUFFER + SKIPA ;NO BUFFER AVAILABLE + POPJ PDP,0 ;OK. RETURN +CRPOFF: POP PDP,TAC + JRST CROFF + + +;CODE CONVERSION FOR THE 029 KEYPUNCH + +;THE FOLLOWING EQUIVALENCES ARE ARTIFICIALLY DEFINED + +;029 KEYTOP ;ASCII 35 ;ASCII 37 +;CENT [ [ +;0-8-2 ] ] +;VERT BAR ^ HAT = L.C. VERT BAR +;UNDERBAR _ UNDERBAR +;NEGATION \ TILDE = L.C. NEGATION + + ;CHARACTERS ;ZONE/DIGITS +CRCNV: ASCII / 123/ ;N/N-3 + ASCII .0/ST. ;0/N-3 + ASCII /-JKL/ ;11/N-3 + ASCII /HI[./ ;12,8/N-3 + ASCII /&ABC/ ;12/N-3 + ASCII /QR!$/ ;11,8/N-3 + ASCII /YZ],/ ;0,8/N-3 + ASCII /89:#/ ;8/N-3 + ASCII /4567/ ;N/4-7 + ASCII /UVWX/ ;0/4-7 + ASCII /MNOP/ ;11/4-7 + ASCII /<(+^/ ;12,8/4-7 + ASCII /DEFG/ ;12/4-7 + ASCII /*);\/ ;11,8/4-7 + ASCII /%_>?/ ;0,8/4-7 + ASCII /@'="/ ;8/4-7 + +;CODE FOR THE 026 KEYPUNCH A LA H HYMAN + + ASCII / 123/ ;N/N-3 + ASCII .0/ST. ;0/N-3 + ASCII /-JKL/ ;11/N-3 + ASCII /HI?./ ;12,8/N-3 + ASCII /+ABC/ ;12/N-3 + ASCII /QR:$/ ;11,8/N-3 + ASCII /YZ;,/ ;0,8/N-3 + ASCII /89_=/ ;8/N-3 + ASCII /4567/ ;N/4-7 + ASCII /UVWX/ ;0/4-7 + ASCII /MNOP/ ;11/4-7 + ASCII /)]&/ ;11,8/4-7 + ASCII /("#%/ ;0,8/4-7 + ASCII /@^'\/ ;8/4-7 + + + END + diff --git a/src/cdrsrx.mac b/src/cdrsrx.mac index 76b2c5e1d19f5227b6657ea78e2f5fadb524cfec..9659c5c8e4319ce00cb8f6872100bc395583a5c6 100644 GIT binary patch delta 2833 zcma)8OH3PQ5EgINuwWhrV`ErCAUxK1*BDGNhOBoNdx_a~ch_K`Bx(<-8mUSTk@}F* zsHdt*4oOz+AyuX3&`S<|NKw^WNu}N@C6}m|rb^VP>LF5_N>!s)YWvM^0|r%96f*of zuYYE~nfdv7@zRMai5mWDV$9F`N(F9B)oiCEN>YNqdNzH6_whb(G%YjFIYudCxLge1 zG2X|O)-`T=b|P0avyLlHCzzsPIrE$ZDH%Bh{_4XX17F0!e=rS2n`fp4+scY%Uct4Q z5ya~L(J8L(adRi>=*`v0HN5w7&GB+nX?X_Bn>Attt}RW9A5YK3XW|@}lH*Y+8jmKT zv(Y);dr}iDQ6edX?+At|}->}1Ra+xJFB~-f)68W z+8LL0@PU8cdhNnA*ru!7Cd*pOh?J-4(l4q3srgcx;S>~C%?YlO$?Lp#yLJ${Jg5zW z{#82=K!plcVTCJb1rZsjdCP&8ST_XuYF)Go@)g^0>58lc1=HfaOLfU8_^xg09I_E* z2?E7Y4MSM9G<|8;W@<7~v3OiJ4S$361MRyqM|V+w-dm|3f#h6$1oU$K80f8fy8B-J zIOyL@I@~ZyapY`!m2(xfk|*zNHpHOwZbLul#|@LDqiEWm4)g!8A%S>U^zuCC<|`o^ zmTqcXO1GBxqQx1}Zs^XG;N*&~pjqpt07Kq;u5k)CTx^^Kz1cVq`lyjQBG5!JE;iBm zT+~$wf_}&igYIwxpg(Xz_ii0cS5sW2Qf9wTfLQX8yCS1+GR}1$Ir`csf&Rw$y)A=% za8V6C%UmxRE`V<#%?mAb1Vs@Zw_(g0k-Sf{ z50&nh#bia2XZIwrD4=MSWiqCy%1o{jiWJVCM-2A9orr`~o{DmYC-koH3!vZfgzY1q zI=r`S6g1sNC~dV3?xSS6C{G2Y%WY)*1ylXLjokgyMlCVgPG(v=xj5UN1ijHt4Su(s z^#5$9kq!6>+j&33fkjCJAt!n7bw7Ffz)!m0_^DNY_4k2t9Y;VXJK~_*9TWXX2l%mh zN68QpmW;4&YpMz0Z*2;I+=9b%gIoC;2LLQbWGgNiF(mCt`pY$ETfiX}C)S z&2~|vywnw`&RVy2vwpveBHQU2r@lM5Ix>c-*c(gywQidHp>81q6+QU<9vWFd@n#rd>Nq1 z-Va0@Xm9dfYY)|Js^=)Se0c?$C0DgIx_MQ}>TJ~sy!T2Ejpy~AkVsMNwJFs$Rmc|| z0gpnQ8WXFjYB28igtfy=s>`O%l#)rzfyAXSC-!pQTBj|gSPsb$02@{K6VQ-zy@bq} zUdrU1Uh1Py7`@j^Sv~C)r(nuf`2KD_{o@ej# zAeHRLAeE-MkCwt*AHnz{qnGlcfzoXp4YcYu75oinzkh#eQ_ z4hlwM&6bF06n`EX<}wJ38@)NL}}AixW%>g64@}W zcc;IHwr@qYFgAILT?U5-j5K{Y%LE766XU7pi7g-2A343aM3)@qpE#C20)E9ifnjOh zc4V00^L8Xaomh_Lnabzgjs$_&ZupZ2YxPSc2#9xu8=I->TJ7=Yj-O7mkPg7~jJ1>Z u{f}=i3{foz!T+h9cVnO$!LcL5BUOd+?hXWc*mj}!5`Tcqb08QD-uEv;Wn=gN delta 2512 zcmcguOKclO7$!~9WG1eim*0-PspG_P*7ok&jvJ?GSbI12w$84*yUwFgmBIxHsi-GF z0x29o9D1PTFNh-OffF1kR7h|Nv{Y0exFa5_=mk*<0;v}+RQ$7X5+}fg1D4l2^MC*Q zG2`Q&3;b9u(58CHo1lrRaavBje>byLccrt_kZ7jl#_2oATblpHk;)2Q+esbQN;0ZLR_ zt3mXoxwuWNoxl}n9U?r_G1JTV=EQ;kA9wI@uOqxcD~6&P3v1rtaiGDf7sM1omPXK}QtLYRGn_#@TYYuELK8 zVl$K+H!Yh(Q>U>KlE>YpCYGpX9*0edrSk^g|gO?9x;Ksoz z`1N23l071v>Y0S+@%>>>p`W_cmF=ojYIO<^dL{$gX-SJtS~6VK;N)d_73AIwoa>!{ z*LqWM6W{lG6EHwTsE|oGOET~VNy29&4fjbL{4@&FlpAa*(``kzWk(-8PB}PF6L1Zm zuW|hcO~PoO0A^nTp6-kJDQOsu^fd9J*Z`jN?;viLN$Y3NO0G z;i}6Iw_N-N4x6m$1g-J~)}3V0SW-1-pO*xw4bJU@B?qo6WmY_qU&DdsL{UIC9<`lr zwE|O&Gi#fbEw*ACy_l!R5HYq85sf?DraKzZvB+*H22oPlUe7ji}UbSe*!-57jYyUPgy&QMd%%f13!?0<$@YT7Hpx;F+J-Xy&3mEb#X7W#Y)e)=-FiPj##3NLMD}LV)o~ROb1J159@vL!>9(L~|ec_MzkYrelYrD5mh!f#Y ze+Kx#DCmI+coLs0fjE2`;4up44BVY==m>@&63oDfU>=?eO7KB20pA1#prI5L@HrDo zpj|BK)_J8F%kWBQ0yaYeX8re27P#<)i@KVY+Ayo^0)eG)44aHyT+*~q6oe_K@hfI! z$u7f7;Q-c{fq3HY11a1LkE7OK!Ug;ti*P|YTftj^kTv|$Ss{HSEfI1Wzi=ip>Z7ww zT~W=lY?5_Cw%2eu5=Ze*A|d!T67gb!tcs>_86j)g88Rzm^>hxdMtuw0NVcY}WwPuZ zJH=G^ur*=e+%#`8??$whoOc#-;XY=VITpRJSqB%Zg z7j>iI=yIUjBY|B=Q5UKVk{rk#4d6l6l1i)}n@31M2bjkBs2Ag1jwYw*4httrImcvM zJb%joR;i`2rp>o!0B%QpyWmN)v?pM9Y)`=Jb7<(l1-uda*MQ%PwFR6!98a_b{6ox( X|CiV;hPPIU;16{@^#6Xkn7O|Ino~;E diff --git a/src/errcon.mac b/src/errcon.mac index fbcb102..0338ed0 100644 --- a/src/errcon.mac +++ b/src/errcon.mac @@ -445,4 +445,3 @@ IFE FTTTYSER,< ERREND: END - diff --git a/src/jobdat.mac b/src/jobdat.mac index f8835ec7892d3f804170981ac7952478362974f2..c73431e1566ea3ade9a91f3b41866c0df369be02 100644 GIT binary patch delta 2469 zcmbVOO>X2w7}aPNC>dHpf{cO`q;E$@a-uYe7%`b3mF==!6T8Y(mD6c1z%jhx0;t6e z&@5p@4#5s_1Ez3)}Od-?AA?b~N}zdrl%qr0yuB&-x%zDA^~NSlzXQmsr)6oa)=1C0lmJT4s@9-J%*{nOARIsQg3ok8!$ zZvQ-7-7-joLzX(Rp`sDGmQ)z+QNZyafCn#uil{1Ccc#%= zpMUan90+_C#%8PY^K2DQ|F4Nb57R9n0k9t@4M>*D1oSbj71-;osnIeqkc%-$0IWv_ z0`kio39iX`fWcEZDh(j^n0dfVP{f3Cq<^j2HoRY3tlX6=>%a~=V@YNl4mqYe9|m%Kk9HCm zLE<1a)DzCBS_e+?D3`2bGpA}GagdWnIk6}E;p@SF94?vg(FKi1}Wzpy8( zC4lgzXGMo3W$BLrPRfr6e)^@09mR}J@FF50S2YU7qYQ#**J9(CSVuOj?6i#!=IKGG zGayYswje0gDg-cvlo;x89>t?)V4ZicVCZp7SdYaGvD@#CT**seo0yBUTG4etK@VMy z4_^I-ncR8RiMaX#@{Jp|{pINAb6&jwJfj%0Z2@6KQogN3K`qs z@%m9WMzb+_BV%_C|6e zDaz{XJVt@V)B)eXtSfHQw##_4LA|H*m4C`JF+O8*87%%Bj4<4Y8FDbl5a3xb(Q5F6 z1$e3Ojm<7%;c4!j{!;au;4?9xH~kdAh12aba(m@YjL_bA?tGf)>pc&8x kp9yYr|Ft7rLO>Ns`61?jHA#pT8^Tu0-!U8_rN+(lFTzY+umAu6 delta 258 zcmezG{oiWC2JX$9xSQBFn+dOFocvH^1y_KZr>>X3lZ&JC=@>%w|TSJPsYjBGF8s}{%#6DVOIq={~(Z($+dFglQ|TE aC(l=yIyqC(oFAyv)z3wTmx}=ic)0+?tVFc{ diff --git a/src/lptser.mac b/src/lptser.mac index f5c3273..58a0ae2 100644 --- a/src/lptser.mac +++ b/src/lptser.mac @@ -18,6 +18,7 @@ SUBTTL T. W. MCMANUS /TNM TS 20 MAY 69 EXTERNAL ADVBFE, IOSET, OUT, SETACT, STOIOS + ;THE FOLLOWING SYMBOLS ARE REFERENCED OUTSIDE OF LPTSER: INTERN LPTINT, LPTNXT, LPTECM, LPTDON, LPTDSP @@ -35,11 +36,13 @@ LPTSER: LPTDCM=7B35 ;DONE CHANNEL MASK LPTBDM=LPTBSY+LPTDON ;BUSY/DONE FLAG MASK + ;LINE PRINTER DEVICE DEPENDANT I/O STATUS MNEMONIC DEFINITIONS LPTEND=Z(1B10) ;CLOSE UUO HAS BEEN DONE LPTSYN=Z(1B11) ;CREF AFTER CLOSE UUO HAS BEEN SENT + ;LINE PRINTER DEVICE DATA BLOCK ADDRESSING MNEMNIC DEFINITIONS LPTCON=-4 ;RH = SKIP CHAIN MASK REGISTER @@ -57,6 +60,7 @@ LPTSER: LPTDTO=27 ;DATAO LP?,(TAC) LPTBKO=30 ;BLKO LP?,LP?PTR + ;LINE PRINTER SERVICE DISPATCH TABLE JRST LPTINI ;INITIALIZE @@ -106,6 +110,7 @@ LPTINI: MOVEI TAC,LPTCLR ;CLEAR THE LINE PRINTER JRST CPOPJ1 ;SKIP RETURN IF ENTERED AT LPTINI ; TO FORCE CALL FOR EACH LPT + ;LINE PRINTER CLOSE UUO ROUTINE LPTCLS: TLO IOS,LPTEND ;TURN ON THE END FLAG @@ -223,9 +228,3 @@ LPTSET: MOVEI TAC,@DEVOAD(DEVDAT) ;GET ABS. ADDR. OF CURRENT BUFFER END - - - - - - \ No newline at end of file diff --git a/src/mtasrx.mac b/src/mtasrx.mac index 93f2e20..ae4d2f2 100644 --- a/src/mtasrx.mac +++ b/src/mtasrx.mac @@ -2,6 +2,7 @@ SUBTTL T. WACHS/TH TS 20 MAY 69 XP VMTASR,420 ;DEFINE VERSION NUMBER FOR LOADER STORAGE MAP + ENTRY MTASRX MTASRX: @@ -20,6 +21,7 @@ MTADSP: JRST MTAREL ;RELEASE JRST MTDMPI POPJ PDP, ;USETO POPJ PDP, ;USETI + POPJ PDP, ;UGETF JRST CPOPJ1 ;RENAME POPJ PDP, ;CLOSE INPUT POPJ PDP, ;UTPCLR @@ -28,6 +30,7 @@ MTADSP: JRST MTAREL ;RELEASE MTC=340 MTS=344 + ;MTACHN=FLAG CHANNEL ;MTOCHN=DATA CHANNEL ;MTFLAG=10*MTACHN + 400 @@ -40,9 +43,9 @@ MTS=344 EXTERN CPOPJ,CPOPJ1,PIOMOD,PUNIT,MTWAIT,JIFSC2,COMCHK EXTERN PIOFF,PION,MTASAV,ADRERR,PDVCNT,MTSIZ,STOIOS,IADRCK -COMPAT=1000 ;IBM COMPATABLE 9-TRACK -DMPMOD=20000 ;DUMP MODE FLAG -MTREW=40000 ;MAGTAPE IS REWINDING +COMPAT=10000 ;IBM COMPATABLE 9-TRACK +DMPMOD=200000 ;DUMP MODE FLAG +MTREW=400000 ;MAGTAPE IS REWINDING MTTRY=3 ;NO. OF TIMES TO RETRY ON AN ERROR QUANT=3 ;NO. OF RECORDS TO READ UNINTERRUPTED @@ -70,14 +73,13 @@ MTAINI: SETOM NMTREW ;RESET FLAGS ;IF ENTER OR LOOKUP IN SAVE MODE - CHANGE TO MODE 16 SAVCHK: LDB TAC,PIOMOD ;GET MODE - CAIN TAC,0 ;SAVE MODE? + CAIN TAC,2 ;SAVE MODE? TRO IOS,16 ;YES, CHANGE TO DUMP-MODE MOVEM IOS,DEVIOS(DEVDAT) JRST CPOPJ1 ;GIVE GOOD RETURN FROM LOOKUP/ENTER ;CLOSE MTCLOS: TLNN DEVDAT,OUTPB ;OUTPUT BEEN DONE? POPJ PDP, ;NO. GO AWAY - LDB TAC,PIOMOD CAIGE TAC,16 ;DUMP MODE? PUSHJ PDP,OUT ;NO. EMPTY LAST PARTIAL BUFFER @@ -125,10 +127,12 @@ ONECT4: MOVEI TAC,TPREDY ;SET DEVICE ACTIVE HRRM TAC,-1(PDP) ;AGAIN WHEN INACTIVE JRST SETACT ;SET DEVICE ACTIVE + ;DELAY TILL TAPE COMES OUT OF IO WAIT, THEN GET CONTROL DLYRDY: SETOM MTAVAL PUSHJ PDP,WSYNC ;WAIT FOR IO TO STOP + ;GET MTC, CONNECT TAPE TO CONTROL TPREDY: AOSE MTREQ ;GET CONTROL PUSHJ PDP,MTWAIT ;WAIT FOR IT @@ -137,6 +141,7 @@ TPREDY: AOSE MTREQ ;GET CONTROL TPRDY2: MOVEM PROG,USEPRG PUSHJ PDP,CONECT ;CONECT CONTROL TO TAPE + ;SET TP FOR THIS TAPE TPSET: LDB TP,[POINT 2,IOS,28] ;PARITY SKIPN TP ;USE STANDARD IF 0 @@ -153,13 +158,14 @@ TPSET: LDB TP,[POINT 2,IOS,28] ;PARITY CONSZ MTS,4 ;7 OR 9 TRACK? JRST RDYCHK ;7 TRACK TLNN IOS,COMPAT ;9 TRACK. CORE DUMP? - TROA TP,20030 ;YES + TROA TP,20000 ;YES TRO TP,40300 ;NO. SET 800 BPI, ODD PARITY ;MAKE SURE TAPE IS READY RDYCHK: CONSZ MTS,40 ;READY? POPJ PDP, ;YES - CONSO MTS,20000 ;REWINDING? + CONSO MTS,200000 ;REWINDING? POPJ PDP, ;NO. LET XPORT HUNG INTERRUPT HANDLE IT + TLO IOS,MTREW ;YES. MUST BE REWINDING PUSHJ PDP,SETACT ;DEVICE ACTIVE AOS NMTREW ;BUMP COUNT OF REWINDING DRIVES @@ -183,13 +189,12 @@ REWCKA: CONSO MTS,40 ;STILL REWINDING? JRST REWCK1 ;YES TLZE IOS,IOW ;NO, TAKE OUT OF IO WAIT PUSHJ PDP,SETIOD - TLZ IOS,MTREQ + TLZ IOS,MTREW PUSHJ PDP,CLRACT ;NO LONGER ACTIVE JRST REWCK2 - REWCK1: AOS NMTREW ;COUNT REWINDING TAPE MOVEI TAC,36 - CONSZ MTS,20000 ;IF TAPE IS STILL REWINDING + CONSZ MTS,200000 ;IF TAPE IS STILL REWINDING DPB TAC,PDVCNT ;MAKE SURE IT DOESN'T GET A HUNG DEVICE REWCK2: HLRZ DEVDAT,DEVSER(DEVDAT) ;NEXT DEVICE HLRZ TAC,DEVNAM(DEVDAT) ;A MAG TAPE? @@ -237,6 +242,7 @@ MTAGO: DPB TAC,[POINT 4,TP,26] ;PUT FUNCTION INTO COMMAND CONO MTC,(TP) ;START TAPE MOVING JRST CLRACT ;AND RETURN + ;SET 9-TRACK TAPE SET9TK: TRNE UUO,1 TLOA IOS,COMPAT ;SET IBM COMPAT. @@ -290,7 +296,6 @@ MTDTGO: MOVEM TAC,PNTR ;SAVE BLKI/BLKO POINTER HRRI TAC1,PNTR ;BLKI/BLKO PNTR MOVEM TAC1,MTALOC ;INTO INTERRUPT LOC HRLM TP,USEWRD ;SAVE COMMAND - CONO MTC,(TP) ;START TAPE MOVING TRO IOS,IOACT ;SETACT CLEARS IOW JRST STOIOS ;STORE IOS AND RETURN @@ -304,11 +309,12 @@ MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-LARGEST POSSIBLE WRD CNT MTIN2: TRO TP,2000 ;FUNCTION = READ MOVSI TAC1,(BLKI MTC,) ;SETUP BLKI JRST MTDTGO ;GO START TAPE + MTAINT: CONSO MTS,440102 ;INTERRUPT FOR MAG TAPE? JRST . ;NO. GO AWAY CONSO MTC,400 ;HAS CONTROL FREE ENABLED? CONSZ MTS,440100 ;NO. CONTROL FREE ERRONEOUSLY ON? - JRST +2 ;REAL MTA INTERRUPT + JRST .+2 ;REAL MTA INTERRUPT JRST MTAINT+1 ;THIS INTERRUPT NOT REALLY FOR MTA JSR MTASAV ;YES. SAVE ACS HRRZ DEVDAT,USEWRD ;RESET DEVDAT @@ -354,6 +360,7 @@ THRUT3: HLRZ TP,USEWRD ;GET UNIT HLLZS MTAINT ;DONT LOOK AT ANY MORE INTERRUPTS POPJ PDP, ;AND EXIT + ;HERE WHEN BLKI/BLKO COUNTS DOWN TO ZERO MTDEND: 0 CONO MTS,1 ;GIVE A FUNCTION STOP @@ -395,6 +402,7 @@ INPTND: CONSZ MTS,10000 ;EOF? JRST THRUTP ;NONE FREE JRST NXTREC ;CONTINUE WITH NEXT RECORD + ; HERE AT THE END OF A DUMP MODE RECORD DMPEND: HLRZ TP,USEWRD ;SET UP COMMAND AGAIN CONSO MTS,14000 ;EOF OR EOT? @@ -421,7 +429,6 @@ MTDMP2: TLO IOS,DMPMOD ;INDICATE DUMP-MODE SOS UUO ;WILL COUNT IT UP LATER MOVEM UUO,LSTLOC ;SAVE LOC OF LIST DMPBLK: PUSHJ PDP,NXTCOM ;GET NEXT COMMAND - ADDI TAC,(PROG) ;ADD RELOCATION FACTOR TLNE IOS,IO ;WRITING? JRST MTOUT2 ;YES. GO WRITE RECORD @@ -524,7 +531,6 @@ NMTREW: 0 USEWRD: 0 USEPRG: 0 CLKREQ: 0 - UNIT: 0 ERCNT: 0 ERRFLG: 0 @@ -533,5 +539,3 @@ LSTLOC: 0 PNTR: 0 SVPNTR: 0 MTAEND: END - - diff --git a/src/mtcsr6.mac b/src/mtcsr6.mac index 370a94e..019128a 100644 --- a/src/mtcsr6.mac +++ b/src/mtcsr6.mac @@ -2,6 +2,7 @@ TITLE MTCSR6 - MAGNETIC TAPE ROUTINES FOR 516 CONTROL SUBTTL C.WHITE 27-APR-69 V406 XP VMTCSR,406 ;DEFINE GLOBAL VERSION NUMBER FOR LOADER MAP + ENTRY MTCSR6 MTCSR6: INTERNAL FTCHECK,FTMONP @@ -58,6 +59,7 @@ MTCDSP: POPJ PDP, ;RELEASE POPJ PDP, ;UTPCLR ;MTAPE UUO (FALL INTO THIS CODE WHICH FOLLOWS) + DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES. < CODES=0 IRP A, < @@ -75,7 +77,8 @@ DEFINE MTAPES (A) ;MARCO TO DEFINE LEGAL MTAPES UUO EFFECTIVE ADDRESSES. TRZ IOS,776000 ;CLEAR ERROR BITS ,IOF. ;IOACT, IOBOT AND IOTEND. SKIPA T,UUO ;CALL MTAPE2 - MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL. + +MTAPE: PUSHJ PDP,MTCHK2 ;CHECK IF MAG TAPE CONTROL AVAIL. MTAPE2: TDZ IOS,[XWD IODT!IOSEOF,IOACT] TRNN T,SLICE ;SET SLICE LEVEL THIS UUO? JRST NOSET ;NO @@ -93,13 +96,13 @@ NOSET: CONSO 224,4000 ;AT LOAD POINT? JRST MTGO0 ;NO CAIE T,3400 ;YES, BACKSPACE RECORD? - CAIN T,400 ;NO, REW? JRST MTFIN ;YES CAIN T,7400 ;NO, BACKSPACE FILE? JRST MTFIN ;YES MTGO0: MOVSI TAC,TCF ;LOOK FOR TAPE CONTROL FREE ONLY - ;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD. + +;HERE FROM INPUT AND OUTPUT UUOS AND INTERRUPT TO DO NEXT RECORD. MTGO1: LDB TAC1,PUNIT ;UNIT DPB TAC1,[POINT 3,T,31] ;UNIT @@ -137,7 +140,8 @@ MTIN1: SETCM TAC,@DEVIAD(DEVDAT) ;-SIZE-1 MOVEI T,2400 ;READ MTIN2: MOVE TAC1,[BLKI DC,4000+MTDC*10] JRST MTINDC - ;IS SYSTEM AVAILABLE + +;IS SYSTEM AVAILABLE MTCHEK: PUSHJ PDP,GETDCMT ;GET DATA AND MAG TAPE CONTROLS AOSE MTREQ ;ARGUMENT MOVE IOS,DEVIOS(DEVDAT) @@ -155,7 +159,6 @@ MTCHK2: AOSE MTREQ MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC TLZE IOS,IOBEG ;FIRST OPERATION AFTER INIT OR SETSTS - TLZ IOS,IOSLIC ;YES, SET SLICE LEVEL TO 0. TLZ IOS,IOREW ;CLEAR MAG TAPE REWINDING PUSHJ PDP,REWCK ;CHECK IF REWINDING? @@ -173,7 +176,9 @@ MTCHK4: TLO IOS,HASMT ;THIS JOB NOW HAS MTC QSTAT: PUSHJ PDP,DETMDC ;DETACH MTC AND DC JRST HNGSTP ;CHECK STATUS (PULL FINGERS OUT, ETC) - ;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE + + +;MTAPE 0 WAITS UNTIL THE CONTROL IS FREE ;THUS MTAPE 0 PROVIDES THE ONLY WAY FOR A USER TO WAIT UNTIL A SPACING OPERATION ; (I.E., SKIP, BACKSPACE, OR REWIND) IS COMPLETED. @@ -182,6 +187,8 @@ MTP0: PUSHJ PDP,MTCHK2 ;WAIT FOR CONTROL TO BECOME FREE, ; AND RETURN TO THE USER. + + ;DETMDC- ; DETACH MTC, AND TURN OFF HASMT. ; THEN (IFF IODT ON) @@ -197,7 +204,7 @@ MTHUNG: DETDC: TLZN IOS,IODT ;DOES JOB HAVE DATA CONTROL? JRST STOIOS ;NO- EXIT CONO DC,0 - CONO DC,DCOFF + CONO PI,DCOFF SOSL DCREQ ;ANYONE ELSE WAITING FOR IT? SETOM DCAVAL ;YES- FLAG AS JUST BECOME AVAILABLE JRST STOIOS ;AND EXIT @@ -206,7 +213,8 @@ RELCON: CONO 220,0 CONO 224,0 SETZM MTCCON POPJ PDP, - ;ROUTINE TO SEE IF UNIT IS REWINDING + +;ROUTINE TO SEE IF UNIT IS REWINDING ;CALL MOVE DEVDAT,ADDRESS OF DDB ; PUSHJ PDP,REWCK ; UNIT READY @@ -225,6 +233,7 @@ REWCK: LDB TAC,PUNIT AOS (PDP) POPJ PDP, ;YES- RETURN TO CALL+1 + REPEAT 0,< THIS WORKS WITH THE FOLLOWING MOD TO 545 TRANSPORT: @@ -238,7 +247,8 @@ THIS MODE SETS IOP22(1) WHILE MAGTAPE IS REWINDING OR SPACING FORWARD TO LOAD POINT- IF ENABLES THE PROCESSOR TO DISTINGUISH BETWEEN A TAPE WHICH IS AT THE END OF A REWIND COMMAND, AND A TAPE WHICH IS SWITCHED TO LOCAL, OR OFF> - ;WRITE + +;WRITE MTOUT: PUSHJ PDP,MTCHEK TLO IOS,IO ;WRITING MTOUT1: MOVEI TAC,@DEVOAD(DEVDAT) ;BUFFER ADDRESS, PROG INCLUDED @@ -262,6 +272,8 @@ MTINDC: MOVEM TAC,MTDCCN ;BLKO POINTER MOVSI TAC,XNC ;NO. COME BACK WHEN COMMAND BUFFER IS EMPTY JRST MTGO1 + + CHKLOK: CONSO 224,200 ;WRITE LOCKED? JRST MTGO0 ;NO, DO MTAPE PUSHJ PDP,QSTAT @@ -281,12 +293,14 @@ MWLEOT: MOVEI T,3 ;WRITE EOF MOVEI T,7 ;BSP JRST MTAPE + MTCINI: PUSHJ PDP,RELCON SETOM MTREWN ;SET CLOCK REQUEST COUNT TO -1 JRST MTNIO1 ;BLK COUNTED OUT + IFE FTCHECK+FTMONP,< MTDCND: 0 > @@ -294,7 +308,9 @@ MTDCN1: CONO PI,DCOFF ;SHUT OFF DC CHANNEL CONSZ DC,10000 SETOM MISSED JEN @MTDCND - ;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO + + +;FLAG FROM TAPE CONTROL. SET UP BY INSERT MACRO MTCINT: CONSO 224,@MTCCON JRST . JSR MTCSAV ;SAVE AC'S @@ -335,7 +351,8 @@ MTEOF: TLO IOS,IOEND SETZM MTEOFF ;CLEAR EOF FLAG ;AND FALL INTO MTEND1 - MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED) + +MTEND1: PUSHJ PDP,DETDC ;DETACH DC (IF ASSIGNED) PUSHJ PDP,ETCHK ;CHECK FOR END OF TAPE (FOR DUMP MODE OUT) PUSHJ PDP,CLRACT CONSO 224,TCF ;TAPE CONTROL FREE? @@ -368,7 +385,7 @@ REWLP: MOVE IOS,DEVIOS(DEVDAT) PUSHJ PDP,REWCK ;YES,SEE IF FINISHED REW. JRST .+3 ;HAS FINISHED JRST REW1 ;OFF- LET HUNG LOGICA TAKE CARE OF IT - JRST REW2 ;STILL REWINDING + JRST REW0 ;STILL REWINDING TDZ IOS,[XWD IOREW,IOACT];GET JOB OUT OF IO WAIT TLZE IOS,IOW PUSHJ PDP,SETIOD ;START JOB UP AGAIN @@ -388,9 +405,10 @@ REW3: POP PDP,DEVDAT ETCHK: CONSZ MTS1,10000 ;EOT SEEN? TRO IOS,IOIMPM+IOTEND ;YES-SET FLAGS TDZ IOS,[XWD IOREW,IOBOT];NO LONGER REWINDING - CONSZ MTS1,24002 ;UNLESSS + CONSZ MTS1,24000 ;UNLESSS TRO IOS,IOBOT ;IS REALLY REWINDING POPJ PDP, ;EXIT + ;ROUTINE CALLED AT CLOCK LEVEL TO SEE IF ANY UNITS WHICH ARE IN A ;REW WAIT HAVE FINISHED REWIND. @@ -410,8 +428,6 @@ EXTERNAL JIFSC2 MTCLK: MOVEI TAC1,JIFSC2 ;CHECK EVERY HALF SECOND HRLI TAC1,MTCLOK ;DISPATCH ADDRESS - - CONO PI,400 ;TURN OFF PI IDPB TAC1,CLOCK ;STORE CLOCK REQUEST CONO PI,200 ;TURN ON PI @@ -436,6 +452,8 @@ MTNIO2: HLRZ TAC,MTDEV ;COMMAND CONSZ 224, 400 ;EOF? TDO IOS,[XWD IOSEOF,IODEND] JRST MTNIO ;EXIT + + MTEOR: MOVEI TAC,ERF CONSO 224,ERF ;END OF RECORD FLAG ON? JRST MTIGN1 ;NO. WAIT FOR IT. @@ -455,7 +473,6 @@ MTNIO2: HLRZ TAC,MTDEV ;COMMAND CONO DC,0 ;SHUT DOWN DC LSH TAC,44(TAC1) ;SHIFT LAST CHARACTERS TO LEFT END JUMPG T,MTEOR1 - AOBJN T,.+1 ;BUMP DATA POINTER MOVEM TAC,(T) ;STORE LAST WORD MOVEM T,DCWRD ;AND BUMPED POINTER @@ -483,7 +500,8 @@ MTEOR2: SOS MTIDSP ;POINT TO ERROR ROUTINE TRO T,1 ;YES, COUNT IN QUARTER 4 ADDM T,MTECNT(DEVDAT);ADD TO ERROR COUNTS FOR THIS DRIVE JRST MTECON ;CHECK EOF - MTERR: HLRZ TAC,MTDEV ;COMMAND + +MTERR: HLRZ TAC,MTDEV ;COMMAND ANDI TAC,7400 TRNE IOS,IONRCK JRST MTERR2 @@ -523,7 +541,8 @@ MTBSP3: TRNN TAC,1000 ;READING CONO 220,4400(TAC) ;WRITE BLANK TAPE AOS MTERCN JRST MTIGN - MTC=220 ;MAG TAPE CONTROL DEVICE NUMBER + +MTC=220 ;MAG TAPE CONTROL DEVICE NUMBER MTS1=224 ;MAG TAPE CONTROL STATUS REG 1 XNC=40000 ;TRANSFER NEW COMMAND @@ -538,11 +557,12 @@ IOTEND=2000 ;EOT INDICATION IONRCK=100 ;DO NOT RE-TRY ON ERRORS IOBOT=4000 ;TAPE AT LOAD POINT IODT=10000 ;A 1 FOR A DATA TRANSFER TYPE COMMAND -IOSLIC=2000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0. -HASMT=4000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL -IOREW=40000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS +IOSLIC=20000 ;A 1 IF SLICE LEVEL IS 1, OTHERWISE 0. +HASMT=40000 ;IF A 1, THIS JOB HAS THE MAG TAPE CONTROL +IOREW=400000 ;A 1 IF UNIT IS REWINDING AND ANOTHER OPERATIONS ;IS ATTEMPTED ON SAME UNIT. MUST BE SIGN BIT. + EXTERNAL ADVBFF,ADVBFE,DCREQ,MTCSAV,SETACT,CLRACT,ORACT,GETDCMT EXTERNAL MTCRET, DCAVAL, MTAVAL, MTCCHN, MTREQ EXTERNAL MTWAIT,OUT,SETIOD,CLOCK,HNGSTP,MTSIZ @@ -577,7 +597,8 @@ MTCCON: 0 ;INTERRUPT FLAGS MTIDSP: JRST MTPDUN > - ;LOGICAL EBND OF TAPE LOOP + +;LOGICAL END OF TAPE LOOP MTLEOT: MOVEI T,7 ;BACKSPACE PUSHJ PDP,MTAPE2 PUSHJ PDP,MTCHK2 ;CALL INTERLOCK, PICKUP IOS @@ -647,9 +668,10 @@ MTDPI1: TRNE IOS,IODEND MOVEI T,2400 ;READ COMMAND JRST MTDMP1 ;DUMP ;ADDRESS ERROR + MTDMP2: PUSHJ PDP,MTEND1 JRST ADRERR + END - \ No newline at end of file diff --git a/src/nulseg.mac b/src/nulseg.mac index f9f30f7323eee71b30e629be44f6853245c732b8..6a7e8d65a615bf822c04909ecdc203635c6e3399 100644 GIT binary patch delta 23 dcmX>jenEW02CmKPxWpK_c!7}9)z5{O3jkgs1?B(% delta 21 ccmca0enx!52CmJUxI`E^I9>f*c)1uD096l`9!9CnOBll$H~(ZxW@O^!+8o0o$GEwSRe}k` z>0?h~-291S7D#4t50}j5Wn3p&Hs|ttvC6nOhBzvO`vqkvaXa0p1BYXm2!b);+X<_6B~Oq)%47BhmB+~Boj0szU=9J&Ai delta 61 zcmdm?FhgNOC*$OajN+TuFivLL?96hPk - INTERNAL PTYDSP + +INTERNAL PTYDSP EXTERNAL OUT POPJ PDP, ;INITIALIZE POPJ PDP, ;PRINT ERROR, STOP JOB @@ -126,7 +127,7 @@ PTYOUT: LDB LINE,PUNIT POPJ PDP, PTYOU6: TLO IOS,T37+IOFST ;FORCE BUFFER RESET - ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERRO OTHERWI) + ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERROR OTHERWISE) MOVEM IOS,DEVIOS(DDB) JSR PTYRET ;RESTORE ACS @@ -145,6 +146,7 @@ PTYOU0: TRNE IOS,IOPTRE JUMPE ITEM,PTYOU8 ;BUFFER EMPTY> PUSHJ PDP,ITMCNT MOVEM ITEM,DEVCTR(DDB) + PTYOU1: TRO IOS,IOACT TRZ IOS,IOPTRE JSR PTYSAV ;SAVE ACS @@ -164,7 +166,6 @@ PTYOU7: PUSHJ PDP,TCOMM ;SEND NEXT CHARACTER JRST PTYOU3 ;YES, BUFFER NOT MOVED INTO OBJECT ;JOB TTY IN BUFFER JRST PTYOU2 ;NO - PTYOU4: CAIE CHREC,"^" JRST PTYOU7 MOVEM CHREC,PTYCSV(PDDB);YES. FLUSH OUTPUT @@ -231,7 +232,9 @@ PTYIN5: JUMPE ITEM,PTYI3A ;IF COUNT RUNS OUT EXCH PDDB,DDB PUSH PDP,LINE JRST PTYIN4 - PTYI3A: TRZ IOS,IOBKTL + + +PTYI3A: TRZ IOS,IOBKTL TRO IOS,IOPTRE ;INPUT READY PTYI3B: PUSHJ PDP,STOSQD JRST ADRERR @@ -249,6 +252,8 @@ PTYI10: TLZE IOS, IOW POP PDP, LINE PTYIN8: MOVEM IOS, DEVIOS(DDB) POPJ PDP, + + ;SAVE ACCUMULATORS ;CALL MOVEI DDB,ADDRESS OF PTYDB ; JSR PTYSAV @@ -266,10 +271,12 @@ PTYSA0: MOVEM SCNHAC,PTYBND(DDB) ;SAVE HIGH AC MOVE PDDB,DDB JRST @PTYSAV + ;RESTORE ACCUMULATORS ;CALL MOVEI PDDB,PTY DATA BLOCK ADDRESS ; JSR PTYRET + IFE FTCHECK+FTMONP,< PTYRET: 0 > @@ -281,6 +288,7 @@ PTYRE0: HRRZ SCNHAC,PDDB ;SAVE ONLY PIOS AND PDDB + IFE FTCHECK+FTMONP,< PACSAV: 0 > @@ -310,7 +318,6 @@ PTYPE: MOVE PDDB,LINE PTWAKE: PUSH PDP,TEM PUSH PDP,TAC1 LDB TAC,[POINT 6,DEVCHR(PDDB),5] ;PTY JOB NR - HRRZ TAC1,CLOCK ;LAST JOB IN CLOCK QUEUE PTWAK2: CAIN TAC1,CIPWTM1 ;LOOKED AT ALL JOBS JRST PTWAK1 ;YES, WAS NOT SLEEPING @@ -332,15 +339,16 @@ PTWAK1: POP PDP,TAC1 INTERNAL PTYOW,PTMNMD,PTMNMZ -PTMNMD: PUSH PDP,PIOS + +PTMNMD: JSR PACSAV ;SAVE 2 AC'S MOVEI PIOS,MONMOD ;PTY INTO MONITOR MODE JRST PTYSET -PTMNMZ: PUSH PDP,PIOS +PTMNMZ: JSR PACSAV ;SAVE AC'S HRROI PIOS,MONMOD ;PTY OUT OF MONITOR MODE JRST PTYSET -PTYOW: PUSH PDP,PIOS +PTYOW: JSR PACSAV MOVEI PIOS,IOPTW ;PTY IN OUTPUT WAIT PTYSET: MOVE PDDB,LINE @@ -352,6 +360,5 @@ PTYSET: MOVE PDDB,LINE TRNE PIOS,IOPTW ;IS LINKED TTY JOB IN INPUT WAIT? PUSHJ PDP,PTWAKE ;YES, WAKE UP CONTROL JOB JRST ACRET + END - - \ No newline at end of file diff --git a/src/sysmak.mac b/src/sysmak.mac index b945c4f8381f1adcd4ddf92e850bc1212a672948..01ae22a94ef2f774f99cc79be0248bab9f8c4ff5 100644 GIT binary patch delta 262 zcmaFJxr%dw6(jFND_sFzu8086u;9pGUvC`)10&vvrMAqxT)Y!E`vB$tdo%J*_F@bL zlJgn0faFO=I}M;L5W4z>1VwU!^f`Ki_?~_tu0ei|KAb?ltDg%{XtD;AD#)nGeoU%B zt;I~5KynU~HITf{WT(K(#R&q|3Lze@3SRzB3ZB6VzW!mZE($LG;eL9&lZ}}{HpVg= z0Lflv9U!@r*;*E;4Wx?G(b-5R+Q}zGA;i&HM*~P0YR2+T=4UYhs&i)1Py(v+@eBdE T4B{Xw5EJMyD^9TMczC%0@xwT% delta 255 zcmZ3*`H*vh)kJGuKCXxW&amLfU|(+?0|TRp6}F6A6L0iM5H2o=AyyzuT&y@j K=J7Dl5C8y?=_~U9 -- 1.7.1