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)