Endlich: Hypra-Ass mit Datasette

Bisher war es nicht möglich, ein Maschinenprogramm direkt auf Kassette zu assemblieren. Mit diesem kleinen Programmzusatz wird das anders.

Für die Speicherung des Objektcodes auf Kassette ist der Pseudobefehl ».ob "file, p, w"« nur sehr eingeschränkt nutzbar. Man könnte durch Ändern der Geräte- und Sekundäradresse in der entsprechenden Routine den Objektcode als Datei aufzeichnen, was aber

Die dem ».ob«-Befehl zugeordnete Routine wurde deshalb von mir umgeschrieben. Den Pseudobefehl ».ob« habe ich, um eventuelle Unklarheiten zu vermeiden, gelöscht.

Betroffene Speicherstellen/-bereiche des Hypra-Ass

Die Liste der Pseudobefehle ist ab $149c, die dazugehörigen Adressen (-1) ab $14c8 abgelegt. Die ».ob«-Befehlsroutine liegt entsprechend von $1194 bis $llbc.

Der Rücksprung in den Anfangszustand nach erfolgter Assemblierung erfolgt mit dem Befehl »JMP $ aad7« ab Adresse $ 15d3.

Der Speicherbereich, in dem der Objektcode nach erfolgter Assemblierung abgelegt wird, ist folgendermaßen definiert:
Anfangsadresse in $0970 und $0971
Endadresse +1 in $00fb und $00fc

Programm

Das Programm wurde mit Hypra-Ass erstellt und dürfte sich wegen seiner Kürze und durch die angefügten Bemerkungen selbst erklären. Die verwendeten Kernel-Routinen sind zum Beispiel im Commodore Programmierhandbuch (Sachbuchreihe 1) ausreichend erläutert.

Eingabehilfe

Bei der Benutzung des so modifizierten Assemblers erscheint nach der normalen Ausgabemeldung die Aufforderung »press record & play on tape«. Nach Drücken dieser Tasten wird der assemblierte Objektcode unter dem Namen »LI-STE$« direkt auf Band und zwar in den (mit .ba) vorgewählten Bereich gespeichert.

Ein Zurückladen dieses Objektcodes in den Computer kann durch einfaches LOAD beziehungsweise LOAD »Liste$« erfolgen. Soll der Objektcode nicht gespeichert werden, ist es möglich, durch Drücken der RUN/STOP-Taste den Assembler wieder in den Anfangszustand zurückzuversetzen.

(Edgar Bäumler/ah)
100 -;HYPRA-ASS/CASS.
110 -;
120 -;
130 -;1. AENDERN DES SPRUNGVEKTORS
140 -;
150 -.BA $15D3
160 -          JMP $1194
170 -;
180 -;2. BEFEHL .OB LOESCHEN
190 -;
200 -.BA $14A6
210 -.BY 0,0
220 -;
230 -;3. SAVE ROUTINE FUER KASSETTEN
240 -;
250 -.BA $1194                ;START
260 -;
270 -.DEFINE CHROUT   = $FFD2
280 -.DEFINE SETLFS   = $FFBA
290 -.DEFINE SETNAM   = $FFBD
300 -.DEFINE SAVE     = $FFD8
310 -.DEFINE NAMLEN   = 6
320 -;
330 -          LDA #$0D       ;'CR'
340 -          JSR CHROUT
350 -          LDA #1         ;DATEINR
360 -          TAX            ;GA
370 -          TAY            ;SA
380 -          JSR SETLFS
390 -          LDA #NAMLEN
400 -          LDX #<(NAME)
410 -          LDY #>(NAME)
420 -          JSR SETNAM
430 -          LDA $0970      ;ANF.ADR
440 -          STA $9E
450 -          LDA $0971
460 -          STA $9F
470 -          LDX $FB        ;END.ADR
480 -          LDY $FC
490 -          LDA #$9E
500 -          JSR SAVE
510 -          RTS
520 -NAME      .TX "LISTE$"
530 -;
540 -;4. ABSPEICHERN DES MODIFIZIERTEN
550 -;   ASSEMBLERS UNTER DEM NAMEN
560 -;   'HYPRA-ASS/CASS.'
570 -;
580 -.BA $C000
590 -.DEFINE LGTIT    = 15
600 -.DEFINE ENDE     = $1FD8
610 -;
620 -          LDA #1
630 -          TAX
640 -          TAY
650 -          JSR SETLFS
660 -          LDA #LGTIT
670 -          LDX #<(TITEL)
680 -          LDY #>(TITEL)
690 -          JSR SETNAM
700 -          LDA #0
710 -          STA $A8
720 -          LDA #8
730 -          STA $A9
740 -          LDA #$A8
750 -          LDX #<(ENDE)
760 -          LDY #>(ENDE)
770 -          JSR SAVE
780 -          RTS
790 -TITEL     .TX "HYPRA-ASS/CASS."
800 -;
810 -;NACH DURCHGEFUEHRTER
820 -;ASSEMBLIERUNG UND DEM ERSCHEINEN
830 -;DER MELDUNG
840 -;'PRESS RECORD & PLAY ON TAPE'
850 -;DRUECKEN SIE DIE 'STOP'-TASTE.
860 -;
870 -;SIE KOENNEN DANN MIT 'SYS 49152'
880 -;DEN KORRIGIERTEN ASSEMBLER AUF
890 -;KASSETTE ABSPEICHERN
Assembler-Listing: Mit dieser Erweiterung kann jeder Datasette-Besitzer den »Hypra-Ass« vollausnutzen.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →