DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦aa6c31bc8⟧ TextFile

    Length: 12109 (0x2f4d)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦e9513fa30⟧ 
            └─⟦this⟧ 

TextFile

/*=================================================================
;  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 ======================================*/