home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1994 October
/
64er_Magazin_94-10_1994_Markt__Technik_de_Side_A.d64
/
autostart-ass
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
5KB
|
132 lines
100 "; *******************
110 "; * *
120 "; * autostart fuer *
130 "; * *
140 "; * *
150 "; * basicprogramme *
160 "; * *
170 "; * auf c64, v1.0 *
180 "; * *
190 "; *******************
200 ";
210 ";
220 ";
240 ";
250 ";
260 ";
270 ";
280 " .ba $c900
290 " ;
300 " ;
310 " ;ramadressen
320 " ;***********
330 " ;
340 " ;
350 "basbl =$0308 ;enthalten einsprungadresse fuer basicbefehle
360 "basbh =$0309
370 " ;
380 "mbasbl =$c900 ;zwischenspeicher fuer alten basiceinsprung
390 "mbasbh =$c901
400 " ;
410 "nbasbl =$29 ;neue einsprungadresse fuer basicbefehle
420 "nbasbh =$c9 ;ist $c929
430 " ;
440 "filenr =$02 ;logische filenummer
450 "sekadr =$02 ;sekundaeradresse
460 "gernr =$08 ;enthaelt geraetenummer
470 " ;
480 "baszeil =$7a ;zeiger auf zeichen im basictext
490 "baszeih =$7b ;wird bei chrget erhoeht, bleibt bei chrgot konst
500 " ;
510 "prgendl =$2d ;programmendezeiger
520 "prgendh =$2e ;wird nach load jeweils gesetzt
530 " ;
540 " ;
550 " ;betriebssystemadressen
560 " ;**********************
570 " ;
580 " ;
590 "chrget =$0073 ;holt zeichen aus text
600 "chrgot =$0079 ;holt letztes zeichen aus text
610 "getname =$e257 ;holt filenamen
620 "syntax =$af08 ;syntax error
630 "intschl =$a7ae ;interpreterschleife
640 " ;
650 "load =$ffd5 ;load-routine
660 "run =$a659 ;run-routine
670 "setfil =$ffba ;setzt fileparameter
680 "erraus =$e0f9 ;fehlerauswertung nach load-routine
690 " ;
700 " ;
710 " ;init
720 " ;****
730 " ;
740 " ;
750 " .by $e4 ;defaultwert basiczeiger $a7e4
760 " .by $a7
770 " sei
780 " lda basbl ;lowzeiger pruefen
790 " cmp #nbasbl
800 " bne init ;ungleich, dann init
810 " lda basbh ;highzeiger vergleichen
820 " cmp #nbasbh
830 " beq rueck
840 "init lda basbl ;alten zeiger merken, lowbyte
850 " sta mbasbl ;in $c900 speichern
860 " lda basbh ;high-byte
870 " sta mbasbh ;in $c901 speicern
880 " lda #nbasbl ;neuen basiczeiger setzen
890 " sta basbl ;lowbyte $29 in $0308 speichern
900 " lda #nbasbh
910 " sta basbh ;highbyte $c9 in $0309 speichern
920 "rueck cli
930 " rts
940 " ;
950 " ;
960 " ;neuer einsprung
970 " ;***************
980 " ;
990 " ;
1000 " jsr chrget
1010 " cmp #'! ;ausrufezeichen ?
1020 " beq found ;ja, dann eigene routine
1030 "
1040 " ldx baszeil ;basiczeiger low
1050 " bne lab1
1060 " dec baszeih ;basiczeiger high dekrementieren, wenn low=0
1070 "lab1 dec baszeil ;basiczeiger low dekrementieren
1080 " jmp (mbasbl) ;interpreterbefehl ausfuehren
1090 "found jsr chrget ;zeiger auf erstes zeichen setzen
1100 " jsr getname ;holt filenamen
1110 " ldy #sekadr ;sekundaeradresse 2
1120 " lda #filenr ;filenummer 2
1130 " ldx #gernr ;geraetenummer 8 = floppy
1140 " jsr setfil ;setzt fileparameter
1150 " lda #$00 ;zeigt load an; $01 fuer verify
1160 " jsr load ;loadroutine
1170 " bcc ok ;fehlerausgabe
1180 " jmp erraus ;fehlermeldung ausgeben
1190 "ok stx prgendl ;endezeiger speichern
1200 " sty prgendh
1210 " jsr run ;programm starten
1220 " jmp intschl ;zurueck zur interpreterschleife
1230 " ;
1240 " ;
1250 " ;old
1260 " ;***
1270 " ;
1280 " ;
1290 " lda basbl ;basiczeiger pruefen; low
1300 " cmp #nbasbl ;gleich neuem zeiger
1310 " bne back ;ungleich, dann ruecksprung
1320 " lda basbh ;highbyte vergleichen
1330 " cmp #nbasbh ;gleich neuem zeiger ?
1340 " bne back
1350 " sei
1360 " lda mbasbl ;alter zeiger, low
1370 " sta basbl
1380 " lda mbasbh ;zeiger high
1390 " sta basbh ;originalzeiger zurueckholen
1400 " cli
1410 "back rts