Dies ist eine alte Version des Dokuments!
IDAS
Ein Interaktiver Dialogassembler für KC 87
Speicherbelegung
RAM-Version 0400h-1BFFh
ROM-Version 0C000h-0E7FFh
Es gibt zwei ROM-Versionen: Da der IDAS nur ~ 6KByte Speicher belegt, sind im Modul noch 4K ROM frei. Mein IDAS-Modul meldet sich mit „IDAS :“ und enthält im zusätzlichen Speicher den ZM 2.0 (Z9001 MONITOR V2.0 (ROM) 1985) und die EPROM-Software für das Programmier-Modul.
Der IDAS bei U. Zander meldet sich mit „INTERPRETING DIALOG-ASSEMBLER“ und enthält zusätzlich den ZM (Z9001 MONITOR CENT. 1986), RENEW und QUICK,NORMAL,LOAD.
Auch von der RAM-Version gibt es verschiedene Fassungen.
Anleitung
IDAS belegt den Speicher von 0300H bis 10FFH.
Nach Start erscheint die Meldung 'IDAS:'; mit Eingabe des Buchstabens 'N' erfolgt ein Neustart, jede andere Taste bewirkt einen Restart. Eine Zuweisung der Speicherbereiche fuer Quelltext (TB) und Maschinencode (MC) ist mit dem Kommando ASGN möglich.
Standard: MC 1C00H - 1FFFH und TB 2000H - …
Bei Bereichsüberschreitung erfolgt eine Fehlermeldung ( +TB+ / +MC+ ).
IDAS wird durch das Kommando CM ( Call Monitor ) verlassen.
Im Kommando-Mode werden die eingegebenen Befehle sofort ausgeführt. Die Befehle DI, IM0, IM1 sind hier verboten, da sie die Interrupt-Bearbeitung der CPU beeinflussen und dadurch die Tastaturabfrage blockieren. Danach hilft nur noch RESET. Es ist zu beachten, dass IDAS eventuell vorhandenen Quelltext übersetzt, bevor er einen Befehl im Kommandomode ausführt. Dadurch kann auch im Kommandomode auf Marken des Quelltextes Bezug genommen werden.
Im Editmode erfolgt die Eingabe des Quelltextes in der Form:
Zeilennr. Marke: Befehl
Eine Marke kann stehen, muss aber nicht. Kommentare sind nicht möglich.
Verarbeitet wird ROBOTRON-Code für U880.
Gegenüberstellung der Schreibweise einiger Beispielbefehle:
ROBOTRON Zilog ROBOTRON Zilog M1: LD M,A M1: LD (HL),A OUT 80H OUT (80H),A JR M1-# JR M1 IN 3CH IN A,(3CH) JMP M1 JP M1 CMP 0 CP 0 JRC M1-# JR C,M1 ADD B ADD A,B JPZ M1 JP Z,M1 JMP M JP (HL) CANZ M1 CALL NZ,M1 RNC RET NC DJNZ M1-# DJNZ M1
Steueranweisungen für den Assembler
ORG adresse | Anfangsadresse ; muss im MC-Bereich liegen |
konstante:EQU wert | Wertzuweisung zu einem Symbolnamen |
BER anzahl | Bereich freihalten (wird nicht gelöscht) |
DB byte | Byte definieren |
DB 'text' | Text definieren |
DA adr | Adresse (Doppelbyte) definieren |
END | Ende des Quelltextes ; danach dürfen keine Befehle mehr stehen, sonst Absturz möglich |
Zahlenwerte k|nnen dezimal (ohne Kennzeichnung) oder hexadezimal (mit nachgestelltem 'H') angegeben werden. Zahlen müssen mit einer Ziffer beginnen, d.h. Hexadezimalzahlen größer 9FH benötigen eine Vornull (z.B.: 0CBH). Die Verwendung von ASCII-Zeichen ist möglich, wenn diese in Hochkommas eingeschlossen werden.
Bsp.: LD A,75 LD A,4BH LD A,'K' sind identisch.
Kommandos
LIST marke | Anzeige Quelltext ab Marke |
LIST zeile1,zeile2 | Anzeige Quelltext ab Zeile1 bis Zeile2 |
STEP abstand | neuer Abstand der Zeilennummern |
KILL | Löschen des gesamten Quelltextes |
KILL zeile1,zeile2 | Löschen Quelltext von Zeile1 bis Zeile2 |
RUN | ganzes Programm übersetzen und starten |
RUN zeile1 | Programm ab Zeile1 übersetzen und starten |
RUN zeile1,zeile2 | wie RUN, aber nur von Zeile1 bis Zeile2 |
ADDR markename | Ausgabe der Markenadresse |
PUT konstante | Ausgabe des Wertes der Konstanten |
DR | Anzeige Register |
DS | Speicher anzeigen / ändern (Ende mit 'STOP'-Taste) |
Fehlermeldungen
+ILO+ | unzulässige Operation |
+IO+ | Ein-/Ausgabefehler |
+LNR+ | unzulässige Zeilennummer |
+MDS+ | mehrfach definiertes Symbol |
+MNE+ | falsche Syntax ; unbekannter Code |
+NDS+ | nicht definiertes Symbol |
+OPD+ | Operandenfehler bzw. Operand fehlt |
+SYM+ | Symbolfehler |
(Ein „beliebter“ Fehler: in der Eingabezeile sind Control-Zeichen enthalten. Deshalb: keine Cursortasten benutzen ! )
Arbeit mit dem Massenspeicher
READ | Eingabe von Quelltext (an den Anfang) durch 'DEVICE (T/C)' T=Tape oder C=Console zuweisen. READ von Console ermöglicht Eingabe ohne Zeilennummern. Diese werden automatisch erzeugt. |
READ zeile1 | Einfügen von Quelltext ab Zeile1 |
READ marke | Einfügen von Quelltext ab Marke |
WRIT | Ausgabe von Quelltext durch 'DEVICE (T/C)' T=Tape oder C=Console zuweisen. |
WRIT zeile1 | |
WRIT marke | |
MCSV | MC-SAVE. Maschinencode entsprechend der bei ASGN zugewiesenen Adressen auf Kassette schreiben. |
MCSV adr1,adr2 | Speicherabzug von Adresse1 bis Adresse2 auf Kassette schreiben. |
Hinweise
Vom IDAS gibt es meherere verschiedene Versionen, die sich im Detail unterscheiden (Startmeldung, Fehlermeldungen, …). Die ROM-Versionen enthalten auch verschiedene Zusatzprograme.
IDAS RAM-Version Kassette R0122
1. Block CRC = DF95, SUM = 0536
2. Block CRC = EF0A, SUM = 51A5
3. Block CRC = 0904, SUM = E84B
4. Block CRC = 6904, SUM = 3FC4
mein Modul idas.rom
1. Block CRC = 7938, SUM = 8F16
2. Block CRC = 1809, SUM = F6E1
3. Block CRC = F7FA, SUM = 47AF
4. Block CRC = B8EF, SUM = C527
5. Block CRC = E250, SUM = D35F
ROM-Version U. Zander idas__c0.851
1. Block CRC = A02E, SUM = 8BC7
2. Block CRC = 628C, SUM = FBAD
3. Block CRC = A1C7, SUM = 4EA0
4. Block CRC = BBBA, SUM = C4D0
5. Block CRC = B139, SUM = EE30
ROM von W. Hasche idas_whasche.rom
1. Block CRC = A02E, SUM = 8BC7
2. Block CRC = 628C, SUM = FBAD
3. Block CRC = A1C7, SUM = 4EA0
4. Block CRC = BBBA, SUM = C4D0
5. Block CRC = 4FDA, SUM = C4F0