Oldest file you typed in on a computer and still have on disk?

What is the oldest file you typed in on a computer and still have on your disk? My oldest file is a small Basic program from 1978, in KIM-1 audio format. No timestamp, filename is 01, length $14A

1 Like

I still have audio tapes of my first computer, a vic-20 I got on Christmas 1982. Some years ago I copied some tapes to PC. I don’t remember which one was the first (other PC), probably samples from the manual from day one. Floppy drive I got in 1983. I also have some non-dated printouts, mainly from Creative Computing.

Original 5.25" floppy discs used on an Apple II in '78 ? Last time I fired them up (earlier this year) they were working just fine.

Northstar Horizon stuff in the early 80’s (on hard-sectored discs)

-Gordon

(and yes, I do have backups! the issue there is getting data to/from the Apple II, etc. so serial card to the rescue, but LISTing stuff to the serial port is fine for me)

Does “keypunched yourself, and still have a machine-readable copy” qualify? In 1968, Charles Simonyi and I wrote (and keypunched!) a Snobol4 implementation for the Control Data Corporation 6400. I didn’t keep a magnetic tape copy for myself, but in 2007 I ran across a copy of the source code in a Snobol repository maintained by Ralph Griswold at the University of Arizona. The deck starts out:

*DECK SNOBOL
          IDENT SNOBOL,101B,SNOBOL
          ABS
          SPACE    14
****************************************
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*      CAL-6000 SNOBOL4 COMPILER       *
*             DEVELOPED BY             *
*   CHARLES SIMONYI AND PAUL MCJONES   *
*        BERKELEY, 1968 - 1969         *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
*                                      *
****************************************

For more on this (and a link to this version, plus a later 1971 version of the source), see Cal Snobol

3 Likes

DEC RSTS BASIC program to generate non-player characters for a AD&D Tournament. I think this was the first program I ever wrote that was not for a class. Early 1981. Notice the RSTS specific calls on line 90, 110 and 2900. I have actually copied this to a CP/M-86 v1.1 partition, removed the RSTS specific commands and ran it in MBASIC on my Toshiba T3100.

10 ' STAT GENERATION    0160             RACE               0350
20 ' CLASS              0410             HIT POINTS         0470
30 ' SEX                0600             RACIAL MAX-MINS    0620
40 ' MONEY              0990             PSIONICS           1240
50 ' PSI ABILITY        1330             PSI ATTACK         1410
60 ' PSI DEFENSE        1480             PSI DISIPLINES     1540
70 ' ALIGNMENT          1770             AGE                1800
80 ' 2ND SKILL          2090             HEIGHT & WEIGHT    2110
90 U$=SYS(CHR$(3))
100 INPUT "PASSWORD";A$
110 U$=SYS(CHR$(2))
120 IF A$<>"WIZARD" THEN 2880
130 PRINT
140 EXTEND
150 RANDOMIZE 
160 ' STAT GENERATION
170 INPUT "HOW MANY CHARACTERS DO YOU WANT TO GENERATE";G
180 IF G=0 THEN 2860
190 PRINT
200 FOR Q=1 TO G
210 PRINT "CHARACTER-";Q
220 ST=0:IN=0:WD=0:CN=0:DX=0:CH=0
230 M=0:GP=0:PS=1
240 FOR X3=1 TO 6
250 T=0
260 FOR X1=1 TO 3
270 R2(X1)=INT(6*RND+1):R4(X1)=INT(6*RND+1)
280 IF R4(X1)>R2(X1) THEN R2(X1)=R4(X1)
290 T=T+R2(X1)
300 STA(X3)=T
310 NEXT X1
320 NEXT X3
330 IN=STA(2):WD=STA(3):DX=STA(4):CN=STA(5):CH=STA(6)
340 ST=STA(1)
350 ' RACE
360 RAC=INT(7*RND+1)
370 IF RAC=2 THEN DX=DX+1:CN=CN-1
380 IF RAC=4 THEN CN=CN+1:CH=CH-1
390 IF RAC=6 THEN ST=ST-1:DX=DX+1
400 IF RAC=7 THEN ST=ST+1:CN=CN+1:CH=CH-2
410 ' CLASS
420 IF ST>=IN AND ST>=WD AND ST>=DX THEN CL=1
430 IF IN>=ST AND IN>=WD AND IN>=DX THEN CL=2
440 IF WD>=ST AND WD>=IN AND WD>=DX THEN CL=3
450 IF DX>=ST AND DX>=IN AND DX>=WD THEN CL=4
460 IF ST=18 AND CL=1 THEN ST=ST+RND
470 ' HIT POINTS
480 IF CL=1 THEN HP=INT(10*RND+1)
490 IF CL=2 THEN HP=INT(4*RND+1)
500 IF CL=3 THEN HP=INT(8*RND+1)
510 IF CL=4 THEN HP=INT(6*RND+1)
520 IF CN=3 THEN HP=HP-2
530 IF CN>3 AND CN<7 THEN HP=HP-1
540 IF CN=15 THEN HP=HP+1
550 IF CN=16 THEN HP=HP+2
560 IF CN>16 AND CL<>1 THEN HP=HP+2
570 IF CN=17 AND CL=1 THEN HP=HP+3
580 IF CN=18 AND CL=1 THEN HP=HP+4
590 IF HP<1 THEN HP=1
600 ' SEX
610 SEX=INT(4*RND+1)
620 ' RACIAL MAXS,MINS
630 IF RAC=4 AND SEX=4 THEN 740
640 IF RAC=4 AND SEX<4 THEN 770
650 IF RAC=2 AND SEX=4 THEN 790
660 IF RAC=2 AND SEX<4 THEN 800
670 IF RAC=5 AND SEX=4 THEN 830
680 IF RAC=5 AND SEX<4 THEN 840
690 IF RAC=3 AND SEX=4 THEN 860
700 IF RAC=3 AND SEX<4 THEN 870
710 IF RAC=6 AND SEX=4 THEN 890
720 IF RAC=6 AND SEX<4 THEN 900
730 IF RAC=7 THEN 940
740 IF ST<8 THEN ST=8:IF ST>17 THEN ST=17
750 IF DX>17 THEN DX=17
760 IF CN<12 THEN CN=12:IF CH>16 THEN CH=16:GOTO 990
770 IF ST<8 THEN ST=8:IF DX>17 THEN DX=17
780 IF CN<12 THEN CN=12:IF CH>16 THEN CH=16:GOTO 990
790 IF ST> 16 THEN ST=16
800 IF IN<8 THEN IN=8
810 IF DX<7 THEN DX=7:IF CN<6 THEN CN=6
820 IF CH<8 THEN CH=8:GOTO 990
830 IF ST>15 THEN ST=15
840 IF ST<6 THEN ST=6:IF IN<7 THEN IN=7
850 IF CN<8 THEN CN=8:GOTO 990
860 IF ST>17 THEN ST=17
870 IF IN<4 THEN IN=4 THEN IN=4:IF DX<6 THEN DX=6
880 IF CN<6 THEN CN=6:GOTO 990
890 IF ST>14 THEN ST=14:GOTO 910
900 IF ST>17 THEN ST=17
910 IF ST<6 THEN ST=6:IF IN<6 THEN IN=6
920 IF WD>17 THEN WD=17:IF DX<7 THEN DX=8
930 IF CN<10 THEN CN=10:GOTO 990
940 IF ST<6 THEN ST=6
950 IF IN>17 THEN IN=17
960 IF WD>14 THEN WD=14
970 IF CN<13 THEN CN=13
980 IF CH>12 THEN CH=12
990 ' MONEY
1000 IF CL=1 THEN 1040
1010 IF CL=2 THEN 1090
1020 IF CL=3 THEN 1140
1030 IF CL=4 THEN 1190
1040 FOR A=1 TO 5
1050 FM=INT(4*RND+1)
1060 M=M+FM
1070 NEXT A
1080 GOTO 1230
1090 FOR B=1 TO 2
1100 MM=INT(4*RND+1)
1110 M=M+MM
1120 NEXT B
1130 GOTO 1230
1140 FOR C=1 TO 3
1150 CM=INT(6*RND+1)
1160 M=CM+M
1170 NEXT C
1180 GOTO 1230
1190 FOR D=1 TO 2
1200 TM=INT(6*RND+1)
1210 M=TM+M
1220 NEXT D
1230 GP=10*M
1240 ' PSIONICS
1250 IF IN<16 AND WD<16 AND CH<16 THEN 1770
1260 IF IN>16 THEN IP=2.5*(IN-16)
1270 IF WD>16 THEN WP=1.5*(WD-16)
1280 IF CH>16 THEN CP=0.5*(CH-16)
1290 PSI=INT(100-(IP+WP+CP))
1300 PR=INT(100*RND+1)
1310 IF PSI>PR THEN PS=1:GOTO 1770
1320 IF PSI<=PR THEN PS=2
1330 ' PSI ABILITY
1340 IF IN>12 THEN IS=IN-12
1350 IF WD>12 THEN WS=WD-12
1360 IF CH>12 THEN CS=CH-12
1370 SB1=IS+WS+CS
1380 IF IN>16 AND WD>16 AND CH>16 THEN SB1=4*SB1
1390 IF IN>16 AND WD>16 OR CH>16 AND CH>16 OR WD>16 AND CH>16 THEN SB1=2*SB1
1400 PSAB=((INT(100*RND+1))+SB1)*2
1410 ' PSI ATTACK
1420 PSAT=INT(100*RND+1)
1430 IF PSAT<26 THEN PSA=1
1440 IF PSAT>25 AND PSAT<51 THEN PSA=2
1450 IF PSAT>50 AND PSAT<76 THEN PSA=3
1460 IF PSAT>75 AND PSAT<96 THEN PSA=4
1470 IF PSAT>95 AND PSAT<=100 THEN PSA=5
1480 ' PSI DEFENSE
1490 PSDT=INT(100*RND+1)
1500 IF PSDT<26 THEN PSD=2
1510 IF PSDT>25 AND PSDT<76 THEN PSD=3
1520 IF PSDT>75 AND PSDT<96 THEN PSD=4
1530 IF PSDT>95 THEN PSD=5
1540 ' PSI DISIPLINES
1550 PD=INT(100*RND+1)
1560 IF PD<11 THEN MI=1:MA=0
1570 IF PD>10 AND PD<26 THEN MI=2:MA=0
1580 IF PD>25 AND PD<41 THEN MI=3:MA=0
1590 IF PD>40 AND PD<56 THEN MI=2:MA=1
1600 IF PD>55 AND PD<71 THEN MI=3:MA=1
1610 IF PD>70 AND PD<81 THEN MI=4:MA=1
1620 IF PD>80 AND PD<91 THEN MI=3:MA=2
1630 IF PD>90 AND PD<96 THEN MI=5:MA=1
1640 IF PD>95 THEN MI=4:MA=2
1650 FOR V=1 TO MI
1660 PDMI(V)=INT(24*RND+1)
1670 FOR H=I TO V-1
1680 IF PDMI(V)=PDMI(H) THEN 1660
1690 NEXT H
1700 NEXT V
1710 FOR J=1 TO MA
1720 PDMA(J)=INT(20*RND+1)
1730 FOR K=1 TO J-1
1740 IF PDMA(J)=PDMA(K) THEN 1720
1750 NEXT K
1760 NEXT J
1770 ' ALIGNMENT
1780 ALIG=INT(9*RND+1)
1790 IF CL=4 AND ALIG=1 OR CL=4 AND ALIG=3 THEN 1780
1800 ' AGE
1810 IF RAC=1 AND CL=1 THEN AGE=(INT(4*RND+1))+15
1820 IF RAC=1 AND CL=2 THEN AGE=(INT(16*RND+12))+24
1830 IF RAC=1 AND CL=3 THEN AGE=(INT(4*RND+1))+18
1840 IF RAC=1 AND CL=4 THEN AGE=(INT(4*RND+1))+18
1850 IF RAC=2 AND CL=1 THEN AGE=(INT(30*RND+5))+130
1860 IF RAC=2 AND CL=2 THEN AGE=(INT(30*RND+5))+150
1870 IF RAC=2 AND CL=3 THEN AGE=(INT(100*RND+10))+500
1880 IF RAC=2 AND CL=4 THEN AGE=(INT(30*RND+5))+50
1890 IF RAC=3 AND CL=1 THEN AGE=(INT(12*RND+3))+22
1900 IF RAC=3 AND CL=2 THEN AGE=(INT(16*RND+2))+30
1910 IF RAC=3 AND CL=3 THEN AGE=(INT(8*RND+2))+40
1920 IF RAC=3 AND CL=4 THEN AGE=(INT(24*RND+3))+22
1930 IF RAC=4 AND CL=1 THEN AGE=(INT(20*RND+5))+40
1940 IF RAC=4 AND CL=2 THEN 220
1950 IF RAC=4 AND CL=3 THEN AGE=(INT(40*RND+2))+250
1960 IF RAC=4 AND CL=4 THEN AGE=(INT(18*RND+3))+75
1970 IF RAC=5 AND CL=1 THEN AGE=(INT(20*RND+5))+60
1980 IF RAC=5 AND CL=2 THEN 220
1990 IF RAC=5 AND CL=3 THEN AGE=(INT(36*RND+3))+300
2000 IF RAC=5 AND CL=4 THEN AGE=(INT(20*RND+5))+80
2010 IF RAC=6 AND CL=1 THEN AGE=(INT(12*RND+3))+20
2020 IF RAC=6 AND CL=2 THEN 220
2030 IF RAC=6 AND CL=3 THEN 220
2040 IF RAC=6 AND CL=4 THEN AGE=(INT(8*RND+2))+40
2050 IF RAC=7 AND CL=1 THEN AGE=(INT(4*RND+1))+13
2060 IF RAC=7 AND CL=2 THEN 220
2070 IF RAC=7 AND CL=3 THEN AGE=(INT(4*RND+1))+20
2080 IF RAC=7 AND CL=4 THEN AGE=(INT(8*RND+2))+20
2090 ' 2ND SKILL
2100 SKI=INT(85*RND+1)
2110 ' HEIGHT AND WEIGHT DETERMINATION
2120 IF RAC=1 THEN A=23:B=60:C=36:D=100
2130 IF RAC=2 THEN A=17:B=50:C=51:D=70
2140 IF RAC=3 THEN A=17:B=56:C=63:D=88
2150 IF RAC=4 THEN A=13:B=42:C=71:D=104
2160 IF RAC=5 THEN A=10:B=36:C=26:D=67
2170 IF RAC=6 THEN A=13:B=30:C=31:D=42
2180 IF RAC=7 THEN A=12:B=59:C=89:D=102
2190 HT=(A*RND+B):WT=(C*RND+D)
2200 PRINT "STR-";ST;" INT-";IN;" WD-";WD;" DEX=";DX;" CN-";CN;" CH-";CH
2210 IF RAC=1 THEN PRINT "RACE-HUMAN";
2220 IF RAC=2 THEN PRINT "RACE-ELF";
2230 IF RAC=3 THEN PRINT "RACE-HALF ELF";
2240 IF RAC=4 THEN PRINT "RACE-DWARF";
2250 IF RAC=5 THEN PRINT "RACE-GNOME";
2260 IF RAC=6 THEN PRINT "RACE-HALFLING";
2270 IF RAC=7 THEN PRINT "RACE-HALF ORC";
2280 IF CL=1 THEN PRINT " CLASS-FIGHTER";
2290 IF CL=2 THEN PRINT " CLASS-MAGIC USER";
2300 IF CL=3 THEN PRINT " CLASS-CLERIC";
2310 IF CL=4 THEN PRINT " CLASS-THIEF";
2320 PRINT " HP-";HP;
2330 PRINT " MONEY-";GP
2340 IF ALIG=1 THEN PRINT "ALIGN-LG";
2350 IF ALIG=2 THEN PRINT "ALIGN-NG";
2360 IF ALIG=3 THEN PRINT "ALIGN-CG";
2370 IF ALIG=4 THEN PRINT "ALIGN-LN";
2380 IF ALIG=5 THEN PRINT "ALIGN-N";
2390 IF ALIG=6 THEN PRINT "ALIGN-CN";
2400 IF ALIG=7 THEN PRINT "ALIGN-LE";
2410 IF ALIG=8 THEN PRINT "ALIGN-NE";
2420 IF ALIG=9 THEN PRINT "ALIGN-CE";
2430 IF SEX<4 THEN PRINT " SEX-MALE"; ELSE PRINT " SEX-FEMALE";
2440 PRINT " AGE=";AGE;
2450 IF SKI<=2 THEN PRINT " 2ND SKILL-ARMORER"
2460 IF SKI>2 AND SKI<5 THEN PRINT " 2ND SKILL-BOWYER"
2470 IF SKI>4 AND SKI<11 THEN PRINT " 2ND SKILL-FARMER"
2480 IF SKI>10 AND SKI<15 THEN PRINT " 2ND SKILL-FISHER (NET)"
2490 IF SKI>14 AND SKI<21 THEN PRINT " 2ND SKILL-FORESTER"
2500 IF SKI>20 AND SKI<24 THEN PRINT " 2ND SKILL-GAMBLER"
2510 IF SKI>23 AND SKI<28 THEN PRINT " 2ND SKILL-HUNTER/FISHER(HOOK)"
2520 IF SKI>27 AND SKI<33 THEN PRINT " 2ND SKILL-HUSBANDMAN"
2530 IF SKI>32 AND SKI<35 THEN PRINT " 2ND SKILL-JEWELER"
2540 IF SKI>34 AND SKI<38 THEN PRINT " 2ND SKILL-LEATHERER"
2550 IF SKI>37 AND SKI<40 THEN PRINT " 2ND SKILL-PAINTER"
2560 IF SKI>39 AND SKI<43 THEN PRINT " 2ND SKILL-MASON"
2570 IF SKI>42 AND SKI<45 THEN PRINT " 2ND SKILL-MINER"
2580 IF SKI>44 AND SKI<47 THEN PRINT " 2ND SKILL-NAVIGATOR"
2590 IF SKI>46 AND SKI<50 THEN PRINT " 2ND SKILL-SAILOR"
2600 IF SKI>49 AND SKI<52 THEN PRINT " 2ND SKILL-SHIPWRIGHT"
2610 IF SKI>51 AND SKI<55 THEN PRINT " 2ND SKILL-TAILOR"
2620 IF SKI>54 AND SKI<58 THEN PRINT " 2ND SKILL-TEAMSTER"
2630 IF SKI>57 AND SKI<61 THEN PRINT " 2ND SKILL-TRADER"
2640 IF SKI>60 AND SKI<65 THEN PRINT " 2ND SKILL-TRAPPER"
2650 IF SKI>64 AND SKI<68 THEN PRINT " 2ND SKILL-WOODWORKER"
2660 IF SKI>67 AND SKI<85 THEN PRINT " 2ND SKILL-NO SKILL"
2670 PRINT "HEIGHT=";HT;" WEIGHT-";WT
2680 PRINT
2690 IF PS=2 THEN PRINT "PSI-YES";
2700 IF PS=1 THEN PRINT "PSI-NO":GOTO 2830
2710 PRINT " ATTACK MODES-";PSA;
2720 PRINT " DEFENSE MODES-";PSD
2730 PRINT "NO. OF MINORS=";MI;" NO. OF MAJORS-";MA
2740 PRINT "MINORS-";
2750 FOR V=1 TO MI
2760 PRINT;PDMI(V);
2770 NEXT V
2780 PRINT "MAJORS-";
2790 FOR J=1 TO MA
2800 PRINT;PDMA(J);
2810 NEXT J
2820 PRINT "PSI ABILITY=";PSAB
2830 PRINT:PRINT
2840 NEXT Q
2850 GOTO 170
2860 PRINT:PRINT "FINISHED"
2870 GOTO 2910
2880 PRINT "ACCESS DENIED !!!!"
2890 PRINT "BYE"
2900 Z$=SYS(CHR$(14%)+"BYE Y")
2910 END
1 Like

I wrote a tool in late 1982 to read CP/M 8" SS/SD floppies on a minicomputer - it’s in FORTRAN and I still have it on disk somewhere. Recovered from CCT some years ago. It was the first real FORTRAN program I wrote.

1 Like