DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T Z ┃
Length: 12110 (0x2f4e) Types: TextFile Names: »Z80«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
/*================================================================= ; IRP MULHOUSE AVRIL 93 ;------------------------------------------------------------------- ; PROJECT : Z80 SIMULATOR ; STUDENTS : BURG - SCHNOEBELEN - MILLARD ; ; FILE : Z80.c ================================================================== ; DESCRIPTION : ; ; ;----------------------------------------------------------------*/ #include "GUI_Interface.h" #include "Break.h" #include "FileOpen.h" #include "Memory.h" /* ----- Definitions ---------------------------*/ #define MESSAGE_LENGTH 80 #define INSTRUCTION_LENGTH 20 #define STATUS_LENGTH 60 #define A 0 #define F 2 #define B 4 #define C 6 #define D 8 #define E 10 #define H 12 #define L 14 #define I 16 #define AP 18 #define FP 20 #define BP 22 #define CP 24 #define DP 26 #define EP 28 #define HP 30 #define LP 32 #define IX 34 #define IY 38 #define SP 42 #define PC 46 #define IIX 50 #define IIY 52 #define ISP 54 #define STRING_Z80STATUS 0 #define STRING_FILENAME 1 #define STRING_BREAKLIST 2 #define STRING_MEMORYLIST 3 #define STRING_MEMORYDUMP 4 typedef int tWorkString; /*-------- Globales ---------------------------*/ int CntResetActivate = 0; int CntGoActivate = 0; int CntStopActivate = 0; int CntStepActivate = 0; int CntQuitActivate = 0; char avA[] = "00"; char avF[] = "00"; char avB[] = "00"; char avC[] = "00"; char avD[] = "00"; char avE[] = "00"; char avH[] = "00"; char avL[] = "00"; char avI[] = "00"; char avAP[] = "00"; char avFP[] = "00"; char avBP[] = "00"; char avCP[] = "00"; char avDP[] = "00"; char avEP[] = "00"; char avHP[] = "00"; char avLP[] = "00"; char avIX[] = "0000"; char avIY[] = "0000"; char avSP[] = "0000"; char avPC[] = "0000"; char avIIX[] = "00"; char avIIY[] = "00"; char avISP[] = "00"; char avInstruction [INSTRUCTION_LENGTH]; char avMessage [MESSAGE_LENGTH]; char Z80Status [STATUS_LENGTH]; tWorkString WorkString = STRING_Z80STATUS; int Iterator = 0 ; void ValueChangedCallback() { } /*------------------------------------------------- Initialisation --------------------------------------------------*/ Widget Z80Init () { Widget TopLevel; TopLevel = FmInitialize ("Z80", "Z80", NULL, 0, NULL, 0); TopLevel = FmCreateGUI ("Z80", TopLevel, NULL, 0); FmAttachAv ( "A",avA); FmAttachAv ( "F",avF); FmAttachAv ( "B",avB); FmAttachAv ( "C",avC); FmAttachAv ( "D",avD); FmAttachAv ( "E",avE); FmAttachAv ( "H",avH); FmAttachAv ( "L",avL); FmAttachAv ( "I",avI); FmAttachAv ( "AP",avAP); FmAttachAv ( "FP",avFP); FmAttachAv ( "BP",avBP); FmAttachAv ( "CP",avCP); FmAttachAv ( "DP",avDP); FmAttachAv ( "EP",avEP); FmAttachAv ( "HP",avHP); FmAttachAv ( "LP",avLP); FmAttachAv ( "IX",avIX); FmAttachAv ( "IY",avIY); FmAttachAv ( "SP",avSP); FmAttachAv ( "PC",avPC); FmAttachAv ( "IIX",avIIX); FmAttachAv ( "IIY",avIIY); FmAttachAv ( "ISP",avISP); FmAttachAv ( "Instruction",avInstruction); /* FmAttachAv ( "Message", avMessage); */ return TopLevel; } /*------------------------------------------------- Gestion PushButon par CallBacks + Compteur ( Appels depuis WINDOW ) --------------------------------------------------*/ void ResetActivate () { CntResetActivate++; } void QuitActivate () { CntQuitActivate++; } void GoActivate () { CntGoActivate++; } void StepActivate () { CntStepActivate ++; } void StopActivate() { CntStopActivate ++; } /*------------------------------------------------- Lecture des compteurs d'evenements ( Appels depuis Ada ) --------------------------------------------------*/ int GetCntResetActivate () { return CntResetActivate; } int GetCntQuitActivate () { return CntQuitActivate; } int GetCntGoActivate () { return CntGoActivate; } int GetCntStepActivate () { return CntStepActivate; } int GetCntStopActivate () { return CntStopActivate; } /*------------------------------------------------- Appels divers depuis Ada --------------------------------------------------*/ void Beep() { FmBeep(); } /*------------------------------------------------- Ecriture des variables actives ( Appels depuis Ada ) --------------------------------------------------*/ void SetMessage (char *message) { strcpy (avMessage, message); FmSetActiveValue ( 0, "Message" ); } void SetInstruction (char *instruction) { strcpy (avInstruction, instruction); FmSetActiveValue ( 0, "Instruction" ); } void Update (char *Z80StatusAda) { /* Recuperation des differentes valeurs definissant l'etat du Z80 */ avA[0] = Z80StatusAda[A]; avA[1] = Z80StatusAda[A+1]; avF[0] = Z80StatusAda[F]; avF[1] = Z80StatusAda[F+1]; avB[0] = Z80StatusAda[B]; avB[1] = Z80StatusAda[B+1]; avC[0] = Z80StatusAda[ C]; avC[1] = Z80StatusAda[C+1]; avD[0] = Z80StatusAda[D]; avD[1] = Z80StatusAda[D+1]; avE[0] = Z80StatusAda[E]; avE[1] = Z80StatusAda[E+1]; avH[0] = Z80StatusAda[H]; avH[1] = Z80StatusAda[H+1]; avL[0] = Z80StatusAda[L]; avL[1] = Z80StatusAda[L+1]; avI[0] = Z80StatusAda[I]; avI[1] = Z80StatusAda[I+1]; avAP[0] = Z80StatusAda[AP]; avAP[1] = Z80StatusAda[AP+1]; avFP[0] = Z80StatusAda[FP]; avFP[1] = Z80StatusAda[FP+1]; avBP[0] = Z80StatusAda[BP]; avBP[1] = Z80StatusAda[BP+1]; avCP[0] = Z80StatusAda[CP]; avCP[1] = Z80StatusAda[CP+1]; avDP[0] = Z80StatusAda[DP]; avDP[1] = Z80StatusAda[DP+1]; avEP[0] = Z80StatusAda[EP]; avEP[1] = Z80StatusAda[EP+1]; avHP[0] = Z80StatusAda[HP]; avHP[1] = Z80StatusAda[HP+1]; avLP[0] = Z80StatusAda[LP]; avLP[1] = Z80StatusAda[LP+1]; avIX[0] = Z80StatusAda[IX]; avIX[1] = Z80StatusAda[IX+1]; avIX[2] = Z80StatusAda[IX+2]; avIX[3] = Z80StatusAda[IX+3]; avIY[0] = Z80StatusAda[IY]; avIY[1] = Z80StatusAda[IY+1]; avIY[2] = Z80StatusAda[IY+2]; avIY[3] = Z80StatusAda[IY+3]; avSP[0] = Z80StatusAda[SP]; avSP[1] = Z80StatusAda[SP+1]; avSP[2] = Z80StatusAda[SP+2]; avSP[3] = Z80StatusAda[SP+3]; avPC[0] = Z80StatusAda[PC]; avPC[1] = Z80StatusAda[PC+1]; avPC[2] = Z80StatusAda[PC+2]; avPC[3] = Z80StatusAda[PC+3]; avIIX[0] = Z80StatusAda[IIX]; avIIX[1] = Z80StatusAda[IIX+1]; avIIY[0] = Z80StatusAda[IIY]; avIIY[1] = Z80StatusAda[IIY+1]; avISP[0] = Z80StatusAda[ISP]; avISP[1] = Z80StatusAda[ISP+1]; FmSetActiveValue ( 0, "A" ); FmSetActiveValue ( 0, "F" ); FmSetActiveValue ( 0, "B" ); FmSetActiveValue ( 0, "C" ); FmSetActiveValue ( 0, "D" ); FmSetActiveValue ( 0, "E" ); FmSetActiveValue ( 0, "H" ); FmSetActiveValue ( 0, "L" ); FmSetActiveValue ( 0, "I" ); FmSetActiveValue ( 0, "AP" ); FmSetActiveValue ( 0, "FP" ); FmSetActiveValue ( 0, "BP" ); FmSetActiveValue ( 0, "CP" ); FmSetActiveValue ( 0, "DP" ); FmSetActiveValue ( 0, "EP" ); FmSetActiveValue ( 0, "HP" ); FmSetActiveValue ( 0, "LP" ); FmSetActiveValue ( 0, "IX" ); FmSetActiveValue ( 0, "IY" ); FmSetActiveValue ( 0, "SP" ); FmSetActiveValue ( 0, "PC" ); FmSetActiveValue ( 0, "IIX" ); FmSetActiveValue ( 0, "IIY" ); FmSetActiveValue ( 0, "ISP" ); } /*------------------------------------------------ Iterateur pour la chaine Z80Status -------------------------------------------------*/ void StatusZ80IterInit () { FmGetActiveValue ( 0, "A" ); FmGetActiveValue ( 0, "F" ); FmGetActiveValue ( 0, "B" ); FmGetActiveValue ( 0, "C" ); FmGetActiveValue ( 0, "D" ); FmGetActiveValue ( 0, "E" ); FmGetActiveValue ( 0, "H" ); FmGetActiveValue ( 0, "L" ); FmGetActiveValue ( 0, "I" ); FmGetActiveValue ( 0, "AP" ); FmGetActiveValue ( 0, "FP" ); FmGetActiveValue ( 0, "BP" ); FmGetActiveValue ( 0, "CP" ); FmGetActiveValue ( 0, "DP" ); FmGetActiveValue ( 0, "EP" ); FmGetActiveValue ( 0, "HP" ); FmGetActiveValue ( 0, "LP" ); FmGetActiveValue ( 0, "IX" ); FmGetActiveValue ( 0, "IY" ); FmGetActiveValue ( 0, "SP" ); FmGetActiveValue ( 0, "PC" ); Z80Status[A] =avA[0]; Z80Status[A+1]=avA[1]; Z80Status[F] =avF[0]; Z80Status[F+1]=avF[1]; Z80Status[B] =avB[0]; Z80Status[B+1]=avB[1]; Z80Status[ C] =avC[0]; Z80Status[C+1]=avC[1]; Z80Status[D] =avD[0]; Z80Status[D+1]=avD[1]; Z80Status[E] =avE[0]; Z80Status[E+1]=avE[1]; Z80Status[H] =avH[0]; Z80Status[H+1]=avH[1]; Z80Status[L] =avL[0]; Z80Status[L+1]=avL[1]; Z80Status[I] =avI[0]; Z80Status[I+1]=avI[1]; Z80Status[AP] =avAP[0]; Z80Status[AP+1]=avAP[1]; Z80Status[FP] =avFP[0]; Z80Status[FP+1]=avFP[1]; Z80Status[BP] =avBP[0]; Z80Status[BP+1]=avBP[1]; Z80Status[CP] =avCP[0]; Z80Status[CP+1]=avCP[1]; Z80Status[DP] =avDP[0]; Z80Status[DP+1]=avDP[1]; Z80Status[EP] =avEP[0]; Z80Status[EP+1]=avEP[1]; Z80Status[HP] =avHP[0]; Z80Status[HP+1]=avHP[1]; Z80Status[LP] =avLP[0]; Z80Status[LP+1]=avLP[1]; Z80Status[IX] =avIX[0]; Z80Status[IX+1]=avIX[1]; Z80Status[IX+2]=avIX[2]; Z80Status[IX+3]=avIX[3]; Z80Status[IY] =avIY[0]; Z80Status[IY+1]=avIY[1]; Z80Status[IY+2]=avIY[2]; Z80Status[IY+3]=avIY[3]; Z80Status[SP] =avSP[0]; Z80Status[SP+1]=avSP[1]; Z80Status[SP+2]=avSP[2]; Z80Status[SP+3]=avSP[3]; Z80Status[PC] =avPC[0]; Z80Status[PC+1]=avPC[1]; Z80Status[PC+2]=avPC[2]; Z80Status[PC+3]=avPC[3]; Z80Status[IIX] =avIIX[0]; Z80Status[IIX+1]=avIIX[1]; Z80Status[IIY] =avIIY[0]; Z80Status[IIY+1]=avIIY[1]; Z80Status[ISP] =avISP[0]; Z80Status[ISP+1]=avISP[1]; Iterator = 0; } void StatusZ80IterNext () { Iterator ++; } Boolean StatusZ80IterDone () { return (Iterator == strlen (Z80Status)) ; } char StatusZ80IterValue() { return Z80Status[Iterator]; } /*------------------------------------------------ Iterateur ( Appels depuis Ada ) -------------------------------------------------*/ void IteratorFileName() { WorkString = STRING_FILENAME; } void IteratorZ80Status() { WorkString = STRING_Z80STATUS; } void IteratorBreakList() { WorkString = STRING_BREAKLIST; } void IteratorMemoryList() { WorkString = STRING_MEMORYLIST; } void IteratorMemoryDump() { WorkString = STRING_MEMORYDUMP; } void IterInit() { switch (WorkString) { case STRING_Z80STATUS : StatusZ80IterInit(); break; case STRING_FILENAME : FileNameIterInit(); break; case STRING_BREAKLIST : BreakListIterInit(); break; case STRING_MEMORYLIST: MemoryListIterInit(); break; case STRING_MEMORYDUMP: MemoryDumpIterInit(); break; } } int IterDone() { switch (WorkString) { case STRING_Z80STATUS : return StatusZ80IterDone(); case STRING_FILENAME : return FileNameIterDone(); case STRING_BREAKLIST : return BreakListIterDone(); case STRING_MEMORYLIST: return MemoryListIterDone(); case STRING_MEMORYDUMP: return MemoryDumpIterDone(); } } void IterNext () { switch (WorkString) { case STRING_Z80STATUS: StatusZ80IterNext(); break; case STRING_FILENAME : FileNameIterNext(); break; case STRING_BREAKLIST: BreakListIterNext(); break; case STRING_MEMORYLIST: MemoryListIterNext(); break; case STRING_MEMORYDUMP: MemoryDumpIterNext(); break; } } char IterValue() { switch (WorkString ) { case STRING_Z80STATUS : return StatusZ80IterValue(); case STRING_FILENAME : return FileNameIterValue(); case STRING_BREAKLIST : return BreakListIterValue(); case STRING_MEMORYLIST: return MemoryListIterValue(); case STRING_MEMORYDUMP: return MemoryDumpIterValue(); } } /*================= FIN DU FICHIER ======================================*/