2010-07-28 9 views
5

Ich habe kürzlich Motorola 68000 Programmierung neu besucht. Zugegeben, als ich den Kurs gemacht habe, habe ich gerade getan, was notwendig war, um bestanden zu werden (und hatte einen schrecklichen Professor) ... aber JETZT bin ich wirklich an dem Zeug interessiert. Wie auch immer, schaut durch mein altes Lehrbuch The 68000 Microprocessor by James L. Antonakos, er verwendet den folgenden Code ein:Haben verschiedene 68k-Simulatoren unterschiedliche TRAP-Aufgaben?

 ORG  $8000 
HMSG DC.B 'Hello!' 
     DC.B 0 
     ORG  #8100 
START MOVEA.L #HMSG,A3 
     TRAP #3 
     TRAP #9 
     END  START 

Dies würde in Easy68k nicht kompilieren, aber das Buch hat ASM68K referenced. Als ich den Code geändert habe, hat es funktioniert.

 ORG $1000 
HSMG DC.B 'Hello!',0 

START LEA HSMG,A1 
     MOVE #14,D0 
     TRAP #15 

END START 

Liegt das nur an den Unterschieden zwischen den Compilern? Oder fehlt mir hier etwas Größeres? Ich verstehe, dass im Simulator TRAP #15 führt, was Aufgabe in Register D0 zu der Zeit ist, aber gibt es verschiedene Trap-Aufgaben pro Simulator, oder ist das Standard über alle 68000 Prozessoren?

Danke!
Thomas

Antwort

8

Die Anweisung TRAP ruft nur eine Routine auf, auf die ein Langwort irgendwo im Speicher zeigt. Dieser Teil des Verhaltens ist allen 68000-CPUs gemeinsam. Wo dieses Longword zeigt, und was die Routine, auf die es hinweist, tut (und deshalb, wie Sie es an die Daten übergeben, die es benötigt, und so weiter), hängt vom jeweiligen System ab.

(Der Atari ST zum Beispiel verwendet TRAP in das Betriebssystem zu nennen, und Sie in der Regel alle relevanten Informationen über den Stack übergeben. Die Registerinhalte ignoriert wurden. Ich glaube auch Mac OS „System“ verwendet TRAP in ähnlicher Weise, , und der Amiga hat es überhaupt nicht benutzt.)

+0

+1 für den Unterschied zwischen Atari und Amiga OS Aufrufschemata zu erwähnen. :) –

+0

Ich erinnere mich nur immer daran, TRAP # 11 am Ende meines ganzen Codes zu verwenden, damals (flite ftl-68k ... sorry). Ich erinnere mich an den Tutor, der mir sagte, dass "es einfach die Kontrolle über das Board an das Betriebssystem zurückgibt". –

3

Das 68000 stellt 16 Benutzer-Traps (Software-Interrupts/Exceptions) zur Verfügung, spezifiziert aber nicht, was sie tun. Das liegt am System-BIOS/OS, egal ob es sich um einen Simulator oder Amiga, Atari ST usw. handelt. Eine Liste der Aufgaben, die von TRAP 15 in Easy68k am Ende dieses Dokuments http://www.easy68k.com/files/EASy68KQuickRef.pdf durchgeführt werden, finden Sie.