3 ! **********************************************************************
4 ! Program          ERRINI.BAC       Utg}va  1.3      1986-05-13
5 ! av Bo Kullmar
6 ! Ins{nd av Kristoffer Eriksson
7 ! F|r ABC800M ABC800C ABC806, alla DOS?
8 ! Testad p} ABC806, LUX-NET & UFD-DOS
9 ! 
10 ! Ver 1.0 1986-04-26 Av <1789> Bo Kullmar, UFD-DOS
11 ! Ver 1.1 1986-04-29    <5357> Kristoffer Eriksson, Anpassning f|r LUX-NET
12 ! Ver 1.2 1986-05-01    <5357> T}l avsaknad av BASICINI.SYS el RAM:
13 ! Ver 1.3 1986-05-13    <5357> Rad 1340: 65453 -> 65452
20 ! 
21 ! Programmet kopierar BASICINI.SYS till RAM: och initierar det d{r. Efter
22 ! id` av Kristoffer Eriksson i MSG-inl{gg 3473, m|te ABC800.
23 ! OBS: Om programmet inte lyckas hitta v{rdet f|r 65452 f|r din maskin,
24 ! kan du kolla sj{lv vad det ska vara med PEEK2(65452) n{r du har BASICINI
25 ! initierad, och fylla i det p} rad 1310.
26 ! **********************************************************************
30 INTEGER : EXTEND 
31 ! 
1000 ! Program som ska chainas efter}t:
1010 L{nk$=''
1020 ! Kopiering av BASICINI till ramfloppy, 1=p}, 0=enbart initiering:
1030 Kopiera=1
1040 ! 
1050 Basicini$='BASICINI.SYS'
1060 Luxnet=PEEK(24678)=195 AND (PEEK(24688) AND 254)=8
1070 Errdata=65029 : IF Luxnet THEN Errdata=65040
1080 DIM Rec$=0 : POKE VAROOT(Rec$),16,0,SWAP%(Errdata+4),Errdata+4,16,0
1090 DIM Dosprom$=0 : POKE VAROOT(Dosprom$),0,16,0,96,0,16
1100 ! 
1110 IF Kopiera THEN IF FNCopy=21 THEN Kopiera=0
1120 ! 
1130 ! Kopiera indextabellen fr}n BASICINI till minnet:
1140 IF Kopiera THEN Dev$='RAM:' ELSE Dev$=''
1150 ON ERROR GOTO 1360
1160 OPEN Dev$+Basicini$ AS FILE 1
1170 POSIT #1,3
1180 GET #1,Basicinirec$ COUNT 16
1190 ON ERROR GOTO 
1200 ! 
1210 Lft=FNLft(1)+64832
1220 POKE Errdata,PEEK(Lft+0),PEEK(Lft+1) AND 31 ! Fysiskt filnr, Disk select
1230 Rec$=Basicinirec$
1240 CLOSE 
1250 ! 
1260 ! Finn om m|jligt rutinen som h{mtar feltexten:
1270 IF Luxnet=0 THEN Errfetch$=CHR$(213,245,33,9,254,190,35,40,2,48,250,125)
1280 IF Luxnet THEN Errfetch$=CHR$(213,245,30,0,33,20,254,190,28,35,48,251)
1290 Errfetch=INSTR(1,Dosprom$,Errfetch$)
1300 IF Errfetch<>0 THEN Errfetch=Errfetch+VARPTR(Dosprom$)-1
1310 IF Errfetch=0 THEN Errfetch=0 ! Fyll sj{lv i din maskins adress
1320 ! 
1330 ! On|digt g|ra en os{ker initiering av 65452 om den redan {r initierad:
1340 IF PEEK2(65452)=0 THEN POKE 65452,Errfetch,SWAP%(Errfetch)
1350 ! 
1360 ON ERROR GOTO 1370 : CHAIN L{nk$
1370 END 
1380 ! 
1390 DEF FNCopy LOCAL Rec$=253
1400   ON ERROR GOTO 1470
1410   OPEN Basicini$ AS FILE 1
1420   PREPARE 'RAM:'+Basicini$ AS FILE 2
1430   WHILE -1
1440     GET #1,Rec$ COUNT 253
1450     PUT #2,Rec$
1460   WEND 
1470   IF ERRCODE=38 CLOSE : RETURN 0
1480   IF ERRCODE=21 THEN CLOSE : RETURN 21
1490   ; 'Fel nr:' ERRCODE : STOP 
1500 FNEND 
1510 ! 
1520 DEF FNLft(Filnr) LOCAL Lu
1530   Lu=PEEK2(65356)
1540   WHILE Lu<>0
1550     IF PEEK(Lu+2)=Filnr THEN RETURN PEEK(Lu+21)
1560     Lu=PEEK2(Lu)
1570   WEND 
1580   RETURN 0
1590 FNEND 
