home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Glitch Apple Disk Collection
/
2014.glitch.apple.collection.zip
/
indexed
/
ANKH.DSK
/
HELLO.bas
< prev
next >
Wrap
BASIC Source File
|
2014-09-09
|
8KB
|
126 lines
8 REM **********************<CTRL-M> * GO *<CTRL-M> * BY CHRIS GLENN *<CTRL-M> * COPYRIGHT (C) 1982 *<CTRL-M> * BY MICRO-SPARC INC *<CTRL-M> * LINCOLN, MA. 01773 *<CTRL-M> **********************<CTRL-M><CTRL-M><CTRL-M>
20 T$ = "GO - DEMONSTRATION"
30 GOTO 280
40 REM INPUT
50 C = H:I$ = "": FOR X = H TO H +L:C$(X) = "":T$(X) = "": NEXT
60 IF C = H -I THEN C = H
70 HTAB C
80 GET C$(C): IF C$(H) = R$ THEN HTAB I: CALL -868: INVERSE : POP : GOTO 740
90 IF C$(C) = C$ THEN C$(C) = "": GOTO 70
100 IF C$(C) = F$ AND T$(C) > = A$ THEN 120
110 IF C$(H) <A$ OR C$(H) >Z$ THEN 70
120 IF C$(C) = R$ THEN CALL -868: GOTO 190
130 IF C$(C) = B$ THEN T$(C -I) = C$(C -I):C = C -I: GOTO 60
140 IF C = H +L +I THEN PRINT BL$;: GOTO 80
150 IF C$(C) = F$ AND T$(C) = "" THEN T$(C) = S$
160 IF C$(C) = F$ THEN C$(C) = T$(C):C = C +I: GOTO 60
170 IF ASC(C$(C)) <32 THEN 60
180 VTAB V: HTAB C: PRINT C$(C);:C = C +I: GOTO 60
190 FOR X = C -I TO H STEP -I: IF ASC(C$(X)) +Z < >B THEN C = X: GOTO 210
200 NEXT
210 FOR X = H TO C:I$ = I$ + CHR$( ASC(C$(X)) +Z): NEXT : RETURN
220 REM VARIABLES (NOTE: B3$ = 3 BLANKS, B40$ = 40 BLANKS)
230 C = 0:F0 = 40:F1 = 41:F2 = 256:I = 1:P = 3:Q = 4:R = 5:B = 160:Y = 62:H = 8:L = 29:F = 7:Z = 128
240 A$ = "A":Z$ = "Z":B3$ = " ":B40$ = " "
250 DEF FN S(R) = PEEK(C + PEEK(F0) + PEEK(F1) *F2): DEF FN T(C) = INT((F1 - LEN(T$))/2 +.5)
260 D$ = CHR$(4):R$ = CHR$(13):F$ = CHR$(21):B$ = CHR$(8):S$ = CHR$(32):C$ = CHR$(44):BL$ = CHR$(7): RETURN
270 REM SETUP
280 POKE 768,32: POKE 769,12: POKE 770,253: POKE 771,201: POKE 772,141: POKE 773,208: POKE 774,3: POKE 775,76
290 POKE 776,44: POKE 777,174: POKE 778,76: POKE 779,60: POKE 780,174: POKE 781,0: POKE 44602,0: POKE 44603,3
300 POKE 44452,20: POKE 44605,19: DIM A$(22,6),C$(38),T$(38): ONERR GOTO 1060
310 GOSUB 230: PRINT D$"NOMON C,I,O": TEXT : HOME
320 INVERSE : PRINT B40$;: VTAB I: HTAB I: PRINT "<RETURN>=THIS SCREEN <SPACE>=MORE FILES";: POKE 34,2
330 HOME : NORMAL : PRINT R$: VTAB I: PRINT D$"CATALOG":V = PEEK(37) -2: VTAB 24: PRINT CHR$(10)
340 VTAB I: HTAB I: INVERSE : PRINT B40$;: VTAB I: HTAB FN T(C): PRINT T$
350 VTAB P: FOR X = P TO V: HTAB Q: FOR C = P TO R:A$(X,C) = CHR$( FN S(R)): NEXT : PRINT : NEXT
360 VTAB P: FOR X = P TO V: HTAB Q: NORMAL : PRINT B3$;: HTAB R: INVERSE : PRINT CHR$(X +Y): NEXT :LL = X +61:V = X +I
370 REM FILE NAME/TYPE
380 VTAB V: HTAB H: CALL -868: POKE -16368,0: INVERSE :N$ = "":E = 39
390 HTAB H: PRINT "FILE CHOICE? (OR #=SPACE X=END) ";: VTAB V: HTAB R: GET X$: IF X$ = R$ THEN 310
400 IF X$ = "X" THEN HTAB H: CALL -868: PRINT "END";: POKE 44602,12: POKE 44603,253: POKE 44452,22: POKE 44605,21: GOTO 640
410 IF X$ = "#" THEN 660
420 IF X$ <A$ OR ASC(X$) >LL THEN 390
430 LV = ASC(X$) -Y: VTAB LV: HTAB I:S = PEEK(F0) + PEEK(F1) *F2
440 T = PEEK(S +I): IF T < >193 AND T < >194 AND T < >201 AND T < >212 THEN VTAB V: GOTO 390
450 FOR X = E TO F STEP -I: IF PEEK(S +X) < >B THEN E = X: GOTO 470
460 NEXT
470 FOR X = F TO E:N$ = N$ + CHR$( PEEK(S +X)): NEXT : VTAB LV: HTAB H: PRINT N$: VTAB V: HTAB H: CALL -868
480 REM COMMAND
490 HTAB H: IF T = 212 THEN PRINT "EXEC";: GOTO 510
500 PRINT "RUN LOAD";
510 PRINT " TEND";: IF T = 194 THEN PRINT " ADDRESS";
520 PRINT " SIZE";
530 VTAB V: HTAB R: GET X$: IF X$ = R$ THEN VTAB LV: HTAB H: NORMAL : PRINT N$: GOTO 380
540 IF X$ = A$ AND T = 194 THEN HTAB I: CALL -868: PRINT BL$;: GOTO 1140
550 IF X$ = "S" THEN 710
560 IF X$ = "T" THEN 740
570 IF X$ = "E" AND T < >212 OR X$ < >"E" AND T = 212 THEN 530
580 IF X$ = "E" THEN O$ = "EXEC": GOTO 620
590 IF X$ = "R" THEN O$ = "RUN": GOTO 620
600 IF X$ < >"L" THEN 530
610 O$ = "LOAD"
620 POKE -16298,0: POKE 44452,22: POKE 44605,21: POKE 44602,12: POKE 44603,253: IF T = 194 THEN BI$ = "B"
630 HTAB H: CALL -868: PRINT BI$O$: PRINT D$BI$O$N$;
640 POKE -16298,0: POKE 34,0: NORMAL : VTAB V -(X$ = "X" OR T = 193 OR T = 201): END
650 REM DISK SPACE
660 HTAB H: CALL -868: PRINT "DISK SPACE:";
670 RESTORE : FOR X = 896 TO 960: READ A: POKE X,A: NEXT : POKE 905,149: POKE 938,149
680 J = PEEK(43626) *16:K = PEEK(43624): POKE 897,J: POKE 898,K: POKE 911,J: POKE 912,K: CALL 919
690 FR = PEEK(917) + PEEK(918) *F2:US = 496 -FR: PRINT " USED="US" FREE="FR;: HTAB R: GET X$: GOTO 310
700 REM SIZE
710 HTAB H: CALL -868: PRINT "SIZE: ";: FOR X = P TO R: PRINT A$(LV,X);: NEXT : PRINT " SECTORS";
720 HTAB R: GET X$: CALL -868: GOTO 490
730 REM FILE TENDING
740 VTAB V: HTAB I: CALL -868: IF PEEK(S) = 106 THEN POKE S,170
750 HTAB H: PRINT "LOCK UNLOCK RENAME DELETE VERIFY";: HTAB R: GET X$: IF X$ = R$ THEN CALL -868: HTAB H: GOTO 490
760 IF X$ = "L" THEN 840
770 IF X$ = "U" THEN 870
780 IF X$ = "R" THEN 900
790 IF X$ = "D" THEN 990
800 IF X$ < >"V" THEN 750
810 REM VERIFY
820 CALL -868: HTAB H: PRINT "VERIFY": PRINT D$"VERIFY"N$: GOTO 740
830 REM LOCK
840 IF PEEK(S) = 170 THEN 750
850 CALL -868: HTAB H: PRINT "LOCK": PRINT D$"LOCK"N$: POKE S,170: GOTO 740
860 REM UNLOCK
870 IF PEEK(S) = 160 THEN 750
880 CALL -868: HTAB H: PRINT "UNLOCK": PRINT D$"UNLOCK"N$: POKE S,160: GOTO 740
890 REM RENAME
900 IF PEEK(S) = 170 THEN POKE S,106
910 HTAB I: CALL -868: PRINT "RENAME";: NORMAL : PRINT "=";: GOSUB 50: INVERSE : IF I$ = N$ THEN 740
920 HTAB I: PRINT BL$"OK?";: NORMAL : PRINT " ";: INVERSE
930 HTAB R: GET X$: IF X$ = "N" OR X$ = R$ THEN 740
940 IF X$ < >"Y" THEN 930
950 HTAB I: PRINT "RENAME";: NORMAL : PRINT "=": IF PEEK(S) = 106 THEN UN = I: PRINT D$"UNLOCK"N$
960 PRINT D$"RENAME"N$C$I$: IF UN THEN UN = 0: PRINT D$"LOCK"I$
970 N$ = I$: VTAB LV: HTAB H: CALL -868: INVERSE : PRINT N$: GOTO 740
980 REM DELETE
990 HTAB I: CALL -868: PRINT "OK?";: NORMAL : PRINT " ";: INVERSE : PRINT BL$"DELETE";
1000 IF PEEK(S) = 170 THEN POKE S,106: PRINT "LOCKED FILE"BL$;
1010 HTAB R: GET X$: IF X$ = "N" OR X$ = R$ THEN 740
1020 IF X$ < >"Y" THEN 1010
1030 HTAB I: NORMAL : PRINT " ": IF PEEK(S) = 106 THEN PRINT D$"UNLOCK"N$
1040 PRINT D$"DELETE"N$: GOTO 310
1050 REM ERRORS
1060 POKE 768,104: POKE 769,168: POKE 770,104: POKE 771,166: POKE 772,223: POKE 773,154: POKE 774,72
1070 POKE 775,152: POKE 776,72: POKE 777,96: CALL 768: POKE 216,0: VTAB V: HTAB I: CALL -868
1080 ER = PEEK(222): VTAB V: HTAB H: INVERSE : PRINT BL$"ERROR "ER;: IF ER = 1 THEN PRINT " - LANGUAGE NOT AVAILABLE";
1090 IF ER = 6 THEN PRINT " - FILE NOT FOUND";
1100 IF ER = 8 AND X$ = "V" THEN PRINT " - UNABLE TO VERIFY";: GOTO 1120
1110 IF ER = 8 THEN PRINT " - I/O";
1120 HTAB R: GET X$: RUN
1130 REM ADDRESS/LENGTH
1140 HTAB I: PRINT "OK?";: NORMAL : PRINT " ";: INVERSE : PRINT "ADDRESS/LENGTH (BOOT IF FAILS)";: HTAB R: GET X$
1150 IF X$ = "N" OR X$ = R$ THEN HTAB 1: CALL -868: GOTO 490
1160 IF X$ < >"Y" THEN 1140
1170 ONERR GOTO 1220
1180 HTAB 1: NORMAL : PRINT " ": INVERSE : PRINT D$"BLOAD"N$
1190 LOMEM: PEEK(115) + PEEK(116) *256 -2000:H = 5216 + PEEK(115) + PEEK(116) *256
1200 A = PEEK(43634) + PEEK(43635) *256:L = PEEK(H) + PEEK(H +1) *256
1210 VTAB PEEK(37): HTAB 8: CALL -868: PRINT "BLOAD ADDRESS="A" LENGTH="L;
1220 HTAB 5: GET X$: CALL -868: HTAB 8: PRINT "REQUIRED BOOT - PLEASE WAIT"
1230 NORMAL : VTAB PEEK(37) -1: PRINT CHR$(4)"PR#6"
1240 DATA 1,96,1,0,17,0,145,3,0,149,0,0,1,0,0,96,1,0,1,239,216,0,0,169,3,160,128,32,217,3,162,0,142,149,3,142,
1250 DATA 150,3,160,56,185,0,149,162,8,10,144,8,238,149,3,208,3,238,150,3,202,208,242,200,192,196,144,232,96
1260 REM BY CHRIS GLENN