There are several memory locations in low core that are mapped to specific CPU functions. These memory locations provide a direct way for the program to communicate with the CPU. We will reserve the first 1k of memory for CPU usage. Here are some of the memory mapped locations we will need to use:
RSTNPSW DS D RESTART NEW PSW RSTOPSW DS D RESTART OLD PSW DS F DS F EXTOPSW DS D EXTERNAL OLD PSW SVCOPSW DS D SVC OLD PSW PGMOPSW DS D PROGRAM OLD PSW MCKOPSW DS D MACHINE CHECK OLD PSW IO$OPSW DS D I/O OLD PSW CSW DS D CHANNEL STATUS WORD CAW DS F CHANNEL ADDRESS WORD DS F ITIMER DS F INTERVAL TIMER DS F EXTNPSW DS D EXTERNAL NEW PSW SVCNPSW DS D SVC NEW PSW PGMNPSW DS D PROGRAM NEW PSW MCKNPSW DS D MACHINE CHECK NEW PSW IO$NPSW DS D I/O NEW PSW
I have created a macro (@LOWCORE) to map these memory locations. We will use the two words following the Restart Old PSW as pointers to control blocks. This will allow the control blocks to be easily located since they are anchored at a fixed location.
[Next – TXXNUC00]