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]