1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-24 17:36:15 +00:00

Updates for the light show program.

This commit is contained in:
Lars Brinkhoff
2025-07-10 09:45:12 +02:00
committed by Lars Brinkhoff
parent d064bc681a
commit a111e32f1c

View File

@@ -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