;-*-MIDAS-*- title BYE PRINTX /Be sure to install the binary on all systems! (not DM currently) / Z=0 A=1 B=2 C=3 D=4 E=5 F=6 G=7 COMMAF=10 ;FLAG FOR NICKNAME ASCII TYPEOUT RDTIM=15 ; how long system has been up CNT=16 P=17 ISIZ==1400 TYI==1 TYO==2 DSKI==3 IDX==4 ; index file input ODX==5 ; index file output LSRCH==6 SPD=24.*60.*60. INSIZ==100. ; input buffer size OUTSIZ==100. ; output buffer size PDLSIZ==20 ; pdl ISIZ==600 PRINT=1000,, ;CODE ADDED 9-3-78 BY ED TO USE INQUIR DATA BASE FOR NICKNAME LSRPGS=100 ;NUMBER OF PAGES FOR LSRTAB $$ULNM==0 ;DON'T ASSEMBLE RANDOM CRUFT. $$ULNP==0 $$UNAM==0 .INSRT SYSENG;LSRTNS > ;MUNG INQUIR DATA BASE GO: MOVE P,[-PDLSIZ,,PDL-1] .suset [.smask,,[%pityi]] .CALL [ SETZ SIXBIT /OPEN/ [.UAO,,TYO] SETZ [SIXBIT /TTY/]] .LOSE %lsfil .CALL [ SETZ SIXBIT /OPEN/ [.UAI,,TYI] SETZ [SIXBIT /TTY/]] .LOSE %lsfil .SUSET [.RXUNAME,,FOO] move c,foo move a,[-hakn,,0] hkloop: move b,haknms(a) camn b,c jrst [ print hakmsg jrst seewho ] aobjn a,hkloop PRINT [ASCIZ / See Ya Later /] seewho: PUSHJ P,UNMOUT PRINT [ASCIZ /... /] PUSHJ P,FILEO PUSHJ P,BEGR ;MOVE THRU FILE FROM ACCESS TO A NEW FORTUNE AND PRINT .CALL [ SETZ SIXBIT /FINISH/ 401000,,TYO] ;WAIT FOR ALL OUTPUT TO GET TO TTY. .LOSE 1000 .CALL [SETZ SIXBIT /CNSGET/ 1000,,TYO 2000,,RES1 2000,,RES2 2000,,RES3 2000,,RES4 402000,,RES5] .LOSE %lssys MOVE A,RES3 CAIE A,5 ;SKIP IF TV JRST EXIT ADDI C,35.*2 .SLEEP C, EXIT: .BREAK 16,124000 FILEO: .CALL [SETZ SIXBIT "OPEN" [.BII,,DSKI] DISK BYEFIL BYEFIL+1 BYESNM SETZB LSTERR] JRST EXIT .CALL [SETZ SIXBIT "OPEN" [.BII,,IDX] DISK IDXFIL IDXFIL+1 BYESNM SETZB LSTERR] JRST NEWIDX ; no index file at all!!! .CALL [SETZ SIXBIT "RFDATE" MOVEI DSKI MOVEM A SETZB LSTERR] JRST EXIT .CALL [SETZ SIXBIT "RFDATE" MOVEI IDX MOVEM B SETZB LSTERR] JRST EXIT CAME A,B ; index created at same time? JRST NEWIDX .CALL [SETZ SIXBIT /FILLEN/ 1000,,IDX 402000,,NWDS'] JRST EXIT CPOPJ: POPJ P, ; here to make a new index NEWIDX: .CLOSE IDX, .CALL [SETZ SIXBIT "OPEN" [.BIO,,ODX] DISK IDXFIL IDXTMP BYESNM SETZB LSTERR] JRST EXIT .CALL [SETZ SIXBIT "RFDATE" MOVEI DSKI MOVEM A SETZB LSTERR] JRST EXIT .CALL [SETZ SIXBIT "SFDATE" MOVEI ODX MOVE A SETZB LSTERR] JRST EXIT SETZ CNT, ; access count in characters MOVEI G,0 ; used to accumulate length of fortune MOVEI F,<5*INSIZ>+1 MOVEI C,<5*INSIZ>+1 ; F is # chars used this buffer; C is # in it MOVE E,[-OUTSIZ,,OUTBUF] OUTLUP: PUSHJ P,GETCHR ; returns char in B, uses bptr in D JRST OUTEND ; no more characters JUMPE B,OUTPTR ; if ^@, then output count for previous fortune CAIN B,177 JRST OUTPT1 ; if ¬ interpret next char specially AOJA G,OUTLUP ; aos length of current fortune OUTEND: .CLOSE DSKI, ; here at eof HRRZS E ; clean up output buffer SUBI E,OUTBUF MOVNS E HRLS E HRRI E,OUTBUF .IOT ODX,E .CALL [SETZ ; rename and close SIXBIT "RENMWO" MOVEI ODX IDXFIL IDXFIL+1 SETZB LSTERR] JRST EXIT .CLOSE ODX, PUSHJ P,FILEO ; open up new stuff POPJ P, ; now give fortune OUTPT1: PUSHJ P,GETCHR ; just read , so need next character JRST OUTPTR ; nothing there, so ignore it TLNN G,-1 JRST OUTPT2 ; ignore if after first fortune SUBI B,"0 ; turn into a number OUTPT2: SOJL B,OUTPT3 ; done? MOVSM G,(E) ; stuff out pointer AOBJN E,OUTPT2 ; buffer full? MOVE E,[-OUTSIZ,,OUTBUF] ; yes, print it out .IOT ODX,E MOVE E,[-OUTSIZ,,OUTBUF] JRST OUTPT2 ; and see if need to stuff again OUTPT3: PUSHJ P,GETCHR JRST OUTEND ; all out of characters JUMPE B,OUTBCK ; if followed by , flush that, too ADD D,[70000,,0] TLNE D,400000 ADD D,[347777,,-1] ; replace the character in the buffer SUBI F,1 SOJA CNT,OUTBCK ; and re-enter main loop OUTPTR: TLNN G,-1 ; doesn't skip if on first fortune (doc) JRST OUTBCK MOVEI B,1 ; default JRST OUTPT2 OUTBCK: HRLZI G,(CNT) ; cnt is maintained by GETCHR JRST OUTLUP ; CALL TO GET CHARACTER FROM FILE BEING INDEXED. GETCHR: CAMGE F,C JRST GETCH1 CAIGE C,<5*INSIZ> POPJ P, ; no more characters MOVE C,[-INSIZ,,INBUF] .IOT DSKI,C HRRZS C SUBI C,INBUF JUMPE C,CPOPJ ; didn't read any new ones IMULI C,5 MOVEI F,0 MOVE D,[440700,,INBUF] GETCH1: ILDB B,D ADDI F,1 ADDI CNT,1 ; aos char address in file AOS (P) POPJ P, ; here to print a randomly selected fortune ; IDX should be the index file ; DSKI should be the fortune file BEGR: .CALL [SETZ SIXBIT /SSTATU/ 2000,,0 2000,,0 2000,,0 2000,,0 SETZM,,A] ; SYS UPTIME IN SECONDS JFCL .PDTIME B, ROT B,3 XOR A,B .CALL [SETZ SIXBIT /CORBLK/ MOVEI 200000 MOVEI -1 MOVEI 200 MOVEI 400000 SETZI 0] JRST DODIV MOVE C,[-40,,400100] XOR A,(C) AOBJN C,.-1 ANDI B,377 ROT A,(B) Dodiv: MOVMS A IDIV A,NWDS ; get the character location of the fortune ; B/ number of fortune to use .ACCESS IDX,B MOVE A,[-1,,B] ; get the the access of this fortune .IOT IDX,A HLRZ D,B ; length to D TLZ B,-1 ; clear length from access IDIVI B,5 .ACCESS DSKI,B MOVE A,[-ISIZ,,INLINS] .IOT DSKI,A ; here to print the fortune MOVE A,[440700,,INLINS] SOJL C,BEGR3 BEGR2: IBP A SOJGE C,BEGR2 BEGR3: .CALL [SETZ ? SIXBIT "SIOT" ? MOVEI TYO ? A ? D ? SETZB LSTERR] POPJ P, .CALL [SETZ ? SIXBIT "FINISH" ? SETZI TYO] POPJ P, POPJ P, UNMOUT: SETZ B, ;SEARCH OUR DATABASE FOR NICKNAME MOVE A,FOO SERC: HLR Z,UNMS(B) CAMN A,@Z JRST GOT1 AOS B CAIG B,LUNM-UNMS JRST SERC MOVE A,LSRCH ;NOT IN OUR DATABASE, TRY INQUIR MOVE B,[-LSRPGS,,LSRBEG] PUSHJ P,LSRTNS"LSRMAP JRST OHWELL ;LOST, SO USE XUNAME MOVE B,FOO PUSHJ P,LSRTNS"LSRUNM ;FIND HIS ENTRY IN DATABASE JRST OHWELL ;NOPE, NOT KNOWN TO INQUIR .CLOSE LSRCH, ;CLOSE LSR FILE MOVEI A,LSRTNS"I$NICK PUSHJ P,LSRTNS"LSRITM ;FIND HIS NICKNAME JRST OHWELL ;NOPE, HASN'T TOLD US HIS NICKNAME SETZ COMMAF, ;STOP TYPEOUT ON , FOR MULTIPLE NICKNAMES. PUSHJ P,BEGRO2 ;FOUND IT, TYPE IT OUT. POPJ P, BEGRO2: ILDB B,A JUMPE B,CPOPJ CAIN B,3 ;^C HAS AN EQUAL RIGHT TO STOP US POPJ P, CAIN B,54 ;KLUDGE. SOME PEOPLE HAVE TWO NICKNAMES, SEPARATED BY , JUMPE COMMAF,CPOPJ ;E IS -1 FOR ASCII TYPEOUT, 0 FOR NICKNAME (STOP ON ,) ADDI C,1 .IOT TYO,B JRST BEGRO2 OHWELL: .CLOSE LSRCH, ;CLOSE LSR FILE MOVE A,[440600,,FOO] ;HERE IF ALL ELSE FAILS, USE XUNAME. REPEAT 6,[ ILDB B,A ADDI B,40 .IOT TYO,B ] POPJ P, GOT1: HRR Z,UNMS(B) PRINT @Z POPJ P, FOO: -1 PDL: BLOCK PDLSIZ HAKNMS: SIXBIT /JCMA/ SIXBIT /CSTACY/ SIXBIT /GAVAN/ SIXBIT /DERWAY/ HAKN==.-HAKNMS HAKMSG: asciz /Seeeee yaauh / UNMS: [SIXBIT /AAP/],,[ASCIZ /Allison/] [SIXBIT /ADVISE/],,[ASCIZ /Mike/] [SIXBIT /AGB/],,[ASCIZ /Alan/] [SIXBIT /ALISON/],,[ASCIZ /Allison/] [SIXBIT /ANDEE/],,[ASCIZ /Andee/] [SIXBIT /APS/],,[ASCIZ /AL/] [SIXBIT /ATB/],,[ASCIZ /Al/] [SIXBIT /AYH/],,[ASCIZ /Arthur/] [SIXBIT /BEN/],,[ASCIZ /Ben/] [SIXBIT /BH/],,[ASCIZ /Brian/] [SIXBIT /BIA/],,[ASCIZ /Barbara/] [SIXBIT /BMT/],,[ASCIZ /Bang/] [SIXBIT /BOYACK/],,[ASCIZ /Steve/] [SIXBIT /BPC/],,[ASCIZ/Brian/] [SIXBIT /BRANDY/],,[ASCIZ /Barbara/] [SIXBIT /BURLEY/],,[ASCIZ /Craig/] [SIXBIT /BURN/],,[ASCIZ /Bahram/] [SIXBIT /CAR/],,[ASCIZ /Chuck/] [SIXBIT /CDC/],,[ASCIZ /Carolyn/] [SIXBIT /CNA/],,[ASCIZ /Chris/] [SIXBIT /CS/],,[ASCIZ /Charlie/] [SIXBIT /CSTACY/],,[ASCIZ /Spacy/] [SIXBIT /CWH/],,[ASCIZ /Carl/] [SIXBIT /DEO/],,[ASCIZ /Don/] [SIXBIT /DEVON/],,[ASCIZ /Devon/] [SIXBIT /DHT/],,[ASCIZ /Dave/] [SIXBIT /DJL/],,[ASCIZ /LESSER QUUX/] [SIXBIT /DLW/],,[ASCIZ /Dan/] [SIXBIT /DRB/],,[ASCIZ /Dave, you turkey!/] [SIXBIT /DS/],,[ASCIZ /Sliver/] [SIXBIT /ED/],,[ASCIZ /, Alligator, have fun!/] [SIXBIT /EJS/],,[ASCIZ /Eric/] [SIXBIT /EPG/],,[ASCIZ /Paul/] [SIXBIT /ERB/],,[ASCIZ /Roger-Dodger/] [SIXBIT /ES/],,[ASCIZ /Salamin/] [SIXBIT /FFM/],,[ASCIZ /Steve/] [SIXBIT /FNT/],,[ASCIZ /Ferd/] [SIXBIT /FOO/],,[ASCIZ /Loser/] [SIXBIT /FORBUS/],,[ASCIZ /Ken/] [SIXBIT /FRAWLE/],,[ASCIZ /Bud/] [SIXBIT /FURST/],,[ASCIZ /Sheldo/] [SIXBIT /GJH/],,[ASCIZ /HAVE A NICE DAY GROG!/] [SIXBIT /GLS/],,[ASCIZ /QUUX/] [SIXBIT /GLS1/],,[ASCIZ /QUUX1/] [SIXBIT /GOBBEL/],,[ASCIZ /Randy/] [SIXBIT /GPB/],,[ASCIZ /Gretchen/] [SIXBIT /GRR/],,[ASCIZ /Greg/] [SIXBIT /GT/],,[ASCIZ /Gerold/] [SIXBIT /H/],,[ASCIZ /Hackaway/] [SIXBIT /HALE/],,[ASCIZ /Roger/] [SIXBIT /HENRY/],,[ASCIZ /Henry/] [SIXBIT /HGB/],,[ASCIZ /Henry/] [SIXBIT /HOLLER/],,[ASCIZ /Hollerback/] [SIXBIT /JBR/],,[ASCIZ /Jeff/] [SIXBIT /JCG/],,[ASCIZ /John/] [SIXBIT /JHM/],,[ASCIZ /Jerry/] [SIXBIT /JJK/],,[ASCIZ /Jim/] [SIXBIT /JLK/],,[ASCIZ /John/] [SIXBIT /JM/],,[ASCIZ /Joel/] [SIXBIT /JMB/],,[ASCIZ /Joel/] [SIXBIT /JPG/],,[ASCIZ /--MIGHTY MOUSE--/] [SIXBIT /JPS/],,[ASCIZ /Mr. Sample/] [SIXBIT /KEN/],,[ASCIZ /Kenneth, Have Time./] [SIXBIT /KGK/],,[ASCIZ /You complete random turkey, you!/] [SIXBIT /KLH/],,[ASCIZ /Ken/] [SIXBIT /LARSWE/],,[ASCIZ /Sicnarf/] [SIXBIT /LING/],,[ASCIZ /Skip/] [SIXBIT /MAB/],,[ASCIZ /Meyer/] [SIXBIT /MACRAK/],,[ASCIZ /Cretan/] [SIXBIT /MARG/],,[ASCIZ /Yasha/] [SIXBIT /MARK/],,[ASCIZ /Willie/] [SIXBIT /MARTY/],,[ASCIZ /Marty/] [SIXBIT /MASEK/],,[ASCIZ /Bill/] [SIXBIT /MATSON/],,[ASCIZ /Todd/] [SIXBIT /MC/],,[ASCIZ /Marilyn/] [SIXBIT /MD/],,[ASCIZ /Doc/] [SIXBIT /MGH/],,[ASCIZ /Marv/] [SIXBIT /MITCH/],,[ASCIZ /Mitch/] [SIXBIT /MN/],,[ASCIZ /Mike/] [SIXBIT /MRG/],,[ASCIZ /... Mike, don't be loose./] [SIXBIT /MRL/],,[ASCIZ /Myron/] [SIXBIT /MS/],,[ASCIZ /Mike/] [SIXBIT /MSC/],,[ASCIZ /Marty/] [SIXBIT /MSK/],,[ASCIZ /Mike/] [SIXBIT /MURPH/],,[ASCIZ /Richard/] [SIXBIT /MURRAY/],,[ASCIZ /Jo/] [SIXBIT /NEAL/],,[ASCIZ /Chiron/] [SIXBIT /PHW/],,[ASCIZ /Pat/] [SIXBIT /PJ/],,[ASCIZ /Pitts/] [SIXBIT /PLM/],,[ASCIZ /Perry/] [SIXBIT /PM/],,[ASCIZ /Peggy/] [SIXBIT /PRUCH/],,[ASCIZ /Paul/] [SIXBIT /PSZ/],,[ASCIZ /Pete/] [SIXBIT /RAB/],,[ASCIZ /Bogey/] [SIXBIT /RADIA/],,[ASCIZ /Radia/] [SIXBIT /RAF/],,[ASCIZ /Bob/] [SIXBIT /RAND/],,[ASCIZ /Rand/] [SIXBIT /RBK/],,[ASCIZ /Rand/] [SIXBIT /RENEEC/],,[ASCIZ /Renee/] [SIXBIT /RG/],,[ASCIZ /Blatt/] [SIXBIT /RJL/],,[ASCIZ /Ron/] [SIXBIT /RL/],,[ASCIZ /Rich/] [SIXBIT /RLB/],,[ASCIZ /Rich/] [SIXBIT /RLW/],,[ASCIZ /Bob/] [SIXBIT /RMS/],,[ASCIZ /Stallman/] [SIXBIT /RP/],,[ASCIZ /Rich/] [SIXBIT /RRS/],,[ASCIZ /--CAPTAIN LASER-- YOU RASCAL!/] [SIXBIT /RSL/],,[ASCIZ /Rici/] [SIXBIT /RVB/],,[ASCIZ /Bob/] [SIXBIT /RWG/],,[ASCIZ /Gosper/] [SIXBIT /RZ/],,[ASCIZ /Rich/] [SIXBIT /SGP/],,[ASCIZ /Doctor P./] [SIXBIT /SKL/],,[ASCIZ /Sam/] [SIXBIT /STAN.K/],,[ASCIZ /Duckie/] [SIXBIT /STEVER/],,[ASCIZ /Fellow Star Trek watcher/] [SIXBIT /SMF/],,[ASCIZ /Sharon/] [SIXBIT /SOPHIE/],,[ASCIZ /Ms. Strauss/] [SIXBIT /SRF/],,[ASCIZ /Sheldo/] [SIXBIT /SUN/],,[ASCIZ /Alex/] [SIXBIT /SWD/],,[ASCIZ /Steve/] [SIXBIT /TAL/],,[ASCIZ /Tom/] [SIXBIT /TGQ/],,[ASCIZ /Great Clod/] [SIXBIT /TIMB/],,[ASCIZ /Mr. Enchanter/] [SIXBIT /TIMMON/],,[ASCIZ /John/] [SIXBIT /TK/],,[ASCIZ /Tom/] [SIXBIT /TLQ/],,[ASCIZ /LESSER QUUX/] [SIXBIT /TSAMOS/],,[ASCIZ /John/] [SIXBIT /TXI/],,[ASCIZ /Chompers/] [SIXBIT /WELG/],,[ASCIZ /Eric/] LUNM: [SIXBIT /ZERO/],,[ASCIZ /Stan/] UUOH: 0 MOVE A,40 HRLI A,440700 LO: ILDB B,A SKIPN B JRST @UUOH .IOT TYO,B JRST LO TSINT: 0 ? 0 PUSH P,A MOVEI A,TYI .ITYIC A, JRST INTOUT CAIE A,^S CAIN A,^G JRST SHUTUP INTOUT: POP P,A .DISMISS TSINT+1 SHUTUP: .RESET TYO, .BREAK 16,124000 RES1: -1 RES2: -1 RES3: -1 RES4: -1 RES5: -1 DISK: SIXBIT "DSK" BYEFIL: SIXBIT "LINS" SIXBIT ">" BYESNM: SIXBIT "COMMON" IDXFIL: SIXBIT "INDEX" SIXBIT ".BYE." IDXTMP: SIXBIT "_TEMP_" IDXNAM: 0 ; -1 when hacking index file name in jcl LSTERR: 0 INBUF: BLOCK INSIZ OUTBUF: BLOCK OUTSIZ INLINS: BLOCK ISIZ+1 CONSTA VARIAB LSRBEG==<.+1777>/2000 ;BEGINNING OF LSR PAGES. LOC 41 JSR UUOH JSR TSINT END GO