Frei nach mc 6/1983 Seite 29, adaptiert von G.Tillmanns

DATA - Generator

Meist ist es von Vorteil, ein Maschinenprogramm nicht getrennt, sondern zusammen mit dem Basic Programm zu laden. Es ist am einfachsten, wenn dieses Maschinenprogramm als Folge von DATA - Anweisungen vorliegt und mit POKE - Befehlen in den gewünschten Speicherbereich gebracht wird.

Dieses BASIC - Hilfsprogramm gestattet es auf einfache Weise ganze Serien solcher DATA - Anweisungen aus einem bereits im Speicher stehenden Maschinenprogramm zu generieren. Es erzeugt zudem die erforderliche Ladesequenz.

Der Umgang mit dem Basic - Hilfsprogramm ist denkbar einfach :

Nach dem Start sind die Anfangs- und Endadresse des Maschinenprogramms Dezimal oder Hexadezimal ( mit " H " z.B. 7000H ) einzugeben, dann optional die erste Zeilennummer des zu generierenden Programms. Das Programm schreibt die DATA Zeilen auf den Schirm. Man drückt nun so oft die RETURN - Taste, bis man unter der letzten Zeile angekommen ist. Die erzeugten DATA - Zeilen steht jetzt samt der Lade Routine im Speicher.


0 CLS : PRINT @11,"DATA-GENERATOR" : CLEAR 200
1 PRINT "VON ADR."; : GOSUB 18 : A = Z : PRINT "BIS ADR."; : GOSUB 18 : E = Z
2 PRINT "1.ZEILEN-NUMMER"; : GOSUB 18 : IF Z < 22 THEN Z = 22
3 CLS : PRINT @32," POKE31217,182:"; CHR$ (34);"0Î5
4 PRINT @95,Z;"FORI=";A;"TO";E; CHR$ (27); : IF E < 65536 THEN IF E < A, PRINT : PRINT : END
5 POKE 31138, INT (E / 256) : POKE 31139,E - 256 * PEEK (31138) : GOSUB 16 : N = 1
6 A = PEEK (31136) * 256 + PEEK (31137) : E = PEEK (31138) * 256 + PEEK (31139) : PRINT : PRINT
7 J = 0 : N = N + 1 : IF N > 6, PRINT @448,"CLS:RUN"; CHR$ (28); : GOSUB 16 : END
8 Z = PEEK (31140) * 256 + PEEK (31141) : Z = Z + 1 : T$ = STR$ (Z) + "DATA
9 IF A > E + 1 THEN J = LEN (T$) - 2 : PRINT MID$ (T$,2,J) : ELSE GOTO 12
10 IF N > 6, GOTO 7 : ELSE PRINT Z + 1;"READA:IFI>32767,POKEI-65536,A:NEXT";
11 PRINT ":ELSEPOKEI,A:NEXT"; CHR$ (28); : DELETE 6 - 21
12 IF J THEN T$ = T$ + RIGHT$ (A$,J) + "," : J = LEN (T$) - 2
13 IF J > 59 PRINT MID$ (T$,2,J) : GOSUB 16 : GOTO 7
14 M = A : IF A > 32767 THEN M = A - 65536
15 A$ = STR$ ( PEEK (M)) : A = A + 1 : J = LEN (A$) - 1 : GOTO 9
16 POKE 31136, INT (A / 256) : POKE 31137,A - 256 * PEEK (31136)
17 POKE 31140, INT (Z / 256) : POKE 31141,Z - 256 * PEEK (31140) : RETURN
18 INPUT A$ : Z = VAL (A$) : IF Z < 0 THEN Z = Z + 32766
19 IF RIGHT$ (A$,1) = "H" THEN J = LEN (A$) - 1 : Z = 0 : ELSE RETURN
20 FOR I = 1 TO J : N = ASC ( MID$ (A$,I,1)) - 48 : IF N > 9 THEN N = N - 7
21 IF N > 15 THEN RUN : ELSE Z = Z * 16 + N : NEXT : RETURN

Download des Generator – Programms.