1195 START ; DAFT COMMAND SUBROUTINES
1200 ADV, CALL NUMBER
1205 RECNO=NUMBR
1210 CALL PLUCHK
1215 ADV2, CALL REED
1220 RECNO=RECNO-1
1225 IF (RECNO .GT. 0) GOTO ADV2
1230 GOTO START
1235
1240 BACK, IF (UPFLAG .EQ. 0) GOTO NOBACK
1245 CALL NUMBER
1250 NUMBR=RECNUM-NUMBR
1255 IF (NUMBR .LE. 0) GOTO STUCK
1260 RECNUM=NUMBR
1265 GOTO GOTORD
1270 NOBACK, XMIT(TTY,"CANT BACKSPACE WITH SEQUENTIAL INPUT')
1275 GOTO START
1280 STUCK, XMIT(TTY,"CANT BACKSPACE PAST BEGIN OF FILE.')
1285 GOTO START
1290
1295 WRITE, CALL NUMBER
1300 RECNO=NUMBR
1305 PLUS=1
1310 GOTO ADV2
1315
1320 CHANGE, CALL GETKEY
1325 CALL GETDATA
1330 IF (KEYHI .GT. RECLEN) GOTO FOOL
1335 I(KEYLOW,KEYHI)=
1340 I(KEYLOW,KEYHI)=DATA(1,LENG)
1345 GOTO START
1350 FOOL, XMIT(TTY,"KEY EXTENDS PAST RECORD END')
1355 GOTO START
1360
1365 DISPLAY,CALL NUMBER
1370 IF (NUMBR .GT. 130) GOTO MUMBLE
1375 IF (FLAG .EQ. 1) GOTO DREV
1380 GRIDLEN=NUMBR
1385 GOTO START
1390 DREV, GRID=1-GRID
1395 GOTO START
1400 MUMBLE, XMIT(TTY,"EXCESSIVE GRID SIZE')
1405 GOTO START
1410
1415 EXIT, IF (7( RETURN^]7- ^U72
3440 , CALL NUMBER^X77 CALL PLUCHK^O7< IF (UPFLAG .EQ. 0) GOTO SPAN^W7A RECNUM=NUMBR^U7FGOTORD, CALL RDUP^X7K GOTO START^J7PSPAN, IF (NUMBR .LT. RECNUM) GOTO NOBACK^T7U RECNO=NUMBR-RECNUM^O7Z IF (RECNO .EQ. 0) GOTO START^Y8 GOTO ADV2^]8$ ^P8)HELP, XMIT(TTY,"ADVANCE N+')^R8. XMIT(TTY,"BACKSPACE N')^O83 XMIT(TTY,"CHANGE DATA')^S88 XMIT(TTY,"DISPLAY N')^U8= XMIT(TTY,"EXIT')^T8B XMIT(TTY,"FINI +')^T8G XMIT(TTY,"GOTO N+')^U8L XMIT(TTY,"HELP')^O8Q XMIT(TTY,"INPUT LABEL#UNIT')^T8V XMIT(TTY,"KEY A,B')^R8[ XMIT(TTY,"LIST N KEY+')^O9 XMIT(TTY,"OUTPUT LABEL#UNIT')^U9% XMIT(TTY,"PUT N')^U9* XMIT(TTY,"QUERY')^T9/ XMIT(TTY,"REWIND')^N94 XMIT(TTY,"SEARCH DATA +')^Q99 XMIT(TTY,"TYPE N +')^O9> XMIT(TTY,"UPDATE LABEL#UNIT')^T9C XMIT(TTY,"VERSION')^T9H XMIT(TTY,"WRITE N')^W9M XMIT(TTY,"X')^X9R GOTO START^]9W ^V9 KEY, CALL KEYSUB^X:! KEYL=KEYLOW^X:& KEYH=KEYHI^X:+ GOTO START^]:0 ^T:5KEYSUB, CALL NUMBER^O:: IF (FLAG .EQ. 1) GOTO DEFAULT^L:? IF (COM(SCAN) .NE. ',') GOTO BADKEY^W:D KEYLOW=NUMBR^X:I SCAN=SCAN+1^X:N CALL NUMBER^X:S KEYHI=NUMBR^L:X IF (KEYHI .LT. KEYLOW) GOTO BADKEY^P:] IF (KEYHI .LE. 510) RETURN^P;"BADKEY, XMIT(TTY,"BAD KEY')^Y;' KEYLOW=1^Y;, KEYHI=510^X;1 GOTO START^];6 ^V;;LIST, DEVICE=LPT^X;@ CALL PRINT^X;E GOTO START^V;JDEFAULT,KEYLOW=1^Y;O KEYHI=510^Z;T RETURN^];Y ^L;^PRINT, IF (RECNUM .EQ. 0) GOTO NOIN^X<# CALL NUMBER^X<( RECNO=NUMBR^X<- CALL GETKEY^X<2 CALL PLUCHK^U<7PRIN2, CALL XINFO^W<< LOW = KEYLOW^T PAD=^Z>% GBUFF=^U>* GBUF=I(LOW,HIGH)^L>/OUTDIF, XMIT(DEVICE,GBUFF(1,DIF+3))^Z>4 RETURN^COUTFLG .EQ. 0) STOP^L5+ XMIT(TTY,"OUTPUT FILE STILL OPEN')^X50 GOTO START^]55 ^N5:FINI, IF (OUTFLG.NE.1) GOTO NOUT^X5? CALL PLUCHK^Q5D IF (PLUS .EQ. 1) CALL EX^Y5I FINI(OUT)^V5N OUTNAM='/NONE/'^Z5S OUTFLG=^P5X IF (UPFLAG.EQ.0) GOTO START^Z5] UPFLAG=^Z6" INFLG=^V6' RECNAM = OUTNAM^Y6, FINI (IN)^X61 GOTO START^]66 ^N6;EX, IF (INFLG .EQ. 0) GOTO NOIN^W6@EX2, CALL WRIT^P6E IF(UPFLAG.EQ.1) GOTO SPEOF^S6J XMIT(IN,INREC,SPEOF)^Y6O CALL RD3^Y6T GOTO EX2^W6YSPEOF, INFLG=^Z6^ RECNUM=^W7# STATUS='THRU'^ZNO=NUMBR^V@1PUT2, CALL WRIT^W@6 RECNO=RECNO-1^P@; IF (RECNO .GT. 0) GOTO PUT2^X@@ GOTO START^U@EQUERY, RICN=RECNAM^W@J XMIT(TTY,QIN)^V@O XMIT(TTY,QINU)^V@T XMIT(TTY,QOUT)^V@Y XMIT(TTY,QOUTU)^V@^ XMIT(TTY,QKEY)^XA# DEVICE=TTY^XA( CALL XINFO^WA- GOTO VERSION^KA2REWIND, IF (UPFLAG .EQ. 0) GOTO REINIT^YA7 RECNUM=1^XA< GOTO GOTORD^LAAREINIT, IF (INFLG .EQ. 0) GOTO NOIN^YAF FINI(IN)^OAK INIT(IN,INPUT,RECNAM,INUNIT)^YAP RECNUM=0
2230 GOTO READ
2235
2240 SEARCH, CALL GETKEY
2245 CALL GETDATA
2250 CALL PLUCHK
2255 SRCH2, IF (I(KEYLOW,KEYHI) .EQ. DATA(1,LENG)) GOTO AHA
2260 SRCH3, CALL REED
2265 GOTO SRCH2
2270 AHA, IF (KEYHI .GT. RECLEN) GOTO SRCH3
2275 FNOM=RECNUM
2280 XMIT(TTY,FOUNDM)
2285 GOTO START
2290
2295 TYPE, DEVICE=TTY
2300 CALL PRINT
2305 GOTO START
2310 SYSINP, XMIT(SYS,COMMAND,EOJ) ;READ COMMAND FROM FILE
2315 COM (1,126) = COM (3,128) ;KILL LINE NUMBER
2320 XMIT(TTY,COMMAND(1,129-2*#TRICK2(4)))
2325 GO TO TERM
2330 EOJ, ON ERROR EOJSYS
2335 INIT(SYS,SYS)
2340 SYSFLG=1
2345 GO TO START
2350 EOJSYS, INIT (KBD,KBD)
2355 SYSFLG=
2360 GO TO START
2365
2370 VERSION, XMIT(TTY,"DAFT VERSION V 9.3')
2375 GOTO START
2380
2385 GETKEY, IF (COM(SCAN) .NE. '<') GOTO USEDEF
2390 SCAN=SCAN+1
2395 CALL KEYSUB
2400 IF (COM(SCAN) .NE. '>') GOTO BADKEY
2405 SCAN=SCAN+1
2410 CALL FLOW
2415 RETURN
2420 USEDEF, KEYLOW=KEYL
2425 KEYHI=KEYH
2430 RETURN
2435 START ; DAFT UTILITY SUBROUTINES
2440 PASS, SCAN=SCAN+1
2445 IF(COM(SCAN) .EQ. ';') RETURN
2450 IF (COM(SCAN) .NE. ' ') GOTO PASS
2455 CALL FLOW
2460 RETURN
2465
2470 NUMBER, CALL FLOW
2475 LEFT=SCAN
2480 NUMLOOP,CHAR=COM(SCAN)
2485 IF (CHAR .EQ. ' ') GOTO PAST
2490 IF (CHAR .LT. '0') GOTO PAST
2495 IF (CHAR .GT. '9') GOTO PAST
2500 SCAN=SCAN+1
2505 GOTO NUMLOOP
2510 PAST, RIGHT=SCAN-1
2515 CALL FLOW
2520 IF (RIGHT .LT. LEFT) GOTO NODIGS
2525 FLAG=0
2530 ON ERROR BADNUM
2535 NUMBR=COM(LEFT,RIGHT)
2540 IF (NUMBR .GT. 0) RETURN
2545 BADNUM, XMIT(TTY,"NUMBER TOO BIG OR 0')
2550 XMIT(TTY,"0 NOT ALLOWED.')
2555 GOTO START
2560 NODIGS, NUMBR=1
2565 FLAG=1
2570 RETURN
2575 LABEL, LFT=SCAN
2580 LABLOOP,LETTR=COM(SCAN)