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 -;ÈYPRA-ASS/ÃASS. 110 -; 120 -; 130 -;1. ÁENDERN DES ÓPRUNGVEKTORS 140 -; 150 - .BA$15D3 160 - JMP $1194 170 -; 180 -;2. ÂEFEHL .OB LOESCHEN 190 -; 200 - .BA$14A6 210 - .BY0,0 220 -; 230 -;3. ÓÁÖÅ ROUTINE FUER ËASSETTEN 240 -; 250 - .BA$1194 ;ÓTART 260 -; 270 - .EQCHROUT=$FFD2 280 - .EQSETLFS=$FFBA 290 - .EQSETNAM=$FFBD 300 - .EQSAVE=$FFD8 310 - .EQNAMLEN=6 320 -; 330 - LDA #$0D ;'ÃÒ' 340 - JSR CHROUT 350 - LDA #1 ;ÄATEIÎR 360 - TAX ;ÇÁ 370 - TAY ;ÓÁ 380 - JSR SETLFS 390 - LDA #NAMLEN 400 - LDX #<(NAME) 410 - LDY #>(NAME) 420 - JSR SETNAM 430 - LDA $0970 ;ÁNF.ÁDR 440 - STA $9E 450 - LDA $0971 460 - STA $9F 470 - LDX $FB ;ÅND.ÁDR 480 - LDY $FC 490 - LDA #$9E 500 - JSR SAVE 510 - RTS 520 -NAME .TX"LISTE$" 530 -; 540 -;4. ÁBSPEICHERN DES MODIFIZIERTEN 550 -; ÁSSEMBLERS UNTER DEM ÎAMEN 560 -; 'HYPRA-ASS/CASS.' 570 -; 580 - .BA$C000 590 - .EQLGTIT=15 600 - .EQENDE=$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 -;ÁSSEMBLIERUNG UND DEM ÅRSCHEINEN 830 -;DER ÍELDUNG 840 -;'PRESS RECORD & PLAY ON TAPE' 850 -;DRUECKEN ÓIE DIE 'ÓÔÏÐ'-ÔASTE. 860 -; 870 -;ÓIE KOENNEN DANN MIT 'ÓÙÓ 49152' 880 -;DEN KORRIGIERTEN ÁSSEMBLER AUF 890 -;ËASSETTE ABSPEICHERN