Source:Artifact Maintenance

From Eamon Wiki
Jump to navigation Jump to search
This page is a verbatim reproduction of original source material and should not be edited except for maintenance.
Description

The Applesoft BASIC source code of the Eamon utility program Artifact Maintenance, originally included on the Eamon Utilities I disk and later on the EAG Utilities Disk.

Source

EAG Utilities Disk

Date

c. 1984, modified 19 February 1996

Author

John Nelson

License

The use of this item is permitted on the grounds that it's free or in the public domain.

1  REM   ARTIFACT MAINTENANCE
2  REM        FOR EAMON
3  REM      BY JOHN NELSON
4  REM 
5  REM 
7  REM  2/19/96
8  REM 
10 D$ =  CHR$ (4): TEXT : HOME 
20  VTAB 6: PRINT "  INSERT EAMON ADVENTURE DISKETTE AND": PRINT : PRINT  SPC( 6);"PRESS ANY KEY TO CONTINUE ...";: GET A$: PRINT 
25  PRINT D$"UNLOCK EAMON.DESC": PRINT D$"UNLOCK EAMON.ARTIFACTS"
30  PRINT D$"OPEN EAMON.DESC,L256": PRINT D$"READ EAMON.DESC,R0": INPUT NR,NA,NE,NM
40  DIM AN$(100),AD%(100,8)
50  PRINT D$"OPEN EAMON.ARTIFACTS,L128"
60  FOR A = 1 TO NA: PRINT D$"READ EAMON.ARTIFACTS,R";A: INPUT AN$(A): FOR A2 = 1 TO 4: INPUT AD%(A,A2): NEXT A2: IF AD%(A,2) =  > 2 THEN  FOR A2 = 5 TO 8: INPUT AD%(A,A2): NEXT 
70  NEXT A: PRINT D$
100  HOME : PRINT  SPC( 17);"EAMON": PRINT  SPC( 9);"ARTIFACT MAINTENANCE": PRINT  SPC( 12);"BY JOHN NELSON": VTAB 10: PRINT "SELECT ACTION:"
105  PRINT "  1. LIST ARTIFACTS": PRINT "  2. DELETE ARTIFACTS": PRINT "  3. INSERT ARTIFACTS": PRINT "  4. APPLY CHANGES TO FILE"
110  PRINT "  5. CANCEL CHANGES": PRINT "  6. QUIT"
120  PRINT "INPUT YOUR CHOICE (1-6):";
130  GET A$: IF  VAL (A$) < 1 OR  VAL (A$) > 6 THEN 130
160  PRINT A$: ON  VAL (A$) GOTO 1000,2000,3000,4000,5000,6000
1000  REM  /// LIST
1010  HOME :LP = 0: FOR A = 1 TO NA: PRINT "  ";A;". ";AN$(A):LP = LP + 1: IF LP > 22 THEN  PRINT "====== PRESS ANY KEY TO CONTINUE ======";: GET A$: PRINT :LP = 0: HOME 
1020  NEXT 
1090  PRINT : PRINT "====== PRESS ANY KEY TO CONTINUE ======";: GET A$: PRINT : GOTO 100
2000  REM  /// DELETE
2010  VTAB 6: CALL  - 958: INPUT "HOW MANY TO DELETE?";ND$: IF  VAL (ND$) < 1 OR  VAL (ND$) > NART THEN 2010
2020  VTAB 8: CALL  - 958: INPUT "FIRST ARTIFACT TO DELETE:";D1$: IF  VAL (D1$) < 1 OR  VAL (D1$) > NART THEN 2020
2030 ND =  VAL (ND$):D1 =  VAL (D1$): HOME : PRINT "DELETE ARTIFACTS ";D1;" THRU ";D1 + ND - 1
2040  VTAB 6: PRINT "IS THIS CORRECT? (Y/N) ";
2045  GET A$: IF A$ <  > "Y" AND A$ <  > "N" THEN 2045
2048  PRINT A$: IF A$ = "N" THEN 100
2050 UP = 1: FOR D = D1 + ND TO NA: PRINT D$"READ EAMON.DESC,R";D + 100: INPUT RD$: PRINT D$"WRITE EAMON.DESC,R";D - ND + 100: PRINT  CHR$ (34);RD$; CHR$ (34)
2060 AN$(D - ND) = AN$(D): FOR A2 = 1 TO 8:AD%(D - ND,A2) = AD%(D,A2): NEXT A2
2070  NEXT D: PRINT D$:NA = NA - ND
2080  GOTO 100
3000  REM  /// ADD
3010  VTAB 6: CALL  - 958: PRINT : INPUT "HOW MANY TO INSERT?";NI$: IF  VAL (NI$) < 1 OR  VAL (NI$) + NA > 100 THEN 3010
3020  VTAB 8: INPUT "AFTER WHICH ARTIFACT:";IA$: IF  VAL (IA$) < 1 OR  VAL (IA$) > NART THEN 3020
3030  HOME :NI =  INT ( VAL (NI$)):IA =  INT ( VAL (IA$)): PRINT "INSERT ";NI;" ARTIFACTS AFTER ";IA;"."
3040  VTAB 6: PRINT "IS THIS CORRECT? (Y/N) ";
3045  GET A$: IF A$ <  > "Y" AND A$ <  > "N" THEN 3045
3048  PRINT A$: IF A$ = "N" THEN 100
3050 UP = 1:X = 0: FOR I = NA + NI TO IA + 1 STEP  - 1: PRINT D$"READ EAMON.DESC,R";I - NI + 100: INPUT RD$: PRINT D$"WRITE EAMON.DESC,R";I + 100: PRINT  CHR$ (34);RD$; CHR$ (34)
3060 AN$(I) = AN$(NA - X): FOR A2 = 1 TO 8:AD%(I,A2) = AD%(IA + NI + 1,A2): NEXT A2
3070 X = X + 1: NEXT I: PRINT D$:
3080  FOR A = IA + 1 TO NI + IA:AN$(A) = "DUMMY": FOR A2 = 1 TO 8:AD%(A,A2) = 0: NEXT A2,A
3090 NA = NA + NI: GOTO 100
4000  REM  /// APPLY
4010  FOR A = 1 TO NA: PRINT D$"WRITE EAMON.ARTIFACTS,R";A: PRINT AN$(A): FOR A2 = 1 TO 8: PRINT AD%(A,A2): NEXT A2,A
4030  PRINT D$"WRITE EAMON.DESC,R0": PRINT NR: PRINT NA: PRINT NE: PRINT NM: PRINT D$
4040 UP = 0
4090  GOTO 100
5000  REM  /// CANCEL
5010 UP =  NOT UP: PRINT "UPDATE IS "; MID$ ("CANCELLEDIN EFFECT",UP * 9 + 1,9): PRINT : PRINT "====== PRESS ANY KEY TO CONTINUE ======";: GET A$: PRINT : GOTO 100
6000  REM  /// QUIT
6010  IF UP THEN  PRINT : PRINT "UPDATE HAS NOT BEEN APPLIED.": PRINT : PRINT "PRESS ANY KEY TO CONTINUE";: GET A$: PRINT : GOTO 100
6020  PRINT D$"CLOSE"
6030  END