mirror of
https://github.com/PDP-10/its.git
synced 2026-01-29 13:21:11 +00:00
Added WHAT.
This commit is contained in:
991
src/syseng/what.204
Normal file
991
src/syseng/what.204
Normal file
@@ -0,0 +1,991 @@
|
||||
;;;-*-Midas-*-
|
||||
|
||||
title what?
|
||||
|
||||
a=1
|
||||
b=2
|
||||
c=3
|
||||
d=4
|
||||
t=5
|
||||
tt=6
|
||||
p=7
|
||||
arg=10
|
||||
|
||||
ttyoch==1
|
||||
FOOCH==2
|
||||
FOOSH==FOOCH
|
||||
ttyich==3
|
||||
|
||||
die=.break 16,160000
|
||||
call=pushj p,
|
||||
return=popj p,
|
||||
jcall==jrst
|
||||
|
||||
define conc qq,ww
|
||||
qq!ww!termin
|
||||
|
||||
define syscall name,args
|
||||
.call [setz ? sixbit /name/ ? args(400000)]
|
||||
termin
|
||||
|
||||
DEFINE RND A
|
||||
A
|
||||
TERMIN
|
||||
|
||||
DEFINE ABLE B
|
||||
B
|
||||
TERMIN
|
||||
ABLELN==0
|
||||
|
||||
DEFINE PUTTAG
|
||||
TERMIN
|
||||
|
||||
DEFINE WHAT PATTERNS,-REPLY-,\TAG,WTAG
|
||||
IRP WORDS,MOREP,[PATTERNS]
|
||||
IFSE [MOREP],[
|
||||
PUTTAG
|
||||
DEFINE PUTTAG
|
||||
TAG:
|
||||
TERMIN
|
||||
ABLELN==ABLELN+2+.LENGTH/WORDS/
|
||||
ABLE [DEFINE ABLE B
|
||||
B]WORDS
|
||||
TERMIN
|
||||
ZZQ==0 ? ZZS==0
|
||||
IRPS WD,,WORDS
|
||||
ZZQ==ZZQ+1
|
||||
IFSE WD,[...] ZZS==CAIE#CAIGE ? ZZQ==ZZQ-1
|
||||
TERMIN
|
||||
CAIE#ZZS C,ZZQ
|
||||
JRST TAG
|
||||
ifg arg+zzq-20,[
|
||||
.err too long: "what words"
|
||||
zzq==20-arg
|
||||
] ;end ifg arg+zzq-20
|
||||
IRPS WD,,WORDS
|
||||
IFGE .IRPCNT-ZZQ,.ISTOP
|
||||
IFSE WD,[$] ZZS==CAME#CAMA
|
||||
.ELSE ZZS==0
|
||||
IFE 1&.IRPCNT,[
|
||||
IFL .IRPCNT-ZZQ+1, CAMN#ZZS ARG+.IRPCNT,[SIXBIT/WD/]
|
||||
.ELSE [ CAME#ZZS ARG+.IRPCNT,[SIXBIT/WD/]
|
||||
JRST TAG
|
||||
] ] ;end IFE 1&.IRPCNT
|
||||
.ELSE [ CAME#ZZS ARG+.IRPCNT,[SIXBIT/WD/]
|
||||
JRST TAG ]
|
||||
TERMIN ;end *RPS WD,,WORDS
|
||||
WTAG:
|
||||
] ;end IFSE [MOREP],
|
||||
.ELSE [
|
||||
WHAT WORDS
|
||||
JRST WTAG
|
||||
]
|
||||
TERMIN ;end *RP WORDS,MOREP,[PATTERNS]
|
||||
RND [DEFINE RND A
|
||||
A]JRST WTAG
|
||||
TERMIN
|
||||
IFSN [REPLY],[ SOUT TTYOCH,[REPLY
|
||||
]
|
||||
DIE
|
||||
]
|
||||
TERMIN ;end DEF*NE WHAT
|
||||
|
||||
define ascii *s*
|
||||
.byte 7
|
||||
irpc c,,[s]
|
||||
ifse [c]_,^M
|
||||
.else "c
|
||||
termin
|
||||
0
|
||||
.byte
|
||||
termin
|
||||
|
||||
define valret msg
|
||||
.value [asciz /msg
|
||||
/]
|
||||
termin
|
||||
|
||||
DEFINE SOUT CHANNEL,MESS
|
||||
MOVE T,[440700,,[ASCII /MESS/]]
|
||||
MOVEI TT,.LENGTH /MESS/
|
||||
.CALL [ SETZ
|
||||
SIXBIT /SIOT/
|
||||
MOVEI CHANNEL
|
||||
T
|
||||
SETZ TT]
|
||||
.LOSE 1000
|
||||
TERMIN
|
||||
|
||||
PDL: -20,,.
|
||||
BLOCK 20
|
||||
JCL: BLOCK 100 ;SUPPORTS WIDE TTY
|
||||
|
||||
GO: MOVE P,PDL
|
||||
.OPEN TTYOCH,[.UAO,,'TTY]
|
||||
.LOSE 1400
|
||||
.open ttyich,[.uai,,'tty]
|
||||
.lose 1400
|
||||
;;^s and ^g interrupt, ^i ^j and ^? don't echo:
|
||||
syscall ttyset,[movei ttyich ? [222222,,222222] ? [230222,,220222]]
|
||||
.lose 1000
|
||||
.SUSET [.ROPTION,,A]
|
||||
tlo a,%opint\%opopc
|
||||
.suset [.s40addr,,[20,,forty]]
|
||||
.suset [.soption,,a]
|
||||
.suset [.smsk2,,[<1_ttyich>\<1_ttyoch>]]
|
||||
TLNN A,OPTCMD
|
||||
JRST whasay
|
||||
.BREAK 12,[..RJCL,,JCL]
|
||||
MOVE A,[440700,,JCL]
|
||||
MOVEI C,0
|
||||
LOOP43: ILDB T,A
|
||||
CAIE T,^C
|
||||
CAIN T,^M
|
||||
JRST SCANALYZE
|
||||
CALL DELIMP
|
||||
JRST STRARG
|
||||
JRST LOOP43
|
||||
|
||||
STRARG: MOVEI B,6
|
||||
SKIPA D,[440600,,ARG(C)]
|
||||
LOOP2: ILDB T,A
|
||||
CAIE T,^C
|
||||
CAIN T,^M
|
||||
AOJA C,SCANALYZE
|
||||
CALL DELIMP ;Break out to to loop43 if it's a delimiter.
|
||||
SKIPA
|
||||
AOJA C,LOOP43
|
||||
JUMPLE B,LOOP2
|
||||
CAILE T,"9
|
||||
TRO T,40
|
||||
CAIGE T,"A
|
||||
TRZ T,40
|
||||
TRZ T,100
|
||||
IDPB T,D
|
||||
SOJA B,LOOP2
|
||||
|
||||
;DELIM-P expects char in T, skips if it's a delimiter.
|
||||
DELIMP: CAIGE T,"a
|
||||
SKIPA
|
||||
POPJ P,
|
||||
CAIG T,"Z
|
||||
SKIPA
|
||||
JRST POPJ1
|
||||
CAIGE T,"@
|
||||
SKIPA
|
||||
POPJ P,
|
||||
CAIG T,"9
|
||||
SKIPA
|
||||
JRST POPJ1
|
||||
CAIGE T,"0
|
||||
POPJ1: AOS (P)
|
||||
POPJ P,
|
||||
|
||||
forty: 0
|
||||
0
|
||||
-tsintl,,tsint
|
||||
|
||||
intacs==t_6+2 ;accumulators T and TT are saved on interrupt
|
||||
|
||||
tsint: intacs,,p
|
||||
0 ? 1_ttyich ? 0 ? <1_ttyoch>\<1_ttyich> ? chrint
|
||||
0 ? 1_ttyoch ? 0 ? 0 ? morint
|
||||
tsintl==:.-tsint
|
||||
|
||||
chrint: movei t,ttyich
|
||||
.ityic t,
|
||||
jrst intret
|
||||
caie t,^s
|
||||
cain t,^g
|
||||
jrst iflush
|
||||
intret: syscall dismis,[%clbit,,intacs ? p]
|
||||
.lose %lssys
|
||||
|
||||
morint: sout ttyoch,[--More--]
|
||||
syscall iot,[%clbit,,%tipek ? movei ttyich ? movem t]
|
||||
.lose %lssys
|
||||
caie t,40
|
||||
cain t,177
|
||||
.iot ttyich,t
|
||||
caie t,40
|
||||
jrst flush
|
||||
move t,[440700,,[ascii /A/]]
|
||||
movei tt,2
|
||||
syscall siot,[%clbit,,%tjdis ? movei ttyoch ? t ? tt]
|
||||
.lose %lssys
|
||||
jrst intret
|
||||
|
||||
iflush: .reset ttyoch,
|
||||
syscall ttyfls,[%clbit,,1 ? movei ttyich]
|
||||
.lose %lssys
|
||||
flush: sout ttyoch,[Flushed]
|
||||
.suset [.roption,,t]
|
||||
tlnn t,%opbrk
|
||||
die
|
||||
.break 16,164000
|
||||
die
|
||||
|
||||
SCANALYZE: ;Scanalyze my name.
|
||||
|
||||
what [temp,temperature]Mild spring-type weather under the Fuller dome._Ditto on the General Technics plaza.
|
||||
|
||||
what [weather,a day]
|
||||
valret [:KILL
|
||||
:charfs hermes wthrstat
|
||||
:print mc:common;wthr 4cast]
|
||||
|
||||
what a dog
|
||||
valret [:KILL
|
||||
:PRINT dsk:.INFO.;FIDO ORDER]
|
||||
|
||||
what [tty,console]
|
||||
VALRET [:KILL
|
||||
:VERSION
|
||||
:TCTYP]
|
||||
DIE
|
||||
|
||||
what [id,ddt]
|
||||
valret [:KILL
|
||||
:VERSIO]
|
||||
die
|
||||
|
||||
what [seminar,seminars]
|
||||
valret [:kill
|
||||
:print mc:common;calend log]
|
||||
|
||||
what do you call a seven foot $ with a bicycle chain,Sir.
|
||||
|
||||
what are you doing
|
||||
sout ttyoch,[I'm looping. I'll crash before long anyhow..._]
|
||||
movei a,100.
|
||||
.sleep a,
|
||||
.value
|
||||
|
||||
what hair
|
||||
VALRET [:kill
|
||||
:print dsk:.info.;lisp recent]
|
||||
|
||||
what [movie,movies]
|
||||
VALRET [:KILL
|
||||
:lsc]
|
||||
|
||||
what [dirs,directories]
|
||||
valret [:kill
|
||||
:print dsk:m.f.d. (file)]
|
||||
|
||||
what fucking cretinous losers
|
||||
valret [:kill
|
||||
:print dsk:m.f.d. (file)]
|
||||
|
||||
what bugs
|
||||
VALRET [:kill
|
||||
:print mc:lisp;bug mail]
|
||||
|
||||
what a kludge
|
||||
valret [:kill
|
||||
:PRINT MC:SYSENG;WHAT >]
|
||||
die ;you deserve it.
|
||||
|
||||
what load
|
||||
valret [:kill
|
||||
:sstatu]
|
||||
|
||||
what the $ are you
|
||||
sout ttyoch,[You shouldn't say such nasty things to an omnipotent utility program..._]
|
||||
jrst skru
|
||||
|
||||
what is the number of the beast,666
|
||||
|
||||
what has four wheels and flies,A garbage truck.
|
||||
|
||||
what has four legs and files,Two guys moving an RK02?
|
||||
|
||||
what has four wheels and files,A filing cabinet on casters.
|
||||
|
||||
what does it cost to ride the unibus,Two bits.
|
||||
|
||||
what is the age of the universe
|
||||
sout ttyoch,[COMPUTING..._]
|
||||
movei a,300.
|
||||
.sleep a,
|
||||
sout ttyoch,[Using Big Bang Cosmology 23.34252563265 billion years,_plus or minus 14 femtoseconds._]
|
||||
die
|
||||
|
||||
; there should be a comma after "life" but I'm far too much of a novice to know how to do that.
|
||||
what is the meaning of life the universe and everything
|
||||
sout ttyoch,[COMPUTING... ]
|
||||
movei a,50.
|
||||
.sleep a,
|
||||
sout ttyoch,[I don't think you're going to like this... ]
|
||||
movei a,100.
|
||||
.sleep a,
|
||||
sout ttyoch,[**** 42 ****]
|
||||
call terpri
|
||||
call terpri
|
||||
sout ttyoch,[I told you you weren't going to like it._]
|
||||
die
|
||||
|
||||
what the ...
|
||||
sout ttyoch,[That's not nice..._]
|
||||
jrst skru
|
||||
|
||||
what is there to eat
|
||||
VALRET [:KILL
|
||||
:HUMOR;FTP]
|
||||
die
|
||||
|
||||
what incredible flushing man
|
||||
VALRET [:KILL
|
||||
:WHOIS CSTACY]
|
||||
die
|
||||
|
||||
what are you,I am an omniscient utility program, idiot!
|
||||
|
||||
what [is this,is what]It's an all purpose utility program, dummy!
|
||||
|
||||
what [is on second,is on second base]That's right!
|
||||
|
||||
what me worry
|
||||
SOUT TTYOCH,[Start worrying._]
|
||||
JRST SKRU
|
||||
|
||||
what [losers,lusers,users]
|
||||
VALRET [:KILL
|
||||
:NAME]
|
||||
DIE
|
||||
|
||||
what rough beast,its hour come round at last_slouches towards Bethlehem to be born.
|
||||
|
||||
what [time,tide]
|
||||
VALRET [:KILL
|
||||
:TIME]
|
||||
DIE
|
||||
|
||||
what [day,date]
|
||||
VALRET [:KILL
|
||||
:DATE]
|
||||
DIE
|
||||
|
||||
what times
|
||||
VALRET [:KILL
|
||||
:TIMES]
|
||||
DIE
|
||||
|
||||
what is teco,It is the only systems programming language more obscure than RPG.
|
||||
|
||||
what am i,You are a luser.
|
||||
|
||||
what time is it,It's Howdy Doody time!
|
||||
|
||||
what is your name,Fred Derf.
|
||||
|
||||
what is your quest,I seek the Holy Grail.
|
||||
|
||||
what is your favorite color,Yellow... no! Blue! AIIIIIIEEEEEEE......
|
||||
|
||||
what what,What?
|
||||
|
||||
what is the shape of the earth,Flat.
|
||||
|
||||
what happens when you get to the edge,You fall off.
|
||||
|
||||
what a bitch,You're telling me.
|
||||
|
||||
what is the meaning of zen
|
||||
valret [:kill
|
||||
]
|
||||
|
||||
what does ddt type when a job kills itself
|
||||
die
|
||||
|
||||
what [system,sys,its]
|
||||
.CALL [ SETZ
|
||||
SIXBIT /SSTATU/
|
||||
REPEAT 5,MOVEM
|
||||
MOVEM A
|
||||
SETZM B]
|
||||
.LOSE 1000
|
||||
MOVE T,A
|
||||
PUSHJ P,SIXTYP
|
||||
MOVE T,[SIXBIT/ITS/]
|
||||
PUSHJ P,SIXTYP
|
||||
MOVE T,B
|
||||
PUSHJ P,SIXTYP
|
||||
DIE
|
||||
|
||||
SIXTYP: SETZI TT,
|
||||
ROTC T,6
|
||||
JUMPE TT,SIX1
|
||||
ADDI TT,40
|
||||
.IOT TTYOCH,TT
|
||||
JRST SIXTYP
|
||||
SIX1: .IOT TTYOCH,[40]
|
||||
POPJ P,
|
||||
|
||||
what happened,Beats me! All I did was let my mask down for six microseconds and this_moby interrupt came and knocked the crap out of me!!
|
||||
|
||||
what for,It turns me on.
|
||||
|
||||
what [demon,demons,daemon]
|
||||
call usrcnt
|
||||
MOVEI B,2
|
||||
LSLOOP: MOVEI T,400000(B)
|
||||
MOVE TT,[-12,,[ SIXBIT/APRC/
|
||||
MOVEM 0,A
|
||||
SIXBIT /SUPPRO/
|
||||
MOVEM 0,D
|
||||
SIXBIT /CNSL/
|
||||
MOVEM 0,C
|
||||
SIXBIT /UNAME/
|
||||
MOVEM 0,TEM1'
|
||||
SIXBIT /JNAME/
|
||||
MOVEM 0,TEM2']]
|
||||
.CALL [ SETZ
|
||||
SIXBIT /USRVAR/
|
||||
T
|
||||
SETZ TT]
|
||||
JRST LS1
|
||||
JUMPL A,LS1
|
||||
JUMPGE D,LS1
|
||||
JUMPGE C,LS1
|
||||
MOVE T,TEM1
|
||||
PUSHJ P,SIXTYP
|
||||
MOVE T,TEM2
|
||||
PUSHJ P,SIXTYP
|
||||
.IOT TTYOCH,[^M]
|
||||
.IOT TTYOCH,[^J]
|
||||
LS1: ADDI B,1
|
||||
CAMG B,LUSERS
|
||||
JRST LSLOOP
|
||||
DIE
|
||||
|
||||
.scalar lusers
|
||||
usrcnt: MOVE T,[SQUOZE 0,LUBLK]
|
||||
.EVAL T,
|
||||
DIE
|
||||
MOVE TT,[SQUOZE 0,USRHI]
|
||||
.EVAL TT,
|
||||
DIE
|
||||
HRLZ TT,TT
|
||||
HRRI TT,A
|
||||
.GETLOC TT,
|
||||
IDIV A,T
|
||||
MOVEM A,LUSERS
|
||||
return
|
||||
|
||||
what is new
|
||||
valret [:kill
|
||||
:print dsk:common;_news_ nyt]
|
||||
|
||||
what a crock
|
||||
valret [:kill
|
||||
:crock]
|
||||
|
||||
what [binary,bin]
|
||||
move a,[sixbit /WHAT/]
|
||||
jrst binary
|
||||
|
||||
what [binary for $,bin for $]
|
||||
move a,arg+2
|
||||
jrst binary
|
||||
|
||||
what [binary $,bin $]
|
||||
move a,arg+1
|
||||
jrst binary
|
||||
|
||||
what [device $,dev $]
|
||||
move a,arg+1
|
||||
jrst device
|
||||
|
||||
what source
|
||||
move a,[sixbit /WHAT/]
|
||||
jrst source
|
||||
|
||||
what source for $
|
||||
move a,arg+2
|
||||
jrst source
|
||||
|
||||
what source $
|
||||
move a,arg+1
|
||||
jrst source
|
||||
|
||||
what info for $
|
||||
move a,arg+2
|
||||
jrst info
|
||||
|
||||
what printer is $
|
||||
move a,arg+2
|
||||
jrst prstat
|
||||
|
||||
what info $
|
||||
move a,arg+1
|
||||
jrst info
|
||||
|
||||
define valbuf &string&
|
||||
movei t,[ascii string]
|
||||
movei tt,.length string
|
||||
call valbf0
|
||||
termin
|
||||
|
||||
.vector vbuffer(100)
|
||||
|
||||
binary: move b,[440700,,vbuffer]
|
||||
valbuf ":kill
|
||||
:find sys:ts "
|
||||
call sixbuf
|
||||
valbuf "
|
||||
:
|
||||
binprt sys:ts "
|
||||
sstop: call sixbuf
|
||||
valbuf "/s"
|
||||
vstop: valbuf "
|
||||
:
|
||||
vk
|
||||
"
|
||||
.value vbuffer
|
||||
|
||||
device: move b,[440700,,vbuffer]
|
||||
valbuf ":kill
|
||||
:find device;jobdev "
|
||||
call sixbuf
|
||||
valbuf "
|
||||
:
|
||||
binprt device;jobdev "
|
||||
jrst sstop
|
||||
|
||||
source: move b,[440700,,vbuffer]
|
||||
valbuf ":kill
|
||||
:find sysen*;system;sysnet;"
|
||||
call sixbuf
|
||||
jrst vstop
|
||||
|
||||
info: move b,[440700,,vbuffer]
|
||||
valbuf ":kill
|
||||
:find info;.info.;sysdoc;"
|
||||
call sixbuf
|
||||
valbuf "******,* "
|
||||
call sixbuf
|
||||
valbuf "******"
|
||||
jrst vstop
|
||||
|
||||
prstat: syscall open,[[.uai,,fooch]
|
||||
A
|
||||
[sixbit /.CMD./] ? [sixbit /STATUS/]]
|
||||
jrst [sout ttyoch,[No such printer_] ? die]
|
||||
pstlup: move a,[440700,,msgbuf]
|
||||
movei b,msglen
|
||||
syscall siot,[movei fooch ? a ? b]
|
||||
.lose %lssys
|
||||
subi b,msglen
|
||||
jumpe b,pstovr
|
||||
move a,[440700,,msgbuf]
|
||||
movn d,b
|
||||
syscall siot,[movei ttyoch ? a ? d]
|
||||
.lose %lssys
|
||||
jumpe b,pstlup
|
||||
pstovr: .close fooch,
|
||||
die
|
||||
|
||||
sixbuf: move t,a
|
||||
sixbf1: setzi tt,
|
||||
rotc t,6
|
||||
addi tt,40
|
||||
idpb tt,b
|
||||
jumpn t,sixbf1
|
||||
return
|
||||
|
||||
valbf0: hrli t,440700
|
||||
valbf1: ildb c,t
|
||||
idpb c,b
|
||||
sojg tt,valbf1
|
||||
return
|
||||
|
||||
what say
|
||||
|
||||
.vector msgbuf(100)
|
||||
msglen==500
|
||||
|
||||
whasay: .suset [.runame,,a]
|
||||
syscall open,[[.uai,,fooch] ? [sixbit /dsk/]
|
||||
a ? [sixbit /sends/] ? [sixbit /.temp./]]
|
||||
jrst nomsg
|
||||
msglp: move a,[440700,,msgbuf]
|
||||
movei b,msglen
|
||||
syscall siot,[movei fooch ? a ? b]
|
||||
.lose %lssys
|
||||
subi b,msglen
|
||||
jumpe b,msgovr
|
||||
movn d,b
|
||||
move a,[440700,,msgbuf]
|
||||
ildb c,a
|
||||
caie c,^_
|
||||
aojn b,.-2
|
||||
add d,b
|
||||
move a,[440700,,msgbuf]
|
||||
syscall siot,[movei ttyoch ? a ? d]
|
||||
.lose %lssys
|
||||
jumpe b,msglp
|
||||
msgovr: .close fooch,
|
||||
die
|
||||
|
||||
nomsg: sout ttyoch,[You don't seem to have any recent messages._]
|
||||
die
|
||||
|
||||
what [trans,translations]
|
||||
.scalar uname,jname,uind,trantp
|
||||
transz==50.
|
||||
.vector tranbf(transz*9)
|
||||
call usrcnt
|
||||
.suset [.runame,,uname]
|
||||
setoi a,
|
||||
setzi b,
|
||||
call trans1
|
||||
die
|
||||
|
||||
trans1: movei c,2
|
||||
trans2: caml c,lusers
|
||||
return
|
||||
move d,[-8,,[
|
||||
.runame ? movem 0,t
|
||||
.rsuppr ? movem 0,tt
|
||||
.ruind ? movem 0,uind
|
||||
.rjname ? movem 0,jname
|
||||
]]
|
||||
syscall usrvar,[movei %jsnum(c) ? d]
|
||||
aoja c,trans2
|
||||
camn t,uname
|
||||
came tt,a
|
||||
aoja c,trans2
|
||||
call tabb
|
||||
move t,jname
|
||||
call 6type
|
||||
aoj b,
|
||||
move d,[-<transz*9>,,tranbf]
|
||||
syscall tranex,[movei %jsnum(c) ? d ? movem trantp]
|
||||
.lose %lssys
|
||||
movei d,tranbf
|
||||
hllm d,trantp
|
||||
caml d,trantp
|
||||
jrst trans5
|
||||
.iot ttyoch,[":]
|
||||
call tranlp
|
||||
setzm jname
|
||||
trans5: move d,[-<transz*9>,,tranbf]
|
||||
syscall tranex,[%clbit,,200000 ? movei %jsnum(c) ? d ? movem trantp]
|
||||
.lose %lssys
|
||||
movei d,tranbf
|
||||
hllm d,trantp
|
||||
caml d,trantp
|
||||
jrst trans7
|
||||
skipn jname
|
||||
jrst trans8
|
||||
sout ttyoch,[ & inferiors:]
|
||||
call tranlp
|
||||
jrst trans9
|
||||
|
||||
trans7: skipn jname
|
||||
jrst trans9
|
||||
sout ttyoch,[: No translations.]
|
||||
jrst trans9
|
||||
|
||||
trans8: call tabb
|
||||
sout ttyoch,[Applying to inferiors as well:]
|
||||
call tranlp
|
||||
trans9: call terpri
|
||||
push p,a
|
||||
push p,c
|
||||
move a,c
|
||||
call trans1
|
||||
pop p,c
|
||||
pop p,a
|
||||
soj b,
|
||||
aoja c,trans2
|
||||
|
||||
terpri: .iot ttyoch,[^M]
|
||||
.iot ttyoch,[^J]
|
||||
return
|
||||
|
||||
tranlp: caml d,trantp
|
||||
return
|
||||
call tabb
|
||||
move t,(d)
|
||||
.iot ttyoch,["(]
|
||||
tlne t,400000
|
||||
.iot ttyoch,["A]
|
||||
tlne t,1
|
||||
.iot ttyoch,["I]
|
||||
tlne t,2
|
||||
.iot ttyoch,["O]
|
||||
sout ttyoch,[) ]
|
||||
movei t,1(d)
|
||||
call fntype
|
||||
sout ttyoch,[ => ]
|
||||
movei t,5(d)
|
||||
call fntype
|
||||
addi d,9
|
||||
jrst tranlp
|
||||
|
||||
tabb: call terpri
|
||||
skipn t,b
|
||||
return
|
||||
.iot ttyoch,[40]
|
||||
.iot ttyoch,[40]
|
||||
sojg t,.-2
|
||||
return
|
||||
|
||||
fntype: push p,2(t)
|
||||
push p,1(t)
|
||||
push p,3(t)
|
||||
move t,(t)
|
||||
call 6type
|
||||
.iot ttyoch,[":]
|
||||
.iot ttyoch,[40]
|
||||
pop p,t
|
||||
call 6type
|
||||
.iot ttyoch,[";]
|
||||
.iot ttyoch,[40]
|
||||
pop p,t
|
||||
call 6type
|
||||
.iot ttyoch,[40]
|
||||
pop p,t
|
||||
jcall 6type
|
||||
|
||||
;;;Not the same as SIXTYP:
|
||||
6type: jumpe t,[.iot ttyoch,["*] ? return]
|
||||
6type1: setzi tt,
|
||||
rotc t,6
|
||||
addi tt,40
|
||||
.iot ttyoch,tt
|
||||
jumpn t,6type1
|
||||
return
|
||||
|
||||
what [lisp,newio]
|
||||
.CALL [ SETZ
|
||||
SIXBIT /OPEN/
|
||||
[.UAI,,FOOCH]
|
||||
[SIXBIT/DSK/]
|
||||
[SIXBIT/PURQIO/]
|
||||
[SIXBIT/>/]
|
||||
SETZ [SIXBIT/SYS/]]
|
||||
.LOSE 1000
|
||||
.CALL [ SETZ
|
||||
SIXBIT /RFNAME/
|
||||
MOVEI FOOCH
|
||||
MOVEM
|
||||
MOVEM
|
||||
SETZM A]
|
||||
.LOSE 1000
|
||||
.CLOSE FOOCH,
|
||||
SOUT TTYOCH,[LISP version ]
|
||||
MOVE T,A
|
||||
PUSHJ P,SIXTYP
|
||||
DIE
|
||||
|
||||
what [bus,busses]
|
||||
|
||||
MOVEI TT,[ASCIZ/It is now /]
|
||||
PUSHJ P,ASZOUT
|
||||
.CALL [ SETZ ? 'RQDATE ? SETZM T ]
|
||||
.LOSE %LSSYS
|
||||
HRRZS T
|
||||
IDIVI T,120. ;Minutes since midnight
|
||||
IDIVI T,60. ;T hours, TT minutes
|
||||
IMULI T,100.
|
||||
ADD T,TT ;Pseudo decimal time
|
||||
PUSHJ P,4DPT
|
||||
.IOT TTYOCH,[^M]
|
||||
.IOT TTYOCH,[^J]
|
||||
MOVEI A,BUSTAB
|
||||
BUS01: PUSHJ P,SCHDP
|
||||
ADDI A,2
|
||||
CAIL A,BUSEND
|
||||
DIE
|
||||
.IOT TTYOCH,[^M]
|
||||
.IOT TTYOCH,[^J]
|
||||
JRST BUS01
|
||||
|
||||
ASZOUT: HRLI TT,440700
|
||||
ASZOU1: ILDB T,TT
|
||||
JUMPE T,CPOPJ
|
||||
.IOT TTYOCH,T
|
||||
JRST ASZOU1
|
||||
|
||||
4DPT: CAIL T,2400.
|
||||
SUBI T,2400.
|
||||
IDIVI T,1000.
|
||||
ADDI T,"0
|
||||
.IOT TTYOCH,T
|
||||
MOVE T,TT
|
||||
IDIVI T,100.
|
||||
ADDI T,"0
|
||||
.IOT TTYOCH,T
|
||||
.IOT TTYOCH,[":]
|
||||
MOVE T,TT
|
||||
IDIVI T,10.
|
||||
ADDI T,"0
|
||||
.IOT TTYOCH,T
|
||||
ADDI TT,"0
|
||||
.IOT TTYOCH,TT
|
||||
CPOPJ: POPJ P,
|
||||
|
||||
SCHDP: MOVEI TT,[ASCIZ/Bus /]
|
||||
PUSHJ P,ASZOUT
|
||||
HLRZ TT,(A)
|
||||
PUSHJ P,ASZOUT
|
||||
.CALL [ SETZ ? 'RQDATE ? SETZM T ]
|
||||
.LOSE %LSSYS
|
||||
HRRZS T
|
||||
IDIVI T,120. ;Minutes since midnight
|
||||
.RYEAR TT,
|
||||
LDB TT,[320300,,TT] ;Current day of the week
|
||||
CAIL T,2*60. ;Skip if earlier than 2 am
|
||||
JRST SCHDP1
|
||||
ADDI T,24.*60. ;Which is really part of the previous day
|
||||
SOJGE TT,SCHDP1
|
||||
MOVEI TT,6
|
||||
SCHDP1: HRRZ B,(A) ;Assume weekday
|
||||
CAIN TT,6
|
||||
HLRZ B,1(A) ;Saturday
|
||||
CAIN TT,0
|
||||
HRRZ B,1(A) ;Sunday
|
||||
IDIVI T,60. ;T hours, TT minutes
|
||||
IMULI T,100.
|
||||
ADD T,TT ;Pseudo decimal time
|
||||
MOVE C,T
|
||||
SCHDP2: PUSHJ P,GETBUS
|
||||
JRST [ MOVEI TT,[ASCIZ/(Shit, no more busses today!)/]
|
||||
JRST ASZOUT ]
|
||||
CAMG T,C
|
||||
JRST SCHDP2
|
||||
;; Now have the next bus, print the next 4
|
||||
PUSHJ P,4DPT
|
||||
REPEAT 3,[
|
||||
PUSHJ P,GETBUS
|
||||
POPJ P,
|
||||
.IOT TTYOCH,[",]
|
||||
.IOT TTYOCH,[40]
|
||||
PUSHJ P,4DPT
|
||||
];REPEAT
|
||||
PUSHJ P,GETBUS
|
||||
POPJ P,
|
||||
MOVEI TT,[ASCIZ/, .../]
|
||||
JRST ASZOUT
|
||||
|
||||
;Arg in B
|
||||
BUSTST: PUSHJ P,GETBUS
|
||||
.BREAK 16,
|
||||
PUSHJ P,4DPT
|
||||
.IOT TTYOCH,[",]
|
||||
JRST BUSTST
|
||||
|
||||
;RH(B) pointer to bus table, LH(B) zero if not initialized or last time
|
||||
;Updates B and returns next time in T, skip return unless no more busses
|
||||
GETBUS: PUSH P,A
|
||||
PUSH P,C
|
||||
PUSH P,D
|
||||
HLRZ A,B ;A last time given
|
||||
GETBS0: HLRZ T,(B) ;T time of first bus
|
||||
HRRZ D,(B) ;D interval between busses
|
||||
HLRZ C,1(B) ;C time next schedule starts
|
||||
GETBS1: CAMLE T,A
|
||||
JRST GETBS8 ;Got it
|
||||
JUMPE D,GETBS9 ;That was the last bus
|
||||
ADD T,D ;Next bus this schedule
|
||||
IDIVI T,100. ;Recanonicalize
|
||||
PUSH P,T
|
||||
MOVE T,TT
|
||||
IDIVI T,60.
|
||||
ADD T,(P)
|
||||
IMULI T,100.
|
||||
ADD T,TT
|
||||
SUB P,[1,,1]
|
||||
CAMGE T,C
|
||||
JRST GETBS1 ;This schedule still applies
|
||||
AOJA B,GETBS0 ;Advance to next schedule
|
||||
|
||||
GETBS8: AOS -3(P)
|
||||
GETBS9: POP P,D
|
||||
POP P,C
|
||||
POP P,A
|
||||
HRL B,T
|
||||
POPJ P,
|
||||
|
||||
;Each entry in bustab is
|
||||
; label,,weekdays
|
||||
; saturday,,sunday
|
||||
;
|
||||
;label is asciz and always starts with the bus number and ends with a space
|
||||
;the schedules are arrays of entries:
|
||||
; start time,,time interval
|
||||
; where time interval is 0 for the last bus
|
||||
|
||||
DEFINE BUS LABEL,[WEEK,SAT,SUN]
|
||||
RADIX 10.
|
||||
[ASCIZLABEL ],,[BUS1 WEEK]
|
||||
[BUS1 SAT],,[BUS1 SUN]
|
||||
RADIX 8
|
||||
TERMIN
|
||||
|
||||
DEFINE BUS1 [SCHED]
|
||||
IRP SCH,MORSCH,SCHED
|
||||
IFSE [MORSCH], SCH,,0 ;Last bus
|
||||
.ELSE [
|
||||
ZZ==0
|
||||
IRP ZZ0,,[SCH]
|
||||
ZZ==ZZ+1
|
||||
TERMIN
|
||||
IFE ZZ-1, SCH,,3000 ;Single bus
|
||||
.ELSE BUS2 SCH ;Array of busses
|
||||
]
|
||||
TERMIN
|
||||
TERMIN
|
||||
|
||||
DEFINE BUS2 START,INC
|
||||
START,,INC
|
||||
TERMIN
|
||||
|
||||
BUSTAB: BUS 83 leaves Central Sq,[530,550,610,638,649,703,721,739,752,805,820,834,850,914,[930,20],[1330,15],[1600,13],[1810,15],1840,1858,1943,2028,2113,2158,2243,2328,2413,2500],[528,608,650,[720,25],1037,1105,[1130,20],[1730,25],[2115,45],2500],[[700,100],2500]
|
||||
BUS 83 leaves Ringworld/Alewife,[[510,20],[630,14],725,739,753,807,820,834,846,[900,20],[1340,15],1600,1617,1635,1648,1701,1714,1727,1740,1755,1810,1835,1920,2005,2050,2135,2220,2305,2350,2435],[510,550,630,655,720,745,810,835,900,925,950,1015,[1040,20],1700,1725,[1755,25],[2050,45],2435],[[620,100],2420]
|
||||
BUSEND:
|
||||
|
||||
what randomness
|
||||
MOVE A,[SQUOZE 0,SCHHB]
|
||||
.EVAL A,
|
||||
.LOSE
|
||||
HRLZS A
|
||||
HRRI A,A
|
||||
.GETLOC A,
|
||||
JFCL
|
||||
TSC A,A
|
||||
TLZ A,(SETZ)
|
||||
IDIVI A,RNDLEN
|
||||
XCT .+1(B)
|
||||
RND1: RND
|
||||
RNDLEN==.-RND1
|
||||
|
||||
what [can you do,?]
|
||||
MOVEI T,ABLELN
|
||||
MOVE TT,[440700,,[able [asciz/]/]]
|
||||
.CALL [ SETZ
|
||||
SIXBIT /SIOT/
|
||||
MOVEI TTYOCH
|
||||
TT
|
||||
SETZ T]
|
||||
.LOSE 1000
|
||||
DIE
|
||||
|
||||
SKRU: sout ttyoch,[:KILL_:DIRED SORRY DELETE * *_]
|
||||
VALRET [DIREDJP]
|
||||
MOVSI TT,4
|
||||
SOJG TT,.
|
||||
movei arg,300
|
||||
.sleep arg,
|
||||
DIE
|
||||
|
||||
PUTTAG
|
||||
|
||||
LOSER: SOUT TTYOCH,[You tell me._]
|
||||
|
||||
DIE
|
||||
|
||||
END GO
|
||||
Reference in New Issue
Block a user