1 REM Ins{nd av Kjell Svensson <5318> 1988-11-20 21.08.35 (KERMIT)
10 REM LIST- QAD.BAS
20 REM Uppdaterad 881107
30 REM
40 REM Copyright (C) Lars-]ke Johansson
50 REM , 1988 V[STER]S
60 REM , John-Erik N{slund
70 REM , 1988 STOCKHOLM
80 REM +------------------------------
90 REM ! Beskrivning
100 REM
110 REM Quick Access Disc
120 REM =================
130 REM
140 REM Denna fria version av QAD
150 REM kan anv{ndas f|r att lagra
160 REM filer i prim{rminnet
170 REM
180 REM Har du bara kasettbandare s} blir
190 REM detta ett litet lyft
200 REM Du m}ste dock ha 32 KB minne
210 REM
220 REM QADens b|rjan s{tts av
230 REM adress 32769 till 201*256
240 REM
250 REM Du b|r max anv{nda 14 filer
260 REM i denna mini version.
270 REM
280 REM Det finns {ven en proffsversion
290 REM som anv{nder ett externt 128 KB
300 REM RAM-kort.
310 REM Vi tar 600 kr f|r 128 KB kortet
320 REM --------------------------
330 REM Du {r alltid v{lkommen att
340 REM st{lla fr}gor om det {r n}got
350 REM som {r oklart
360 REM 08/7196198 dagtid J-E N{slund
370 REM +------------------------------
380 REM BOFA=187,135 =34747
390 REM
400 REM 34708=201 i Ver 7.1
410 REM ;CALL(B,startadress)
420 REM ;CALL(B+3,l{ngd p} discen i byte)
430 REM ;CALL(B+6,1 Ger QAD som f|rsta enheten i enhetslistan om du har flexskiva)
440 REM ;CALL(B+15,1 Frist{ller DOS-buffertar om du bara har kassett)
450 Z=INP(7)
460 REM Z=INP(3)
470 B=32770 : REM Startadress f|r drivrutinen
480 Q=PEEK(32769)*256 : REM QAD data b|rjar h{r
490 Q9=Q+256+12
500 REM +++++++++ HUVUD ++++++++++++++
510 ; CHR$(12);
520 ; STRING$(PEEK(590)-1,ASC("="))
530 ; TAB(7)"Quick Access Disc (QAD)"
540 ; STRING$(PEEK(590)-1,ASC("="))
550 ; "Lars-]ke Johansson / John-Erik N{slund"
560 ; STRING$(PEEK(590)-1,ASC("-"))
570 ;
580 ; "Detta program initierar en mycket snabb"
590 ; "RAM-disk i ditt normala RAM-minne"
600 ;
610 ; "Du kan lagra flera filer som anropas"
620 ; "precis som du anropar filer mot DR0:"
630 ;
640 ;
650 ; "Anrop fr}n BASIC:"
660 ;
670 ; "RUN L: ger fillista"
680 ; "RUN DR7: startar ett prog"
690 ;
700 IF PEEK(B)=195 AND PEEK(B+1938)=201 THEN GOTO 760
710 ; CHR$(7)"Hoppsan! Koden {r EJ inskriven i minnet"
720 ; "Jag g|r RUN QADBAS.KOD"; : FOR I=0 TO 3000 : NEXT I
730 CHAIN "QADBAS.KOD"
740 ;
750 REM ********************************
760 REM **** Testa Status hos QAD ******
770 REM ********************************
780 IF PEEK(65034)<>171 THEN ; " OBS! ";CHR$(10,13,7)"QAD ej f|rsta enhet i enhetslistan"
790 IF PEEK(65064)=251 OR PEEK(24576)=255 THEN POKE 65064,245 : \=CALL(B+15,1) : REM Skapa DOS-buffertar
800 IF PEEK(65064)*256<>Q OR PEEK(Q)<>255 OR PEEK(Q+1)<>255 F=1
810 IF F=0 S=PEEK(Q9)+1 : ; "QAD {r formaterad till"S-2" block"
820 IF F ; "QAD {r oformaterad" : IF S=0 S=PEEK(65064)-Q/256
830 ;
840 ; "Vill du {ndra n}got i QAD (J)";
850 GOSUB 1400
860 GOSUB 1540 : REM ------- SK[RM RENSNING -------
870 REM
880 IF F GOTO 1180
890 ; ,"QAD version"CALL(B,Q)/100
900 REM
910 REM Kolla om man m}ste formatera
920 IF PEEK(65064)*256<>Q ; "Dags att formatera" : S=(PEEK(65064)-Q/256) ELSE ; "Formaterad" : S0=PEEK(Q9)+1
930 REM QADs storlek h{mtas fr}n slutblocket
940 ;
950 ; "Anv{ndbar area";
960 ; S-2" block"
970 ;
980 REM
990 REM ************ QAD LIB ***********
1000 ONERRORGOTO 1030 : ; "RUN L:" : ;
1010 OPEN "L:" ASFILE 1
1020 INPUTLINE #1,A$ : ; A$; : GOTO 1020
1030 CLOSE 1
1040 IF N THEN END
1050 ; "ABC80"
1060 ;
1070 S=S0
1080 GOSUB 1480
1090 ; "Vill du formatera den 'RENSA' (N) ";
1100 GOSUB 1400 : IF J THEN ; ELSE GOTO 1280
1110 ; "Vill du {ndra storlek (N)";
1120 GOSUB 1400
1130 IF J ; "V{lj antal anv{ndbara block 1-64"; : INPUT S : S=S+2 : IF S<>S0 THEN Q=Q+S0*256-S*256
1140 REM NY QAD adress
1150 IF S<3 ; "F|r liten storlek" : ; "2 block g}r }t till Bibliotek och slutblock " : STOP
1160 REM
1170 REM
1180 REM INIT och FORMAT
1190 REM
1200 IF Q-1500<=PEEK(65057)*256 ; " S} stor RAM-disk kan du inte ha!" : END
1210 GOSUB 1540 : REM SK[RM RENSNING
1220 ; "QAD Version";
1230 REM FOR I=0 TO 4000 : NEXT I : REMF|r test
1240 Z=CALL(B,Q) : Z=CALL(B+3,S*256) : POKE 65063,Q,SWAP%(Q) : POKE 32769,Q/256 : REM S{nk TAKET
1250 ; Z/100
1260 ;
1270 ; "Din RAM-disk {r nu" : ; TAB(8)S-2" block ="(S-2)*252" tecken stor"
1280 ;
1290 GOSUB 1480
1300 ; 'Vill du ha QAD som f|rsta enhet (J) ';
1310 GOSUB 1400 : IF J OR G$=CHR$(13) THEN D=1 ELSE D=0
1320 IF PEEK(24576)=255 IF D POKE 34740,32,32,32 : ; : ; "DR7: default" ELSE POKE 34740,ASC("D"),ASC("R"),ASC("7")
1330 IF PEEK(24576)=195 Z=CALL(B+6,D) : ; : IF D ; : ; 'QAD {r nu "default"'
1340 ;
1350 ; "Skriv RUN L:"
1360 END
1370 REM Nu {r det bara att spara filer i QAD med SAVE L : FIL.BAC
1380 CHAIN ""
1390 REM ######### SUB rutiner #########
1400 REM Testa inmatningen
1410 REM JN och RETURN sl{pps igenom
1420 J=0 : N=0
1430 GET G$
1440 IF G$="J" OR G$="j" THEN J= NOT (J) : ; "J" : RETURN
1450 IF G$="N" OR G$="n" THEN N= NOT (N) : ; "N" : RETURN
1460 IF G$<>CHR$(13) GOTO 1400 ELSE ; CHR$(13);
1470 RETURN
1480 REM ========== PEKARE ========
1490 ; " BOFA EOFA HEAP STACK"
1500 ; PEEK(65052)+PEEK(65053)*256;PEEK(65054)+PEEK(65055)*256;
1510 ; PEEK(65056)+PEEK(65057)*256;PEEK(65063)+PEEK(65064)*256
1520 ;
1530 RETURN
1540 FOR I=3 TO 22 : ; CUR(I,0)SPACE$(PEEK(590)); : NEXT I : ; CUR(2,0) : RETURN