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
- zu langsam vonstatten geht
- eine Abspeicherung in den vorgegebenen Speicherbereich unmöglich macht und
- bei der Rückspeicherung von der Kassette in den Computer zu umständlich wäre.
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
- Laden des Programmes »Hypra-Ass +«
- Starten des Programmes »Hypra-Ass +« mit RUN
- Eintippen des Assembler-Listings
- Assemblieren mit RUN
- Anhalten des Programms nach Erscheinen der Aufforderung »press record & play on tape« durch die RUN/STOP-Taste.
- Abspeichern des modifizierten Programms unter dem Namen »Hypra-Ass/Cass« mit SYS 49152.
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