IF1, BEGTYP==.TYPE HBLK DRAGSW==BEGTYP-17 IFE DRAGSW,[ TITLE GATHER P=15 DSKCH==0 TTYOCH==1 PDL==20 SYSORG==400000 ] IFN DRAGSW,[ SYSORG==0 ] .MLLIT==1 NSBA==5*60. NSBC==7*24.*60.*60. ;MAKE IT A WEEK NJBA==NSBA*30. NJBC==NSBC*30. MSYML==20 DEFINE SYMTAB X IRPC Y,,[SNV] SYM!Y: BLOCK MSYML SYM!Y!PC==SYM!Y TERMIN ZZ==. SYML==0 IRP SYM,,[X] XX SYM TERMIN LOC ZZ IRPC Y,,[SNV] SYM!Y!P: -SYML,,SYM!Y TERMIN IFL MSYML-SYML, TERMIN DEFINE XX SYM LOC SYMSPC SQUOZE 0,SYM SYMSPC==. LOC SYMNPC SIXBIT /SYM/ SYMNPC==. SYML==SYML+1 TERMIN ;VARIABLES IFN DRAGSW,JRST DGO SYMTAB [SUSRS,TRUMM,MEMFR,AUSOPG,TSIPRQ,RNABLU] PROD: 0 ;-1 => THIS IS A PRODUCTION RUN WAITM: NJBA ;NUMBER OF JIFFIES BETWEEN ACTIVITY CLOSGO: 0 ;NUMBER OF JIFFIES LEFT BEFORE CLOSING CWAITM: NJBC ;NUMBER OF JIFFIES BETWEEN CLOSING WCNT: 0 ;WORD COUNT IN FILE CCNT: 0 ;NUMBER FREE CHARACTERS IN BUFFER CBPT: 440700,,CBUF ;BYTE POINTER INTO OUTPUT BUFFER CBUF: 0 ;OUTPUT BUFFER OUTDEV: 1,,(SIXBIT /DSK/) ;OPEN BLOCK FN1: SIXBIT /DATA/ FN2: SIXBIT />/ 0 ;FOR EASY DELETION 0 ;DITTO IFE DRAGSW,[ PDP: -PDL,,PDB-1 PDB: BLOCK PDL ] IFN DRAGSW,[ HBLK DGO: ] IFE DRAGSW,[ GO: MOVE P,PDP MOVE [PDB,,PDB+1] SETZM PDB BLT PDB+PDL-1 INIT: MOVE 1,[JSR CLKBRK] MOVEM 1,42 MOVEI 1,766776 MOVEI 2,0 .SETM2 1, MOVE 1,[1000,,600000] INIT1: .CBLK 1, PUSHJ P,LOSS ADDI 1,1001 TRNN 1,100 JRST INIT1 ] MOVE 1,SYMVP MOVE 2,SYMSP GINIT2: SKIPG 3,(2) PUSHJ P,LOSS CAMGE 3,[50*50*50*50*50] JRST [ IMULI 3,50 JRST .-1] MOVEM 3,(2) .EVAL 3, PUSHJ P,LOSS ADDI 3,SYSORG MOVEM 3,(1) ADDI 1,1 AOBJN 2,GINIT2 SETOM PROD IFE DRAGSW,[ .SUSET [.RSNAM,,3] .SUSET [.SSNAM,,[SIXBIT /DRAGON/]] ] MOVE 1,[SIXBIT /DATA/] MOVEM 1,FN1 MOVSI 1,(SIXBIT /> /) MOVEM 1,FN2 IFE DRAGSW,[ .OPEN TTYOCH,[1,,(SIXBIT /TTY/)] JRST INIT3 SETZM PROD MOVE 1,[SIXBIT /TSTDAT/] MOVEM 1,FN1 MOVEI 1,100 MOVEM 1,WAITM MOVEI 1,200 MOVEM 1,CWAITM .SUSET [.SSNAM,,3] ] INIT3: PUSHJ P,NUFILE JRST MAIN2 NUFILE: MOVE 1,CWAITM MOVEM 1,CLOSGO MOVE 1,[3,,(SIXBIT /DSK/)] MOVEM 1,OUTDEV PUSHJ P,OPEN MOVE 1,[100003,,(SIXBIT /DSK/)] MOVEM 1,OUTDEV SETZM WCNT PUSHJ P,CBUFI HEADER: MOVE 2,[SIXBIT /TIME/] PUSHJ P,SIXO PUSHJ P,TAB MOVE 2,[SIXBIT /DATE/] PUSHJ P,SIXO MOVE 1,SYMNP PUSHJ P,TAB PUSHJ P,ISIXO AOBJN 1,.-2 JRST CRLF MAIN: MOVE 1,WAITM .SLEEP 1, MOVN 1,WAITM ADDB 1,CLOSGO JUMPG 1,MAIN1 PUSHJ P,NUFILE JRST MAIN2 MAIN1: PUSHJ P,OPEN .ACCESS DSKCH,WCNT MAIN2: PUSHJ P,DUMP PUSHJ P,CLOSE JRST MAIN DUMP: PUSHJ P,GTIME MOVE 1,SYMVP PUSHJ P,TAB PUSHJ P,IDECPNT AOBJN 1,.-2 CRLF: MOVEI 3,15 PUSHJ P,OUT MOVEI 3,12 JRST OUT IDECPN: MOVE 2,@(1) DECPNT: IDIVI 2,10. PUSH P,3 CAIE 2,0 PUSHJ P,DECPNT POP P,3 ADDI 3,"0 OUT: SOSGE CCNT JRST [ MOVE 6,[-1,,CBUF] .IOT DSKCH,6 AOS WCNT PUSHJ P,CBUFI JRST OUT] IDPB 3,CBPT SKIPN PROD .IOT TTYOCH,3 POPJ P, CBUFI: MOVE 6,[14060,,301406] MOVEM 6,CBUF MOVEI 6,5 MOVEM 6,CCNT MOVE 6,[440700,,CBUF] MOVEM 6,CBPT POPJ P, TAB: MOVEI 3,11 JRST OUT GTIME: .RTIME 2, PUSHJ P,SIXO PUSHJ P,TAB .RDATE 2, JRST SIXO OPEN: .OPEN DSKCH,OUTDEV PUSHJ P,LOSS SKIPN CCNT JRST CBUFI SKIPE WCNT SOS WCNT POPJ P, CLOSE: MOVE 1,[-1,,CBUF] .IOT DSKCH,1 AOS WCNT MOVE 1,[-1,,[14060301406]] .IOT DSKCH,1 .CLOSE DSKCH, POPJ P, ISIXO: MOVE 2,(1) SIXO: MOVE 4,[440600,,2] MOVEI 5,6 SIX1: ILDB 3,4 JUMPE 3,CPOPJ ADDI 3,40 PUSHJ P,OUT SOJG 5,SIX1 IFE DRAGSW,CPOPJ: POPJ P, IFE DRAGSW,[ CLKBRK: 0 0 ; MOVE 10,CLKBRK ; TRNN 10,SYSDB ; PUSHJ 17,LOSS ; SETOM SYSDWN ; .DISMISS [CLKBRK+1] PUSHJ 17,LOSS ] LOSS: .CLOSE DSKCH, .CLOSE TTYOCH, .LOGOUT .VALUE [ASCIZ /: LOSS/] JRST 4,. IFE DRAGSW,END GO IFN DRAGSW,[ LBLK ]