1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-23 02:48:48 +00:00
PDP-10.its/src/syseng/what.204
2016-12-11 12:36:45 -08:00

992 lines
16 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;;-*-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