Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit 43897533 authored by Martin Ruckert's avatar Martin Ruckert
Browse files

mmixvd with memory registers, inspector and input form the trace window

parent 1ae8d6ca
......@@ -5,13 +5,26 @@
@y
#include <stdio.h>
#include <stdlib.h>
#include "libconfig.h"
#include "libimport.h"
#pragma warning(disable : 4996 4267)
@z
@x
if (fwrite(buf,1,n,sfile[handle].fp)!=n) return ominus(zero_octa,size);
fflush(sfile[handle].fp);
@y
#ifdef MMIX_PRINT
extern int mmix_printf(char *format,...);
#define printf(...) mmix_printf(__VA_ARGS__)
if (sfile[handle].fp==stdout || sfile[handle].fp==stderr)
win32_log(buf);
else
{ if (fwrite(buf,1,n,sfile[handle].fp)!=n) return ominus(zero_octa,size);
fflush(sfile[handle].fp);
}
#else
if (fwrite(buf,1,n,sfile[handle].fp)!=n) return ominus(zero_octa,size);
fflush(sfile[handle].fp);
#endif
@z
#ifndef LIBCONFIG_H
#define LIBCONFIG_H
#ifdef WIN32
#pragma warning(disable : 4996)
#endif
/* define this if you need a local copy of mem_tetra ll */
#define MMIX_LOCAL_LL mem_tetra *ll; /* current place in the simulated memory */
#define MMIX_STO(val,addr) (ll=mem_find(addr),ll->tet=(val).h,(ll+1)->tet=(val).l,true)
#define MMIX_STT(val,addr) (ll=mem_find(addr),ll->tet=(val).l,true)
#define MMIX_STW(val,addr) (ll=mem_find(addr),ll->tet=(ll->tet&(~(0xFFFF<<((1-((addr).l&0x1))<<4))))|(((val).l&0xFFFF)<<((1-((addr).l&0x1))<<4)),true)
#define MMIX_STB(val,addr) (ll=mem_find(addr),ll->tet=(ll->tet&(~(0xFF<<((3-((addr).l&0x3))<<3))))|(((val).l&0xFF)<<((3-((addr).l&0x3))<<3)),true)
#define MMIX_LDO(val,addr) (ll=mem_find(addr),(val).h=ll->tet,(val).l=(ll+1)->tet,true)
#define MMIX_LDT(val,addr) (ll=mem_find(addr),(val).h=0,(val).l=ll->tet,true)
#define MMIX_LDW(val,addr) (ll=mem_find(addr),(val).h=0,(val).l=(ll->tet>>(16*(1-((addr).l&1))))&0xFFFF,true)
#define MMIX_LDB(val,addr) (ll=mem_find(addr),(val).h=0,(val).l=(ll->tet>>(8*(3-((addr).l&3))))&0xFF,true)
#define MMIX_STO_UNCACHED(val,addr) MMIX_STO(val,addr)
#define MMIX_LDO_UNCACHED(val,addr) MMIX_LDO(val,addr)
#define MMIX_FETCH(inst,loc) (ll=mem_find(loc),inst=ll->tet,true)
#define MMIX_STORE_IVTC(virt,phys)
#define MMIX_STORE_DVTC(virt,phys)
#ifdef WIN32
#define MMIX_DELAY(ms,d) (Sleep(ms), d=(ms))
#else
#define MMIX_DELAY(ms,d) (usleep(1000*(ms)), d=(ms))
#endif
/* define this to check for external asynchronous interrupts*/
#define MMIX_GET_INTERRUPT
/* this code is executed when MMIX enters the handler for Ctrl-C */
#define MMIX_CTRL_HANDLER
/* this code defines additional command line options */
#define MMIX_OPTIONS
/* if MMIX_BOOT is defined, mmis-sim will boot from addres #8000...0000
otherwise it will resume at Main */
#undef MMIX_BOOT
#ifdef _MMIXAL_
#undef MMIX_PRINT
#else
#define MMIX_PRINT
#endif
#ifdef MMIX_PRINT
extern int mmix_printf(FILE *f,char *format,...);
extern int mmix_fputc(int c, FILE *f);
#define printf(...) mmix_printf(stdout,__VA_ARGS__)
#define fprintf(file,...) mmix_printf(file,__VA_ARGS__)
#define fputc(c,f) mmix_fputc(c,f)
#endif
/* this action is executed when there is no mmo file on the command line */
#define MMIX_NO_FILE
/* define this to get the real TRAP implementation not the MMIXWARE fake TRAPS */
#undef MMIX_TRAP
/* this is the error display function */
#define MMIX_ERROR(f,m) fprintf(stderr,f,m)
/* define this if you need the tetra inside the mem_node */
#define MMIX_MEM_TET tetra tet; /* the tetrabyte of simulated memory */
/* these are the functions for the instructions not implemented in the basic mmix simulator */
#define MMIX_WRITE_DCACHE()
#define MMIX_CLEAR_ICACHE()
#define MMIX_CLEAR_DCACHE()
#define MMIX_UPDATE_VTC(w) zero_octa
#define MMIX_CLEAR_DVTC()
#define MMIX_CLEAR_IVTC()
#define MMIX_PRELOAD_DCACHE(w,xx)
#define MMIX_PRELOAD_ICACHE(w,xx)
#define MMIX_STORE_DCACHE(w,xx)
#define MMIX_DELETE_DCACHE(w,xx)
#define MMIX_DELETE_ICACHE(w,xx)
#define MMXIAL_LINE_TRUNCATED fprintf(stderr,"(say `-b <number>' to increase the length of my input buffer)\n");
/* define this to record file line and location associations while assembling */
#define MMIXAL_LINE_LOC(file_no,line_no,cur_loc) add_line_loc(file_no,line_no,cur_loc)
#endif
extern void win32_log(char *msg);
......@@ -669,7 +669,7 @@ if (!l) panic("No room for the local registers");
sclock.l=sclock.h=0;
profile_started=false;
halted=false;
stdin_buf_start=stdin_buf_end=NULL;
stdin_buf_start=stdin_buf_end=stdin_buf;
good_guesses=bad_guesses=0;
profiling=false;
interrupt=false;
......@@ -901,8 +901,7 @@ case STB: case STBI: case STBU: case STBUI:@/
}
if ((w.h&sign_bit) && !(loc.h&sign_bit)) goto translation_bypassed_inst;
if (!MMIX_STB(b,w)) goto page_fault;
ll=mem_find(w); test_store_bkpt(ll);
break;
goto fin_st;
@z
@x
......@@ -916,8 +915,7 @@ case STW: case STWI: case STWU: case STWUI:@/
}
if ((w.h&sign_bit) && !(loc.h&sign_bit)) goto translation_bypassed_inst;
if (!MMIX_STW(b,w)) goto page_fault;
ll=mem_find(w); test_store_bkpt(ll);
break;
goto fin_st;
@z
@x
......@@ -939,7 +937,10 @@ case STT: case STTI: case STTU: case STTUI:@/
fin_pst:
if ((w.h&sign_bit) && !(loc.h&sign_bit)) goto translation_bypassed_inst;
if (!MMIX_STT(b,w)) goto page_fault;
fin_st:
ll=mem_find(w); test_store_bkpt(ll);
w.l&=-8;@+ll=mem_find(w);
a.h=ll->tet;@+ a.l=(ll+1)->tet; /* for trace output */
break;
@z
......@@ -1619,8 +1620,6 @@ char stdin_chr @,@,@[ARGS((void))@];@+@t}\6{@>
@z
@x
@ We are finally ready for the last case.
@y
......
......@@ -714,6 +714,10 @@
RelativePath=".\arith-win.ch"
>
</File>
<File
RelativePath=".\io-win.ch"
>
</File>
<File
RelativePath=".\mmixware\mmix-arith.w"
>
......@@ -747,8 +751,9 @@
>
<Tool
Name="VCCustomBuildTool"
Description="ctangle mmix-io with io-win.ch"
CommandLine="ctangle mmixware\mmix-io.w io-win.ch&#x0D;&#x0A;"
Description="ctangle mmix-io with libio.ch"
CommandLine="ctangle mmixware\mmix-io.w libio.ch"
AdditionalDependencies="libio.ch"
Outputs="mmix-io.c"
/>
</FileConfiguration>
......@@ -757,8 +762,9 @@
>
<Tool
Name="VCCustomBuildTool"
Description="ctangle mmix-io with io-win.ch"
CommandLine="ctangle mmixware\mmix-io.w io-win.ch&#x0D;&#x0A;"
Description="ctangle mmix-io with libio.ch"
CommandLine="ctangle mmixware\mmix-io.w libio.ch"
AdditionalDependencies="libio.ch"
Outputs="mmix-io.c"
/>
</FileConfiguration>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment