1 REM Ins{nd av Paul Pries <5322> 1986-11-14 09.12.11 (SEND)
1 ! Info om POKEITH.BAC!
2 ! Programmet g|r en basic fil med poke-satser av en ITH-fil.
3 ! Valfri adressering och valfria radnummer. Infil m}ste ha ext. " ITH "
4 ! Utfil f}r ext. " PKE ".
5 !
6 ! F}r fritt anv{ndas av medlemmar i ABC-klubben, dock ej i komersiellt
7 ! syfte.
8 !
9 ! Hopas det blir till nytta f|r n}'n!
10 ! Om intresse finns kan jag skicka fler filer av denna typen.
11 !
12 ! Testad p} 802 & 806.
13 !
14 !
15 !
100 ! Program : POKEITH.BAC
110 !
120 ! Rev. date / Rev.numb. / Sign. / Note
130 ! 86-09-27 / 1.00 / Pri / Main
140 !
150 !
160 !
170 !
180 !
190 ! (c) Paul Pries Pl.125 Nordan}, 23200 Arl|v, 040-445108 / -16
200 !
210 !
220 ! *************************************************************************
230 ! ** **
240 ! ** Variable declaration part. **
250 ! ** **
260 ! *************************************************************************
270 !
280 EXTEND : INTEGER
290 !
300 IF PEEK(65364%)>40% Sp$=SPACE$((PEEK(65364%)-40%)/2%)
310 Line1$=Sp$+' Konvertering .ITH --> POKE '+Sp$
320 Line25$=' Copyright: Paul Pries, Pl.125 Nordan}, 23200 Arl|v, 040-445108 & 16 '
330 Inf%=1% : Uf%=2% : True%=-1% : False%=0% : X%=1%
340 H$='0123456789ABCDEF'
350 !
360 ! *************************************************************************
370 ! ** **
380 ! ** Main program. **
390 ! ** **
400 ! *************************************************************************
410 !
420 Z%=FNInit%
430 Z%=FNFiles% : IF NOT Z% GOTO 500
440 Z$=FNGetline$ : IF ASCII(Z$)>126% GOTO 500 ! Fault indication
450 Z%=FNChangeload%(Z$) : IF Z%=0% GOTO 500
460 Outline$=FNConvert$(Z$) : IF ASCII(Outline$)>126% GOTO 500
470 Z%=FNPutline%(Outline$) : IF NOT Z% GOTO 500
480 Z$=FNGetline$ : IF ASCII(Z$)>126% GOTO 500 ELSE IF ASCII(Z$)=32% GOTO 490 ELSE GOTO 460
490 Z%=FNMorefiles% : IF Z% GOTO 420
500 END
510 END
520 !
530 ! *************************************************************************
540 ! ** **
550 ! ** Function declaration part **
560 ! ** **
570 ! *************************************************************************
580 !
590 DEF FNInit%
600 ; CHR$(12%) Line1$
610 Z%=FNLine25%(Line25$)
620 PRINT CUR(15%,15%) SPACE$(160%)
630 PRINT CUR(5%,15%); : INPUT ' Infil (.ITH) : 'Infil$
640 Z%=INSTR(1%,Infil$,'.')
650 IF Z% Inext$=MID$(Infil$,Z%,3%) ELSE Infil$=Infil$+'.ITH' : PRINT CUR(5%,31%) Infil$ : GOTO 680
660 IF Inext$='.BAC' PRINT CUR(15%,15%) CHR$(7%,7%,7%) ' Felaktigt programformat !! Ny infil? (J/N) ';
670 GET Sv$ : IF FNS%(Sv$) GOTO 620 ELSE RETURN False%
680 Utfil$=LEFT$(Infil$,INSTR(1%,Infil$,'.'))+'PKE'
690 PRINT CUR(7%,15%) ' Utfil : ' Utfil$
700 RETURN True%
710 FNEND
720 !
730 !
740 DEF FNFiles%
750 ON ERROR GOTO 790
760 OPEN Infil$ AS FILE Inf%
770 PREPARE Utfil$ AS FILE Uf%
780 RETURN True%
790 PRINT CUR(15%,15%) CHR$(7%,7%,7%) 'Error : ' ERRCODE ' ! Fler filer? (J/N) '; : GET Sv$
800 IF FNS%(Sv$) CLOSE : Z%=FNInit%+FNFiles% : RETURN True% ELSE GOTO 810
810 RETURN False%
820 FNEND
830 !
840 !
850 DEF FNGetline$
860 ON ERROR GOTO 900
870 INPUT LINE #Inf%,A$ : A$=LEFT$(A$,LEN(A$)-4%) : Inline$=RIGHT$(A$,2%)
880 IF MID$(Inline$,8%,1%)='1' RETURN ''
890 RETURN Inline$
900 IF ERRCODE=34% PRINT CUR(15%,15%) CHR$(7%,7%,7%) ' Sista raden! ' : CLOSE Inf% : RETURN ''
910 CLOSE Inf% : RETURN CHR$(127%)
920 FNEND
930 !
940 !
950 DEF FNChangeload%(Z$)
960 ON ERROR GOTO 1070
970 Adr$=MID$(Z$,3%,4%)
980 Adr%=FNCount%(Adr$,4096%,1%)
990 IF Adr%<0% GOTO 1070
1000 IF Adr%>ABS(32768%) GOTO 1020 ELSE GOTO 1010
1010 PRINT CUR(9%,15%) CHR$(7%,7%,7%) ' Du kan normalt inte POKE:a p} adress ' Adr%
1020 PRINT CUR(11%,15%) ' Modifiera laddadress? (J/N) '; : GET Sv$ : IF FNS%(Sv$)=0% PRINT CUR(13%,15%) : GOTO 1040
1030 PRINT CUR(13%,15%); : INPUT ' Ny laddadress : 'Ladr% : Adr%=Ladr%
1040 PRINT CUR(9%,15%) SPACE$(480%) : PRINT CUR(9%,15%);
1050 PRINT ' Laddadress : ' Adr%
1060 RETURN True%
1070 PRINT CUR(15%,15%) CHR$(7%,7%,7%) ' Fel har uppst}tt i adresshanteringen ! Tryck