Random demo
Random game
Random game
  • Entry name:
     Nadata 
  • Category:
    Databases/mailing lists
  • Publisher/Developer:
    Flop 6
  • Year:
    1990
  • Code:
    Ludek Burian
  • Media format:
    Diskette
  • Programming language:
    Atari BASIC
Nadata Nadata
Listing 1
1 REM ****************************
2 REM * Ludek Burian *
3 REM * M.Majerove 33 *
4 REM *798 11 Prostejov *
5 REM *__________________________*
6 REM * NADATA.BAS ver.0 *
7 REM * B&B SOFT (7.7.90) *
8 REM * AK Prostejov *
9 REM ****************************
10 REM
13 DIM A$(8),​D$(16),​H$(20),​A(20),​B(3),​Q$(1090)
15 GOSUB 5000
17 TUT1=0
18 POKE 16,​64
20 CLOSE #2:​OPEN #2,​4,​0,​"K:​"
30 ? "Cislo disku s databazi(1/2)"
40 GET #2,​A:​IF A=49 THEN D$="D1:​":​GOTO 70
50 IF A=50 THEN D$="D2:​":​GOTO 70
60 GOTO 40
70 REM
100 REM
110 ? "Nazev databaze ";:​INPUT A$
120 D$(4)=A$:​D$(LEN(D$)+1)=".DAT"
130 TRAP 150
140 CLOSE #1:​OPEN #1,​4,​0,​D$:​GOTO 160
150 ?:​? "Na disku neni tato database !":​?:​GOTO 100
160 NOTE #1,​Q,​W:​GET #1,​A:​GET #1,​B:​IF A<>82 OR B<>86 THEN ?:​? "Toto neni database MINI OFFICE!":​?:​CLOSE #1:​GOTO 100
170 GET #1,​A:​GET #1,​B:​POC=A+B*256
200 REM Nacitani nazvu
205 F=0:​? ""
210 FOR I=1 TO 20:​GET #1,​A:​A(I)=A:​S=1:​IF A=192 THEN S=0
215 IF S THEN ? I;" ";
220 IF S AND A<61 THEN ? "ALPHA ";
225 IF S AND A=64 THEN ? "INTGR ";
230 IF S AND A=65 THEN ? "DECIM ";
235 IF S AND A=128 THEN ? "DATE ";
240 IF S AND (A=66 OR A=67) THEN ? "FORM ";:​F=F+1
250 FOR ZP=1 TO 20:​GET #1,​B:​IF S THEN ? CHR$(B);:​IF B=155 THEN S=0
260 NEXT ZP:​IF A<61 THEN ? "";A
270 NEXT I:​?
280 IF F>0 THEN FOR I=1 TO F:​FOR ZP=1 TO 40:​GET #1,​A:​NEXT ZP:​NEXT I
290 ? "V poradku (A/N)?":​GET #2,​A
300 IF A=78 THEN ?:​? "Tak znova!":​?:​GOTO 100
310 IF A<>65 THEN ? "";:​GOTO 290
320 TRAP 320:​? "Kam zapisovat cislo disku(0=NIC)";:​INPUT A
330 IF A=0 THEN B(1)=0:​GOTO 370
340 IF A(A)>60 THEN 320
350 IF A(A)<4 THEN ? "Toto pole ma jenom ";A(A);" pozic. Chces presto zapsat?";:​GET #2,​ZP:​IF ZP<>65 THEN 320
360 B(1)=A
370 TRAP 370:​? "Kam zapisovat nazev pole(0=NIC)";:​INPUT A
372 IF A THEN 380
375 ?:​?:​? "Kdyz nechces zapsat tuto polozku,​ tak me nadrazdi a nahrej si jinej program!!":​? "";:​GOTO 370
380 IF A(A)>60 OR A=B(1) THEN 370
390 IF A(A)<12 THEN ? "Toto pole ma jenom ";A(A);" pozic. Chces presto zapsat?";:​GET #2,​ZP:​IF ZP<>65 THEN 370
400 B(2)=A
410 TRAP 410:​? "Kam zapisovat pocet sektoru(0=NIC)";:​INPUT A
420 IF A=0 THEN B(3)=A:​GOTO 500
425 IF A=B(1) OR A=B(2) THEN 410
430 IF A(A)<3 OR A(A)>60 THEN 410
440 IF A(A)<61 THEN B(3)=A:​PS=1:​GOTO 500
500 REM Nacteni hlavicek
510 NOTE #1,​Q1,​W1
520 HLA=PEEK(560)+PEEK(561)*256-(POC*4+20):​HLA1=HLA+POC*4-1
530 FOR I=HLA TO HLA1:​GET #1,​A:​POKE I,​A:​NEXT I
540 GOSUB 5100
800 REM Nacitani direktiv
805 DAT=PEEK(144)+PEEK(145)*256+5000:​DAT1=DAT
806 TUT=INT((HLA-DAT)/20):​?:​? "Zavazuji se,​ ze si budu pamatovat ";TUT;" direktiv":​FOR A=0 TO 300:​NEXT A
810 IF B(1) THEN DIM C$(A(B(1)))
815 TUT1=0
820 ? ""
830 IF B(1) THEN ? "Cislo disku";:​INPUT C$
840 TRAP 840:​? "Vloz disk a stiskni klavesu";:​GET #2,​A:​?:​?
850 CLOSE #1:​OPEN #1,​6,​0,​"D:​*.*"
860 TRAP 900:​I=0
870 INPUT #1,​H$:​Q$(I*15+1)=H$(3):​I=I+1
880 GOTO 870
900 TRAP 820:​Q$(I*15)=""
910 FOR ZP=0 TO I-2 STEP 2:​? ZP;" ";Q$(ZP*15+1,​ZP*15+15);
920 IF I-ZP-2 THEN ? " ";ZP+1;" ";Q$((ZP+1)*15+1,​(ZP+1)*15+15)
930 NEXT ZP:​?:​?
940 ? "Zrusit polozku,​souhlas,​jiny disk (Z/A/D)"
950 GET #2,​A
960 IF A=68 THEN 820
970 IF A=65 THEN 1100
980 IF A<>90 THEN 950
990 TRAP 990:​? "Zrusit polozku cislo";:​INPUT A
1000 IF A>I-2 THEN ? "";:​GOTO 940
1010 Q$(A*15+1)=Q$((A+1)*15+1):​I=I-1:​? ""
1020 GOTO 910
1100 REM Ulozeni dat
1101 A1=HLA+3
1102 IF I=1 THEN 820
1103 TUT1=TUT1+I-1:​GOSUB 5200
1104 IF NOT (B(1)) THEN 1120
1106 POKE DAT1,​I-1:​DAT1=DAT1+1
1108 IF LEN(C$)=0 THEN POKE DAT1,​155:​DAT1=DAT1+1:​GOTO 1120
1110 FOR A=1 TO LEN(C$):​POKE DAT1,​ASC(C$(A,​A)):​DAT1=DAT1+1:​NEXT A:​POKE DAT1,​155:​DAT1=DAT1+1
1120 H$="":​FOR ZP=0 TO I-2
1130 H$(1,​11)=Q$(ZP*15+1):​H$(12)=" "
1140 FOR A=1 TO 8:​IF H$(A,​A)=" " THEN H$(A,​A)=".":​H$(A+1)=H$(9):​GOTO 1160
1150 NEXT A:​A$=".":​A$(2)=H$(9):​H$(9)=A$
1160 IF H$(A+1,​A+1)=" " THEN H$(A,​A)=" "
1165 H$(13)=""
1170 FOR A=1 TO 12:​POKE DAT1,​ASC(H$(A,​A)):​DAT1=DAT1+1:​NEXT A
1180 FOR A=0 TO 2:​POKE DAT1,​ASC(Q$(A+ZP*15+13,​A+ZP*15+13)):​DAT1=DAT1+1:​NEXT A
1190 NEXT ZP
1200 ? "Dalsi disk nebo ulozit data(D/U):​"
1210 GET #2,​A:​IF A=68 THEN 820
1220 IF A<>85 THEN 1210
1230 ? "Vloz disk s databazi a stiskni klavesu":​GET #2,​A
1240 TRAP 1230:​CLOSE #1:​OPEN #1,​12,​0,​D$
1250 NOTE #1,​A,​B:​IF A<>Q THEN 1230
1260 ?:​? " Zapal si zatim,​ mne to chvili potrva"
1300 TRAP 40000:​REM Ukladani dat
1350 IF NOT (B(1)) THEN R=1:​GOTO 1395
1360 R=PEEK(DAT):​DAT=DAT+1
1370 C$="":​FOR I=1 TO 62
1380 IF PEEK(DAT)=155 THEN DAT=DAT+1:​GOTO 1395
1390 C$(I)=CHR$(PEEK(DAT)):​DAT=DAT+1:​NEXT I
1395 POP:​FOR ZP=1 TO R
1400 FOR I=1 TO 15
1410 H$(I)=CHR$(PEEK(DAT)):​DAT=DAT+1
1420 NEXT I
1430 REM
1440 GOSUB 8000
1450 FOR I=1 TO 20
1460 IF B(1)=I THEN GOTO 1610
1470 IF B(2)=I THEN GOTO 1650
1480 IF B(3)=I THEN GOTO 1700
1490 IF A(I)=192 THEN 1600
1500 IF A(I)<61 THEN FOR A=1 TO A(I):​PUT #1,​155:​NEXT A:​GOTO 1600
1510 IF A(I)=128 THEN FOR A=1 TO 3:​PUT #1,​0:​NEXT A:​GOTO 1600
1520 FOR A=1 TO 5:​PUT #1,​0:​NEXT A
1600 NEXT I:​GOTO 4000
1610 S=1:​FOR A=1 TO A(I)
1615 IF A>LEN(C$) THEN S=0
1620 IF S THEN PUT #1,​ASC(C$(A,​A)):​GOTO 1640
1630 PUT #1,​155
1640 NEXT A:​GOTO 1600
1650 S=1:​FOR A=1 TO A(I)
1660 IF H$(A,​A)=" " OR A=13 THEN S=0
1670 IF S THEN PUT #1,​ASC(H$(A,​A)):​GOTO 1690
1680 PUT #1,​155
1690 NEXT A:​GOTO 1600
1700 S=1:​FOR A=1 TO A(I)
1710 IF A=4 THEN S=0
1720 IF S THEN PUT #1,​ASC(H$(A+12,​A+12)):​GOTO 1740
1730 PUT #1,​155
1740 NEXT A:​GOTO 1600
4000 NEXT ZP:​IF DAT<DAT1 THEN 1300
4010 POINT #1,​Q1,​W1
4020 FOR I=HLA TO HLA1:​PUT #1,​PEEK(I):​NEXT I
4030 GRAPHICS 0:​? " Hotovo":​?:​?
4040 ? "Vase spokojenost nas cil"
4050 END
5000 DATA 0,​0,​48,​111,​99,​101,​116,​0,​109,​105,​115,​116,​0,​118,​0,​100,​97,​116,​97,​98,​97,​122,​105,​26,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0
5005 DATA 0,​0,​0,​0
5010 DATA 0,​0,​58,​97,​122,​110,​97,​109,​117,​0,​118,​0,​112,​97,​109,​101,​116,​105,​26,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0
5020 DATA 0,​0,​0,​0,​0,​0,​0,​34,​6,​34,​0,​51,​47,​38,​52,​0,​0,​0,​0,​0,​0,​0
5025 GRAPHICS 0:​POKE 708,​220:​POKE 709,​0:​POKE 710,​200
5030 RESTORE 5000:​FOR I=1536 TO 1635:​READ A:​POKE I,​A:​NEXT I
5040 DL=PEEK(560)+PEEK(561)*256-2
5050 POKE DL,​66:​POKE DL+1,​0:​POKE DL+2,​6:​POKE DL+3,​2:​POKE DL+4,​6
5060 POKE 560,​PEEK(560)-2
5070 POKE DL+32,​PEEK(DL+32)-2
5080 RETURN
5100 TUT1=0:​FOR I=HLA+3 TO HLA1 STEP 4
5110 IF PEEK(I)=0 THEN TUT1=TUT1+1
5120 NEXT I:​IF TUT1=0 THEN ? "Promin,​ ale nemas misto v databazi!":​END
5125 TUT2=TUT1
5130 POKE 1570,​16+INT(TUT1/1000):​TUT1=TUT1-(INT(TUT1/1000))*1000
5140 POKE 1571,​16+INT(TUT1/100):​TUT1=TUT1-(INT(TUT1/100))*100
5150 POKE 1572,​16+INT(TUT1/10):​TUT1=TUT1-(INT(TUT1/10))*10
5160 POKE 1573,​16+TUT1
5170 RETURN
5200 IF TUT1>TUT OR TUT1>TUT2 THEN 5300
5205 TUT4=TUT1
5210 POKE 1610,​16+INT(TUT4/1000):​TUT4=TUT4-(INT(TUT4/1000))*1000
5220 POKE 1611,​16+INT(TUT4/100):​TUT4=TUT4-(INT(TUT4/100))*100
5230 POKE 1612,​16+INT(TUT4/10):​TUT4=TUT4-(INT(TUT4/10))*10
5240 POKE 1613,​16+TUT4
5250 RETURN
5300 ?:​? "Promin,​ ale mas malou kapacitu!":​FOR I=0 TO 500:​NEXT I:​GOTO 1230
6000 STOP
8000 REM Ukladani dat
8010 FOR A1=A1 TO HLA1 STEP 4
8020 IF PEEK(A1)<>0 THEN NEXT A1
8030 A=PEEK(A1-3)+PEEK(A1-2)*256:​B=PEEK(A1-1)
8040 POINT #1,​A,​B
8050 POKE A1,​1
8060 RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!