diff --git a/src/lars/lites.79 b/src/lars/lites.80 similarity index 67% rename from src/lars/lites.79 rename to src/lars/lites.80 index fe902e00..8f5326f6 100644 --- a/src/lars/lites.79 +++ b/src/lars/lites.80 @@ -3,20 +3,24 @@ ;Default is to build for both TS and NTS. IFNDEF TS,TS==1 IFNDEF NTS,NTS==1 +IFE TS+NTS,.ERR Must choose at least one of TS or NTS. A=1 B=2 +C=3 T=10 TT=11 -Q=16 +PC=16 P=17 +COCALL=JSP PC,(PC) ;Coroutine call. + APR==0 PI==4 -TICKS=20*60. ;20 seconds. +TICKS=20.*60. ;Each pattern displayed for 20 seconds. PDLLEN==20 - + GO: MOVE P,[-PDLLEN,,PDL-1] IFN TS,[ ;Timesharing code starts here. If not present, fall through to @@ -32,16 +36,14 @@ IFN TS,[ .REALT A, ;Clock interrupt every 1/60 seconds. .SUSET [.SMASK,,[%PIRLT]] JFCL - .HANG + .HANG ;Now entirely interrupt driven. TSINT: 0 0 - PUSH P,A - SKIPL A,TSINT - TLNN A,(%PIRLT) ;Is this the clock interrupt? - .DISMIS TSINT+1 - POP P,A - PUSHJ P,LITES + SKIPL T,TSINT + TLNN T,(%PIRLT) ;Is this the clock interrupt? + .DISMIS TSINT+1 ;No, dismiss immediately. + PUSHJ P,LITES ;Yes, do our thing. .DISMIS TSINT+1 ZZ==. @@ -49,19 +51,19 @@ LOC 42 TSINT LOC ZZ ] - + IFN NTS,[ ;Non-timesharing code starts here. If the TS code is executed ;first, the UUO handler will be called and jump here. NTS1: CONO APR,3002 ;APR interrupt at channel 2, enable clock. CONO PI,12240 ;Enable interrupt. - JRST . + JRST . ;Now entirely interrupt driven. APRBRK: 0 CONSO APR,1000 ;Is this the clock interrupt? - JRST 12,@APRBRK - PUSHJ P,LITES - CONO APR,1002 + JRST 12,@APRBRK ;No, dismiss immediately. + PUSHJ P,LITES ;Yes, do our thing. + CONO APR,1002 ;Clear clock interrupt. JRST 12,@APRBRK ZZ==. @@ -73,52 +75,47 @@ LOC 44 JSR APRBRK LOC ZZ ] + +LITES: AOSN TICK + PUSHJ P,NEW ;Pattern ran out of ticks, get new one. + COCALL + DATAO PI,A ;Display A on memory indicators. + POPJ P, -LITES: PUSH P,A - SKIPE TICK - JRST LITES0 - MOVE A,[TICKS] ;Pattern ran out of ticks, get new one. +NEW: MOVNI A,TICKS ;Start a new pattern. MOVEM A,TICK MOVE A,PATRN CAIN A,PATRNE MOVEI A,PATRNS ;Reached end of list. MOVEM A,PATRN - MOVE A,@PATRN + MOVE PC,@PATRN AOS PATRN - MOVEM A,PC' -LITES0: MOVE Q,PC - POP P,A - JSP Q,(Q) ;Coroutine call. - MOVEM Q,PC - DATAO PI,A ;Display A on memory indicators. - SOS TICK POPJ P, - - + COUNTER: ;Simple counter pattern. SETZ A, - JSP Q,(Q) +COUNT0: COCALL AOS A - JRST .-2 + JRST COUNT0 ROT777: MOVEI A,777 ;Rotating pattern. - JSP Q,(Q) + COCALL ROT A,1 JRST .-2 .INSRT XOROSH RANDOM: PUSHJ P,XOROSHIRO"XOROSHIRO ;Random generator. - JSP Q,(Q) + COCALL JRST RANDOM SAIL: SETZ A, ;SAIL null job. SAIL0: ROT A,-1 TLNN A,200000 TLC A,400000 - JSP Q,(Q) ? JSP Q,(Q) ? JSP Q,(Q) + COCALL ? COCALL ? COCALL JRST SAIL0 - + PATRNS: COUNTER ROT777 RANDOM @@ -126,7 +123,7 @@ PATRNS: COUNTER PATRNE: PATRN: PATRNE -TICK: 0 +TICK: -1 PDL: BLOCK PDLLEN END GO