OctetView
0x00000…00080 UnusedSector ┆d d ░░░░░░░░ @ rt = d d i S d ~ H H i S d Y O \ a B O O T E ┆
0x00080…00100 UnusedSector ┆ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░┆
0x00100…00180 UnusedSector ┆░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ┆
0x00180…001c0 DirEnt {filename=»«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x001c0…001e0 04 69 04 53 00 00 04 64 03 7e 04 48 04 48 04 69 04 53 00 00 04 64 00 00 00 00 03 59 04 4f 04 5c ┆ i S d ~ H H i S d Y O \┆
0x001e0…00200 00 01 04 61 00 00 00 01 00 04 00 20 00 00 00 01 00 49 00 4e 00 49 00 54 00 20 00 20 00 20 05 45 ┆ a I N I T E┆
0x00200…00280 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x00280…00300 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░┆
0x00300…00380 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x00380…00400 UnusedSector ┆ ┆
0x00400…00440 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00440…00480 DirEnt {filename=»░░S«, kind=0x0464, de04=0x037e, de05=0x0448, de06=0x0448, de07=0x0469, cluster=0x0453, de09=0x0000, de0a=0x0464, de0b=0x0000, nsect=0x0000, de0d=0x0359, cluster2=0x044f, de0f=0x045c, de10=0x0001, de11=0x0461, de12=0x0000, de13=0x0001, de14=0x0004, de15=0x0020, de16=0x0000, de17=0x0001, de18=0x0049, de19=0x004e, de1a=0x0049, de1b=0x0054, de1c=0x0020, de1d=0x0020, de1e=0x0020, de1f=0x0545}
0x00480…004c0 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x004c0…00500 DirEnt {filename=»░░S«, kind=0x0464, de04=0x037e, de05=0x0448, de06=0x0448, de07=0x0469, cluster=0x0453, de09=0x0000, de0a=0x0464, de0b=0x0000, nsect=0x0000, de0d=0x0359, cluster2=0x044f, de0f=0x045c, de10=0x0001, de11=0x0461, de12=0x0000, de13=0x0001, de14=0x0004, de15=0x0020, de16=0x0000, de17=0x0001, de18=0x0049, de19=0x004e, de1a=0x0049, de1b=0x0054, de1c=0x0020, de1d=0x0020, de1e=0x0020, de1f=0x0545}
0x00500…00540 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00540…00580 DirEnt {filename=»░░S«, kind=0x0464, de04=0x037e, de05=0x0448, de06=0x0448, de07=0x0469, cluster=0x0453, de09=0x0000, de0a=0x0464, de0b=0x0000, nsect=0x0000, de0d=0x0359, cluster2=0x044f, de0f=0x045c, de10=0x0001, de11=0x0461, de12=0x0000, de13=0x0001, de14=0x0004, de15=0x0020, de16=0x0000, de17=0x0001, de18=0x0049, de19=0x004e, de1a=0x0049, de1b=0x0054, de1c=0x0020, de1d=0x0020, de1e=0x0020, de1f=0x0545}
0x00580…005c0 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x005c0…00600 DirEnt {filename=»░░S«, kind=0x0464, de04=0x037e, de05=0x0448, de06=0x0448, de07=0x0469, cluster=0x0453, de09=0x0000, de0a=0x0464, de0b=0x0000, nsect=0x0000, de0d=0x0359, cluster2=0x044f, de0f=0x045c, de10=0x0001, de11=0x0461, de12=0x0000, de13=0x0001, de14=0x0004, de15=0x0020, de16=0x0000, de17=0x0001, de18=0x0049, de19=0x004e, de1a=0x0049, de1b=0x0054, de1c=0x0020, de1d=0x0020, de1e=0x0020, de1f=0x0545}
0x00600…00640 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0005, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0004, de0d=0x0000, cluster2=0x0005, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00640…00680 DirEnt {filename=»BOOT«, kind=0x0000, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0064, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0210, de0d=0x0000, cluster2=0x0064, de0f=0x000e, de10=0x040a, de11=0x0806, de12=0x0c02, de13=0x0f18, de14=0x1314, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x002d, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00680…00700 DataSector[»BOOT«]
[…0x210…]
0x10f00…10f80 UnusedSector ┆N I T = , S U B U N I T = , A D D R = S Y S D U A L _ D E V : U N I T = , A D D R = S Y S T E M ┆
0x10f80…11000 UnusedSector ┆_ D I R : @ A L T F S N : L O C A L P R I N T E R N O L O C A L P R I N T E R O P E N ┆
0x11000…11080 UnusedSector ┆T R Y A G A I N T T Y 0 0 0 F D 0 1 F I L S Y S F I L E F D S Y S M D D O C O N F I G W ┆
0x11080…11100 UnusedSector ┆e l c o m e t o T O S T T Y 0 0 0 F D 0 1 F I L S Y S F I L E F D S Y S M D D O C O N F I G W ┆
0x11100…11180 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0xc…]
0x11780…11800 UnusedSector ┆ HEAD ░ H \ ░P3 ░ ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░ ░ ░ ░ ┆
0x11800…11880 UnusedSector ┆ ░P3.1 ░ ░ ░ ░ ░KAP1 ░ ░ ░ ░ ░ KA ░ ░ ░ ░ ░ ░P4 ░ ░ ░ ░ ┆
0x11880…11900 UnusedSector ┆ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░.2 ░ ░ ░ ░P3.1 ░.1.3 ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░┆
0x11900…11980 UnusedSector ┆ KA ░.1.1 ░.5 ░ ░ ░ ░P3.1 ░.1.6 ░ ░ ░ ░KAP3 ░.1.2 ░ KAP3.1.1.2.1 ┆
0x11980…11a00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x11a80…11b00 UnusedSector ┆:sp 4 :ne 10 :ti -10 :ul :hl +12 3.1.1.2.2~D file :sp 2 The D file is a concatenation of the contiguous and random files of the ┆
0x11b00…11b80 UnusedSector ┆volume. The files are allocated contiguously in the D file. When a file is removed from the tape, the space occupied is left as ┆
0x11b80…11c00 UnusedSector ┆garbage. :sp :nf D file: ------------------------------------------------------- I data file 1 I data file 2 I ga┆
0x11c00…11c80 UnusedSector ┆rbage I data file 3 I ------------------------------------------------------- :fi OC_MODE: INTEGER; OC_S┆
0x11c80…11d00 UnusedSector ┆ETUP: INTEGER; OC_LINE_WIDTH: INTEGER; OS_MODE: OS_MODE_TYPE; FILSYSL: FILSYS_LIST; ┆
0x11d00…11d80 UnusedSector ┆ ALTFILSYSNO: FILSYS_INDEX; SYSTEM_DEV: DEVICE_DESCRIPTION; SYSTEM_VOL: VOLUME_NAME; SYSTEM_┆
0x11d80…11e00 UnusedSector ┆DIR: FILE_NAME; LOCAL_PRINTER: BOOLEAN; TOS_VERSION: INTEGER; NEWS: NEWS_TYPE END; Z ┆
0x11e00…11e80 UnusedSector ┆ASSIGNED, ASSIGNED, MOUNTED, RESERVED); TYPE TERMINAL_IO_MODE = (TIDLE, TIN, TOUT); TYPE PROCESS_HEADER = RECORD SIZE┆
0x11e80…11f00 UnusedSector ┆ : INTEGER; PROC_NAME : PACKED_NAME3; CPU_NAME : PACKED_NAME3; PR┆
0x11f00…11f80 UnusedSector ┆IO, CAPAB, CLAIM, EXECSIZE: INTEGER; IO_PARS : ARRAY [1..4] OF INTEGER; MSGS : INT┆
0x11f80…12000 UnusedSector ┆EGER; DUMMY : ARRAY [0..6] OF INTEGER; LEVEL, BOUND : INTEGER END; TYPE PROGRAM_NAME ┆
0x12000…12080 UnusedSector ┆= PROCESS_NAME; TYPE LOAD_RESULT = INTEGER; TYPE MEMORY_TYPE = (FORPROGRAM, FORDATA); TYPE PRINTERSTATETYPE = (PRINTERIDLE, P┆
0x12080…12100 UnusedSector ┆RINTERQUEUED, PRINTERACTIVE); TYPE PRINTFILEREC = RECORD PRINTERSTATE : PRINTERSTATETYPE; PRINTERNAME ┆
0x12100…12180 UnusedSector ┆ : PROCESS_NAME; RESERVED : BOOLEAN; SEMA : FILE; RESERVER ┆
0x12180…12200 UnusedSector ┆ : INTEGER END; TYPE RQ_ANSWER = (RQ_OK, RQ_INV_REQUEST, RQ_INV_PROC, RQ_INV_PROC_STATE, RQ_INV_FSN, RQ_FAIL┆
0x12200…12280 UnusedSector ┆_TASK, RQ_LOAD_ERROR, RQ_Q_OFFER); TYPE SERVICE_REQUEST = (STARTTASK, STOPTASK, REMOVETASK, LOGOFF, LOADTASK_1, LOAD┆
0x12280…12300 UnusedSector ┆TASK_2, INITTASK, RESERVEPRINT, RELEASEPRINT, STARTPRINT, QTASK); TYPE SERVICE_REQUEST_MESSAGE = RECORD CASE ┆
0x12300…12380 UnusedSector ┆RQTYPE :SERVICE_REQUEST OF STARTTASK, STOPTASK, REMOVETASK, LOADTASK_1, INITTASK: (PNAME ┆
0x12380…12400 UnusedSector ┆ KAP3.1.1.2.2 Z Z Z Z Z KAP3.1.1.3 Z Z Z Z Z KAP3.1.2 Z Z Z Z Z PSP.T Z Z Z Z Z ┆
0x12400…12480 UnusedSector ┆ .J Z Z Z Z Z PSP.P Z Z Z Z Z PSP.M.T Z Z Z Z Z e Z Z Z Z Z ┆
0x12480…12500 UnusedSector ┆ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x12580…12600 UnusedSector ┆TYPE MINAL_INDEX = 0..TERMINAL_LIMIT; TYPE PROCESS_INDEX = 0..PROCESS_LIMIT; TYPE PROGRAM_INDEX = 0..PROGRAM_LIMIT; TYPE FI┆
0x12600…12680 UnusedSector ┆LSYS_INDEX = 0..FILSYS_LIMIT; TYPE DEVICE_INDEX = 0..DEVICE_LIMIT; TYPE LOAD_Q_INDEX = 0..LOAD_Q_LIMIT; CONST ECHO_MODE ┆
0x12680…12700 UnusedSector ┆ = 0; CONST VDU_MODE = 1; CONST WAIT_MODE = 2; CONST ITT_MODE = 3; CONST FF_MODE = 4; CONST IBUFLGT = 80; TY┆
0x12700…12780 UnusedSector ┆PE OS_MODE_TYPE = (SLAVE, MASTER, DUAL); TYPE IBUF_TYPE = ARRAY [1..IBUFLGT] OF INTEGER; TYPE NEWS_TYPE = RECORD BYTE_C┆
0x12780…12800 UnusedSector ┆:sp 4 :ne 10 :ti -10 :ul :hl +9 3.1.1.3~~~Tape Cache :sp 2 When a volume is mounted by the MTFMS, the system files are read and ┆
0x12800…12880 UnusedSector ┆stored on disk in a form suitable for updates. :sp When the volume is updated or dismounted, the system files are written back o┆
0x12880…12900 UnusedSector ┆nto the tape, if any change has been made to the tape. :sp 2 The HB is cached in a temporary file (T_HB) :br The BFD is cached i┆
0x12900…12980 UnusedSector ┆n a temporary file (T_BFD) :br The BM is of no use and is not cached :br The BAD file is not used and is not cached :br The dire┆
0x12980…12a00 UnusedSector ┆ctories are cached in a temporary file (T_D) :sp T_HB is a simple copy of HB :br T_BFD is a simple copy of BFD :br T_D is a copy┆
0x12a00…12a80 UnusedSector ┆ of the directories. The SFDEs are organized in double linked lists - one for each directory and one for the free SFDEs - in ord┆
0x12a80…12b00 UnusedSector ┆er to allow effective insertion and deletion of files. ADDR, MODE, LINEWIDTH, TIMEOUT: INTEGER END; TYPE DEVICE_STATE = (DE┆
0x12b00…12b80 UnusedSector ┆_Q_INDEX; Q : ARRAY [ TERMINAL_INDEX ] OF LOAD_Q_ELEM_TYPE END; TYPE TERMINALLIST= ARRAY [TERMIN┆
0x12b80…12c00 UnusedSector ┆AL_INDEX] OF TERMINL; TYPE PROCESSLIST= ARRAY [PROCESS_INDEX] OF PROC; TYPE PROGRAMLIST= ARRAY [PROGRAM_INDEX] OF PROGR; T┆
0x12c00…12c80 UnusedSector ┆YPE FILSYSLIST= ARRAY [FILSYS_INDEX] OF FILE_SYSTEM_NAME; TYPE DEVICELIST= ARRAY [DEVICE_INDEX] OF TDEVICE; TYPE TERM┆
0x12c80…12d00 UnusedSector ┆INALPTR= @TERMINALLIST; TYPE PROCESSPTR= @PROCESSLIST; TYPE PROGRAMPTR= @PROGRAMLIST; TYPE FILSYSPTR= @FILSYSLIST; TYPE DEVI┆
0x12d00…12d80 UnusedSector ┆CEPTR= @DEVICELIST; TYPE LOAD_QPTR= @LOAD_Q_TYPE; TYPE COMMON_DATA = RECORD OS_MODE: OS_MODE_TYPE; LOCAL_PRINTE┆
0x12d80…12e00 UnusedSector ┆ : PROCESS_NAME); LOADTASK_2: (GNAME: PACKED_NAME2); STARTPRINT, QTASK, LOGOFF, RESERVEPRIN┆
0x12e00…12e80 UnusedSector ┆T, RELEASEPRINT: (DUMMY : INTEGER) END; TYPE USERENTRYTYPE = RECORD ID : INTEGER; PASSWORD ┆
0x12e80…12f00 UnusedSector ┆ HEAD 7 ░ H \ ░P3 ░ ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░ ░ ░ ░ ┆
0x12f00…12f80 UnusedSector ┆ ░P3.1 ░ ░ ░ ░ ░KAP1 ░ ░ ░ ░ ░ KA ░ ░ ░ ░ ░ ░P4 ░ ░ ░ ░ ┆
0x12f80…13000 UnusedSector ┆ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░.2 ░ ░ ░ ░P3.1 ░.1.3 ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░┆
0x13000…13080 UnusedSector ┆ KA ░.1.1 ░.5 ░ ░ ░ ░P3.1 ░.1.6 ░ ░ ░ ░KAP3 ░.1.2 ░ KAP3.1.1.2.1 ┆
0x13080…13100 UnusedSector ┆; OPERATION : OPERATION_REFERENCE; MODE : TERMINAL_IO_MODE; FIL ┆
0x13100…13180 UnusedSector ┆ : FILE; FILADR : FILE_ADDRESS; USED : BOOLEAN; LTU : ┆
0x13180…13200 UnusedSector ┆BOOLEAN; NAME : ARRAY [0..0] OF INTEGER; NEXT : TERMINAL_INDEX; "POINTER TO NEX┆
0x13200…13280 UnusedSector ┆T TERMINAL IF AN LTU" TUSERS : INTEGER; REC : IBUF_TYPE; REF_RECDESCRIPT ┆
0x13280…13300 UnusedSector ┆:bp :ti -10 :ul :hl +6 3.1.2~~~~~Functions Performed :sp 2 The following IO system procedures are supported: :sp :nf function na┆
0x13300…13380 UnusedSector ┆me comments ----------------------------------------------------------- assign device_address field of device_des┆
0x13380…13400 UnusedSector ┆cription is significant kind = 80 corresponds to rewritable tape kind = 81 corres┆
0x13400…13480 UnusedSector ┆ponds to non-rewritable tape deassign format erase contents of tape reserve dummy release dummy write_sec┆
0x13480…13500 UnusedSector ┆tors write blocks of the S file read_sectors read blocks of the S file mount dismount udpate create for random org┆
0x13500…13580 UnusedSector ┆anized files allocsize * areasize blocks are allocated, however allocsize=0 is interpreted as 1. d┆
0x13580…13600 UnusedSector ┆ismantle reset enter remove rename get_root lookup descent get_file_information append_bytes for data files Th┆
0x13600…13680 UnusedSector ┆e file cannot be extended modify_bytes for data files, BFD and BM Only if rewriting of blocks is supported read┆
0x13680…13700 UnusedSector ┆_bytes for data files, BFD, BM and directories cancel dummy :fi :sp 2 The following IO system procedures are not su┆
0x13700…13780 UnusedSector ┆pported: :sp offer, accept, useron, useroff, write_and_mark, write_and_protect : PROCESS_INDEX; F ┆
0x13780…13800 UnusedSector ┆ : FILE END; TYPE LOAD_Q_TYPE = RECORD MEMORY_RELEASED : BOOLEAN; Q_SIZE : LOAD┆
0x13800…13880 UnusedSector ┆N; SYSTEM_VOL: VOLUME_NAME; SYSTEM_DIR: FILE_NAME; FILESYSTEMS: FILSYS_INDEX; NEWS: NEWS_TYPE; ┆
0x13880…13900 UnusedSector ┆TOS_VERSION: INTEGER; TERMINAL: TERMINALPTR; PROCESS: PROCESSPTR; PRQGRAM: PROGRAMPTR; FILSYS: ┆
0x13900…13980 UnusedSector ┆FILSYSPTR; DEVICE: DEVICEPTR; LOAD_Q: LOAD_QPTR; MAXTERMINAL: TERMINAL_INDEX; MAXPROCESS: PROCESS_IND┆
0x13980…13a00 UnusedSector ┆ ░ H \ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ┆
0x13a00…13a80 UnusedSector ┆Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ┆
0x13a80…13b00 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░┆
0x13b00…13b80 UnusedSector ┆Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x13b80…13c00 UnusedSector ┆ M GE_BUFFER; CURTERMINAL: TERMINAL_INDEX; CLOSED: BOOLEAN; OSUSR: USERID END; "MAXTERMINAL┆
0x13c00…13c80 UnusedSector ┆, MAXPROCESS, MAXPROGRAM CORRESPOND TO OC" "FILSYS[0] CORRESPONDS TO SYSTEM FILE SYSTEM " TYPE GLOBAL_REF =@COMMON_D┆
0x13c80…13d00 UnusedSector ┆ATA; "PAGE" Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x13d00…13d80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x13d80…13e00 UnusedSector ┆$HEAD $KAP1 $KAP2 $KAP3 $KAP3.1 $KAP3.1.1 $KAP3.1.1.1 $KAP3.1.1.1.1 $KAP3.1.1.1.2 $KAP3.1.1.1.3 $KAP3.1.1.1.4 $KAP3.1.1.1.5 $KAP┆
0x13e00…13e80 UnusedSector ┆3.1.1.1.6 $KAP3.1.1.2 $KAP3.1.1.2.1 $KAP3.1.1.2.2 $KAP3.1.1.3 $KAP3.1.2 ". ░iled ░o lo ░up f ░e 'C ░'" ░CC_L ░KUP_ ░RMDR ░ER, ┆
0x13e80…13f00 UnusedSector ┆ ░".Fa ░ed t ░look ░ fil ░'TER ░NALD ░VER' ░ C ░LOOK ░_LTU ░IVER ░ " ░aile ░to l ░kup ░le ' ░U_DR ░ER'" ░ CC ░OOKU ░BOOT ░┆
0x13f00…13f80 UnusedSector ┆ ░ ". ░iled ░o lo ░up B ░T fi ░" ░C_LO ░UP_P ░NTSE ░ ░.Fai ░d to ░ookup file 'PRIN SEMAPHORE'" CC_LOOKUP_PRINTER┆
0x13f80…14000 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x14000…14080 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x2…]
0x14180…14200 UnusedSector ┆CONST TERMINAL_LIMIT = 6; CONST PROCESS_LIMIT = 20; CONST PROGRAM_LIMIT = 10; CONST FILSYS_LIMIT = 3; CONST DEVICE_LI┆
0x14200…14280 UnusedSector ┆MIT = 6; CONST LOAD_Q_LIMIT = TERMINAL_LIMIT; Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x14280…14300 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x3…]
0x14480…14500 UnusedSector ┆R: BOOLEAN; OC_MODE: INTEGER; OC_SETUP: INTEGER; OC_LINE_WIDTH: INTEGER; SYSTEM_DEV: DEVICE_DESCRIPTIO┆
0x14500…14580 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ┆
0x14580…14600 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░┆
0x14600…14680 UnusedSector ┆ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x14680…14700 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x14700…14780 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x2…]
0x14880…14900 UnusedSector ┆CONCAT F:PSP.T O:PSP.M.T FORMAT I:PSP.M.T O:PSP.P RESET PSP.M.T ░ ( ░S ░+ _ ░a ░T O ░ V ░R S ░O N ░+ S ░M ┆
0x14900…14980 UnusedSector ┆+ ░` ░ ( ░S ░+ S ░M + ░ M ░S J ░+ ) ░ S ░( * ░ M ░S J ░+ ) ░ 8 ░ 9 ░░ S ░( * ░ M ░_ ░ S ░S T ┆
0x14980…14a00 UnusedSector ┆ ░M _ ░E V ░ N ░M E ░ ░S J ░+ ) ░ S ░& [ ░' ` ░S ░* S ░M + ░\ 3 ░ U ░+ S ░M + ░J M ░) ` ░S ░* S ░┆
0x14a00…14a80 UnusedSector ┆M + ░ a ░, ░I N ░= ░+ S ░M + ░` ░ ( ░S ░+ S ░M + ░ + ░J M + ) ` S * S M + _ a , U N I T = ┆
0x14a80…14b00 UnusedSector ┆ LIMITS 0 4 * = S . . J + * S . Z + = J + ┆
0x14b00…14b80 UnusedSector ┆ + ! + 7 = 4 * = H S . / . J + * = J + 5 = 4 ┆
0x14b80…14c00 UnusedSector ┆ = 6 = S . . + * = 1 * = J + = 5 ! . + * = 1 * = 0 ┆
0x14c00…14c80 UnusedSector ┆ ( S + * = ! + * = 1 = 1 * = 5 ! . J + * = 8 J * = . j . ┆
0x14c80…14d00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x9…]
0x15180…15200 UnusedSector ┆ KAP3 ░ H \ ░P3.1 ░.3 ░ ░Z Z ░Z Z ░KAP3 ░.2 ░ ░ Z ░Z Z ░ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ┆
0x15200…15280 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x2…]
0x15380…15400 UnusedSector ┆ CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 1 PRODUCT SPECIFICATION ┆
0x15400…15480 UnusedSector ┆ AMOS 1. __ SCOPE _____ ┆
0x15480…15500 UnusedSector ┆ This document constitutes then product specification for the CR80 AMOS Ma┆
0x15500…15580 UnusedSector ┆gnetic ________ Tape ____ File ____ Management __________ System ______ This module ┆
0x15580…15600 UnusedSector ┆is identified as CSS/xxx. CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS┆
0x15600…15680 UnusedSector ┆/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 2 PRODUCT SPECIFICATION┆
0x15680…15700 UnusedSector ┆ AMOS 1.1 ___ Introduction. _____________ ┆
0x15700…15780 UnusedSector ┆ The purpose of this document is to describe at a level sufficient for use and future mainten┆
0x15780…15800 UnusedSector ┆ance: * the structure of, * the functions performed by, * th┆
0x15800…15880 UnusedSector ┆e internal processing of, * the data structures of the Magnetic Tape File Management Sysg┆
0x15880…15900 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x7…]
0x15c80…15d00 UnusedSector ┆ KAP3 E ░ H \ ░P3.1 ░.3 ░ ░Z Z ░Z Z ░KAP3 ░.2 ░ ░ Z ░Z Z ░ PS ░T ░ ░ ░Z Z ░Z ┆
0x15d00…15d80 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ┆
0x15d80…15e00 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░┆
0x15e00…15e80 UnusedSector ┆ Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x15e80…15f00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x15f00…15f80 UnusedSector ┆tion ___________ of __ use ___ The CR80 AMOS Magnetic Tape File Management System provides ┆
0x15f80…16000 UnusedSector ┆ the user with an interface to files stored on magnetic tape, corresponding to the interface of the F┆
0x16000…16080 UnusedSector ┆MS for disk files (ref.2). The IO procedures (ref.1) for disk files can thus be used. 3┆
0x16080…16100 UnusedSector ┆.1.1 _____ Narrative _________ 3.1.1.1 _______ Volume ______ Structure _________ ┆
0x16100…16180 UnusedSector ┆ A MT volume is divided into - system files describing the structure of the volume ┆
0x16180…16200 UnusedSector ┆ - data files containing user data The system files are - a Home Block (HB) ┆
0x16200…16280 UnusedSector ┆ containing the volume name, volume length and number of free ressources on the v┆
0x16280…16300 UnusedSector ┆em of the CR80 AMOS operating system. This information is given in section 3 of the document. ┆
0x16300…16380 UnusedSector ┆The information needed to call the procedures implemented by the module, is given in section 3.1.2. ┆
0x16380…16400 UnusedSector ┆ Section 4 contains information concerning quality assurance. Section 5 gives a description of the way i┆
0x16400…16480 UnusedSector ┆n which the module is generated, and how it is delivered. ┆
0x16480…16500 UnusedSector ┆CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTE┆
0x16500…16580 UnusedSector ┆M EKH/811228 PAGE 3 PRODUCT SPECIFICATION AMOS 1.2 ___ Abbrev┆
0x16580…16600 UnusedSector ┆iations _____________ and ___ Acronyms. _________ AMOS Advanced Multiprocessor Operati┆
0x16600…16680 UnusedSector ┆ng System BFD Basic File Directory BFDE Basic File Directory Entry BM ┆
0x16680…16700 UnusedSector ┆ Bit Map FMS File Management System HB Home Block MD Main Directo┆
0x16700…16780 UnusedSector ┆ry MT Magnetic Tape MTFMS Magnetic Tape File Management System SFD Sy┆
0x16780…16800 UnusedSector ┆mbolic File Directory SFDE Symbolic File Directory Entry CHRISTIAN ROVSI┆
0x16800…16880 UnusedSector ┆NG A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 ┆
0x16880…16900 UnusedSector ┆ PAGE 4 PRODUCT SPECIFICATION AMOS 2. __ AP┆
0x16900…16980 UnusedSector ┆PLICABLE __________ DOCUMENTS _________ (1) CR80 AMOS I/O SYSTEM PRODUCT SPECIFICATION C┆
0x16980…16a00 UnusedSector ┆SS/006/PSP/0006 (2) CR80 AMOS FILE MANAGEMENT SYSTEM SYSTEM PRODUCT SPECIFICATION CSS/920/SPS/0001 ┆
0x16a00…16a80 UnusedSector ┆ (3) CR80 AMOS MAGNETIC TAPE DRIVER PRODUCT SPECIFICATION CSS/333/PSP/0049 ┆
0x16a80…16b00 UnusedSector ┆ CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC ┆
0x16b00…16b80 UnusedSector ┆TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 5 PRODUCT SPECIFICATION AMOS ┆
0x16b80…16c00 UnusedSector ┆ 3. __ REQUIREMENTS ____________ 3.1 ___ Descrip┆
0x16c00…16c80 UnusedSector ┆ The following entries must always exist in the BFD: 0: BFD CHRISTIAN ROVSING A/S PROPRIETARY ┆
0x16c80…16d00 UnusedSector ┆olume - a Basic File Directory (BFD) containing an entry for each file on the volum┆
0x16d00…16d80 UnusedSector ┆e - a Bit Map (BM) identifying the free blocks on the volume - ┆
0x16d80…16e00 UnusedSector ┆a Main Directory (MD) containing references to files and directories via the B┆
0x16e00…16e80 UnusedSector ┆FD - a number of other directories containing references to files and directories v┆
0x16e80…16f00 UnusedSector ┆ia the BFD CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX ┆
0x16f00…16f80 UnusedSector ┆ CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 6 PRODUCT SPECIFICATION ┆
0x16f80…17000 UnusedSector ┆ AMOS 3.1.1.1.1 _________ Home ____ Block _____ The Home Block (HB) con┆
0x17000…17080 UnusedSector ┆tains information about the - the name of the volume - the number of blocks on the volum┆
0x17080…17100 UnusedSector ┆e - the number of free BFD entries - the number of free SFD entries ┆
0x17100…17180 UnusedSector ┆- if the volumes contains part of a multivolume file, then an identification of the previous volume ┆
0x17180…17200 UnusedSector ┆ 3.1.1.1.2 _________ Basic _____ File ____ Directory _________ The Basic File ┆
0x17200…17280 UnusedSector ┆Directory (BFD) contains an entry for each file on the volume, system files as well as data files. ┆
0x17280…17300 UnusedSector ┆ The fields of a BFD entry (BFDE) are - organization directory, contigous or rando┆
0x17300…17380 UnusedSector ┆m - size the number of significant bytes in the file - allocsiz┆
0x17380…17400 UnusedSector ┆e for contiguous files: the number of blocks allocated ┆
0x17400…17480 UnusedSector ┆ for random files: the number of areas allocated - areasize ┆
0x17480…17500 UnusedSector ┆ for random files only: the number of blocks per area - b┆
0x17500…17580 UnusedSector ┆ody address for data files (contigous and random): the block number of the ┆
0x17580…17600 UnusedSector ┆first block of the file relative to the start of the data files for HB, BFD ┆
0x17600…17680 UnusedSector ┆and BM: the block number for the first block of the file relative to the s┆
0x17680…17700 UnusedSector ┆tart of the system files for directories: the SFDE number of the first ┆
0x17700…17780 UnusedSector ┆entry of the directory - access control list defining ┆
0x17780…17800 UnusedSector ┆ access rights for users with respect to the file. Individual users are allowed a set of ┆
0x17800…17880 UnusedSector ┆ operations. Users not mentioned are allowed a set of operations. - ┆
0x17880…17900 UnusedSector ┆links is the number of references to this file from directories ┆
0x17900…17980 UnusedSector ┆ry (MD) contains a number of Symblic File Directory Entries (SFDEs), each naming a file of the volume. ┆
0x17980…17a00 UnusedSector ┆ A SFDE consist of - the file name - the number of the BFDE describing the file ┆
0x17a00…17a80 UnusedSector ┆ Initially the MD contains the following entries: 0: BFD 1: MD ┆
0x17a80…17b00 UnusedSector ┆ 2: BM 3: BAD 4: HB 3.1.1.1.5 _________ Other _____ di┆
0x17b00…17b80 UnusedSector ┆rectories ___________ A directory consist of a number of SFDEs (possibly none), eac┆
0x17b80…17c00 UnusedSector ┆h describing a file of the volume. The directory is described by an entry in the BFD ┆
0x17c00…17c80 UnusedSector ┆ with organization=directory. It is stored sequentially in the directory part of the system da┆
0x17c80…17d00 UnusedSector ┆ta. CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE ┆
0x17d00…17d80 UnusedSector ┆FILE MANAGEMENT SYSTEM EKH/811228 PAGE 8 PRODUCT SPECIFICATION AMOS 3┆
0x17d80…17e00 UnusedSector ┆.1.1.1.6 _________ Data ____ files _____ A data file is described by an entry in the BFD,┆
0x17e00…17e80 UnusedSector ┆ with organization=contiguous or organization=random. It is stored on the volume as a contiguous f┆
0x17e80…17f00 UnusedSector ┆ile. The maximum number of bytes in the file is defined when the file is created: ┆
0x17f00…17f80 UnusedSector ┆ - contiguous: allocsize * blocksize - random: allocsize * areasize * blocksize ┆
0x17f80…18000 UnusedSector ┆ where blocksize is 512 bytes. The physical size of the file cannot be changed during its ┆
0x18000…18080 UnusedSector ┆ lifetime. 3.1.1.2 _______ Volume ______ Layout ______ The MT volume is a┆
0x18080…18100 UnusedSector ┆n unlabelled tape volume, as defined by ref. 3, containing 2 files: - fil┆
0x18100…18180 UnusedSector ┆e S containing the system files - file D containing the data files If t┆
0x18180…18200 UnusedSector ┆he MT station is able to rewrite a block of the volume without destroying the volume contents beyond the blo┆
0x18200…18280 UnusedSector ┆ck, file S should preceed file D, otherwise file D should preceed file S. ┆
0x18280…18300 UnusedSector ┆ ---------------------------------- I S I D I fig.1 ┆
0x18300…18380 UnusedSector ┆ ---------------------------------- ---------------------------------- ┆
0x18380…18400 UnusedSector ┆INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 7 PRO┆
0x18400…18480 UnusedSector ┆DUCT SPECIFICATION AMOS 1: MD 2: BM ┆
0x18480…18500 UnusedSector ┆ 3: BAD (dummy file) 4: HB 3.1.1.1.3 _________ Bit ___ Map ___ ┆
0x18500…18580 UnusedSector ┆ The Bit Map (BM) contains a bit for each block on the volume. The bit is 0 for a free block; 1 for┆
0x18580…18600 UnusedSector ┆ a block in use. 3.1.1.1.4 _________ Main ____ Directory _________ The Main Directo┆
0x18600…18680 UnusedSector ┆ volume initialization. S file: ----------------------------------------┆
0x18680…18700 UnusedSector ┆------------ I HB I BFD I BM I MD I other directories I ----------------------┆
0x18700…18780 UnusedSector ┆------------------------------ 3.1.1.2.2 _________ D _ file ____ The D file is a concatenat┆
0x18780…18800 UnusedSector ┆ion of the contiguous and random files of the volume. The files are allocated contiguously in th┆
0x18800…18880 UnusedSector ┆e D file. When a file is removed from the tape, the space occupied is left as garbage. D file:┆
0x18880…18900 UnusedSector ┆ ------------------------------------------------------- I data file 1 I┆
0x18900…18980 UnusedSector ┆ data file 2 I garbage I data file 3 I ------------------------------------------------------- ┆
0x18980…18a00 UnusedSector ┆ CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT ┆
0x18a00…18a80 UnusedSector ┆SYSTEM EKH/811228 PAGE 10 PRODUCT SPECIFICATION AMOS 3.1.1.3 ___┆
0x18a80…18b00 UnusedSector ┆____ Tape ____ Cache _____ When a volume is mounted by the MTFMS, the system files are ┆
0x18b00…18b80 UnusedSector ┆ read and stored on disk in a form suitable for updates. When the volume is updated or dismounted, the system ┆
0x18b80…18c00 UnusedSector ┆files are written back onto the tape, if any change has been made to the tape. T┆
0x18c00…18c80 UnusedSector ┆he HB is cached in a temporary file (T_HB) The BFD is cached in a temporary file (T_BFD) The BM is┆
0x18c80…18d00 UnusedSector ┆ of no use and is not cached The BAD file is not used and is not cached The directories are cached┆
0x18d00…18d80 UnusedSector ┆ in a temporary file (T_D) T_HB is a simple copy of HB T_BFD is a simple copy of BFD ┆
0x18d80…18e00 UnusedSector ┆ I D I S I fig.2 ---------------------------------- ┆
0x18e00…18e80 UnusedSector ┆fig.1: tape written on MT station supporting rewtite fig.2: tape written on MT station not supporting rewtite ┆
0x18e80…18f00 UnusedSector ┆ CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE┆
0x18f00…18f80 UnusedSector ┆ MANAGEMENT SYSTEM EKH/811228 PAGE 9 PRODUCT SPECIFICATION AMOS 3.1.1┆
0x18f80…19000 UnusedSector ┆.2.1 _________ S _ file ____ The S file is a fixed length file containing HB ┆
0x19000…19080 UnusedSector ┆1 block BFD f+5 blocks BM (q-1)/(8*b) +1 blocks directories ┆
0x19080…19100 UnusedSector ┆ (n+5 -1) / (b/length(SFDE)) +1 where f is the maximum number of data┆
0x19100…19180 UnusedSector ┆ files, defined at volume initilazation. The five excessive BFDEs are for t┆
0x19180…19200 UnusedSector ┆he system files. n is the maximum number of file names, defined at volume ini┆
0x19200…19280 UnusedSector ┆tialization. The five excessive SFDEs are for the system files. b is the numb┆
0x19280…19300 UnusedSector ┆er of bytes per block (=512). q is the number of block on the tape, defined at ┆
0x19300…19380 UnusedSector ┆es cancel dummy The following IO system procedures are not supported: ┆
0x19380…19400 UnusedSector ┆ offer, accept, useron, useroff, write_and_mark, write_and_protect ┆
0x19400…19480 UnusedSector ┆ CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAGNETIC TAPE FILE MANAGEMENT┆
0x19480…19500 UnusedSector ┆ SYSTEM EKH/811228 PAGE 12 PRODUCT SPECIFICATION AMOS LIST_OF_CONTE┆
0x19500…19580 UnusedSector ┆NTS ________________ PAGE ____ 1. SCOPE ...............┆
0x19580…19600 UnusedSector ┆........................................ 1 1.1 Introduction. ........................................... 2 ┆
0x19600…19680 UnusedSector ┆ 1.2 Abbreviations and Acronyms. ............................. 3 2. APPLICABLE DOCUMENTS ...........................┆
0x19680…19700 UnusedSector ┆............. 4 3. REQUIREMENTS ................................................ 5 3.1 Description of use ┆
0x19700…19780 UnusedSector ┆...................................... 5 3.1.1 Narrative .......................................... 5 ┆
0x19780…19800 UnusedSector ┆ T_D is a copy of the directories. The SFDEs are organized in double linked lists - one for each directory and ┆
0x19800…19880 UnusedSector ┆one for the free SFDEs - in order to allow effective insertion and deletion of files. ┆
0x19880…19900 UnusedSector ┆ CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX CR80 AMOS, MAG┆
0x19900…19980 UnusedSector ┆NETIC TAPE FILE MANAGEMENT SYSTEM EKH/811228 PAGE 11 PRODUCT SPECIFICATION AMO┆
0x19980…19a00 UnusedSector ┆S 3.1.2 _____ Functions _________ Performed _________ The following IO system p┆
0x19a00…19a80 UnusedSector ┆rocedures are supported: function name comments -------------------------------------------┆
0x19a80…19b00 UnusedSector ┆---------------- assign device_address field of device_description ┆
0x19b00…19b80 UnusedSector ┆ is significant kind = 80 corresponds to rewritable tape ki┆
0x19b80…19c00 UnusedSector ┆nd = 81 corresponds to non-rewritable tape deassign format erase contents ┆
0x19c00…19c80 UnusedSector ┆of tape reserve dummy release dummy write_sectors write blocks of th┆
0x19c80…19d00 UnusedSector ┆e S file read_sectors read blocks of the S file mount dismount ┆
0x19d00…19d80 UnusedSector ┆ udpate create for random organized files allo┆
0x19d80…19e00 UnusedSector ┆csize * areasize blocks are allocated, however allocsize=0 is interpreted as 1. dis┆
0x19e00…19e80 UnusedSector ┆mantle reset enter remove rename get_root ┆
0x19e80…19f00 UnusedSector ┆ lookup descent get_file_information append_bytes for data fil┆
0x19f00…19f80 UnusedSector ┆es The file cannot be extended modify_bytes for data files, BFD and BM ┆
0x19f80…1a000 UnusedSector ┆ Only if rewriting of blocks is supported read_bytes for data files, BFD, BM and directori┆
0x1a000…1a080 UnusedSector ┆mant ░ ░ ░ ░set ░ ░ ░ ent ░ ░ ░ ░move ░ ░ rename get_root ┆
0x1a080…1a100 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x1a180…1a200 UnusedSector ┆ 3.1.1.1 Volume Structure .............................. 5 3.1.1.1.1 Home Block .....................┆
0x1a200…1a280 UnusedSector ┆.......... 6 3.1.1.1.2 Basic File Directory ..................... 6 3.1.1.1.3 Bit Map ┆
0x1a280…1a300 UnusedSector ┆.................................. 7 3.1.1.1.4 Main Directory ........................... 7 ┆
0x1a300…1a380 UnusedSector ┆ 3.1.1.1.5 Other directories ........................ 7 3.1.1.1.6 Data files .........................┆
0x1a380…1a400 UnusedSector ┆...... 8 3.1.1.2 Volume Layout ................................. 8 3.1.1.2.1 S file .....┆
0x1a400…1a480 UnusedSector ┆.............................. 9 3.1.1.2.2 D file ................................... 9 3┆
0x1a480…1a500 UnusedSector ┆.1.1.3 Tape Cache .................................... 10 3.1.2 Functions Performed ..............................┆
0x1a500…1a580 UnusedSector ┆.. 11 CHRISTIAN ROVSING A/S PROPRIETARY INFORMATION CSS/XXX/PSP/XXXX Z Z Z ┆
0x1a580…1a600 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0xb…]
0x1ab80…1ac00 UnusedSector ┆ S fi I ░ H \ ░ r ░d b ░cks ░ the ░ fil ░ ░ ░ ░ ░ ░ mou ░ ░ ░ ░smou ░ ┆
0x1ac00…1ac80 UnusedSector ┆ ░ ░ ░pate ░ ░ ░ ░ ░ ░crea ░ ░ f ░ ran ░m or ░nize ░file ░ ░ ░ ░ ░ ░allo┆
0x1ac80…1ad00 UnusedSector ┆ ░ize ░area ░ze b ░cks ░e al ░cate ░ ░ ░ ░ ░ ░ how ░er a ░ocsi ░=0 i ░inte ░rete ░as 1 ░ ░ ░ d ░┆
0x1ad00…1ad80 UnusedSector ┆ ░U.S. ░ ░ ░ ░ ░LTU. ░J ░ ░ ░ ░ LT ░L.CM ░ ░ ░ ░ ░L020 ░T ░ k ░ ░ ┆
0x1ad80…1ae00 UnusedSector ┆ ░ANSW ░.S ░ ░ ░ ░ DE ░G.S ░ ░ ░ ░ ░ST.D ░ ░ ░ ░ ░WRIT ░S ░ ░ ░ ░┆
0x1ae00…1ae80 UnusedSector ┆ LT ░TEST ░ ░p ░ ░ ░AD.S ░ ░ 5 ░ ░ ░XFER ░YPES ░ PASCAL_TYPES.S ┆
0x1ae80…1af00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x3…]
0x1b080…1b100 UnusedSector ┆ v ░ H \ ░> ░ ░ ░ ░ ░ ░ ░ ░ ░ ░- ░ E ░F ░ S ░V ░ ┆
0x1b100…1b180 UnusedSector ┆r ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ IN ░DISA ░E MA ░ ░ ░ ░ ░ ░ ┆
0x1b180…1b200 UnusedSector ┆ ░ ; I ░200: ░ ░ ░ ░ ░ ; ░AKE ░S AD ░ESS: ░ ░ MOV ░ XCB ░E ░ ░ R0 ░ ░ A ░ ░ ░ ░┆
0x1b200…1b280 UnusedSector ┆ R ░ ; ░DDR+ ░SE = ░DDR2 ░ ░ MO ░ PG ░SK ░ ░ R7 ░; ░GE M ░K AND R7 R0 ; AND ┆
0x1b280…1b300 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1b300…1b380 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x2…]
0x1b480…1b500 UnusedSector ┆ HEAD ░AH Y ░P3 ░ ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░ ░ ░ ░ ┆
0x1b500…1b580 UnusedSector ┆ ░P3.1 ░ ░ ░ ░ ░KAP1 ░ ░ ░ ░ ░ KA ░ ░ ░ ░ ░ ░P4 ░ ░ ░ ░ ┆
0x1b580…1b600 UnusedSector ┆ ░KAP3 ░.1.1 ░ ░ ░ ░ KA ░.1.1 ░.2 ░ ░ ░ ░P3.1 ░.1.3 ░ ░ ░ ░KAP3 ░.1.1 ░ ░ ░ ░┆
0x1b600…1b680 UnusedSector ┆ KA ░.1.1 ░.5 ░ ░ ░ ░P3.1 ░.1.6 ░ ░ ░ ░KAP3 ░.1.2 ░ KAP3.1.1.2.1 ┆
0x1b680…1b700 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1b700…1b780 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x4…]
0x1b980…1ba00 UnusedSector ┆ ░ H \ ░RECT ░ES.S ░ ░ ░ ░LTU. ░ ░ ░ ░ ░ LT ░P.J ░ ░ ░ ░ ┆
0x1ba00…1ba80 UnusedSector ┆X V H# y v; p5 _ _ h5 K, ;o) p O5 l# ENTER AT _ n." _ , CALLED AT _ n4 j_ , S= _ j3_ , ┆
0x1ba80…1bb00 UnusedSector ┆HEAP= _ j*_ , PARS _ n.! @ I h3 K:_S zo) p O5 l# EXIT FROM _ qn4b s8V , S= _ ]┆
0x1bb00…1bb80 UnusedSector ┆j8V , HEAP= _ Rj*V Eo) p O5 l# PREFIX _ @j<V AT _ 7j4 *V , S= _ $j3V , HEAP┆
0x1bb80…1bc00 UnusedSector ┆= _ j*V , PARS _ h3I K:_ _ _ O. V H! y V H$ yt9 ` b V O% @] v;p5m3u<o* u N ;N V H ! g ┆
0x1bc00…1bc80 UnusedSector ┆N ! q-I@ yq6 J " zr7 X ]4^0 > N h$ N k- 0N o6 yj7 X ]L^Hh$ p9 p:t8 l8h$~ 'h5~ !o*i3 q┆
0x1bc80…1bd00 UnusedSector ┆h: d N ;h9 N h: y J j3k: 2r< z X ]|^xN m< ;h&| h%| hKpF o6N a yo7J j* z X ] ^ . h* ┆
0x1bd00…1bd80 UnusedSector ┆ "hF o6 yo7 z X ] ^ n* w% w& w' w)N o1 o6N " " yo7J " z X ] ^ N m< ;v:t9 l9n:┆
0x1bd80…1be00 UnusedSector ┆ ;V H o*V M n j & z v I q, ow+ ? V J r,Z ? 8 @p> E p? p=h,> q*┆
0x1be00…1be80 UnusedSector ┆ _ Ah+ O5 H ? V > o O. ? X l2XCY; XD ?! 1 ` 0 ` 0 X _┆
0x1be80…1bf00 UnusedSector ┆ ` @ X @ C Xr! Xu! ~ X A A 2@ A X 0@O X ! x X X X A B`@ H X┆
0x1bf00…1bf80 UnusedSector ┆ A ! X A" r $ ij* ! X Y r* ij* ! X Y r* X X I P┆
0x1bf80…1c000 UnusedSector ┆ X X I P V } X `@~ V | X I X @ Y X P w X Y X P w _ H ┆
0x1c000…1c080 UnusedSector ┆ W A C :AY* A~ Y1X `B < | `@ < | O5 bB d B O. `@ B A @ D YN Y O. YS`@O V | YX V | Y^ ┆
0x1c080…1c100 UnusedSector ┆ J A `@ < | O5 b@ `@ e % O. X eY AV | Y J * V } Y C I A XJ Y $ QS ┆
0x1c100…1c180 UnusedSector ┆ HJ Y $ P q @ A'A A A'A A A'A A A'A A A'A A A'A A `B'C C `B'C ┆
0x1c180…1c200 UnusedSector ┆ C `B'C C `B'C C `B'C C `B'C C Y Z H PQ ┆
0x1c200…1c280 UnusedSector ┆ Y Z H PQ Y Z H PQ ! Y Z H PQ Y X" PQ Y X" ┆
0x1c280…1c300 UnusedSector ┆ O PASRTSh ] ^ d i n r w | p ┆
0x1c300…1c380 UnusedSector ┆! ' / 5 = E S t $ / B O [ h w 1 z 2 5 E I ┆
0x1c380…1c400 UnusedSector ┆ M X _ n p r ) \ = A G M T l ] ] ^ d i n r w | p ┆
0x1c400…1c480 UnusedSector ┆ ! ' / 5 = E S t $ / B O [ h w 1 z 2 5 E ┆
0x1c480…1c500 UnusedSector ┆I M X _ n p r # \ = A G M T l y ] V k V I @ 6X @O5 m( V l# ┆
0x1c500…1c580 UnusedSector ┆ MINIMUM FREE AREA: _ djJ : _ _ O. h,~ h,i+ t9 9 m ? K _ LINE NO. TRACE: _ h* ZV K _ Q B┆
0x1c580…1c600 UnusedSector ┆X _ _ _ 9V K h* _ V H I A B w2h$~ H p$. N " !q* h p3 ! h$~ X&. q* h p3┆
0x1c600…1c680 UnusedSector ┆m3 u3 II V YJ D .cC D r O R T Y j K X X h N NK _ b NH: Y E , X Zm3 m3 X X Rm3 O NH: GI ^ _ G F DH: <┆
0x1c680…1c700 UnusedSector ┆m3 O &m3 PH: 5 O m3 Q _ 4 N H J Hi3 Fh$ I E u3h$ V ░ V m3 ^ [l2 v;t9r7h* ^ P g l7 f Jl9 ; _ ┆
0x1c700…1c780 UnusedSector ┆J D _ | Pq Y X B A J _ Z A K X E B Y P A _ O _ A YP A C BV J D┆
0x1c780…1c800 UnusedSector ┆ _ A C BV J D _ A C A B F _ C A B I _ D B C D _ A O5 ? V O. X i P _s8 +$ V l ( ┆
0x1c800…1c880 UnusedSector ┆$ $ k8 Y A P Y A P B Y A P A Y P Y P A A Y P A Y A┆
0x1c880…1c900 UnusedSector ┆ Y P A D C B I Z A D C Bt9 A H Z l9 _V Pp h 0A t9 C B X A X l9 ┆
0x1c900…1c980 UnusedSector ┆t9 A X \ l9 t9 A B X \ l9 t9 A X \ l9 t9 A B X \ l9 t9 B X `@ l9 s8t9 B C X X A ┆
0x1c980…1ca00 UnusedSector ┆k8l9 A B X X A B X X aA C X X A B X X Av; n;s8 B C D X X k8 t9 C B X `@ ┆
0x1ca00…1ca80 UnusedSector ┆ l9 A B X X A B X X t9aA C X Y l9 Z Z Z Z Z Z Z Z Z Z Z Z|ZyZvZsZ Z Y Y Y Y ZvY ZqY Y Y Y Y ┆
0x1ca80…1cb00 UnusedSector ┆Y Y|YrYkYd Y]YTY>Y8Y2Y+Y%Y Y Y X Y # 2X X X X X X X X X X X XzXkX`XXXP ? J : T 0 ; H S ` j s ~ ┆
0x1cb00…1cb80 UnusedSector ┆ 4 : G Z m[r[n v zZ Z~Z{Z zY9 @Z Z Z Z k ZwZ^ W _t9 B C X `@ l9 t9aA , X Y l9 i* Q┆
0x1cb80…1cc00 UnusedSector ┆ V B Z ) A t9 C X X l9 < V /t9 \ | h* @V yPB | PD` ' H : X Z l9 t9`@ B X l9 ┆
0x1cc00…1cc80 UnusedSector ┆ Av;_,n; Bs8 C D X X k8 Av;_<n; Bs8 C D X X k8 Av;_Ln; Bs8 C D X X k8 Av;_\n; Bs8 C D X X k8 ┆
0x1cc80…1cd00 UnusedSector ┆PQ Y X" PQ Y X" PQ PQ Y X" PQ Y X" PQ PQ ~ Z ┆
0x1cd00…1cd80 UnusedSector ┆ C Z ! Z 4@ Y @ @ o' q HV ` Xi* ! Z B A @┆
0x1cd80…1ce00 UnusedSector ┆ ^ o' Z * iJ !rJ s HV o B A @ ^ kh= A Xi* ! [ [ o' u o& & I ┆
0x1ce00…1ce80 UnusedSector ┆J ( _ _ `@@ ~ Z, ~ Z/ A V } Z7 A@ XV < | ZA J ! @ @ @ X B Q C Bh= A ┆
0x1ce80…1cf00 UnusedSector ┆ [ ^ Xi* ! V [p u= 8 @p> C Bh= A [ ^ Xi* ! V [ u= 8 @p> E p? C B A @ G F E D D B┆
0x1cf00…1cf80 UnusedSector ┆ ^ A A h* P[ B A @ F E D D B ^ A A h* P[ A @ E D D B ^ A A ┆
0x1cf80…1d000 UnusedSector ┆ h* P[ A @ E D D B ^ A A h* PV @ D D B ^ A A h* PV ! q┆
0x1d000…1d080 UnusedSector ┆ ! q @! q A ! q B A ! q B A A ^ h* PV I ) p pI ┆
0x1d080…1d100 UnusedSector ┆ @ y @ A A B @[ @Z1 @Z% @Z @Z @Z @Y o? ` @ oX ?X h?! hX 8X O5┆
0x1d100…1d180 UnusedSector ┆ y O5 z } X V I! o' r Hq<V i< q _h* _w* A A A X H ┆
0x1d180…1d200 UnusedSector ┆ A AT@ H A AT@$ A O @ V V ░ Y O B w O w$ A O @ 'V V / _ H ┆
0x1d200…1d280 UnusedSector ┆~ w r C r B p H O V AT@ H O V AS O V A A _ Y `@ `@ A A┆
0x1d280…1d300 UnusedSector ┆ B A G _ Z A H 6Z`Y&v; ^B AO B p n; v; ^B B o A q pz n; v; ^B A/ B p p ┆
0x1d300…1d380 UnusedSector ┆ n; v; ^B B/ A p pz n; _ X c o X V 5 _B AJ H 1B C~ < * S < ┆
0x1d380…1d400 UnusedSector ┆* v; B J H 1C ^ AB D~ B r < * B r < * n; V Y A BV ┆
0x1d400…1d480 UnusedSector ┆ PASRTS.CODES1.S " Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1d480…1d500 UnusedSector ┆ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x1d580…1d600 UnusedSector ┆Z Z ░ ┆
0x1d600…1d680 UnusedSector ┆ ! " # $ % & ' ( ) Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1d680…1d700 UnusedSector ┆ Av;_ln;t9 B C X X l9 Av;_{n;t9 B C X X l9 Av;_ n;t9 B C X X l9 Bv;_ n;s8t9K C D X `@ k8l9 ┆
0x1d700…1d780 UnusedSector ┆ Bv;_ n;s8t9K C D X `@ k8l9 Bv;_ n;s8t9K C D X `@ k8l9 s8t9 A X Y k8l9 s8t9 B X! a@ 1 k8l9 ┆
0x1d780…1d800 UnusedSector ┆s8t9 A X" Y k8l9 s8t9 B C _ `@ k8l9 t9 B _ `@ l9 t9`@ B _ l9 t9 Y C _ Y l9 s8t9 B _ ┆
0x1d800…1d880 UnusedSector ┆ `@ k8l9 s8t9`@ B _ _ c 9 k8l9 t9 A _ \ l9 t9 B A C _ l9 Y s8t9b@ B _ k8l9 s8t9┆
0x1d880…1d900 UnusedSector ┆b@ B _ $ _ k8l9 t9 B A C _ Y l9 t9 A _ \ l9 s8 Dv; ^ [ Pa A B C k8n; s8 Cv; ^ \ Pa A┆
0x1d900…1d980 UnusedSector ┆ B k8n; Z A ] P! O5 C ^ _ l ` O. s8t9v;n* [ c ? O A v sV ~ X B _ ┆
0x1d980…1da00 UnusedSector ┆ ^ k8l9n; s8t9 A B C _ Z k8l9 s8t9h* Y V A B C _ Z k8l9 s8t9h* Y V k AaB D _ Z k8l9 s8t9 A┆
0x1da00…1da80 UnusedSector ┆ _ \ k8l9 h* Y X X A0@ A `B A _ `@ A Z Z I O5 i/ B A _ ┆
0x1da80…1db00 UnusedSector ┆ V O m3 Z O. ~ X m3X I X O5 I B A _ V O m3 Z O. ~ X m3X O5 I B A _ n3 h < | M ┆
0x1db00…1db80 UnusedSector ┆| O. t9i* X A V B BO q A C _ Y l9 O5 B C E F Gn* _ g V D f m3 A m3 X O. O5 ┆
0x1db80…1dc00 UnusedSector ┆ D C Fn* _ g V B g m3 A E 1 m3 X O. O5 h A B t5 n ]B h5 px r g O. Xp' Aq#┆
0x1dc00…1dc80 UnusedSector ┆j( r( O) P O5 o* u V I ? ~ Cj* . J L ! m$> - 1A$ i X Xo1 n*M I J j A i X ┆
0x1dc80…1dd00 UnusedSector ┆ EV #j$| n*M J / j i X .V m3 Ch$| H V O. _ APpn4V _ h2 n$~ M n3 n1 h* ┆
0x1dd00…1dd80 UnusedSector ┆ }k1n4V L V Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1dd80…1de00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x1de80…1df00 UnusedSector ┆ ░ H \ ░ \ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x1df00…1df80 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x1df80…1e000 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░┆
0x1e000…1e080 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x1e080…1e100 UnusedSector ┆ PASRTS.C / PASRTS.CODES3.S Ch$| H V PASRTS.PREFS5.S _ h2 n$ PASRTS.CODES4.S ! h* ┆
0x1e100…1e180 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1e180…1e200 UnusedSector ┆ ; NLSET A >= B ; A SET (8 WORDS) IS POPPED FROM THE STACK. IF IT IS ; CONTAINED IN THE NEW STACK TOP ELEMENT, THIS ┆
0x1e200…1e280 UnusedSector ┆IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO056: ; NLSET: PTO056: ┆
0x1e280…1e300 UnusedSector ┆ ; MOV R5 R1 ; RE.ST(S); MOV R5 R2 ; ADDC 8 ┆
0x1e300…1e380 UnusedSector ┆ R2 ; RE.ST(S+8); ADDC 15 R5 ; S+15 => S; MOVC 8 R0 ; "FOR LIMIT"; PL1┆
0x1e380…1e400 UnusedSector ┆056: ; FOR I := 1 TO 8 DO IOR X2 X1 ; A OR B => B; INEP ┆
0x1e400…1e480 UnusedSector ┆ X1 X2 ; IF A <> B THEN XTR X5 0 ; FALSE => ST(S); JMP ┆
0x1e480…1e500 UnusedSector ┆ PL2056 ; GOTO PL2056 FI; INCD R1 R2 ; INC(R1); INC(R2); SOB R0 P┆
0x1e500…1e580 UnusedSector ┆L1056 ; ROF; MOVC 1 X5 ; TRUE => ST(S); PL2056: ; JMP ┆
0x1e580…1e600 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; NESET ┆
0x1e600…1e680 UnusedSector ┆ A <> B ; A SET (8 WORDS) IS POPPED FROM THE STACK. IF IT IS ; NOT EQUAL TO THE NEW STACK TOP ELEMENT, THIS IS ; REPLACED BY TR┆
0x1e680…1e700 UnusedSector ┆UE (=1), OTHERWISE BY FALSE (=0). PCO057: ; NESET: PTO057: ; MO┆
0x1e700…1e780 UnusedSector ┆V R5 R1 ; RE.ST(S); MOV R5 R2 ; ADDC 8 R2 ; RE.ST(S+8)┆
0x1e780…1e800 UnusedSector ┆; ADDC 15 R5 ; S+15 => S; MOVC 8 R0 ; "FOR LIMIT"; PL1057: ┆
0x1e800…1e880 UnusedSector ┆ ; FOR I := 1 TO 8 DO INEP X2 X1 ; IF A <> B THEN MOVC 1 ┆
0x1e880…1e900 UnusedSector ┆X5 ; TRUE => ST(S); JMP PL2057 ; GOTO PL2057 FI; INCD R2 R1 ┆
0x1e900…1e980 UnusedSector ┆ ; INCD(R2); INCD(R1); SOB R0 PL1057 ; ROF; XTR X5 0 ; FALSE => ST(S)┆
0x1e980…1ea00 UnusedSector ┆; PL2057: ; JMP X4 ; GOTO NEXT; ;===================================┆
0x1ea00…1ea80 UnusedSector ┆==================================== ; NGSET A <= B ; A SET (8 WORDS) IS POPPED FROM THE STACK. IF IT ; CONTAINS TH┆
0x1ea80…1eb00 UnusedSector ┆E NEW STACK TOP ELEMENT, THIS IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO058: ; NGSET:┆
0x1eb00…1eb80 UnusedSector ┆ PTO058: ; MOV R5 R1 ; RE.ST(S) "B" MOV R5 R2┆
0x1eb80…1ec00 UnusedSector ┆ ; ADDC 8 R2 ; RE.ST(S+8) "A" ADDC 15 R5 ; S+15 => S; MOVC 8 ┆
0x1ec00…1ec80 UnusedSector ┆ R0 ; "FOR LIMIT"; PL1058: ; FOR I := 1 TO 8 DO IOR X1 X2┆
0x1ec80…1ed00 UnusedSector ┆ ; B OR A => A; INEP X1 X2 ; IF A <> B THEN XTR X5 0 ; ┆
0x1ed00…1ed80 UnusedSector ┆ FALSE => ST(S); JMP PL2058 ; GOTO PL2058 FI; INCD R1 R2 ; INC(┆
0x1ed80…1ee00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1ee00…1ee80 UnusedSector ┆ ; FOR I := 1 TO LENGTH DO IEQ X0 X1 ; IF ST(X) = ST(Y) THEN JM┆
0x1ee80…1ef00 UnusedSector ┆P PL2059 ; GOTO PL2059 FI; ILTP X0 X1 ; IF ST(X) < ST(Y) THEN M┆
0x1ef00…1ef80 UnusedSector ┆OVC 1 X5 ; TRUE => ST(S); JMP PL3059 ; GOTO PL3059; XTR ┆
0x1ef80…1f000 UnusedSector ┆ X5 0 ; ELSE FALSE => ST(S); JMP PL3059 ; GOTO PL3059 FI; PL2059: ┆
0x1f000…1f080 UnusedSector ┆ ; INCD R0 R1 ; INC(X); INC(Y); SOB R2 PL1059 ; ROF;┆
0x1f080…1f100 UnusedSector ┆ XTR X5 0 ; FALSE => ST(S) "THEY WERE EQUAL" PL3059: ; JMP ┆
0x1f100…1f180 UnusedSector ┆ 1. X4 ; GOTO NEXT; ;======================================================================= ; EQSTRUCT(LENGTH)┆
0x1f180…1f200 UnusedSector ┆ (A = B) ; THE STACK TOP IS ASSUMED TO CONTAIN THE ABSOLUTE ; ADDRESS OF A STRUCTURE B. THE WORD BELOW THE TOP ; CONT┆
0x1f200…1f280 UnusedSector ┆AINS THE ABSOLUTE ADDRESS OF A STRUCTURE A. THE ; 2 ADDRESSES ARE POPPED, AND IF A = B THEN TRUE (=1), ; OTHERWISE FALSE (=0), I┆
0x1f280…1f300 UnusedSector ┆S PUSHED ON THE STACK. PCO060: ; EQSTRUCT: PTO060: ; MOV ┆
0x1f300…1f380 UnusedSector ┆ X5 R1 ; ST(S) => Y "RE.B"; ADDC 1 R5 ; S+1 => S; MOV X5 R0 ┆
0x1f380…1f400 UnusedSector ┆; ST(S) => X "RE.A"; MVP X4 R2 ; PG(Q) => LENGTH; PL1060: ; FOR I :┆
0x1f400…1f480 UnusedSector ┆= 1 TO LENGTH DO INEP X0 X1 ; IF ST(X) <> ST(Y) THEN XTR X5 0 ; ┆
0x1f480…1f500 UnusedSector ┆ FALSE => ST(S); JMP PL2060 ; GOTO PL2060 FI; INCD R0 R1 ; IN┆
0x1f500…1f580 UnusedSector ┆C(X); INC(Y); SOB R2 PL1060 ; ROF; MOVC 1 X5 ; TRUE => ST(S); PL2060: ┆
0x1f580…1f600 UnusedSector ┆ ; JMP 1. X4 ; GOTO NEXT; ;===================================================┆
0x1f600…1f680 UnusedSector ┆==================== ; GRSTRUCT(LENGTH) (A > B) ; THE STACK TOP IS ASSUMED TO CONTAIN THE ABSOLUTE ; ADDRESS OF A ST┆
0x1f680…1f700 UnusedSector ┆RUCTURE B. THE WORD BELOW THE TOP ; CONTAINS THE ABSOLUTE ADDRESS OF A STRUCTURE A. THE ; 2 ADDRESSES ARE POPPED, AND IF A > B T┆
0x1f700…1f780 UnusedSector ┆HEN TRUE (=1), ; OTHERWISE FALSE (=0), IS PUSHED ON THE STACK. PCO061: ; GRSTRUCT: PTO061: ┆
0x1f780…1f800 UnusedSector ┆R1); INC(R2); SOB R0 PL1058 ; ROF; MOVC 1 X5 ; TRUE => ST(S); PL2058: ┆
0x1f800…1f880 UnusedSector ┆ ; JMP X4 ; GOTO NEXT; ;===================================================┆
0x1f880…1f900 UnusedSector ┆==================== ; LSSTRUCT(LENGTH) A < B ; THE STACK TOP IS ASSUMED TO CONTAIN THE ABSOLUTE ; ADDRESS OF A STRUCTURE┆
0x1f900…1f980 UnusedSector ┆ B. THE WORD BELOW THE TOP ; CONTAINS THE ABSOLUTE ADDRESS OF A STRUCTURE A. THE ; 2 ADDRESSES ARE POPPED, AND IF A < B THEN TRU┆
0x1f980…1fa00 UnusedSector ┆E (=1), ; OTHERWISE FALSE (=0), IS PUSHED ON THE STACK. PCO059: ; LSSTRUCT: PTO059: ┆
0x1fa00…1fa80 UnusedSector ┆ ; MOV X5 R1 ; ST(S) => Y "RE.B"; ADDC 1 R5 ; S+1 => S; ┆
0x1fa80…1fb00 UnusedSector ┆ MOV X5 R0 ; ST(S) => X "RE.A"; MVP X4 R2 ; PG(Q) => LENGTH; PL1059: ┆
0x1fb00…1fb80 UnusedSector ┆ X "RE.A"; MVP X4 R2 ; ST(Q) => LENGTH; PL1062: ; FOR I := 1 TO LENGTH┆
0x1fb80…1fc00 UnusedSector ┆ DO IEQ X0 X1 ; IF ST(X) = ST(Y) THEN JMP PL2062 ; GOTO PL2062 F┆
0x1fc00…1fc80 UnusedSector ┆I; IGEP X0 X1 ; IF ST(X)>="IE.>" ST(Y) THEN MOVC 1 X5 ; TRUE => ┆
0x1fc80…1fd00 UnusedSector ┆ST(S); JMP PL3062 ; GOTO PL3062; XTR X5 0 ; ELSE FALSE => ST(S)┆
0x1fd00…1fd80 UnusedSector ┆; JMP PL3062 ; GOTO PL3062 FI; PL2062: ; INCD R0 ┆
0x1fd80…1fe00 UnusedSector ┆ R1 ; INCR(X); INCR(Y); SOB R2 PL1062 ; ROF; MOVC 1 X5 ; TRUE => ┆
0x1fe00…1fe80 UnusedSector ┆ST(S); PL3062: ; JMP 1. X4 ; GOTO NEXT; ;==============================┆
0x1fe80…1ff00 UnusedSector ┆========================================= ; NESTRUCT(LENGTH) ( A <> B) ; THE STACK TOP IS ASSUMED TO CONTAIN THE ABS┆
0x1ff00…1ff80 UnusedSector ┆OLUTE ; ADDRESS OF A STRUCTURE B. THE WORD BELOW THE TOP ; CONTAINS THE ABSOLUTE ADDRESS OF A STRUCTURE A. THE ; 2 ADDRESSES ARE┆
0x1ff80…20000 UnusedSector ┆ POPPED, AND IF A <> B THEN TRUE (=1), ; OTHERWISE FALSE (=0), IS PUSHED ON THE STACK. PCO063: ; NE┆
0x20000…20080 UnusedSector ┆STRUCT: PTO063: ; MOV X5 R1 ; ST(S) => Y "RE.B"; ADDC 1 ┆
0x20080…20100 UnusedSector ┆ R5 ; S+1 => S; MOV X5 R0 ; ST(S) => X "RE.A"; MVP X4 R2 ; ┆
0x20100…20180 UnusedSector ┆ST(Q) => LENGTH; PL1063: ; FOR I := 1 TO LENGTH DO INEP X0 X1 ; IF S┆
0x20180…20200 UnusedSector ┆ ; MOV X5 R1 ; ST(S) => Y "RE.B"; ADDC 1 R5 ; S+1 =>┆
0x20200…20280 UnusedSector ┆ S; MOV X5 R0 ; ST(S) => X "RE.A"; MVP X4 R2 ; PG(Q) => LENGTH; PL1061:┆
0x20280…20300 UnusedSector ┆ ; FOR I := 1 TO LENGTH DO IEQ X0 X1 ; IF ST(X) = ST(Y) THEN ┆
0x20300…20380 UnusedSector ┆ JMP PL2061 ; GOTO PL2061 FI; IGEP X0 X1 ; IF ST(X)>="IE.>"ST(Y) THEN ┆
0x20380…20400 UnusedSector ┆ MOVC 1 X5 ; TRUE => ST(S); JMP PL3061 ; GOTO PL3061; XT┆
0x20400…20480 UnusedSector ┆R X5 0 ; ELSE FALSE => ST(S); JMP PL3061 ; GOTO PL3061 FI; PL2061: ┆
0x20480…20500 UnusedSector ┆ ; INCD R0 R1 ; INCR(X); INCR(Y); SOB R2 PL1061 ; R┆
0x20500…20580 UnusedSector ┆OF; XTR X5 0 ; FALSE => ST(S); PL3061: ; JMP 1. ┆
0x20580…20600 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; NLSTRUCT(LENGTH) (A ┆
0x20600…20680 UnusedSector ┆>= B) ; THE STACK TOP IS ASSUMED TO CONTAIN THE ABSOLUTE ; ADDRESS OF A STRUCTURE B. THE WORD BELOW THE TOP ; CONTAINS THE ABSO┆
0x20680…20700 UnusedSector ┆LUTE ADDRESS OF A STRUCTURE A. THE ; 2 ADDRESSES ARE POPPED, AND IF A >= B THEN TRUE (=1), ; OTHERWISE FALSE (=0), IS PUSHED ON ┆
0x20700…20780 UnusedSector ┆THE STACK. PCO062: ; NLSTRUCT: PTO062: ; MOV X5 ┆
0x20780…20800 UnusedSector ┆ R1 ; ST(S) => Y "RE.B"; ADDC 1 R5 ; S+1 => S; MOV X5 R0 ; ST(S) =>┆
0x20800…20880 UnusedSector ┆DDC -2 R5 ; ELSE S-2 => S; JMP PL2065 ; GOTO PL2065 FI; PL1065: ┆
0x20880…20900 UnusedSector ┆ ; ELSE "KIND = 0" ADDC -1 R5 ; S-1 => S FI; PL2065: ┆
0x20900…20980 UnusedSector ┆ ; JMP 1. X4 ; GOTO NEXT; ;======================================================================┆
0x20980…20a00 UnusedSector ┆= ; JUMP(DISTANCE) ; JUMPS LOCATION RELATIVE. PCO066: ; JUMP: PTO066: MVP X4 ┆
0x20a00…20a80 UnusedSector ┆ R0 ; DISTANCE ADD R0 R4 ; +Q => Q; JMP X4 ; RETURN; ┆
0x20a80…20b00 UnusedSector ┆ ;======================================================================= ; FALSEJUMP(DISTANCE) ; POPS A VALUE (1 WORD) FROM T┆
0x20b00…20b80 UnusedSector ┆HE STACK. IF THIS VALUE ; IS FALSE (=0), THEN THE LOCATION COUNTER IS INCREMENTED ; BY DISTANCE, OTHERWISE BY 1. PCO067: ┆
0x20b80…20c00 UnusedSector ┆T(X) <> ST(Y) THEN MOVC 1 X5 ; TRUE => ST(S); JMP PL2063 ; GO┆
0x20c00…20c80 UnusedSector ┆TO PL2063 FI; INCD R0 R1 ; INCR(X); INCR(Y); SOB R2 PL1063 ; ROF; ┆
0x20c80…20d00 UnusedSector ┆XTR X5 0 ; FALSE => ST(S); PL2063: ; JMP 1. X4 ; GO┆
0x20d00…20d80 UnusedSector ┆TO NEXT; ;======================================================================= ; NGSTRUCT(LENGTH) (A <= B) ; THE┆
0x20d80…20e00 UnusedSector ┆ STACK TOP IS ASSUMED TO CONTAIN THE ABSOLUTE ; ADDRESS OF A STRUCTURE B. THE WORD BELOW THE TOP ; CONTAINS THE ABSOLUTE ADDRESS┆
0x20e00…20e80 UnusedSector ┆ OF A STRUCTURE A. THE ; 2 ADDRESSES ARE POPPED, AND IF A <= B THEN TRUE (=1), ; OTHERWISE FALSE (=0), IS PUSHED ON THE STACK. ┆
0x20e80…20f00 UnusedSector ┆PCO064: ; NGSTRUCT: PTO064: ; MOV X5 R1 ; ST┆
0x20f00…20f80 UnusedSector ┆(S) => Y "RE.B"; ADDC 1 R5 ; S+1 => S; MOV X5 R0 ; ST(S) => X "RE.A"; ┆
0x20f80…21000 UnusedSector ┆ MVP X4 R2 ; PG(Q) => LENGTH; PL1064: ; FOR I := 1 TO LENGTH DO ┆
0x21000…21080 UnusedSector ┆ IEQ X0 X1 ; IF ST(X) = ST(Y) THEN JMP PL2064 ; GOTO PL2064 FI; ┆
0x21080…21100 UnusedSector ┆ILTP X0 X1 ; IF ST(X) < ST(Y) THEN MOVC 1 X5 ; TRUE => ST(S); JM┆
0x21100…21180 UnusedSector ┆P PL3064 ; GOTO PL3064; XTR X5 0 ; ELSE FALSE => ST(S); JMP ┆
0x21180…21200 UnusedSector ┆ PL3064 ; GOTO PL3064 FI; PL2064: ; INCD R0 R1 ; ┆
0x21200…21280 UnusedSector ┆INCR(X); INCR(Y); SOB R2 PL1064 ; ROF; MOVC 1 X5 ; TRUE => ST(S); PL3064: ┆
0x21280…21300 UnusedSector ┆ ; JMP 1. X4 ; GOTO NEXT; ;===============================================┆
0x21300…21380 UnusedSector ┆======================== ; FUNCVALUE(KIND) ; CASE KIND OF ; O: ALLOCATE SPACE FOR 1 WORD; ; 8: ALLOC┆
0x21380…21400 UnusedSector ┆ATE SPACE FOR 2 WORDS; ; OTHERWISE: ERROR; ; END; PCO065: ; FUNCVALUE: PTO065: ┆
0x21400…21480 UnusedSector ┆ ; MVP X4 R0 ; PG(Q) => KIND; JOZ R0 PL1065 ; IF KIND <> 0 THEN ┆
0x21480…21500 UnusedSector ┆ INE R0 8 ; IF KIND <> 8 THEN JMP PCRANG ; RANGEERROR; A┆
0x21500…21580 UnusedSector ┆ R0 ; PG(Q) => DISTANCE; ADDC -1 R5 ; S-1 => S; MOV R4 X5 ; Q => ST┆
0x21580…21600 UnusedSector ┆ ; FALSEJUMP: PTO067: JON X5 PL1067 ; IF ST(S) = FALSE THEN MVP X4┆
0x21600…21680 UnusedSector ┆ R0 ; DISTANCE ADD R0 R4 ; +Q => Q; ADDC 1 R5 ; ┆
0x21680…21700 UnusedSector ┆ S+1 => S; JMP X4 ; RETURN; PL1067: ; ELSE ADDC 1 ┆
0x21700…21780 UnusedSector ┆ R5 ; S+1 => S; JMP 1. X4 ; RETURN FI; ;====================================┆
0x21780…21800 UnusedSector ┆=================================== ; CASEJUMP(MIN, MAX-MIN, DISTANCES) ; POPS A VALUE FROM THE STACK. ; CHECKS THAT IT IS WIT┆
0x21800…21880 UnusedSector ┆HIN LIMITS, AND JUMPS TO ONE ; OF A LIST OF LABELS FOLLOWING THE INSTRUCTION. PCO068: ; CASEJUMP: P┆
0x21880…21900 UnusedSector ┆TO068: ; MVP X4 R0 ; PG(Q) => MIN; SUB R0 X5 ;┆
0x21900…21980 UnusedSector ┆ ST(S)-MIN => ST(S); ILT X5 0 ; IF ST(S) < 0 THEN JMP PCRANG ; RANG┆
0x21980…21a00 UnusedSector ┆EERROR; MVP 1. X4 R1 ; PG(Q+1) => MAX-MIN; ILT R1 X5 ; IF MAX-MIN < ST(S) T┆
0x21a00…21a80 UnusedSector ┆HEN JMP PCRANG ; RANGEERROR FI; ADDC 2 R4 ; Q+2 => Q "REF FIRST DISTAN┆
0x21a80…21b00 UnusedSector ┆CE"; ADD X5 R4 ; Q+DISPL => Q; MVP X4 R0 ; ADD R0 ┆
0x21b00…21b80 UnusedSector ┆ R4 ; Q+PG(Q) => Q; ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;==┆
0x21b80…21c00 UnusedSector ┆===================================================================== ; INITVAR(LENGTH) ; INITIALIZES THE VARIABLES OF A ROUTI┆
0x21c00…21c80 UnusedSector ┆NE TO 0. PCO069: ; INITVAR: PTO069: ; MVP X4 R┆
0x21c80…21d00 UnusedSector ┆0 ; PG(Q) => LENGTH; JOZ R0 PL2069 ; IF LENGTH=0 THEN GOTO PL2069 FI; MOV R5 ┆
0x21d00…21d80 UnusedSector ┆ R1 ; S => X; PL1069: ; FOR I := 1 TO LENGTH DO XTR X1 0 ; 0 =>┆
0x21d80…21e00 UnusedSector ┆ ST(X); ADDC 1 R1 ; X+1 => X; SOB R0 PL1069 ; ROF; PL2069: ┆
0x21e00…21e80 UnusedSector ┆ ; JMP 1. X4 ; GOTO NEXT; ;===========================================================┆
0x21e80…21f00 UnusedSector ┆============ ; CALL(DISTANCE) ; LOCAL ROUTINE CALL. ; THE ADDRESS OF THE NEXT INSTRUCTION IS PUSHED ON ; THE STACK. A LOCATION┆
0x21f00…21f80 UnusedSector ┆ RELATIVE JUMP IS PERFORMED. PCO070: ; CALL: PTO070: ; MVP ┆
0x21f80…22000 UnusedSector ┆ X4 R0 ; PG(Q) => DISTANCE; ADDC -1 R5 ; S-1 => S; MOV R4 X5 ┆
0x22000…22080 UnusedSector ┆ ; Q => ST(S); INC X5 ; ST(S)+1 => ST(S); MOV R0 R4 ; DISTANCE => Q┆
0x22080…22100 UnusedSector ┆; JMP X4 ; GOTO NEXT; ;======================================================================= ┆
0x22100…22180 UnusedSector ┆ IF OLDVERSUP THEN ; LOCAL ROUTINE CALL. ; THE ADDRESS OF THE NEXT INSTRUCTION IS PUSHED ON ; THE STACK. A LOCATION DIRECT JU┆
0x22180…22200 UnusedSector ┆MP IS PERFORMED. PCG070: ; CALL: PTG070: ; MVP X4 ┆
0x22200…22280 UnusedSector ┆THEN JMP PL1072 ; GOTO PL1072 FI; MOV R4 R0 ; "THE PRINT ENTER TRACE R┆
0x22280…22300 UnusedSector ┆OUTINE ; REQUIRES Q IN R0"; JMP S4 PPE080 ; "JUMP TO ENTER-TRACE ┆
0x22300…22380 UnusedSector ┆ROUTINE"; MOV R0 R4 ; "RESTORE Q"; PL1072: ; FI MOV R5 ┆
0x22380…22400 UnusedSector ┆ R0 ; S => X; MOV HEAPTOP R1 ; ST(HEAPTOP) => Y; SUB R1 R0 ; X-Y =>┆
0x22400…22480 UnusedSector ┆ X; MVP X4 R1 ; PG(Q) => STACKLENGTH; ILO R0 R1 ; IF X < "U" STACKLENGTH┆
0x22480…22500 UnusedSector ┆ THEN JMP PCSTAC ; GOTO STACKLIMIT FI; ADDC -3 R5 ; S-3 => S; M┆
0x22500…22580 UnusedSector ┆OV R3 2. X5 ; G => ST(S+2); MOV R6 1. X5 ; B => ST(S+1); MOV R5 ┆
0x22580…22600 UnusedSector ┆ X5 ; S => ST(S); MVP 1. X4 R0 ; POPLENGTH ADD R0 X5 ; +ST(S)┆
0x22600…22680 UnusedSector ┆ => ST(S); ADDC -1 R5 ; S-1 => S; MVP 2. X4 R0 ; LINE MOV R┆
0x22680…22700 UnusedSector ┆0 X5 ; => ST(S); MOV R5 R6 ; S => B; MVP 3. X4 R0 ; PG(Q+3)┆
0x22700…22780 UnusedSector ┆ => VARLENGTH; SUB R0 R5 ; S-VARLENGTH => S; JMP 4. X4 ; GOTO NEXT; ;==┆
0x22780…22800 UnusedSector ┆===================================================================== ; EXIT ; EXIT FROM A PROCEDURE OR FUNCTION. PCO073: ┆
0x22800…22880 UnusedSector ┆ ; EXIT: PTO073: ; IF DBTRAC>3 THEN MOV TRMASK R7 ; ┆
0x22880…22900 UnusedSector ┆ JOZ R7 PL1073 ; IF NOT TRACE THEN GOTO PL1073; MOV R5 R2 ; SUB HEAPTOP┆
0x22900…22980 UnusedSector ┆ R2 ; MOV MINFREE R1 ; ILO R2 R1 ; MOV R2 MINFREE ┆
0x22980…22a00 UnusedSector ┆ ; IBZ R7 3 ; IF NOT EXIT-TRACE THEN JMP PL1073 ; GOTO PL1073 FI; ┆
0x22a00…22a80 UnusedSector ┆ MOV R4 R0 ; "THE PRINT EXIT TRACE ROUTINE ; REQUIRES Q IN R0"; ┆
0x22a80…22b00 UnusedSector ┆ JMP S4 PPE085 ; "JUMP TO EXIT-TRACE ROUTINE"; MOV R0 R4 ; "RESTORE Q"; PL1073:┆
0x22b00…22b80 UnusedSector ┆ ; FI MOV R6 R7 ; B => X; MOV 1. X7 R5 ; ST(X+1┆
0x22b80…22c00 UnusedSector ┆) => S; MOV 2. X7 R6 ; ST(X+2) => B; MOV 3. X7 R3 ; ST(X+3) => G; MOV ┆
0x22c00…22c80 UnusedSector ┆ 4. X7 R4 ; ST(X+4) => Q; JMP X4 ; GOTO NEXT; ;=================================┆
0x22c80…22d00 UnusedSector ┆(S); INC X5 ; ST(S)+1 => ST(S); ADD R0 R4 ; Q + DISTANCE => Q; ┆
0x22d00…22d80 UnusedSector ┆ JMP X4 ; GOTO NEXT; FI ;======================================================================= ┆
0x22d80…22e00 UnusedSector ┆; ENTER(STACKLENGTH, POPLENGTH, LINE, VARLENGTH) ; ENTRY TO A PROCEDURE OR A FUNCTION. ; BUILDS THE DYNAMIC LINK. PCO072: ┆
0x22e00…22e80 UnusedSector ┆ ; ENTER: PTO072: ; IF DBTRAC>1 THEN MOV TRMASK R7 ; ┆
0x22e80…22f00 UnusedSector ┆ JOZ R7 PL1072 ; IF NOT TRACE THEN GOTO PL1072; IBZ R7 1 ; IF NOT ENTER-TRACE ┆
0x22f00…22f80 UnusedSector ┆================================================== ; EXITPROG ; EXIT FROM A SEQUENTIAL PROGRAM. PCO075: ┆
0x22f80…23000 UnusedSector ┆ ; EXITPROG: PTO075: ; JMP PCTERM ; GOTO TERMINATED; ;============┆
0x23000…23080 UnusedSector ┆=========================================================== ; POP(LENGTH) ; POPS LENGTH WORDS FROM THE STACK. PCO088: ┆
0x23080…23100 UnusedSector ┆ ; POP: PTO088: MVP X4 R0 ; LENGTH ADD R0 R5 ; ┆
0x23100…23180 UnusedSector ┆ +S => S; JMP 1. X4 ; RETURN; ;===================================================================┆
0x23180…23200 UnusedSector ┆==== ; NEWLINE(NUMBER) ; STORES A NEW LINE NUMBER. PCO089: ; NEWLINE: PTO089: ┆
0x23200…23280 UnusedSector ┆ ; MVP X4 R0 ; NUMBER MOV R0 X6 ; => ST(B); MOV ┆
0x23280…23300 UnusedSector ┆ TRMASK R7 ; IBZ R7 5 ; IF NOT LINE_STATISTICS THEN JMP PL1089 ┆
0x23300…23380 UnusedSector ┆ ; GOTO PL1089 FI; MOV XLINESTA R7 ; IF NO LINESTATISTICS AREA THEN JOZ R7 PL1089 ┆
0x23380…23400 UnusedSector ┆ ; GOTO PL1089; ADD R0 R0 ; 2*NUMBER+ ADD XLINESTA R0 ; LINESTA┆
0x23400…23480 UnusedSector ┆ => X; MOVC 0 R1 ; MOVC 1 R2 ; ADD R2 X0 ; INCR(┆
0x23480…23500 UnusedSector ┆LINESTA(X)) "LEAST SIGNIF"; ADDU R1 1. X0 ; "ADD CARRY TO MOST SIGNIFICANT"; PL1089: ┆
0x23500…23580 UnusedSector ┆ ; JMP 1. X4 ; GOTO NEXT; ;================================================================┆
0x23580…23600 UnusedSector ┆======= ; INCRWORD ; THE STACK TOP ELEMENT CONTAINS AN ABSOLUTE ADDRESS. ; THE ABSOLUTE ADDRESS IS POPPED AND ; THE WORD REFER┆
0x23600…23680 UnusedSector ┆ENCED BY THAT ADDRESS IS INCREMENTED. PCO090: ; INCRWORD: PTO090: MOV X5 R┆
0x23680…23700 UnusedSector ┆====================================== ; ENTERPROG(POPLENGTH, LINE, STACKLENGTH, VARLENGTH) ; ENTRY TO A SEQUENTIAL PROGRAM. ┆
0x23700…23780 UnusedSector ┆PCO074: ; ENTERPROG: PTO074: ; ADDC -3 R5 ; S┆
0x23780…23800 UnusedSector ┆-3 => S; MOV R3 2. X5 ; G => ST(S+2); MOV R6 1. X5 ; B => ST(S+1); MOV┆
0x23800…23880 UnusedSector ┆ R5 X5 ; S => ST(S); MVP X4 R0 ; POPLENGTH ADD R0 X5 ;┆
0x23880…23900 UnusedSector ┆ +ST(S) => ST(S); ADDC -1 R5 ; S-1 => S; MVP 1. X4 R0 ; LINE ┆
0x23900…23980 UnusedSector ┆ MOV R0 X5 ; => ST(S); MOV R5 R6 ; S => B; MOV R6 ┆
0x23980…23a00 UnusedSector ┆ R3 ; B => G; MOV GTOP R0 ; MOV R0 1. X5 ; MOV R5 R┆
0x23a00…23a80 UnusedSector ┆0 ; S => X; MOV HEAPTOP R1 ; ST(HEAPTOP) => Y; SUB R1 R0 ; X-Y => X; ┆
0x23a80…23b00 UnusedSector ┆ MVP 2. X4 R1 ; PG(Q+2) => STACKLENGTH; ILO R0 R1 ; IF X < "U" STACKLENGTH ┆
0x23b00…23b80 UnusedSector ┆ JMP PCSTAC ; THEN GOTO STACKLIMIT FI; MVP 3. X4 R0 ; PG(Q+3) => VARLENGTH; ┆
0x23b80…23c00 UnusedSector ┆ SUB R0 R5 ; S-VARLENGTH => S; JMP 4. X4 ; GOTO NEXT; ;=====================┆
0x23c00…23c80 UnusedSector ┆ X5 ; ELSE -ST(S) => ST(S) FI; PL1098: ; FI; JMP ┆
0x23c80…23d00 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; ABSLONG ; REPLACES THE LON┆
0x23d00…23d80 UnusedSector ┆G INTEGER (2 WORDS) AT THE ; STACK TOP BY ITS ABSOLUTE VALUE. PCO099: ; ABSLONG: PTO099: ┆
0x23d80…23e00 UnusedSector ┆ ; MOV 1. X5 R1 ; ST(S+1) => MOST; IGE R1 0 ; IF MOST >= ┆
0x23e00…23e80 UnusedSector ┆0 THEN JMP PL1099 ; THEN GOTO PL1099 FI; MOV X5 R0 ; ST(S) => LEAST; ┆
0x23e80…23f00 UnusedSector ┆ IEQP R1 #8000 ; IF MOST = #8000 IEQ R0 0 ; AND LEAST = 0 THEN JMP┆
0x23f00…23f80 UnusedSector ┆ PCOVER1 ; OVERFLOW FI; INV R1 ; INV(MOST) => MOST; INV ┆
0x23f80…24000 UnusedSector ┆ R0 ; INV(LEAST) => LEAST; ADDC 1 R0 ; LEAST+1 => LEAST; MOVC 0 R┆
0x24000…24080 UnusedSector ┆2 ; 0 ADDU R2 R1 ; +CARRY+MOST => MOST; MOVL R01 X55 ; LEAST,MOST => ST(┆
0x24080…24100 UnusedSector ┆7 ; ST(S) => X; INC X7 ; ST(X)+1 => ST(X); ADDC 1 R5 ; S+1 => S; ┆
0x24100…24180 UnusedSector ┆ JMP X4 ; RETURN; ;======================================================================= ; DEC┆
0x24180…24200 UnusedSector ┆RWORD ; THE STACK TOP ELEMENT CONTAINS AN ABSOLUTE ADDRESS. ; THE ABSOLUTE ADDRESS IS POPPED AND ; THE WORD REFERENCED BY THAT ┆
0x24200…24280 UnusedSector ┆ADDRESS IS DECREMENTED. PCO091: ; DECRWORD: PTO091: MOV X5 R7 ; ST(X) =┆
0x24280…24300 UnusedSector ┆> X; DEC X7 ; ST(X)-1 => ST(X); ADDC 1 R5 ; S+1 => S; JMP ┆
0x24300…24380 UnusedSector ┆ X4 ; RETURN; ;======================================================================= ; TRUNCLONG ; POPS ┆
0x24380…24400 UnusedSector ┆A LONG INTEGER (2 WORDS) FROM THE STACK. TRUNCATES ; IT AND PUSHES THE VALUE ON THE STACK AS AN INTEGER (1 WORD). PCO097: ┆
0x24400…24480 UnusedSector ┆ ; TRUNCLONG: PTO097: ; MOVL X5 R01 ; ST(S),ST(S+1) ┆
0x24480…24500 UnusedSector ┆=> LEAST,MOST; SLT R0 0 ; IF LEAST < 0 JMP PL1097 ; THEN ┆
0x24500…24580 UnusedSector ┆ INE R1 -1 ; IF MOST <> -1 THEN JMP PCOVER1 ; OVERFLOW; JMP ┆
0x24580…24600 UnusedSector ┆ PL2097 ; FI; PL1097: ; ELSE "LEAST >= 0" INE R1 0 ┆
0x24600…24680 UnusedSector ┆ ; IF MOST <> 0 THEN JMP PCOVER1 ; OVERFLOW FI; PL2097: ; FI;┆
0x24680…24700 UnusedSector ┆ ADDC 1 R5 ; S+1 => S; MOV R0 X5 ; LEAST => ST(S); JMP ┆
0x24700…24780 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; ABSWORD ; REPLACES T┆
0x24780…24800 UnusedSector ┆HE STACK TOP ELEMENT (1 WORD) ; BY ITS ABSOLUTE VALUE. PCO098: ; ABSWORD: PTO098: ┆
0x24800…24880 UnusedSector ┆ ; SLT X5 0 ; IF ST(S) < 0 JMP PL1098 ; THEN ┆
0x24880…24900 UnusedSector ┆ IEQ X5 #8000 ; IF ST(S) = -32768 THEN JMP PCOVER1 ; OVERFLOW NEG┆
0x24900…24980 UnusedSector ┆ ; ░ONVW ░D: P ░102: ░ ░ ░ ░ ░ ; ░ ░ MOV ░ ░ X5 ░ ░ R0 ░ S ░S) = ░LEAS ░ ░ X ░ ░ ┆
0x24980…24a00 UnusedSector ┆ ░ 0 ░ ░ ; ░ => ░ST; ░ ░ILT ░ ░ R0 ░ ░0 ░ IF ░EAST ░ 0 T ░N ░ ░VC ░ ░ ░ ░ ; ░┆
0x24a00…24a80 UnusedSector ┆ - ░=> M ░T FI ░ ░ AD ░ -1 ░ ░ ░ R5 ░; ░1 => ░; ░ ░V R0 X5 ; LEAST => ST(S); ┆
0x24a80…24b00 UnusedSector ┆S),ST(S+1); PL1099: ; JMP X4 ; GOTO NEXT; ;=========================┆
0x24b00…24b80 UnusedSector ┆============================================== ; SUCCWORD ; INCREMENTS THE TOP STACK ELEMENT. PCO100: ┆
0x24b80…24c00 UnusedSector ┆ ; SUCCWORD: PTO100: INC X5 ; ST(S)+1 => ST(S); JMP X4 ; RETUR┆
0x24c00…24c80 UnusedSector ┆N; ;======================================================================= ; PREDWORD ; DECREMENTS THE TOP STACK ELEMENT. ┆
0x24c80…24d00 UnusedSector ┆PCO101: ; PREDWORD: PTO101: DEC X5 ; ST(S)-1 => ST(S); JMP ┆
0x24d00…24d80 UnusedSector ┆ X4 ; RETURN; ;======================================================================= ; CONVWORD ; POPS┆
0x24d80…24e00 UnusedSector ┆ AN INTEGER FROM THE STACK, AND PUSHES THE ; LONG INTEGER WITH THE SAME VALUE ON THE STACK. PCO102: ┆
0x24e00…24e80 UnusedSector ┆ ; CONVWORD: PTO102: ; MOV X5 R0 ; ST(S) => LEAST; XTR ┆
0x24e80…24f00 UnusedSector ┆X5 0 ; 0 => MOST; ILT R0 0 ; IF LEAST < 0 THEN MOVC -1 X5 ; ┆
0x24f00…24f80 UnusedSector ┆ -1 => MOST FI; ADDC -1 R5 ; S-1 => S; MOV R0 X5 ; LEAST => ST(S); ┆
0x24f80…25000 UnusedSector ┆ JMP X4 ; GOTO NEXT; ;======================================================================= $PAS┆
0x25000…25080 UnusedSector ┆RTS.CODES4.S ; CALLSYS(ENTRY) ; CALL OF A PREFIX SUBROUTINE. THEY ARE NUMBERED 0, 1, 2, ... ; IN ORDER OF APPEARANCE IN THE┆
0x25080…25100 UnusedSector ┆ PREFIX. THE PROGRAM ; COUNTER Q (R4) IS SET TO POINT TO THE FOLLOWING INSTRUCTION. PCO071: ; CALLS┆
0x25100…25180 UnusedSector ┆YS: PTO071: ; MVP X4 R1 ; PG(Q) => ENTRY; ADDC 1 ┆
0x25180…25200 UnusedSector ┆ R4 ; Q+1 => Q; IF DBTRAC>2 THEN MOV TRMASK R7 ; JOZ R7 PL1071 ; IF NOT TRACE ┆
0x25200…25280 UnusedSector ┆THEN GOTO PL1071; IBZ R7 2 ; IF NOT PREFIX-TRACE THEN JMP PL1071 ; GO┆
0x25280…25300 UnusedSector ┆TO PL1071 FI; MOV R4 R0 ; "THE PRINT PREFIX TRACE ; ROUTINE RE┆
0x25300…25380 UnusedSector ┆QUIRES Q IN R0"; MOV R1 REGS7 ; "THE PRINT PREFIX TRACE ROUTINE ; ┆
0x25380…25400 UnusedSector ┆ REQUIRES ENTRY IN REGS7"; JMP S4 PPE090 ; "JUMP TO PREFIX-TRACE ROUTINE"; MOV R0 ┆
0x25400…25480 UnusedSector ┆ R4 ; "RESTORE Q"; MOV REGS7 R1 ; "RESTORE ENTRY"; PL1071: ; FI ┆
0x25480…25500 UnusedSector ┆ MOD R1 ; GOTO JMP PCJUMPTAB ; (PCJUMPTAB+ENTRY); ;========================┆
0x25500…25580 UnusedSector ┆=============================================== Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x25580…25600 UnusedSector ┆ N IN q 9 ░ H \ ░ES T ░ ; L ░G IN ░GER ░TH T ░ SAM ░VALU ░ON T ░ STA ░. P ░102: ░ ░ ░ ░ ░ ┆
0x25600…25680 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x25680…25700 UnusedSector ┆ ;----------------------------------------------------------------------- ; PROCEDURE OUTTEXT(S: STREAM; UNPACKED_TEXT: TEXT; VA┆
0x25700…25780 UnusedSector ┆R CC: COMPLETIONC) ; THE UNPACKED TEXT IS PACKED IN THE FREE SPACE BETWEEN THE STACK AND ; THE HEAP. THEN OUTTEXTB IS CALLED. PP┆
0x25780…25800 UnusedSector ┆R154: ; OUTTEXT: MOV R3 REGS3 ; SAVE(G); MOV R4 REGS4 ┆
0x25800…25880 UnusedSector ┆ ; SAVE(Q); MOV R6 REGS6 ; SAVE(B); MOV HEAPTOP R6 ; "SET PACKED BASE" ┆
0x25880…25900 UnusedSector ┆ MOV R5 R3 ; S SUB R6 R3 ; - HEAPTOP => FREE_WORDS; IBZ R3 ┆
0x25900…25980 UnusedSector ┆15 ; IF FREE_WORDS.BIT15 = 0 THEN SLL R3 1 ; FREE_WORDS*2 => FREE_BYTES ┆
0x25980…25a00 UnusedSector ┆ ; ELSE FREE_WORDS => FREE_BYTES; MOVC 0 R7 ; 0 => Y; MOV 1. X5┆
0x25a00…25a80 UnusedSector ┆ R1 ; REF(UNPACKED_TEXT) => X; PPX154: ; REPEAT MOV X1 R2 ; ┆
0x25a80…25b00 UnusedSector ┆ UNPACKED(X).RIGHTBYTE MOD R6 ; MOVB R2 X7 ; => PACKED.BYTE(Y); ┆
0x25b00…25b80 UnusedSector ┆ INCD R1 R7 ; INCR(X); INCR(Y); IHS R7 R3 ; IF Y >="US" FREE_BYTES THEN ┆
0x25b80…25c00 UnusedSector ┆ JMP PCSTAC ; STACK_LIMIT; INE R2 0 ; JMP PPX154 ┆
0x25c00…25c80 UnusedSector ┆ ; UNTIL LAST MOVED CHAR = '(:0:)'; MOV 2. X5 R4 ; ST(S+2) => STREAM; MON STREAM, OUTTEX┆
0x25c80…25d00 UnusedSector ┆TB ; OUTTEXTB( NOP ; ERROR: NOP; DONE: CONTINUE); MOV X5 R6 ; ┆
0x25d00…25d80 UnusedSector ┆ ST(S) => REF(CC); MOV R7 X6 ; COMPLCODE => CC; MOV REGS3 R3 ; RESTORE(G);┆
0x25d80…25e00 UnusedSector ┆ MOV REGS4 R4 ; RESTORE(Q); MOV REGS6 R6 ; RESTORE(B); ADDC 3 ┆
0x25e00…25e80 UnusedSector ┆ R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ;------------------------------------------------┆
0x25e80…25f00 UnusedSector ┆----------------------- ; PROCEDURE OUTHEXA(S: STREAM; INT: UNIV INTEGER; ; COMMAND_CHAR: CHAR; VAR CC: COMPLETION_CODE); ; T┆
0x25f00…25f80 UnusedSector ┆HE IO SYSTEM PROCEDURE OUTHEXA IS CALLED. PPR156: ; OUTHEXA: MOV R3 REGS3 ; ┆
0x25f80…26000 UnusedSector ┆ SAVE(G); MOV R4 REGS4 ; SAVE(Q); MOV 1. X5 R3 ; ST(S+1) => CHAR; MOV ┆
0x26000…26080 UnusedSector ┆ 2. X5 R2 ; ST(S+2) => WORD; MOV 3. X5 R4 ; ST(S+3) => STREAM; MON STREAM, ┆
0x26080…26100 UnusedSector ┆ OUTHEXA ; OUTHEXA( NOP ; ERROR: NOP; DONE: CONTINUE); MOV X5 ┆
0x26100…26180 UnusedSector ┆R2 ; ST(S) => REF(CC); MOV R7 X2 ; COMPLCODE => CC; MOV REGS3 R3 ; RESTO┆
0x26180…26200 UnusedSector ┆Z Z , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J ┆
0x26200…26280 UnusedSector ┆K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j ┆
0x26280…26300 UnusedSector ┆k l m n Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x26300…26380 UnusedSector ┆REF(CC); MOV R7 X2 ; COMPLCODE => CC; MOV REGS3 R3 ; RESTORE(G); MO┆
0x26380…26400 UnusedSector ┆V REGS4 R4 ; RESTORE(Q); ADDC 4 R5 ; S+4 => S; JMP X4 ┆
0x26400…26480 UnusedSector ┆; GOTO NEXT; ;----------------------------------------------------------------------- ; PROCEDURE OUTLONG_INTEGER(S: STREAM; ┆
0x26480…26500 UnusedSector ┆LINT: UNIV LONG_INTEGER; ; OUTPUT_MODE: UNIV INTEGER; VAR CC: COMPLETION_CODE); ; THE IO SYSTEM PROCEDURE OUTLONG_INTEGER IS ┆
0x26500…26580 UnusedSector ┆CALLED. PPR158: ; OUTLONG_INTEGER: MOV R3 REGS3 ; SAVE(G); MOV ┆
0x26580…26600 UnusedSector ┆ R4 REGS4 ; SAVE(Q); MOV HEAPTOP R0 ; MOV R5 R1 ; S SUB ┆
0x26600…26680 UnusedSector ┆ R0 R1 ; - HEAPTOP => FREE_WORDS; ILO R1 12 ; IF FREE_WORDS < 12 THEN JMP ┆
0x26680…26700 UnusedSector ┆ PCSTAC ; STACK_LIMIT; MOV 1. X5 R3 ; ST(S+1) => MODE; MOVL 2. X5 ┆
0x26700…26780 UnusedSector ┆ R12 ; ST(S+2) => WORD(LEAST SIGN); ; ST(S+3) => WORD(MOST SIGN); MOV 4. ┆
0x26780…26800 UnusedSector ┆ X5 R4 ; ST(S+4) => STREAM; MON STREAM, OUTLONGINTEGER;OUTLONG_INTEGER( NOP ┆
0x26800…26880 UnusedSector ┆ ; ERROR: NOP; DONE: CONTINUE); MOV X5 R2 ; ST(S) => REF(CC); MOV R7 ┆
0x26880…26900 UnusedSector ┆ X2 ; COMPLCODE => CC; MOV REGS3 R3 ; RESTORE(G); MOV REGS4 R4 ; RESTORE(Q)┆
0x26900…26980 UnusedSector ┆; ADDC 5 R5 ; S+5 => S; JMP X4 ; GOTO NEXT; ;-----------------------┆
0x26980…26a00 UnusedSector ┆------------------------------------------------ ; PROCEDURE OUTNL(S: STREAM; VAR CC: COMPLETION_CODE); ; THE IO SYSTEM PROCEDUR┆
0x26a00…26a80 UnusedSector ┆E OUTNL IS CALLED. PPR159: ; OUTNL: MOV R3 REGS3 ; SAVE(G); MOV ┆
0x26a80…26b00 UnusedSector ┆ R4 REGS4 ; SAVE(Q); MOV 1. X5 R4 ; ST(S+1) => STREAM; MON STREAM, OUTNL ┆
0x26b00…26b80 UnusedSector ┆ ; OUTNL( NOP ; ERROR: NOP; DONE: CONTINUE); MOV X5 R4 ; ST(S)┆
0x26b80…26c00 UnusedSector ┆RE(G); MOV REGS4 R4 ; RESTORE(Q); ADDC 4 R5 ; S+4 => S; JMP ┆
0x26c00…26c80 UnusedSector ┆ X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ; PROCEDURE OUTINTEGER┆
0x26c80…26d00 UnusedSector ┆(S: STREAM; INT: UNIV INTEGER; ; OUTPUT_MODE: UNIV INTEGER; VAR CC: COMPLETION_CODE); ; THE IO SYSTEM PROCEDURE OUTINTEGER IS┆
0x26d00…26d80 UnusedSector ┆ CALLED. PPR157: ; OUTINTEGER: MOV R3 REGS3 ; SAVE(G); MOV ┆
0x26d80…26e00 UnusedSector ┆ R4 REGS4 ; SAVE(Q); MOV HEAPTOP R0 ; MOV R5 R1 ; S SUB ┆
0x26e00…26e80 UnusedSector ┆ R0 R1 ; - HEAPTOP => FREE_WORDS; ILO R1 7 ; IF FREE_WORDS < 7 THEN JMP ┆
0x26e80…26f00 UnusedSector ┆ PCSTAC ; STACK_LIMIT; MOV 1. X5 R3 ; ST(S+1) => MODE; MOV 2. X5 ┆
0x26f00…26f80 UnusedSector ┆R2 ; ST(S+2) => WORD; MOV 3. X5 R4 ; ST(S+3) => STREAM; MON STREAM, OUTINTEGER ; OUTI┆
0x26f80…27000 UnusedSector ┆NTEGER( NOP ; ERROR: NOP; DONE: CONTINUE); MOV X5 R2 ; ST(S) => ┆
0x27000…27080 UnusedSector ┆ ; ADD: MOV 1. X5 R0 ; A ADD X5 R0 ; +B => X; ┆
0x27080…27100 UnusedSector ┆ADDC 2 R5 ; S+2 => S; MOV R0 X5 ; X => ST(S); JMP X4┆
0x27100…27180 UnusedSector ┆ ; GOTO NEXT ;----------------------------------------------------------------------- ; FUNCTION SUBTRACT(A, B: INTEGER): IN┆
0x27180…27200 UnusedSector ┆TEGER; ; THE FUNCTION RESULT IS A-B. THE ARGUMENTS ARE ; UNSIGNED INTEGERS. NO TEST FOR OVERFLOW. PPR164: ┆
0x27200…27280 UnusedSector ┆ ; SUBTRACT: MOV 1. X5 R0 ; A SUB X5 R0 ; -B => X; ADDC 2 ┆
0x27280…27300 UnusedSector ┆ R5 ; S+2 => S; MOV R0 X5 ; X => ST(S); JMP X4 ; GOTO┆
0x27300…27380 UnusedSector ┆ NEXT; ;----------------------------------------------------------------------- ; PROCEDURE SPLIT_LONG(L: LONG_INTEGER; VAR LEA┆
0x27380…27400 UnusedSector ┆ST, MOST: INTEGER); ; THE LONG_INTEGER IS SPLIT. THE 16 LEAST SIGNIFICANT BITS ARE ; DELIVERED IN THE PARAMETER LEAST AND THE 16┆
0x27400…27480 UnusedSector ┆ MOST SIGNIFICANT ; BITS ARE DELIVERED IN THE PARAMETER MOST. PPR165: ; SPLIT_LONG: MOVL 2.┆
0x27480…27500 UnusedSector ┆ X5 R01 ; L.LEASTSIGN=>R0; L.MOSTSIGN=>R1; MOV 1. X5 R7 ; ST(S+1) => REF(LEAST); ┆
0x27500…27580 UnusedSector ┆MOV R0 X7 ; L.LEASTSIGN => LEAST; MOV X5 R7 ; ST(S) => REF(MOST); MOV ┆
0x27580…27600 UnusedSector ┆ => REF(CC); MOV R7 X4 ; COMPLCODE => CC; MOV REGS3 R3 ; RESTORE(G); ┆
0x27600…27680 UnusedSector ┆ MOV REGS4 R4 ; RESTORE(Q); ADDC 2 R5 ; S+2 => S; JMP ┆
0x27680…27700 UnusedSector ┆X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ; FUNCTION FREE_SPACE: INTEGER; ; T┆
0x27700…27780 UnusedSector ┆HE FUNCTION RETURN VALUE IS THE NUMBER OF WORDS ; BETWEEN THE STACK AND THE HEAP. PPR160: ; FREE_SPA┆
0x27780…27800 UnusedSector ┆CE: MOV HEAPTOP R0 ; MOV R5 R1 ; S SUB R0 R1 ; - ┆
0x27800…27880 UnusedSector ┆HEAPTOP MOV R1 X5 ; => ST(S); JMP X4 ; GOTO NEXT; ;-----------------┆
0x27880…27900 UnusedSector ┆------------------------------------------------------ ; FUNCTION CONTENTS(BASE_REL_ADDR: LONG_INTEGER): INTEGER; ; THE FUNCTION┆
0x27900…27980 UnusedSector ┆ RETURNS THE CONTENTS OF THE LOCATION WITH ; RELATIVE ADDRESS REL_ADDR. THE ADDRESS IS TAKEN MODULO 64 K. PPR161: ┆
0x27980…27a00 UnusedSector ┆ ; CONTENTS: MOV X5 R0 ; BASE_REL_ADDR.LEAST => X; MOV X0 2. X5 ┆
0x27a00…27a80 UnusedSector ┆; ST(X) => ST(S+2); ADDC 2 R5 ; S+2 => S; JMP X4 ; GOTO NEXT; ;---┆
0x27a80…27b00 UnusedSector ┆-------------------------------------------------------------------- ; FUNCTION REL_ADDR(FIRST_ELEMENT: UNIV ELEMENT): INTEGER; ┆
0x27b00…27b80 UnusedSector ┆; RETURNS THE BASE RELATIVE ADDRESS OF THE PARAMETER. PPR162: ; GET_REL_ADDR: MOV X┆
0x27b80…27c00 UnusedSector ┆5 R0 ; ST(S) => A; ADDC 1 R5 ; S+1 => S; MOV R0 X5 ; A => ST(┆
0x27c00…27c80 UnusedSector ┆S); JMP X4 ; GOTO NEXT; ;-----------------------------------------------------------------------┆
0x27c80…27d00 UnusedSector ┆ ; FUNCTION ADD(A, B: INTEGER): INTEGER; ; THE 2 ARGUMENTS ARE ADDED AS UNSIGNED INTEGERS. NO TEST FOR OVERFLOW. PPR163: ┆
0x27d00…27d80 UnusedSector ┆C151 ; SPECIAL:); SYN151: ; MOVC XSYNER R7 ; SYNTAX_ERROR => COMP┆
0x27d80…27e00 UnusedSector ┆LETIONCODE; NUM151: ; ERR151: ; MOV SS R5 ; ┆
0x27e00…27e80 UnusedSector ┆RESTORE(S); MOV X5 R2 ; ST(S) => REF(CC); MOV R7 X2 ; COMPLETIONCODE => ┆
0x27e80…27f00 UnusedSector ┆CC; MOVC REGSAV R7 ; UNS 6 ; ADDC 3 R5 ; S+3 => S┆
0x27f00…27f80 UnusedSector ┆; JMP X4 ; GOTO NEXT; SPC151: ; INE R3 #20 ;┆
0x27f80…28000 UnusedSector ┆ R1 X7 ; L.MOSTSIGN => MOST; ADDC 4 R5 ; S+4 => S; JMP ┆
0x28000…28080 UnusedSector ┆X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ; PROCEDURE CREATE_LONG(LEAST, MOST┆
0x28080…28100 UnusedSector ┆: INTEGER): LONG_INTEGER; ; CONCATENATES THE 2 INTEGERS INTO A LONG_INTEGER. PPR166: MOVL X5 R01 ; ST(┆
0x28100…28180 UnusedSector ┆S) => MOST; ; ST(S+1) => LEAST; ADDC 2 R5 ; S+2 => S; ┆
0x28180…28200 UnusedSector ┆MOV R1 X5 ; LEAST => RES.LEASTSIGNIFICANT; MOV R0 1. X5 ; MOST => RES.MOSTSIGNIFICA┆
0x28200…28280 UnusedSector ┆NT; JMP X4 ; GOTO NEXT; ;-----------------------------------------------------------------------┆
0x28280…28300 UnusedSector ┆ ; PROCEDURE SAVE_EVENT(EVENT: INTEGER); ; THE MONITOR FUNCTION SAVEEVENT IS CALLED. PPR167: ; SAVE_┆
0x28300…28380 UnusedSector ┆EVENT: MOV X5 R2 ; ST(S) => EVENT; MON SAVEEVENT ; SAVEEVENT(EVENT); ┆
0x28380…28400 UnusedSector ┆ ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;--------------------------------┆
0x28400…28480 UnusedSector ┆--------------------------------------- ; PROCEDURE RESTORE_EVENTS(EVTTYPE: EVENT_TYPE); ; THE MONITOR FUNCTION RECOVEREVENTS IS┆
0x28480…28500 UnusedSector ┆ CALLED. PPR168: ; RESTORE_EVENTS: MOV X5 R2 ; ST(S) => EVENTTYPE; ┆
0x28500…28580 UnusedSector ┆ MON RECOVEREVENTS ; RECOVEREVENTS(EVENTTYPE); ADDC 1 R5 ; S+1 => S; JMP ┆
0x28580…28600 UnusedSector ┆ X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ; PROCEDURE ININTEGE┆
0x28600…28680 UnusedSector ┆R(S: STREAM; VAR INT: INTEGER; VAR CC: COMPLETIONCO) ; SPACES ARE ALLOWED IN FRONT OF THE NUMBER. THE COMPLETION CODE ; RETURNED┆
0x28680…28700 UnusedSector ┆ BY THE IO-SYSTEM IS NORMALLY RETURNED TO THE PASCAL PROGRAM. ; HOWEVER, IF THE FIRST ELEMENT (AFTER THE POSSIBLE SPACES) IS NOT┆
0x28700…28780 UnusedSector ┆ AN ; INTEGER WHICH CAN BE IN 1 WORD THEN THE COMPLETION CODE XSYNER IS ; GENERATED. PPR151: ; ININT┆
0x28780…28800 UnusedSector ┆EGER: MOVC 2 R1 ; 2 => BYTECOUNT; XXX151: ; MOVC REGTOP ┆
0x28800…28880 UnusedSector ┆ R7 ; STC 6 ; SAVE(B, G, Q, S); REP151: ; MOV S1 ┆
0x28880…28900 UnusedSector ┆ R1 ; SAVED R1 => BYTECOUNT; MOV 2. X5 R4 ; ST(S+2) => STREAM; MOV 1. X5 ┆
0x28900…28980 UnusedSector ┆ R6 ; ST(S+1) => ADDR; MON STREAM, INELEMENT ; INELEMENT( JMP & ERR151 ; ERROR:┆
0x28980…28a00 UnusedSector ┆ JMP & NUM151 ; NUMBER: JMP & SYN151 ; IDENTIFIER: JMP & SP┆
0x28a00…28a80 UnusedSector ┆S); JMP REP151 ; GOTO REP151; ;---------------------------------------------------------------------┆
0x28a80…28b00 UnusedSector ┆-- ; PROCEDURE INLONG_INTEGER(S: STREAM; VAR LINT: LONG_INTEGER; ; VAR CC: COMPLETION_CODE); ; THE IO S┆
0x28b00…28b80 UnusedSector ┆YSTEM PROCEDURE INELEMENT IS CALLED WITH A BYTE COUNT = 4. ; SPACES ARE ALLOWED IN FRONT OF THE NUMBER. THE COMPLETION CODE ; RE┆
0x28b80…28c00 UnusedSector ┆TURNED BY THE IO_SYSTEM IS NORMALLY RETURNED TO THE PASCAL PROGRAM. ; HOWEVER, IF THE FIRST ELEMENT (AFTER THE POSSIBLE SPACES) ┆
0x28c00…28c80 UnusedSector ┆IS NOT AN ; INTEGER THEN THE COMPLETION CODE XSYNER IS GENERATED. PPR152: ; INLONG_INTEGER: ┆
0x28c80…28d00 UnusedSector ┆MOVC 4 R1 ; 4 => BYTECOUNT; JMP XXX151 ; GOTO XXX151; ;-------------------------┆
0x28d00…28d80 UnusedSector ┆---------------------------------------------- ; PROCEDURE INNAME(S: STREAM; VAR N: PACKED_NAME; VAR CC: COMPLETIONCODE ; SPACES┆
0x28d80…28e00 UnusedSector ┆ IN FRONT OF THE NAME IS SKIPPED. THE COMPLETION CODE DELIVERED ; BY THE IO-SYSTEM IS NORMALLY RETURNED TO THE PASCAL PROGRAM. ;┆
0x28e00…28e80 UnusedSector ┆ HOWEVER, IF THE FIRST ELEMENT (AFTER THE POSSIBLE SPACES) IS NOT AN ; IDENTIFIER, THEN THE COMPLETION CODE XSYNER IS GENERATED.┆
0x28e80…28f00 UnusedSector ┆ ; IF THE IDENTIFIER IS LONGER THAN 16 CHARACTERS THEN THE FIRST 15 AND ; THE LAST CHAR IS DELIVERED. IF THE IDENTIFIER IS SHORT┆
0x28f00…28f80 UnusedSector ┆ER THAN 16 ; CHARACTERS THE REMAINING BYTES WILL BE NULL CHARACTERS. PPR153: ; INNAME: MOVC ┆
0x28f80…29000 UnusedSector ┆ REGTOP R7 ; STC 6 ; SAVE(B, G, Q, S); REP153: ; ┆
0x29000…29080 UnusedSector ┆ MOVC 16 R1 ; 16 => BYTE COUNT; MOV 2. X5 R4 ; ST(S+2) => STREAM; MOV 1. ┆
0x29080…29100 UnusedSector ┆ X5 R6 ; ST(S+1) => ADDR; MON STREAM, INELEMENT ; INELEMENT( JMP & ERR153 ; ┆
0x29100…29180 UnusedSector ┆ ERROR: JMP & SYN153 ; NUMBER: JMP & NAM153 ; IDENTIFIER: JMP ┆
0x29180…29200 UnusedSector ┆ & SPC153 ; SPECIAL:); SYN153: ; MOVC XSYNER R7 ; ERR153: ┆
0x29200…29280 UnusedSector ┆ ; NAM153: ; MOV SS R5 ; RESTORE(S); MOV ┆
0x29280…29300 UnusedSector ┆ X5 R2 ; ST(S) => REF(CC); MOV R7 X2 ; COMPLETIONCODE => CC; MOVC REGSAV┆
0x29300…29380 UnusedSector ┆ R7 ; UNS 6 ; RESTORE(B, G, Q, S); ADDC 3 R5 ; S+3 => S;┆
0x29380…29400 UnusedSector ┆ JMP X4 ; GOTO NEXT; SPC153: ; INE R3 #20 ; ┆
0x29400…29480 UnusedSector ┆ IF CHAR <> SPACE THEN JMP SYN153 ; GOTO SYN153; MOV SS R5 ; RESTORE(S┆
0x29480…29500 UnusedSector ┆); JMP REP153 ; GOTO REP153; ;----------------------------------------------------------------------┆
0x29500…29580 UnusedSector ┆- ; PROCEDURE INELEMENT(S: STREAM; VAR ELEM: ELEM_REC; VAR CC: COMPLCODE); ; THE IO SYSTEM PROCEDURE INELEMENT IS CALLED WITH A ┆
0x29580…29600 UnusedSector ┆BYTECOUNT OF 16. PPR169: ; INELEMENT: MOVC REGTOP R7 ; STC 6 ┆
0x29600…29680 UnusedSector ┆ ; SAVE(B, G, Q, S); MOVC 16 R1 ; 16 => BYTECOUNT; MOV 2. X5 R4 ;┆
0x29680…29700 UnusedSector ┆ IF CHAR <> SPACE THEN JMP SYN151 ; GOTO SYN151; MOV SS R5 ; RESTORE(┆
0x29700…29780 UnusedSector ┆ TYPE = NUMBER THEN MOVC 4 R5 ; TLONG_INTEGER => TYPE; MOV R5 2. X7 ; ┆
0x29780…29800 UnusedSector ┆ TYPE => ELEM_TYPE; IEQ R5 3 ; IF TYPE = SPECIAL THEN MOV R3 3. X7 ; SPE┆
0x29800…29880 UnusedSector ┆CIALCHAR => SPEC_CHAR; MOVC REGSAV R7 ; UNS 6 ; RESTORE(B, G, Q, S); ┆
0x29880…29900 UnusedSector ┆ ADDC 3 R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ;-------------------------------┆
0x29900…29980 UnusedSector ┆---------------------------------------- ; PROCEDURE OUTSTRING(S: STREAM; UNPACKED_TEXT: TEXT; ; NO_OF_CHARS: INTEGER; VAR CC┆
0x29980…29a00 UnusedSector ┆: COMPLETION_CODE); ; THE UNPACKED TEXT IS PACKED IN THE FREE SPACE BETWEEN THE ; STACK AND THE HEAP. THEN OUTREC IS CALLED. PPR┆
0x29a00…29a80 UnusedSector ┆155: ; OUTSTRING: MOV R4 REGS4 ; SAVE(Q); MOV HEAPTOP R┆
0x29a80…29b00 UnusedSector ┆1 ; "SET PACKED_BASE" MOV R5 R0 ; S SUB R1 R0 ; -HEAPTOP => FREE_WOR┆
0x29b00…29b80 UnusedSector ┆DS; IBZ R0 15 ; IF FREE_WORDS.BIT15 = 0 THEN SLL R0 1 ; FREE_WORDS*2┆
0x29b80…29c00 UnusedSector ┆ => FREE_BYTES ; ELSE FREE_WORDS => FREE_BYTES; MOV 1. X5 R4 ; ST┆
0x29c00…29c80 UnusedSector ┆(S+1) => NO_OF_CHARS; ILO R0 R4 ; IF FREE_BYTES < NO_OF_CHARS THEN JMP PCSTAC ┆
0x29c80…29d00 UnusedSector ┆ ; STACK_LIMIT; ILT R4 1 ; IF NO_OF_CHARS < 1 THEN JMP PPY155 ; ┆
0x29d00…29d80 UnusedSector ┆GOTO PPY155; MOV 2. X5 R0 ; REF(UNPACKED) => X; MOVC 0 R7 ; 0 => Y; PPX155:┆
0x29d80…29e00 UnusedSector ┆ ; FOR I := 1 TO NO_OF_CHARS DO MOV X0 R2 ; UNPACKED(X).RIGHTBYTE ┆
0x29e00…29e80 UnusedSector ┆ MOD R1 ; MOVB R2 X7 ; => PACKED.BYTE(Y); INCD R0 ┆
0x29e80…29f00 UnusedSector ┆ R7 ; INCR(X); INCR(Y); SOB R4 PPX155 ; ROF; PPY155: ; MOV 1.┆
0x29f00…29f80 UnusedSector ┆ X5 R2 ; ST(S+1) => RECORD_SIZE; MOV 3. X5 R4 ; ST(S+3) => STREAM; MON STREAM,┆
0x29f80…2a000 UnusedSector ┆ OUTREC ; OUTREC( NOP ; ERROR: NOP; DONE: CONTINUE); MOV X5 ┆
0x2a000…2a080 UnusedSector ┆ R1 ; ST(S) => REF(CC); MOV R7 X1 ; COMPLCODE => CC; MOV REGS4 R4 ; RES┆
0x2a080…2a100 UnusedSector ┆ ST(S+2) => STREAM; MOV 1. X5 R6 ; ST(S+1) => REF(ELEM); ADDC 3 R6 ; REF(┆
0x2a100…2a180 UnusedSector ┆START OF ELEMENT FIELD); MON STREAM, INELEMENT ; INELEMENT( NOP ; ERROR: ┆
0x2a180…2a200 UnusedSector ┆ NOP ; NUMBER: NOP ; IDENTIFIER: NOP ┆
0x2a200…2a280 UnusedSector ┆ ; SPECIAL:); MOV SS R6 ; SAVED R5 => R6; MOV X6 R0 ; ST(S) ┆
0x2a280…2a300 UnusedSector ┆=> REF(CC); MOV R7 X0 ; COMPLCODE => CC; MOV 1. X6 R7 ; ST(S+1) => REF(ELEM┆
0x2a300…2a380 UnusedSector ┆); MOV R3 X7 ; SPECIALCHAR (OR DELIM) => DELIM; MOV R1 1. X7 ; RETURNED BYT┆
0x2a380…2a400 UnusedSector ┆ECOUNT => BYTECOUNT; IEQP R1 4 ; IF RETURNED BYTECOUNT = 4 AND IEQ R5 1 ;┆
0x2a400…2a480 UnusedSector ┆AV R7 ; UNS 6 ; RESTORE(B, G, Q, S); ADDC 8 R5 ; S+8 => ┆
0x2a480…2a500 UnusedSector ┆S; JMP X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ┆
0x2a500…2a580 UnusedSector ┆; PROCEDURE INFILEID(S: STREAM; VAR FROM_ADAM: BOOLEAN; ; VAR FSN: FILE_SYSTEM_NAME; VAR VOLUME: VOLUME_NAME; ; VAR NAMELI┆
0x2a580…2a600 UnusedSector ┆ST: NAMELISTTYPE; VAR NAME_NO: INTEGER; ; VAR CC: COMPLETION_CODE); PPR171: ; INFILEID: M┆
0x2a600…2a680 UnusedSector ┆OVC REGTOP R7 ; STC 6 ; SAVE(B, G, Q, S); MOV 4. X5 R0 ; S┆
0x2a680…2a700 UnusedSector ┆T(S+4) => REF(FILESYSTEMNAME); MOV 3. X5 R1 ; ST(S+3) => REF(VOLUME NAME); MOV 6. X5 ┆
0x2a700…2a780 UnusedSector ┆ R4 ; ST(S+6) => STREAM; MOV HEAPTOP R6 ; REF(WORKAREA); MOV R5 R7 ; ┆
0x2a780…2a800 UnusedSector ┆ SUB R6 R7 ; ILO R7 16 ; IF S-HEAPTOP < 16 THEN JMP PCSTAC┆
0x2a800…2a880 UnusedSector ┆ ; STACKLIMIT; MOV 2. X5 R5 ; ST(S+2) => REF(NAMELIST); MON INFILEID ; ┆
0x2a880…2a900 UnusedSector ┆ INFILEID( JMP & ERR171 ; IO_ERROR: GOTO ERR171; JMP & ERR171 ; SYNTAX_ER┆
0x2a900…2a980 UnusedSector ┆ROR: GOTO ERR171); MOV SS R5 ; RESTORE(S); MOV 1. X5 R1 ; ST(S+1) => REF(NA┆
0x2a980…2aa00 UnusedSector ┆MENO); MOV R2 X1 ; RETURNED NAME_NO => NAME_NO; MOV 5. X5 R1 ; ST(S+5) => R┆
0x2aa00…2aa80 UnusedSector ┆EF(FROM_ADAM); XTR R3 1 ; RETURNED FROM_ADAM.BIT0 MOV R3 X1 ; => FROM┆
0x2aa80…2ab00 UnusedSector ┆TORE(Q); ADDC 4 R5 ; S+4 => S; JMP X4 ; GOTO NEXT; ;----------------┆
0x2ab00…2ab80 UnusedSector ┆------------------------------------------------------- ; PROCEDURE FIND_FILE(FROM_ADAM: BOOLEAN; FSN: FILE_SYSTEM_NAME; ; VO┆
0x2ab80…2ac00 UnusedSector ┆LUME: VOLUME_NAME; NAMELIST: NAMELISTTYPE; NAME_NO: INTEGER; ; DIRECTORY: FILE; VAR F: FILE; VAR CC: COMPLETION_CODE); PPR170┆
0x2ac00…2ac80 UnusedSector ┆: ; FIND_FILE: MOVC REGTOP R7 ; STC 6 ; SAVE(B,┆
0x2ac80…2ad00 UnusedSector ┆ G, Q, S); MOV 2. X5 R4 ; ST(S+2) => DIRECTORY; MOV 3. X5 R2 ; ST(S+3) => NAME┆
0x2ad00…2ad80 UnusedSector ┆NO; MOV 5. X5 R1 ; ST(S+5) => REF(VOLUME NAME); MOV 6. X5 R0 ; ST(S+6) => REF(┆
0x2ad80…2ae00 UnusedSector ┆FILESYSTEM NAME); MOV 7. X5 R3 ; ST(S+7) => FROM_ADAM; MOV HEAPTOP R6 ; MO┆
0x2ae00…2ae80 UnusedSector ┆V R5 R7 ; SUB R6 R7 ; ILO R7 16 ; IF S-HEAPTOP < 16 THEN┆
0x2ae80…2af00 UnusedSector ┆ JMP PCSTAC ; STACKLIMIT; MOV 4. X5 R5 ; ST(S+4) => REF(NAMELIST); ┆
0x2af00…2af80 UnusedSector ┆ MON FINDFILE ; FIND_FILE( JMP & PPX170 ; ERROR: GOTO PPX170; DONE: CONT); ┆
0x2af80…2b000 UnusedSector ┆MOV SS R5 ; RESTORE(S); MOV 1. X5 R0 ; ST(S+1) => REF(F); MOV R4 ┆
0x2b000…2b080 UnusedSector ┆ X0 ; RETURNED FD => F; PPX170: ; MOV SS R5 ; RESTORE(S); ┆
0x2b080…2b100 UnusedSector ┆ MOV X5 R0 ; ST(S) => REF(CC); MOV R7 X0 ; COMPLCODE => CC; MOVC REGS┆
0x2b100…2b180 UnusedSector ┆ MOVB R0 X7 ; INCD R6 R7 ; INCREMENT BYTE DISPLACEMENTS LDS R4┆
0x2b180…2b200 UnusedSector ┆ ; SWITCH TO OWN PAGE; SOB R5 PLCOPY ; ROF; COPFIN: ; FIN: ┆
0x2b200…2b280 UnusedSector ┆ MOVC REGSAV R7 ; UNS 6 ; RESTORE(B, G, Q, S); ADDC 3 ┆
0x2b280…2b300 UnusedSector ┆ R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ;-------------------------------------------------------┆
0x2b300…2b380 UnusedSector ┆---------------- ; PROCEDURE SET_TRACE(S: STREAM; MASK: INTEGER); PPR173: ; SET_TRACE: MOV ┆
0x2b380…2b400 UnusedSector ┆ X5 R0 ; ST(S) MOV R0 TRMASK ; => TRMASK; MOV 1. X5 R1 ; S┆
0x2b400…2b480 UnusedSector ┆T(S+1) MOV R1 TRSTRM ; => TRSTRM; MOV TRMASK1 R2 ; TRMASK1 IOR ┆
0x2b480…2b500 UnusedSector ┆_ADAM; ERR171: ; MOV SS R5 ; RESTORE(S); MOV X5 ┆
0x2b500…2b580 UnusedSector ┆ R0 ; ST(S) => REF(CC); MOV R7 X0 ; COMPLCODE => CC; MOVC REGSAV R7 ; ┆
0x2b580…2b600 UnusedSector ┆ UNS 6 ; RESTORE(B, G, Q, S); ADDC 7 R5 ; S+7 => S; JMP ┆
0x2b600…2b680 UnusedSector ┆ X4 ; GOTO NEXT; ;----------------------------------------------------------------------- ; COPY ; COPY(SOURCE, DEST┆
0x2b680…2b700 UnusedSector ┆: BYTE_ADDRESS; NO_OF_BYTES: INTEGER); ; COPIES NO_OF_BYTES FROM THE BYTE ADDRESS SPECIFIED ; BY SOURCE TO THE BYTE ADDRESS SPEC┆
0x2b700…2b780 UnusedSector ┆IFIED BY DEST. ; THIS IS NOT AN OPTIMAL VERSION (PHO-790813). ; R0: THE BYTE TO BE MOVED ; R1: DEST PSW ; R2: DEST WORD BASE ; R┆
0x2b780…2b800 UnusedSector ┆3: SOURCE PSW ; R4: PSW OF PROCESS ; R5: NO_OF_BYTES ; R6: BYTE DISPLACEMENT IN SOURCE ; R7: BYTE DISPLACEMENT IN DEST ; REGS0: ┆
0x2b800…2b880 UnusedSector ┆SOURCE WORD BASE PCPR51: ; COPY: MOVC REGTOP R7 ; STC 6 ┆
0x2b880…2b900 UnusedSector ┆ ; SAVE(B, G, Q, S); MOV XCBASE R0 ; BASE => R0; MOV 1. X5 R7 ; ST(S+1)┆
0x2b900…2b980 UnusedSector ┆ => REF(DEST); MOV 2. X7 R2 ; DEST.WORDDISP SUB R0 R2 ; - BASE => DEST_WOR┆
0x2b980…2ba00 UnusedSector ┆D_BASE; MOV 1. X7 R1 ; DEST.MEMSECTION => DEST PSW; MOV X7 R7 ; SET DEST BY┆
0x2ba00…2ba80 UnusedSector ┆TEDISP; MOV 2. X5 R6 ; ST(S+2) => REF(SOURCE); MOV 2. X6 R4 ; SOURCE.WORDDISP ┆
0x2ba80…2bb00 UnusedSector ┆ SUB R0 R4 ; - BASE => MOV R4 REGS0 ; SOURCE_WORD_BASE; MOV 1.┆
0x2bb00…2bb80 UnusedSector ┆ X6 R3 ; SOURCE.MEMSECTION => SOURCE PSW; MOV X6 R6 ; SET SOURCE BYTEDISP; MO┆
0x2bb80…2bc00 UnusedSector ┆V X5 R5 ; ST(S) => NO_OF_BYTES; ILT R5 1 ; IF NO_OF_BYTES < 1 THEN JMP ┆
0x2bc00…2bc80 UnusedSector ┆ COPFIN ; GOTO FIN; SVS R4 ; SAVE(STATUS); PLCOPY: ┆
0x2bc80…2bd00 UnusedSector ┆ ; FOR I := NO_OF_BYTES DOWNTO 1 DO MOV REGS0 R0 ; LDS R3 ; SWITCH T┆
0x2bd00…2bd80 UnusedSector ┆O SOURCE PAGE; MOD R0 ; MOD SOURCE WORD BASE ADDR; MOVB X6 R0 ; ┆
0x2bd80…2be00 UnusedSector ┆ LDS R1 ; SWITCH TO DEST PAGE; MOD R2 ; MOD DEST WORD BASE ADDR; ┆
0x2be00…2be80 UnusedSector ┆TYEX R1 ; EXTERNAL MASK MOV R1 XBLETY.X6 ; => BLE.XBLETY; MOV R5 XBLELK.X┆
0x2be80…2bf00 UnusedSector ┆ R0 R2 ; OR TRMASK MOV R2 TRMASK1 ; => TRMASK1; ADDC 2 R5 ;┆
0x2bf00…2bf80 UnusedSector ┆ S+2 => S; JMP X4 ; GOTO NEXT; ;--------------------------------------------------------------┆
0x2bf80…2c000 UnusedSector ┆--------- ; PROCEDURE PRINT_TRACE(ON: BOOLEAN); ; ON = TRUE: TRACE OUTPUT IS PRINTED. ; ON = FALSE: TRACE OUTPUT IS NOT PRINTED.┆
0x2c000…2c080 UnusedSector ┆ PPR172: ; PRINT_TRACE: MOVC PRITRA R7 ; XTR X7 0 ; ┆
0x2c080…2c100 UnusedSector ┆ FALSE => PRITRA; IBN X5 0 ; IF ON THEN INC X7 ; TRUE => PRITRA; ┆
0x2c100…2c180 UnusedSector ┆ ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;=========================┆
0x2c180…2c200 UnusedSector ┆============================================== ; PROCEDURE RUN(F: FILE; VAR PARAM: PARAMTYPE; ; VAR LINE: INTEGER┆
0x2c200…2c280 UnusedSector ┆; VAR RESULT: PROGRESULT); PPR174: ; RUN: MOVC REGTOP R7 ; STC 6 ┆
0x2c280…2c300 UnusedSector ┆ ; SAVE(B, G, Q, S); MOV HEAPTOP R7 ; SUB R7 R5 ; ILO ┆
0x2c300…2c380 UnusedSector ┆ R5 500 ; IF S-HEAPTOP < 500 THEN JMP PCSTAC ; STACK_LIMIT; MOV R┆
0x2c380…2c400 UnusedSector ┆3 R7 ; G => REF(ACTIVATION RECORD); MOV LEVEL. X7 R0 ; ACTIVATION_RECORD.LEVEL=>LEVEL; I┆
0x2c400…2c480 UnusedSector ┆NE R0 0 ; IF LEVEL <> 0 THEN JMP PPA174 ; GOTO PPA174; ; WE ARE ON LEVEL 0. C┆
0x2c480…2c500 UnusedSector ┆REATE A TEMPORARY CONTIGUOUS FILE. MOV HEAPTOP R2 ; HEAPTOP MOV R2 R6 ; =┆
0x2c500…2c580 UnusedSector ┆> REF(FILE ATTR); MOV PARAM. X7 R1 ; ACTIVATION_REC.PARAM => REF; MOV R1 R0 ; R┆
0x2c580…2c600 UnusedSector ┆EF => REF(FSN); ADDC VOL R1 ; "R1: NOW REF TO CURRENT VOLUME" MODC XVLNWL ; ┆
0x2c600…2c680 UnusedSector ┆CURRENT VOLUME NAME MOVM X1 X2 ; => FILEATTR.VOLUMENAME; MOVC XORCON R2 ; C┆
0x2c680…2c700 UnusedSector ┆ONTIGUOUS MOV R2 XFATOR.X6 ; => FILEATTR.ORGANIZATION; MOVC 0 R4 ; MVP ┆
0x2c700…2c780 UnusedSector ┆ XHSIZE.X4 R1 ; PROGRAM_SIZE IF OLDVERSUP THEN MOV PASYDARELEASE R5 SEQP R5 0 ┆
0x2c780…2c800 UnusedSector ┆ ; SKIP TWO LINES, IF OLD VERSION FI MOVC XFIRST R5 ; GET ADDR.OF LENGTH OF ASSM.DATA ┆
0x2c800…2c880 UnusedSector ┆ADD XHSIZE.X5 R1 ; LENGTH OF (DATA PART+PROGRAM) SRL R1 8 ; DIV 256 ADDC ┆
0x2c880…2c900 UnusedSector ┆1 R1 ; + 1 => SECTORS; MOV R1 XFATAL.X6 ; SECTORS MOV R4 XFATAL+1.X┆
0x2c900…2c980 UnusedSector ┆6; =>FILEATTR.ALLOCSIZE; MOV R6 R1 ; REF(FILE ATTRIBUTES); MON IO, CREATE ;┆
0x2c980…2ca00 UnusedSector ┆ CREATE( JMP & S4 RUNRRR ; ERROR: GOTO RUNERROR); ; SET UP A BUFFER LIST ELEMENT AND A FILE ADDRESS. ┆
0x2ca00…2ca80 UnusedSector ┆ MOV SG R7 ; G => REF(ACTIVATION RECORD); MOV R4 PROGFIL.X7 ; FD=>ACTIVATION_REC┆
0x2ca80…2cb00 UnusedSector ┆ORD.PROGFIL; MOV HEAPTOP R6 ; HEAPTOP => REF(BLE); MOVC 0 R5 ; MOVC XB┆
0x2cb00…2cb80 UnusedSector ┆ JMP & S4 RUNRRR ; ERROR: GOTO RUNERROR); JMP S5 CHECKTRANS ; "CHECK: TRANSFERRED = BYTE┆
0x2cb80…2cc00 UnusedSector ┆COUNT" ; IF OLDVERSUP THEN MOV PASYDARELEASE R2 SNE R2 0 ; SKIP IF R2 = 0 (OLDVERSU┆
0x2cc00…2cc80 UnusedSector ┆P=FALSE) JMP PPA174 ; JMP TO PPA174 IF NEWREL IS FALSE FI ; OUTPUT THE PROCESS: MOV HE┆
0x2cc80…2cd00 UnusedSector ┆APTOP R6 ; REF(BLE) MOVC 0 R5 MOVC XBTYLL R2 ; SET TYPE TO: LOCAL,LOWER BY┆
0x2cd00…2cd80 UnusedSector ┆TE MOV R2 XBLETY.X6 MOV R5 XBLELK.X6 ; NIL => LINK MOVC XFIRST R7 ; ┆
0x2cd80…2ce00 UnusedSector ┆ PROC.BASE REL.ADDR.OF 1. BYTE MOV R7 XBLEBA.X6 MOV XHSIZE.X7 R1 ; SIZE OF ASSM.DATA PAR┆
0x2ce00…2ce80 UnusedSector ┆T (IN WORDS) ADD R1 R1 ; *2 MOV R1 XBLEBS.X6 ; BUFFER SIZE IN BYTES MOV┆
0x2ce80…2cf00 UnusedSector ┆ R6 R2 ; REF(BLE) => R2 ADDC XBLEWL R6 ; REF(FILE ADDR. REC.) MOV R1 ┆
0x2cf00…2cf80 UnusedSector ┆ XFADBC.X6 ; STORE BYTECOUNT,LSB MOV R5 XFADBC+1.X6; 0 => MSB MOV R6 R1 ; RE┆
0x2cf80…2d000 UnusedSector ┆F(FILE ADDR.REC.) => R1 MON IO, APPENDBYTES; OUTPUT PROC.PART TO TEMP. FILE JMP & S4 RUNRRR ┆
0x2d000…2d080 UnusedSector ┆ ; IF ERROR: GOTO RUNRRR JMP S5 CHECKTRANS ; - ELSE: CHECK X-FERRED=BYTECOUNT? ; LOAD THE PROGRAM + CON┆
0x2d080…2d100 UnusedSector ┆STANTS. PPA174: ; MOV SS R5 ; RESTORE(S); MOV 3. X5 ┆
0x2d100…2d180 UnusedSector ┆ R4 ; ST(S+3) => FILE TO LOAD; IF OLDVERSUP THEN MOV PASYDARELEASE R0 SNE R0 0 ;┆
0x2d180…2d200 UnusedSector ┆ SKIP NEXT IF NEW VERSION MOVC 0 R0 FI JMP S6 LOADPM ; LOADPROGRAM; JOZ┆
0x2d200…2d280 UnusedSector ┆ R6 PPB174 ; IF RES <> OK THEN MOVC REGSAV R7 ; BEGIN UNS 5 ┆
0x2d280…2d300 UnusedSector ┆ ; RESTORE(G, Q, S); MOV X5 R7 ; ST(S) => REF(RESULT); MOV R6 X┆
0x2d300…2d380 UnusedSector ┆7 ; RES => RESULT; MOV 1. X5 R7 ; ST(S+1) => REF(LINE); MOVC 0 X7 ┆
0x2d380…2d400 UnusedSector ┆; 0 => LINE; MOV SB R6 ; RESTORE(B); JMP POPPARM ; GOTO POPP┆
0x2d400…2d480 UnusedSector ┆ARM; ; END; PPB174: ; ; R5 IS THE NEW STACK TOP (POINTS AT ┆
0x2d480…2d500 UnusedSector ┆THE CONSTANTS) AND SS IS THE OLD. ; INITIALIZE THE NEW ACTIVATION RECORD. MOV R5 R7 ; S ADD┆
0x2d500…2d580 UnusedSector ┆C -ARECLG R7 ; -ARECLG=>REF(ACTIVATION REC); MOV SQ R0 ; Q MOV R0 O┆
0x2d580…2d600 UnusedSector ┆6 ; NIL => BLE.XBLELK; MVP MEMPARM.X5 R0 ; MEMPARM MOV R0 XBLEBI.X6 ; => BLE┆
0x2d600…2d680 UnusedSector ┆.XBLEBI; MOV R6 R2 ; REF(BLE) => R2; ADDC XBLEWL R6 ; REF(BLE)+BLELENGTH=>REF┆
0x2d680…2d700 UnusedSector ┆(FILEADR) MVP XHSIZE.X5 R0 ; PROGRAMSIZE ADD R0 R0 ; * 2 MOV ┆
0x2d700…2d780 UnusedSector ┆ R0 XFADBC.X6 ; => BYTE_COUNT.LEAST; MOV R5 XFADBC+1.X6; 0 => BYTE_COUNT.MOST; MOV ┆
0x2d780…2d800 UnusedSector ┆ R6 R1 ; REF(FILE ADDRESS) => R1; ; OUTPUT THE PROGRAM. MON IO, APPENDBYTES ; APPENDBYTES( ┆
0x2d800…2d880 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x2d880…2d900 UnusedSector ┆ UNT" m C + ░ H \ ░ ░V ░SYDA ░LEAS ░ R2 ░ ░SNE ░R2 ░ ░ ░ ░ SK ░ IF ░ = 0 ░OLDV ░SU┆
0x2d900…2d980 UnusedSector ┆P= ░LSE) ░ ░ JMP ░ ░ ░PPA1 ░ ░ J ░ TO ░A174 ░F NE ░EL I ░FALS ░ ░I ; ░TPUT ░HE P ░CESS ░ ░ MO ░ HE┆
0x2d980…2da00 UnusedSector ┆ ░TOP ░ R6 ░ ░; ░F(BL ░ ░ M ░C 0 ░ ░ R5 ░ ░ MOV ░ XBT ░L ░R2 ░ ░ S ░ TYP ░TO: ░CAL, ░WER ░┆
0x2da00…2da80 UnusedSector ┆TE ░ ░OV ░2 ░ ░LETY ░6 ░ ░V ░ ░ X ░ELK. ░ ; ░NIL => LINK MOVC XFIRST R7 ; ┆
0x2da80…2db00 UnusedSector ┆Z Z q r s t u v w x y z { | } ~ ┆
0x2db00…2db80 UnusedSector ┆ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x2db80…2dc00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x2dc80…2dd00 UnusedSector ┆ ; NEW ENTERPROG ; INSTEAD OF A JUMP TO AN ENTERPROG INSTRUCTION, A NEW VIRTUAL ; INSTRUCTION IS INSERTED IN +257. ITS PARAMETER┆
0x2dd00…2dd80 UnusedSector ┆ IS THE DISTANCE ; TO THE START OF THE MAIN PROGRAM. THE FIRST 2 WORDS OF A MAIN ; PROGRAM IS A LINENO AND THE VARIABLE LENGTH. ┆
0x2dd80…2de00 UnusedSector ┆ PCO127: ADDC -4 R5 ; MOV R3 3. X5 ; SAVE(G); MOV R6 2. ┆
0x2de00…2de80 UnusedSector ┆X5 ; SAVE(B); MOV GTOP R0 ; MOV R0 1. X5 ; SAVE REF TO TOP OF GLOBAL VAR ┆
0x2de80…2df00 UnusedSector ┆ MVP 0. X4 R0 ; DIST TO MAIN ADD R0 R4 ; REF LINENO MVP 0. X4 ┆
0x2df00…2df80 UnusedSector ┆ R0 ; MOV R0 0. X5 ; STORE LINENO MOV R5 R3 ; MOV R5 ┆
0x2df80…2e000 UnusedSector ┆LDQ. X7 ; => ACTIVATIONREC.OLD_Q; IF OLDVERSUP THEN MOV PASYDARELEASE R6 SEQ R6 0 ┆
0x2e000…2e080 UnusedSector ┆ ; SKIP NEXT IF OLD VERSION FI MOVC 0 R5 MOV R5 LARCST.X7 ; S => ACTIVATIONREC.L┆
0x2e080…2e100 UnusedSector ┆ARCST; MOV SS R6 ; "OLD S" MOV 2. X6 R0 ; ST(S+2) "REF(PARAM)" MOV ┆
0x2e100…2e180 UnusedSector ┆ R0 PARAM. X7 ; => ACTIVATIONREC.PARAM; MOV 3. X6 R0 ; ST(S+3) "FILE" MOV ┆
0x2e180…2e200 UnusedSector ┆ R0 PROGFIL.X7 ; => ACTIVATIONREC.PROGFIL; MOV R6 OLDS. X7 ; OLD S => ACTIVATIONREC.OLDS; MO┆
0x2e200…2e280 UnusedSector ┆V SG R6 ; "REF(OLD ACTIVATION REC)" MOV LEVEL. X6 R0 ; OLD LEVEL ADDC 1 ┆
0x2e280…2e300 UnusedSector ┆ R0 ; + 1 MOV R0 LEVEL. X7 ; => ACTIVATIONREC.LEVEL; MOV HEAPTOP ┆
0x2e300…2e380 UnusedSector ┆ R0 ; HEAPTOP MOV R0 OLHEAP.X7 ; => ACTIVATIONREC.OLHEAP; ADDC OLDQ R7 ; "NO┆
0x2e380…2e400 UnusedSector ┆W R7 POINTS TO STACKTOP" MOV R7 R5 ; REF(STACKTOP) => S; MOV SG R3 ; RES┆
0x2e400…2e480 UnusedSector ┆TORE(G); MOV SB R6 ; RESTORE(B); MOVC 257 R4 ; 257 => Q; "FIRST PASCAL INS┆
0x2e480…2e500 UnusedSector ┆TR" JMP X4 ; GOTO NEXT; RUNRRR: JMP RUNERR ; GOTO RUNERR; Z Z Z Z Z Z Z Z Z ┆
0x2e500…2e580 UnusedSector ┆ THIRD PARAMETER MOV R7 1. X5 ; STACK THE FOURTH PARAMETER MOV R4 X5 ; PUSH THE┆
0x2e580…2e600 UnusedSector ┆ RETURN ADDRESS INC X5 ; TO THE STACK MVP X4 R0 ; G0T0 THE SUBROUTINE ┆
0x2e600…2e680 UnusedSector ┆ MOV R0 R4 ; JMP X4 ; IF OLDVERSUP THEN ; CALL4 ; THE PARAMETERS ARE ┆
0x2e680…2e700 UnusedSector ┆IN R2, R1, R0, AND R7 PCG119: ADDC -9 R5 ; MOVL R12 7. X5 ; MOV ┆
0x2e700…2e780 UnusedSector ┆R0 6. X5 ; MOV R7 5. X5 ; MOV R4 4. X5 ; INC 4. X5 ┆
0x2e780…2e800 UnusedSector ┆ ; MOV R6 2. X5 ; MOV R5 R6 ; MOV R5 1. X5 ; MVP┆
0x2e800…2e880 UnusedSector ┆ 0. X4 R0 ; ADD R0 R4 ; MVP 0. X4 R0 ; ADD R0 ┆
0x2e880…2e900 UnusedSector ┆1. X5 ; MVP 1. X4 R0 ; MOV R0 0. X5 ; MVP 2. X4 R0 ; ┆
0x2e900…2e980 UnusedSector ┆ SUB R0 R5 ; MOV HEAPTOP R0 ; ADDC MINSTACK R0 ; ILO ┆
0x2e980…2ea00 UnusedSector ┆ R6 ; MOV R5 R0 ; MOV HEAPTOP R1 ; SUB R1 R0 ; ┆
0x2ea00…2ea80 UnusedSector ┆ MVP 1. X4 R1 ; ADDC 500 R1 ; ILO R0 R1 ; JMP ┆
0x2ea80…2eb00 UnusedSector ┆ PCSTAC ; MVP 1. X4 R0 ; SUB R0 R5 ; MOV R5 GTOP ┆
0x2eb00…2eb80 UnusedSector ┆ ; MOV R3 R0 ; ADDC -64 R0 ; MOV R0 GBOT ; ┆
0x2eb80…2ec00 UnusedSector ┆ JMP 2. X4 ; ; NEW ENTERPROG ; INSTEAD OF A JUMP TO AN ENTERPROG INSTRUCTION, A NEW VIRTUAL ; INSTRUCTION I┆
0x2ec00…2ec80 UnusedSector ┆S INSERTED IN +257. ITS PARAMETER IS THE DISTANCE ; TO THE START OF THE MAIN PROGRAM. THE FIRST 2 WORDS OF A MAIN ; PROGRAM IS A┆
0x2ec80…2ed00 UnusedSector ┆ LINENO AND THE VARIABLE LENGTH. PCG127: ADDC -4 R5 ; MOV R3 3. X5 ; SAVE(G);┆
0x2ed00…2ed80 UnusedSector ┆ MOV R6 2. X5 ; SAVE(B); MOV GTOP R0 ; MOV R0 1. X5 ; ┆
0x2ed80…2ee00 UnusedSector ┆SAVE REF TO TOP OF GLOBAL VAR MVP 0. X4 R0 ; DIST TO MAIN ADD R0 R4 ; REF L┆
0x2ee00…2ee80 UnusedSector ┆INENO MVP 0. X4 R0 ; MOV R0 0. X5 ; STORE LINENO MOV R5 ┆
0x2ee80…2ef00 UnusedSector ┆ R3 ; MOV R5 R6 ; MOV R5 R0 ; MOV HEAPTOP R1 ; ┆
0x2ef00…2ef80 UnusedSector ┆ SUB R1 R0 ; MVP 1. X4 R1 ; ADDC 500 R1 ; ILO ┆
0x2ef80…2f000 UnusedSector ┆R0 R1 ; JMP PCSTAC ; MVP 1. X4 R0 ; SUB R0 R5 ┆
0x2f000…2f080 UnusedSector ┆ ; MOV R5 GTOP ; MOV R3 R0 ; ADDC -64 R0 ; MOV┆
0x2f080…2f100 UnusedSector ┆ R0 GBOT ; ADDC 69 R0 ; MOV 0.X0 R0 ; MOV R0 ┆
0x2f100…2f180 UnusedSector ┆CSTREF ; JMP 2. X4 ; ; CALL4 ; THE PARAMETERS ARE IN R2, R1, R0, AND R7 PCO119: ADDC -5┆
0x2f180…2f200 UnusedSector ┆ R5 ; MOVL R12 3. X5 ; STACK TWO PARAMETERS MOV R0 2. X5 ; STACK THE┆
0x2f200…2f280 UnusedSector ┆ TO THE STACK MVP X4 R0 ; GOTO THE SUBROUTINE MOV R0 R4 ; JMP ┆
0x2f280…2f300 UnusedSector ┆ X4 ; IF OLDVERSUP THEN ; CALL1 ; THE PARAMETER IS IN R2 PCG116: ADDC -6 R5 ; ┆
0x2f300…2f380 UnusedSector ┆ MOV R2 5. X5 ; MOV R4 4. X5 ; INC 4. X5 ; MOV ┆
0x2f380…2f400 UnusedSector ┆ R5 R0 ; JMP PCSTAC ; JMP 3. X4 ; FI ; CALL3 ; THE PARA┆
0x2f400…2f480 UnusedSector ┆METERS ARE IN R2, R1, AND R0. PCO118: ADDC -4 R5 ; MOVL R12 2. X5 ; STACK TWO PAR┆
0x2f480…2f500 UnusedSector ┆AMETERS MOV R0 1. X5 ; STACK LAST PARAMETER MOV R4 X5 ; PUSH RETURN ADDRESS ┆
0x2f500…2f580 UnusedSector ┆ INC X5 ; TO THE STACK MVP X4 R0 ; GOTO THE SUBROUTINE MOV ┆
0x2f580…2f600 UnusedSector ┆ R0 R4 ; JMP X4 ; IF OLDVERSUP THEN ; CALL3 ; THE PARAMETERS ARE IN R2, R1, AND R0┆
0x2f600…2f680 UnusedSector ┆. PCG118: ADDC -8 R5 ; MOVL R12 6. X5 ; MOV R0 5. X5 ; ┆
0x2f680…2f700 UnusedSector ┆ MOV R4 4. X5 ; INC 4. X5 ; MOV R6 2. X5 ; MOV ┆
0x2f700…2f780 UnusedSector ┆ R5 R6 ; MOV R5 1. X5 ; MVP 0. X4 R0 ; ADD R0 ┆
0x2f780…2f800 UnusedSector ┆ R4 ; MVP 0. X4 R0 ; ADD R0 1. X5 ; MVP 1. X4 R0 ; ┆
0x2f800…2f880 UnusedSector ┆ MOV R0 0. X5 ; MVP 2. X4 R0 ; SUB R0 R5 ; MOV HEAPTOP┆
0x2f880…2f900 UnusedSector ┆ R0 ; ADDC MINSTACK R0 ; ILO R5 R0 ; JMP PCSTAC ┆
0x2f900…2f980 UnusedSector ┆ ; JMP 3. X4 ; FI ; CALL2 ; THE PARAMETERS ARE IN R2 AND R1. PCO117: ADDC -3 ┆
0x2f980…2fa00 UnusedSector ┆ R5 ; MOVL R12 1. X5 ; STACK TWO PARAMETERS MOV R4 X5 ; PUSH THE RETURN A┆
0x2fa00…2fa80 UnusedSector ┆DDRESS INC X5 ; TO THE STACK MVP X4 R0 ; GOTO THE SUBROUTINE MO┆
0x2fa80…2fb00 UnusedSector ┆V R0 R4 ; JMP X4 ; IF OLDVERSUP THEN ; CALL2 ; THE PARAMETERS ARE IN R2 A┆
0x2fb00…2fb80 UnusedSector ┆ND R1. PCG117: ADDC -7 R5 ; MOVL R12 5. X5 ; MOV R4 4. X5 ┆
0x2fb80…2fc00 UnusedSector ┆; INC 4. X5 ; MOV R6 2. X5 ; MOV R5 R6 ; MOV ┆
0x2fc00…2fc80 UnusedSector ┆ R5 1. X5 ; MVP 0. X4 R0 ; ADD R0 R4 ; MVP 0. X4 ┆
0x2fc80…2fd00 UnusedSector ┆ R0 ; ADD R0 1. X5 ; MVP 1. X4 R0 ; MOV R0 0. X5 ; ┆
0x2fd00…2fd80 UnusedSector ┆ MVP 2. X4 R0 ; SUB R0 R5 ; MOV HEAPTOP R0 ; ADDC MI┆
0x2fd80…2fe00 UnusedSector ┆NSTACK R0 ; ILO R5 R0 ; JMP PCSTAC ; JMP 3. ┆
0x2fe00…2fe80 UnusedSector ┆ X4 ; FI ; CALL1 ; THE PARAMETER IS IN R2 PCO116: ADDC -2 R5 ; MOV R2 1. ┆
0x2fe80…2ff00 UnusedSector ┆ X5 ; STACK ONE PARAMETERS MOV R4 X5 ; PUSH THE RETURN ADDRESS INC X5 ;┆
0x2ff00…2ff80 UnusedSector ┆ R0 R5 ; MOV HEAPTOP R0 ; ADDC MINSTACK R0 ; ILO R5 R┆
0x2ff80…30000 UnusedSector ┆0 ; JMP PCSTAC ; JMP 3. X4 ; FI ; CALL0 ; NO PARAMETERS FOR PROCEDUR┆
0x30000…30080 UnusedSector ┆E PCO115: ADDC -1 R5 ; MOV R4 X5 ; PUSH THE RETURN ADDRESS INC ┆
0x30080…30100 UnusedSector ┆ X5 ; TO THE STACK MVP X4 R0 ; GOTO THE SUBROUTINE MOV R0 R4┆
0x30100…30180 UnusedSector ┆ ; JMP X4 ; IF OLDVERSUP THEN ; CALL0 ; NO PARAMETERS FOR PROCEDURE PCG115: ADDC ┆
0x30180…30200 UnusedSector ┆-5 R5 ; MOV R4 4. X5 ; INC 4. X5 ; MOV R6 2. ┆
0x30200…30280 UnusedSector ┆ X5 ; MOV R5 R6 ; MOV R5 1. X5 ; MVP 0. X4 R0 ; ┆
0x30280…30300 UnusedSector ┆ ADD R0 R4 ; MVP 0. X4 R0 ; ADD R0 1. X5 ; MVP 1. ┆
0x30300…30380 UnusedSector ┆ X4 R0 ; MOV R0 0. X5 ; MVP 2. X4 R0 ; SUB R0 ┆
0x30380…30400 UnusedSector ┆R5 ; MOV HEAPTOP R0 ; ADDC MINSTACK R0 ; ILO R5 R0 ; ┆
0x30400…30480 UnusedSector ┆JMP PCSTAC ; JMP 3. X4 ; FI ; CALLSYS0 ; NO PARAMETERS PCO121: MVP ┆
0x30480…30500 UnusedSector ┆ 0. X4 R1 ; ADDC 1 R4 ; MOD R1 ; JMP PC┆
0x30500…30580 UnusedSector ┆JUMPTAB ; ; CALLSYS1 ; 1 PARAMETER PCO122: ; ADDC -1 R5 ; MOV ┆
0x30580…30600 UnusedSector ┆ R2 X5 ; MVP 0. X4 R1 ; ADDC 1 R4 ; MOD R1 ┆
0x30600…30680 UnusedSector ┆ ; JMP PCJUMPTAB ; ; CALLSYS2 ; 2 PARAMETERS PCO123: ADDC -2 R5 ; ┆
0x30680…30700 UnusedSector ┆ MOVL R12 0. X5 ; MVP 0. X4 R1 ; ADDC 1 R4 ; MOD R1┆
0x30700…30780 UnusedSector ┆ ; JMP PCJUMPTAB ; ; CALLSYS3 ; 3 PARAMETERS PCO124: ADDC -3 ┆
0x30780…30800 UnusedSector ┆ R5 ; MOVL R12 1. X5 ; MOV R0 0. X5 ; MVP 0. X4 R1 ; ┆
0x30800…30880 UnusedSector ┆ ADDC 1 R4 ; MOD R1 ; JMP PCJUMPTAB ; ; CALLSYS4 ; 4 PA┆
0x30880…30900 UnusedSector ┆RAMETSRS PCO125: ADDC -4 R5 ; MOVL R12 2. X5 ; MOV R0 1. X5┆
0x30900…30980 UnusedSector ┆ ; MOV R7 0. X5 ; MVP 0. X4 R1 ; ADDC 1 R4 ; MO┆
0x30980…30a00 UnusedSector ┆D R1 ; JMP PCJUMPTAB ; ; NEW ENTER PCO120: ADDC -4 R5 ; ┆
0x30a00…30a80 UnusedSector ┆ MOV R6 2. X5 ; SAVE OLD B MOV R5 1. X5 ; R5+ MVP X4 R0 ; ┆
0x30a80…30b00 UnusedSector ┆ R6 2. X5 ; MOV R5 R6 ; MOV R5 1. X5 ; MVP 0. X4 ┆
0x30b00…30b80 UnusedSector ┆ R0 ; ADD R0 R4 ; MVP 0. X4 R0 ; ADD R0 1. X5 ; ┆
0x30b80…30c00 UnusedSector ┆ MVP 1. X4 R0 ; MOV R0 0. X5 ; MVP 2. X4 R0 ; SUB ┆
0x30c00…30c80 UnusedSector ┆ 1. X4 ; ; JUST_TWO3 PCO076: ADDC -1 R5 ; MOV R2 0. X5 ; ┆
0x30c80…30d00 UnusedSector ┆ MOV R1 R2 ; MOV R0 R1 ; JMP X4 ; ; JUST_TWO4 PCO077┆
0x30d00…30d80 UnusedSector ┆: ADDC -2 R5 ; MOVL R12 0. X5 ; MOV R0 R2 ; MOV ┆
0x30d80…30e00 UnusedSector ┆ R7 R1 ; JMP X4 ; ; STORE1 PCO078: ADDC -1 R5 ; ┆
0x30e00…30e80 UnusedSector ┆ MOV R2 0. X5 ; JMP 0. X4 ; ; STORE2 PCO079: ADDC -2 R5 ; ┆
0x30e80…30f00 UnusedSector ┆ MOVL R12 0. X5 ; JMP 0. X4 ; ; STORE3 PCO080: ADDC -3 R5┆
0x30f00…30f80 UnusedSector ┆ ; MOV R0 0. X5 ; MOVL R12 1. X5 ; JMP 0. X4 ; ; STORE4┆
0x30f80…31000 UnusedSector ┆ PCO081: ADDC -4 R5 ; MOV R7 0. X5 ; MOV R0 1. X5 ; ┆
0x31000…31080 UnusedSector ┆ MOVL R12 2. X5 ; JMP 0. X4 ; ; COPYSTRUCTURE(LENGTH) AND ADDRESSES IN R2 AND R1 PCO0┆
0x31080…31100 UnusedSector ┆16: ADDC -2 R5 ; MOVL R12 0. X5 ; JMP PCO021 ; ; LSSTRU┆
0x31100…31180 UnusedSector ┆CT(LENGTH) AND 2 IN REGS PCO082: ADDC -2 R5 ; MOVL R12 0. X5 ; JMP ┆
0x31180…31200 UnusedSector ┆ PCO059 ; ; EQSTRUCT(LENGTH) AND 2 IN REGS PCO083: ADDC -2 R5 ; MOVL R12 0. ┆
0x31200…31280 UnusedSector ┆ X5 ; JMP PCO060 ; ; GRSTRUCT(LENGTH) AND 2 IN REGS PCO084: ADDC -2 R5 ;┆
0x31280…31300 UnusedSector ┆ MOVL R12 0. X5 ; JMP PCO061 ; ; NLSTRUCT(LENGTH) AND 2 IN REGS PCO085: ┆
0x31300…31380 UnusedSector ┆ADDC -2 R5 ; MOVL R12 0. X5 ; JMP PCO062 ; ; NESTRUCT(LENGTH) A┆
0x31380…31400 UnusedSector ┆ND 2 IN REGS PCO086: ADDC -2 R5 ; MOVL R12 0. X5 ; JMP PCO063┆
0x31400…31480 UnusedSector ┆ ; ; NGSTRUCT(LENGTH) AND 2 IN REGS PCO087: ADDC -2 R5 ; MOVL R12 0. X5 ; ┆
0x31480…31500 UnusedSector ┆ POPLENGTH ADD R0 1. X5 ; =POP ADDRESS MVP 1. X4 R0 ; SAVE CURRENT LINENO. ┆
0x31500…31580 UnusedSector ┆ MOV R0 X5 ; ONTHE STACK MOV R5 R6 ; SET LOCAL BASE MVP 2. X4 ┆
0x31580…31600 UnusedSector ┆ R0 ; GET VARLENGTH SUB R0 R5 ; SET STACKTOP MOV HEAPTOP R0 ; CHECK IF ┆
0x31600…31680 UnusedSector ┆ ADDC MINSTACK R0 ; WE HAVE AT LEAST ILO R5 R0 ; MINSTACK FREE SPACE JMP PCS┆
0x31680…31700 UnusedSector ┆TAC ; IF NOT THEN STACKERROR JMP 3. X4 ; ; NEW EXIT PCO126: MOV 1. X6 ┆
0x31700…31780 UnusedSector ┆ R5 ; MOV 4. X6 R4 ; MOV 2. X6 R6 ; JMP X4 ; ┆
0x31780…31800 UnusedSector ┆ ; DIV 2**N MOD 2 PCO008: MVP 0. X4 R0 ; MOV R1 R7 ; MOVC 1 ┆
0x31800…31880 UnusedSector ┆ R1 ; ILTP R7 0 ; NEG R7 ; MOVC -1 R1 ; ┆
0x31880…31900 UnusedSector ┆ MOD R0 ; IBZ R7 0 ; MOVC 0 R1 ; JMP ┆
0x31900…31980 UnusedSector ┆ JMP PCILLC ; Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x31980…31a00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x31a80…31b00 UnusedSector ┆ CO08 > p ░ H \ ░ ░5 ; ░ ░ MOV ░ ░ R7 ░0. ░ X5 ░ ░ M ░ ░ ░ 1. ░ X ░ ; ░ ┆
0x31b00…31b80 UnusedSector ┆ ░OVL ░ ░R12 ░ ░5 ; ░ ░ JMP ░ ░ ░0. ░ X4 ░ ; ░OPYS ░UCTU ░(LEN ░H) A ░ ADD ░SSES ░N R2 ░ND R ░PCO0┆
0x31b80…31c00 UnusedSector ┆ ░: ░ ░DC ░ ░ ░ ░ ; ░ ░MOVL ░ ░ R12 ░. ░X5 ░ ░ JM ░ ░ ░ PCO ░1 ░; ░LSST ░┆
0x31c00…31c80 UnusedSector ┆CT(L ░GTH) ░ND 2 ░N RE ░ PCO ░2: ░ ░DDC ░2 ░ ░ ░5 ; ░ ░ MOVL R1 0. X5 ; JMP ┆
0x31c80…31d00 UnusedSector ┆Z Z ┆
0x31d00…31d80 UnusedSector ┆ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x31d80…31e00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x31e80…31f00 UnusedSector ┆ JMP PCO064 ; ; V_PUSHLONGCONST(DISP) PCO092: MOV CSTREF R7 ; LNGCOP: MVP ┆
0x31f00…31f80 UnusedSector ┆ 0. X4 R0 ; ADD R0 R7 ; ADDC -2 R5 ; MOVL 0. X7 ┆
0x31f80…32000 UnusedSector ┆ R01 ; MOVL R01 X5 ; JMP 1. X4 ; ; V_PUSHLONGLOCAL(DISP) PCO093: ┆
0x32000…32080 UnusedSector ┆ MOV R6 R7 ; JMP LNGCOP ; ; V_PUSHLONGGLOBAL(DISP) PCO094: MOV R3┆
0x32080…32100 UnusedSector ┆ R7 ; JMP LNGCOP ; ; V_PUSHSETCONST(DISPL) PCO095: MOV CSTREF R0 ; SET┆
0x32100…32180 UnusedSector ┆COP: MVP 0. X4 R1 ; ADD R1 R0 ; ADDC -8 R5 ; M┆
0x32180…32200 UnusedSector ┆ODC 8 ; MOVM X0 X5 ; ADDC -8 R5 ; JMP ┆
0x32200…32280 UnusedSector ┆ 1. X4 ; ; V_PUSHSETLOCAL(DISPL) PCO096: MOV R6 R0 ; JMP SETCOP ; ;┆
0x32280…32300 UnusedSector ┆ V_PUSHSETGLOBAL(DISPL) PCO103: MOV R3 R0 ; JMP SETCOP ; ; V_MULR0R1 "R0*R┆
0x32300…32380 UnusedSector ┆1 => R1" PCO104: MOVC REGTOP R7 ; MOV R1 0. X7 ; MUL R0 X7 ┆
0x32380…32400 UnusedSector ┆ ; MOV 0. X7 R1 ; JMP X4 ; ; V_MULR1R2 "R1*R2 => R2" PCO105: MO┆
0x32400…32480 UnusedSector ┆VC REGTOP R7 ; MOV R2 0. X7 ; MUL R1 0. X7 ; MOV 0. X7 ┆
0x32480…32500 UnusedSector ┆ R2 ; JMP X4 ; ; V_MULR7R0 "R7*R0 => R0" PCO106: ADDC -10 R5 ;┆
0x32500…32580 UnusedSector ┆ MOV R0 0. X5 ; MUL R7 0. X5 ; MOV 0. X5 R0 ; ADDC ┆
0x32580…32600 UnusedSector ┆ 10 R5 ; JMP X4 ; PCO107: PCO108: PCO109: PCO110: PCO111: PCO112: PCO113: PCO114:┆
0x32600…32680 UnusedSector ┆TOP; MOV X5 R7 ; ST(S) => REF(RESULT_PARAMETER); MOV R0 X7 ; RESULT => R┆
0x32680…32700 UnusedSector ┆ESULT_PARAMETER; MOV 1. X5 R7 ; ST(S+1) => REF(LINE_PARAMETER); MOV LINE R0 ; ┆
0x32700…32780 UnusedSector ┆ LINE MOV R0 X7 ; => LINE_PARAMETER; POPPARM: ; ADDC 4 ┆
0x32780…32800 UnusedSector ┆ R5 ; "POP PARAMETERS FOR RUN" MOVC REGTOP R7 ; STC 6 ; SAVE(┆
0x32800…32880 UnusedSector ┆B, G, Q, S); MOVC 1 R0 ; "DON'T LOAD CONSTANTS"; MOV R3 R7 ; MOV ┆
0x32880…32900 UnusedSector ┆; USE PROG PCNEXT: PCNEXT1: JMP X4 ; GOTO NEXT ;===============================================┆
0x32900…32980 UnusedSector ┆======================== ; EXCEPTIONS PCCALL: ; CALLERROR MODC 9 -8 ; PCIL┆
0x32980…32a00 UnusedSector ┆LC: ; TIMELIMIT MODC 8 -7 ; PCCODE: ; CODELIMI┆
0x32a00…32a80 UnusedSector ┆T MODC 7 -6 ; PCSTAC: ; STACKLIMIT MODC 6 -5 ; P┆
0x32a80…32b00 UnusedSector ┆CHEAP: ; HEAPLIMIT MODC 5 -4 ; PCVARI: ; VARIA┆
0x32b00…32b80 UnusedSector ┆NTERROR MODC 4 -3 ; PCRANG: ; RANGEERROR PCRANG1: MODC 3 ┆
0x32b80…32c00 UnusedSector ┆ -2 ; PCPOIN: ; POINTERERROR MODC 2 -1 ; PCOVER: ┆
0x32c00…32c80 UnusedSector ┆ ; OVERFLOW MODC 1 -0 ; PCTERM: ; TERMINATED: MOVC 0 ┆
0x32c80…32d00 UnusedSector ┆ R1 ; TERMINATIONCODE MOV R1 RESULT ; => RESULT; MOV X6 R7 ;┆
0x32d00…32d80 UnusedSector ┆ ST(B) MOV R7 LINE ; => LINE; MOV R3 R7 ; MOV LEVEL. X7 ┆
0x32d80…32e00 UnusedSector ┆ R0 ; IF LEVEL JON R0 LDPROG ; <>0 THEN GOTO LOADPROG; ; ┆
0x32e00…32e80 UnusedSector ┆ "PROGRAM WAS NOT LOADED BY RUN" JOZ R1 PCXYZ ; IF RESULT <> TERMINATED THEN MOVC PASERR ┆
0x32e80…32f00 UnusedSector ┆ R2 ; PASERR IOR R1 R2 ; OR TERMINATIONCODE MOV R2 RESULT ; ┆
0x32f00…32f80 UnusedSector ┆ => RESULT; PCXYZ: ; FI; JMP LTERM ; GOTO TERMINATION; LDPROG: ┆
0x32f80…33000 UnusedSector ┆ ; LOADPROG MOV R3 R7 ; G => REF(ACTIVATION RECORD); MOV AB. X7 ┆
0x33000…33080 UnusedSector ┆ R6 ; ACTIVATIONREC.B => B; MOV AG. X7 R3 ; ACTIVATIONREC.G => G; MOV OLDQ. X7 ┆
0x33080…33100 UnusedSector ┆ R4 ; ACTIVATIONREC.Q => Q; MOV OLDS. X7 R5 ; ACTIVATIONREC.OLDS => S; MOV R3 ┆
0x33100…33180 UnusedSector ┆ R0 ; ADDC -64 R0 ; MOV R0 GBOT ; ADDC 69 R0 ; ┆
0x33180…33200 UnusedSector ┆ MOV 0. X0 R0 ; MOV R0 CSTREF ; MOV 1. X7 R0 ; MOV ┆
0x33200…33280 UnusedSector ┆ R0 GTOP ; MOV RESULT R0 ; IF RESULT INEP R0 0 ; <> TERMIN┆
0x33280…33300 UnusedSector ┆ATED THEN MOV OLHEAP.X7 R1 ; ACTIVATIONREC.OLDHEAPTOP MOV R1 HEAPTOP ; => HEAP┆
0x33300…33380 UnusedSector ┆ R6 0 ; IF RETURN_CODE <> 0 THEN MOV R6 R7 ; JMP S4 RUERROR ; ┆
0x33380…33400 UnusedSector ┆RUNERROR; MOVC REGSAV R7 ; UNS 6 ; RESTORE(B, G, Q, S); MOV ┆
0x33400…33480 UnusedSector ┆ R3 R7 ; MOV LEVEL. X7 R0 ; JON R0 XX4711 ; IF LEVEL = 0 THEN MOV ┆
0x33480…33500 UnusedSector ┆ PROGFIL.X7 R4 ; BEGIN MON IO, DISMANTLE ; DISMANTLE(PROGFIL, NOP ┆
0x33500…33580 UnusedSector ┆ ; ERROR: NOP); MOV SQ R4 ; RESTORE(Q); XX4711: ┆
0x33580…33600 UnusedSector ┆ ; END; JMP PCNEXT ; GOTO NEXT; RUERROR: JMP RUNERR ; JUMP TO RUNE┆
0x33600…33680 UnusedSector ┆RROR ;======================================================================= PPE050: ; *******┆
0x33680…33700 UnusedSector ┆************************* ; PRINT_INSTRUCTION_TRACE; JMP X4 ;┆
0x33700…33780 UnusedSector ┆ ******************************** PCO000: ; ILLEGAL CODE: PTO000: ; ┆
0x33780…33800 UnusedSector ┆ JMP PCILLC ; ;======================================================================= ; CONSTADDR(DISP┆
0x33800…33880 UnusedSector ┆L) ; THE ABSOLUTE ADDRESS OF A CONSTANT IS PUSHED ON THE STACK. PCO001: ; CONSTADDR: PTO001: ┆
0x33880…33900 UnusedSector ┆ ADDC -1 R5 ; S-1 => S; MOV R3 R7 ; MVP X4 R1 ; PG(Q)┆
0x33900…33980 UnusedSector ┆ => DISPL; ADD 5. X7 R1 ; DISPL+ADR OF CONSTS => DISPL; MOV R1 X5 ; DISPL =┆
0x33980…33a00 UnusedSector ┆> ST(S); JMP 1. X4 ; RETURN; ;====================================================================┆
0x33a00…33a80 UnusedSector ┆=== ; LOCALADDR(DISPL) ; THE ABSOLUTE ADDRESS OF A LOCAL VARIABLE IS PUSHED ON THE STACK. PCO002: ┆
0x33a80…33b00 UnusedSector ┆ ; LOCALADDR: PTO002: ADDC -1 R5 ; S-1 => S; MVP X4 R0 ; PG(Q) "DISPL" ┆
0x33b00…33b80 UnusedSector ┆ ADD R6 R0 ; +B MOV R0 X5 ; => ST(S); JMP ┆
0x33b80…33c00 UnusedSector ┆ 1. X4 ; RETURN; ;======================================================================= ; GLOBALADDR(DISPL) ; THE A┆
0x33c00…33c80 UnusedSector ┆BSOLUTE ADDRESS OF A GLOBAL VARIABLE IS PUSHED ON THE STACK. PCO003: ; GLOBALADDR: PTO003: ┆
0x33c80…33d00 UnusedSector ┆ADDC -1 R5 ; S-1 => S; MVP X4 R0 ; PG(Q) ADD R3 R0 ; ┆
0x33d00…33d80 UnusedSector ┆ +G MOV R0 X5 ; => ST(S); JMP 1. X4 ; RETURN; ;===========┆
0x33d80…33e00 UnusedSector ┆============================================================ ; PUSHCONST(VALUE) ; THE CONSTANT FOLLOWING THE INSTRUCTION IS PU┆
0x33e00…33e80 UnusedSector ┆SHED ON THE STACK. PCO004: ; PUSHCONST: PTO004: ADDC -1 R5 ; S-1 => S; ┆
0x33e80…33f00 UnusedSector ┆ MVP X4 R0 ; PG(Q) "VALUE" MOV R0 X5 ; => ST(S); JMP ┆
0x33f00…33f80 UnusedSector ┆ 1. X4 ; RETURN; ;======================================================================= ; PUSHLOCAL(DISPL) ; T┆
0x33f80…34000 UnusedSector ┆ PROGFIL.X7 R4 ; ACTIVATIONREC.PROGFIL=>FILE; JMP S6 LOADPM ; LOAD PROGRAM; INEP ┆
0x34000…34080 UnusedSector ┆ RETURN; ;======================================================================= ; PUSHIND ; AN ABSOLUTE ADDRESS IS POPPED┆
0x34080…34100 UnusedSector ┆ FROM THE STACK, AND THE ; VARIABLE WITH THAT ADDRESS IS PUSHED ON THE STACK. PCO007: ; PUSHIND: PT┆
0x34100…34180 UnusedSector ┆O007: MOV X5 R0 ; ST(S) => X; MOV X0 X5 ; ST(X) => ST(S); JMP ┆
0x34180…34200 UnusedSector ┆ X4 ; RETURN; ;======================================================================= ; PUSHLONG ; AN A┆
0x34200…34280 UnusedSector ┆BSOLUTE ADDRESS IS POPPED FROM THE STACK. ; A LONG INTEGER (2 WORDS) REFERENCED BY ; THAT ADDRESS IS PUSHED ON THE STACK. PCO00┆
0x34280…34300 UnusedSector ┆9: ; PUSHLONG: PTO009: ; MOV X5 R7 ; ST(S) =┆
0x34300…34380 UnusedSector ┆> X; ADDC -1 R5 ; S-1 => S; MOVL X7 R01 ; ST(X),ST(X+1) MOVL ┆
0x34380…34400 UnusedSector ┆ R01 X55 ; => ST(S),ST(S+1); JMP X4 ; GOTO NEXT; ;======================┆
0x34400…34480 UnusedSector ┆================================================= ; PUSHSET ; AN ABSOLUTE ADDRESS IS POPPED FROM THE STACK. ; A SET (8 WORDS) ┆
0x34480…34500 UnusedSector ┆REFERENCED BY THAT ; ADDRESS IS PUSHED ON THE STACK. PCO010: ; PUSHSET: PTO010: ┆
0x34500…34580 UnusedSector ┆ ; MOV X5 R0 ; ST(S) => X; ADDC -7 R5 ; S-7 => S; MODC 8┆
0x34580…34600 UnusedSector ┆ ; FOR I := 1 TO 8 DO MOVM X0 X5 ; ST(X)=>ST(S);INCR(X);INCR(S) OD; ADD┆
0x34600…34680 UnusedSector ┆C -8 R5 ; S-8 => S; JMP X4 ; GOTO NEXT; ;====================================┆
0x34680…34700 UnusedSector ┆=================================== ; FIELD(DISPL) ; INCREMENTS AN ABSOLUTE ADDRESS ON ; THE STACK WITH THE DISPLACEMENT. PCO┆
0x34700…34780 UnusedSector ┆011: ; FIELD: PTO011: MVP X4 R0 ; PG(Q) "DISPL" ADD R0 ┆
0x34780…34800 UnusedSector ┆ X5 ; +ST(S) => ST(S); JMP 1. X4 ; RETURN; ;=======================================┆
0x34800…34880 UnusedSector ┆================================ ; INDEX(MIN, MAX-MIN, LENGTH) ; AN INDEX VALUE AND AN ARRAY ADDRESS ARE POPPED ; FROM THE STA┆
0x34880…34900 UnusedSector ┆CK. THE ADDRESS OF THE CORRESPONDING ; ARRAY ELEMENT IS PUSHED ON THE STACK. PCO012: ; INDEX: PTO01┆
0x34900…34980 UnusedSector ┆2: ; MVP X4 R0 ; PG(Q) => MIN; SUB R0 X5 ; S┆
0x34980…34a00 UnusedSector ┆HE LOCAL VARIABLE WHICH ADDRESS FOLLOWS ; THE INSTRUCTION IS PUSHED ON THE STACK. PCO005: ; PUSHLOC┆
0x34a00…34a80 UnusedSector ┆AL: PTO005: ADDC -1 R5 ; S-1 => S; MVP X4 R0 ; PG(Q) "DISPL" ADD ┆
0x34a80…34b00 UnusedSector ┆ R6 R0 ; +B => X; MOV X0 X5 ; ST(X) => ST(S); JMP 1. ┆
0x34b00…34b80 UnusedSector ┆ X4 ; RETURN; ;======================================================================= ; PUSHGLOBAL(DISPL) ; THE GLOBAL ┆
0x34b80…34c00 UnusedSector ┆VARIABLE WHICH ADDRESS FOLLOWS ; THE INSTRUCTION IS PUSHED ON THE STACK. PCO006: ; PUSHGLOBAL: PTO0┆
0x34c00…34c80 UnusedSector ┆06: ADDC -1 R5 ; S-1 => S; MVP X4 R0 ; PG(Q) "DISPL" ADD ┆
0x34c80…34d00 UnusedSector ┆ R3 R0 ; +G => X; MOV X0 X5 ; ST(X) => ST(S); JMP 1. X4 ; ┆
0x34d00…34d80 UnusedSector ┆======================== ; VARIANT(DISPL, TAGSET) ; CHECKS THE VALUE OF A TAG FIELD IN A VARIANT RECORD. ; THE RECORD BASE IS ┆
0x34d80…34e00 UnusedSector ┆THE STACK TOP ELEMENT. ; THE TAG FIELD DISPLACEMENT IS THE FIRST PARAMETER. ; THE SECOND PARAMETER IS A BITSTRING. ; BITS SET CO┆
0x34e00…34e80 UnusedSector ┆RRESPONDS TO LEGAL TAG VALUES. PCO014: ; VARIANT: PTO014: ; MVP┆
0x34e80…34f00 UnusedSector ┆ X4 R0 ; DISPL ADD X5 R0 ; +ST(S) => X; MOVC 16 R7 ┆
0x34f00…34f80 UnusedSector ┆ ; IGE X0 R7 ; IF ST(X) >= 16 THEN JMP PCVARI ; VARIANTERROR FI; ┆
0x34f80…35000 UnusedSector ┆ MVP 1. X4 R1 ; PG(Q+1) => BITSTRING; MOD X0 ; IF BIT(ST(X)) IBZ ┆
0x35000…35080 UnusedSector ┆ R1 0 ; NOT IN BITSTRING THEN JMP PCVARI ; THEN VARIANTERROR FI; JMP ┆
0x35080…35100 UnusedSector ┆ 2. X4 ; GOTO NEXT; ;======================================================================= ; RANGE(MIN, MAX)┆
0x35100…35180 UnusedSector ┆ ; CHECKS THAT THE STACK TOP VALUE IS WITHIN MIN AND MAX. PCO015: ; RANGE: PTO015: ┆
0x35180…35200 UnusedSector ┆ ; MVP X4 R0 ; PG(Q) => MIN; ILT X5 R0 ; IF ST(S) < MIN THEN┆
0x35200…35280 UnusedSector ┆ JMP PCRANG ; RANGEERROR FI; MVP 1. X4 R0 ; PG(Q+1) => MAX; ILT ┆
0x35280…35300 UnusedSector ┆ R0 X5 ; IF MAX < ST(S) THEN JMP PCRANG ; RANGEERROR FI; JMP ┆
0x35300…35380 UnusedSector ┆ 2. X4 ; GOTO NEXT; ;======================================================================= ; COPYWORD ; POPS A WORD┆
0x35380…35400 UnusedSector ┆T(S)-MIN => ST(S); ILT X5 0 ; IF ST(S) < 0 THEN JMP PCRANG ; RANGEERR┆
0x35400…35480 UnusedSector ┆OR FI; MVP 1. X4 R1 ; PG(Q+1) => MAX-MIN; ILT R1 X5 ; IF MAX-MIN < ST(S) TH┆
0x35480…35500 UnusedSector ┆EN JMP PCRANG ; RANGEERROR FI; MVP 2. X4 R1 ; PG(Q+2) => ELEMLENGTH; ┆
0x35500…35580 UnusedSector ┆ SEQ R1 1 ; IF ELEMENLENGTH = 1 THEN JMP PL1012 ; BEGIN MOV ┆
0x35580…35600 UnusedSector ┆X5 R0 ; DISPL*1 ADD R0 1. X5 ; +ARRAYADR => ST(S+1); JMP P┆
0x35600…35680 UnusedSector ┆L2012 ; END PL1012: ; ELSE ; BEGIN MOV 1. ┆
0x35680…35700 UnusedSector ┆ X5 R2 ; ST(S+1) => ARRAYADR; MUL R1 X55 ; OFFSET*ELEMLENGTH ADD X┆
0x35700…35780 UnusedSector ┆5 R2 ; +ARRAYADR MOV R2 1. X5 ; => ST(S+1); ┆
0x35780…35800 UnusedSector ┆ ; END; PL2012: ; ADDC 1 R5 ; S+1 => S; ┆
0x35800…35880 UnusedSector ┆ JMP 3. X4 ; GOTO NEXT; ;======================================================================= ; POI┆
0x35880…35900 UnusedSector ┆NTER ; CHECKS THAT THE POINTER VALUE ON ; THE STACK IS DIFFERENT FROM ZERO. PCO013: ; POINTER: PTO┆
0x35900…35980 UnusedSector ┆013: ; INE X5 0 ; IF ST(S) <> 0 THEN JMP X4┆
0x35980…35a00 UnusedSector ┆ ; GOTO NEXT; JMP PCPOIN ; ELSE POINTERERROR FI; ;===============================================┆
0x35a00…35a80 UnusedSector ┆===================== ; COPYSTRUCTURE(LENGTH) ; POPS A SOURCE ADDRESS AND A DESTINATION ADDRESS ; FROM THE STACK. COPIES LENGT┆
0x35a80…35b00 UnusedSector ┆H WORDS FROM ; THE SOURCE TO THE DESTINATION. PCO021: ; COPYSTRUCTURE: PTO021: ┆
0x35b00…35b80 UnusedSector ┆ ; MOV X5 R0 ; ST(S) => SOURCE; MOV 1. X5 R1 ; ST(S+1) => DEST; ┆
0x35b80…35c00 UnusedSector ┆ MVP X4 R2 ; PG(Q) => LENGTH; ADDC 2 R5 ; S+2 => S; JOZ R2 ┆
0x35c00…35c80 UnusedSector ┆PCL121 ; IF LENGTH <> 0 THEN MOD R2 ; "THE FIRST 1+(LENGTH-1) MOD MOVM X0┆
0x35c80…35d00 UnusedSector ┆ X1 ; 16 WORDS ARE MOVED" ADDC -1 R2 ; LENGTH-1 => LENGTH; SRL R2 4 ┆
0x35d00…35d80 UnusedSector ┆ ; LENGTH DIV 16 => LENGTH; JOZ R2 PCL121 ; ; IF LENGTH <> 0 THEN PCL221: ┆
0x35d80…35e00 UnusedSector ┆ FROM THE STACK. POPS AN ADDRESS FROM ; THE STACK. STORES THE WORD AT THE ADDRESS. PCO017: ; COPYWO┆
0x35e00…35e80 UnusedSector ┆RD: PTO017: MOV 1. X5 R0 ; ST(S+1) => X; MOV X5 X0 ; ST(S) => ST(X); ┆
0x35e80…35f00 UnusedSector ┆ ADDC 2 R5 ; S+2 => S; JMP X4 ; RETURN; ;=================================┆
0x35f00…35f80 UnusedSector ┆====================================== ; COPYLONG ; COPIES A LONG INTEGER (2 WORDS) FROM THE STACK TOP ; TO AN ADDRESS, WHICH ┆
0x35f80…36000 UnusedSector ┆IS ALSO POPPED FROM THE STACK. PCO018: ; COPYLONG: PTO018: ; MO┆
0x36000…36080 UnusedSector ┆V 2. X5 R7 ; ST(S+2) => X; MOVL X5 R01 ; ST(S),ST(S+1) MOVL R01 ┆
0x36080…36100 UnusedSector ┆ X7 ; => ST(X),ST(X+1); ADDC 3 R5 ; S+3 => S; JMP X4 ┆
0x36100…36180 UnusedSector ┆; GOTO NEXT; ;======================================================================= ; COPYSET ; COPIES A SET (8 WORDS) FR┆
0x36180…36200 UnusedSector ┆OM THE STACK TOP TO AN ; ADDRESS, WHICH IS ALSO POPPED FROM THE STACK. PCO019: ; COPYSET: PTO019: ┆
0x36200…36280 UnusedSector ┆ ; MOV 8. X5 R0 ; ST(S+8) => X; MODC 8 ; FOR I┆
0x36280…36300 UnusedSector ┆ := 1 TO 8 DO MOVM X5 X0 ; ST(S)=>ST(X);INCR(S);INCR(X); ; RO┆
0x36300…36380 UnusedSector ┆F; ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;======================┆
0x36380…36400 UnusedSector ┆================================================= ; COPYTAG(LENGTH) ; ASSIGNMENT TO A TAG FIELD OF A RECORD FOLLOWED BY ; ASSI┆
0x36400…36480 UnusedSector ┆GNMENT OF NIL (=0) TO ALL WORDS IN THE VARIANT ; PART OF THE RECORD. THE STACK TOP CONTAINS THE ; VALUE AND THE WORD BELOW CONTA┆
0x36480…36500 UnusedSector ┆INS THE ADDRESS. PCO020: ; COPYTAG: PTO020: ; MOV 1. X5 ┆
0x36500…36580 UnusedSector ┆ R0 ; ST(S+1) => X; MOV X5 X0 ; ST(S) => ST(X); ADDC 2 R5 ; S+2┆
0x36580…36600 UnusedSector ┆ => S; MVP X4 R1 ; PG(Q) => LENGTH; PCL020: ; FOR I := 1 TO LENGTH DO ┆
0x36600…36680 UnusedSector ┆ ADDC 1 R0 ; X+1 => X; XTR X0 0 ; 0 => ST(X); SOB ┆
0x36680…36700 UnusedSector ┆ R1 PCL020 ; ROF; JMP 1. X4 ; GOTO NEXT; ;==================================================┆
0x36700…36780 UnusedSector ┆. PCO025: ; ANDWORD: PTO025: MOV X5 R0 ; ST(S) => A; ADDC 1 ┆
0x36780…36800 UnusedSector ┆ ; FOR I := 1 TO LENGTH DO MOVM X0 X1 ; "MOVE 16 WORDS" SOB R2 ┆
0x36800…36880 UnusedSector ┆ PCL221 ; ROF; PCL121: ; FI FI; JMP 1. X4 ; GOTO NEXT; ;===┆
0x36880…36900 UnusedSector ┆==================================================================== ; NEW(STACKLENGTH+LENGTH, LENGTH) ; POPS AN ADDRESS FROM ┆
0x36900…36980 UnusedSector ┆THE STACK. ALLOCATES A VARIABLE ; OF LENGTH WORDS ON THE HEAP, AND STORES ITS ADDRESS ; AT THE POPPED ADDRESS (POINTER VARIABLE)┆
0x36980…36a00 UnusedSector ┆. PCO022: ; NEW: PTO022: ; MOV R6 R1 ; B ┆
0x36a00…36a80 UnusedSector ┆ MOV HEAPTOP R2 ; -ST(HEAPTOP) SUB R2 R1 ; => X; MVP ┆
0x36a80…36b00 UnusedSector ┆ X4 R0 ; ILO R1 R0 ; IF X < PG(Q) THEN JMP PCHEAP ; HEAPE┆
0x36b00…36b80 UnusedSector ┆RROR FI; MOV X5 R1 ; ST(S) => Z; MOV R2 X1 ; ST(HEAPTOP) => ST(Z); ┆
0x36b80…36c00 UnusedSector ┆ MVP 1. X4 R0 ; PG(Q+1) => LENGTH; ADD R0 R2 ; ST(HEAPTOP)+LENGTH MOV ┆
0x36c00…36c80 UnusedSector ┆ R2 HEAPTOP ; => ST(HEAPTOP); ADDC 1 R5 ; S+1 => S; JMP ┆
0x36c80…36d00 UnusedSector ┆ 2. X4 ; GOTO NEXT; ;======================================================================= ; NEWINIT(STACKLENGTH+L┆
0x36d00…36d80 UnusedSector ┆ENGTH, LENGTH) ; POPS AN ADDRESS FROM THE STACK. ALLOCATES A VARIABLE ; OF LENGTH WORDS ON THE HEAP, AND STORES ITS ADDRESS ; A┆
0x36d80…36e00 UnusedSector ┆T THE POPPED ADDRESS (POINTER VARIABLE). ; INITIALIZES THE NEW VARIABLE TO NIL (=0). PCO023: ; NEWI┆
0x36e00…36e80 UnusedSector ┆NIT: PTO023: ; MOV R6 R1 ; B MOV HEAPTOP R2 ; -S┆
0x36e80…36f00 UnusedSector ┆T(HEAPTOP) SUB R2 R1 ; => X; MVP X4 R0 ; ILO ┆
0x36f00…36f80 UnusedSector ┆ R1 R0 ; IF X < PG(Q) THEN JMP PCHEAP ; HEAPERROR FI; MOV X5 ┆
0x36f80…37000 UnusedSector ┆R1 ; ST(S) => Z; MOV R2 X1 ; ST(HEAPTOP) => ST(Z); MVP 1. X4 R0 ; PG(Q+1┆
0x37000…37080 UnusedSector ┆) => LENGTH; ADD R0 R2 ; ST(HEAPTOP)+LENGTH => X; MOV R2 HEAPTOP ; X => ST(HE┆
0x37080…37100 UnusedSector ┆APTOP); PLO023: ; FOR I := 1 TO LENGTH DO ADDC -1 R2 ; X-1 => X; ┆
0x37100…37180 UnusedSector ┆ XTR X2 0 ; 0 => ST(X); SOB R0 PLO023 ; ROF; ADDC 1 ┆
0x37180…37200 UnusedSector ┆ R5 ; S+1 => S; JMP 2. X4 ; GOTO NEXT; ;========================================================┆
0x37200…37280 UnusedSector ┆=============== ; NOT ; INVERTS THE LEAST SIGNIFICANT BIT, AND CLEARS ; THE REMAINING BITS OF THE STACK TOP ELEMENT. PCO024: ┆
0x37280…37300 UnusedSector ┆ ; NOT: PTO024: INV X5 ; ONES COMPL(ST(S)) => ST(S); XTR ┆
0x37300…37380 UnusedSector ┆ X5 1 ; CLEAR BIT 1 TO 15; JMP X4 ; RETURN; ;====================================┆
0x37380…37400 UnusedSector ┆=================================== ; ANDWORD ; POPS THE STACK TOP ELEMENT (1 WORD) AND ; ANDS IT TO THE NEW STACK TOP ELEMENT┆
0x37400…37480 UnusedSector ┆ X0 ; ST(S1) & ST(S) => ST(S1); INCD R5 R0 ; INCR(S); INCR(S1); SOB R1┆
0x37480…37500 UnusedSector ┆ PLO026 ; ROF; JMP X4 ; GOTO NEXT; ;=====================================================┆
0x37500…37580 UnusedSector ┆================== ; ORWORD ; POPS THE STACK TOP ELEMENT (1 WORD) AND ; ORS IT TO THE NEW STACK TOP ELEMENT. PCO027: ┆
0x37580…37600 UnusedSector ┆ ; ORWORD: PTO027: MOV X5 R0 ; ST(S) => X; ADDC 1 R5 ; ┆
0x37600…37680 UnusedSector ┆ S+1 => S; IOR R0 X5 ; ST(S) OR X => ST(S); JMP X4 ; RETURN; ;=====┆
0x37680…37700 UnusedSector ┆================================================================== ; ORSET ; POPS A SET (8 WORDS) FROM THE STACK TOP AND ORS ;┆
0x37700…37780 UnusedSector ┆ IT TO THE NEW STACK TOP ELEMENT (8 WORDS). PCO028: ; ORSET: PTO028: ; ┆
0x37780…37800 UnusedSector ┆ MOV R5 R0 ; S ADDC 8 R0 ; +8 => S1; MOVC 8 R1 ┆
0x37800…37880 UnusedSector ┆ ; "FOR LIMIT"; PLO028: ; FOR I := 1 TO 8 DO IOR X5 X0 ; ST(S1) O┆
0x37880…37900 UnusedSector ┆R ST(S) => ST(S1); INCD R5 R0 ; INCR(S); INCR(S1); SOB R1 PLO028 ; ROF; ┆
0x37900…37980 UnusedSector ┆ JMP X4 ; GOTO NEXT; ;======================================================================= ; NE┆
0x37980…37a00 UnusedSector ┆GWORD ; NEGATES THE STACK TOP ELEMENT (1 WORD). PCO029: ; NEGWORD: PTO029: IEQ X5┆
0x37a00…37a80 UnusedSector ┆ #8000 ; IF ST(S) = -32768 THEN JMP PCOVER ; OVERFLOW FI; NEG ┆
0x37a80…37b00 UnusedSector ┆X5 ; -ST(S) => ST(S); JMP X4 ; RETURN; ;====================================================┆
0x37b00…37b80 UnusedSector ┆=================== ; NEGLONG ; NEGATES THE LONG INTEGER AT THE STACK TOP. PCO030: ; NEGLONG: PTO┆
0x37b80…37c00 UnusedSector ┆030: ; MOVL X5 R01 ; ST(S)=>LEAST; ST(S+1)=>MOST; INE R0 ┆
0x37c00…37c80 UnusedSector ┆ 0 ; IF LEAST <> 0 THEN JMP PLO030 ; NOT_OVERFLOW; IEQ R1 #8000 ┆
0x37c80…37d00 UnusedSector ┆; IF MOST = #8000 THEN JMP PCOVER ; OVERFLOW FI; PLO030: ; NOT_OVERF┆
0x37d00…37d80 UnusedSector ┆LOW: INV R0 ; ONE_COMPLEMENT; INV 1. X5 ; ONE_COMPLEMENT; ADD┆
0x37d80…37e00 UnusedSector ┆C 1 R0 ; TWO_COMPLEMENT(LEAST) MOV R0 X5 ; => ST(S); ┆
0x37e00…37e80 UnusedSector ┆ MOVC 0 R1 ; ADDU R1 1. X5 ; TWO_COMPL(MOST) => ST(S+1); JMP ┆
0x37e80…37f00 UnusedSector ┆ R5 ; S+1 => S; AND R0 X5 ; A AND ST(S) => ST(S); JMP X4┆
0x37f00…37f80 UnusedSector ┆ ; RETURN; ;======================================================================= ; ANDSET ; POPS A SET (8 WORDS) FROM ┆
0x37f80…38000 UnusedSector ┆THE STACK TOP AND ; ANDS IT TO THE NEW STACK TOP ELEMENT (8 WORDS). PCO026: ; ANDSET: PTO026: ┆
0x38000…38080 UnusedSector ┆ ; MOV R5 R0 ; S ADDC 8 R0 ; +8 => S1; MO┆
0x38080…38100 UnusedSector ┆VC 8 R1 ; "FOR LIMIT"; PLO026: ; FOR I := 1 TO 8 DO AND X5 ┆
0x38100…38180 UnusedSector ┆ ░1 => ░; ░ ░R ░ ░0 ░ ░ ; ░ST(S ░OR X ░> ST ░); ░ ░MP ░ ░ ░ ░4 ; ░ RET ░N; ░====┆
0x38180…38200 UnusedSector ┆ ░==== ░==== ░==== ░==== ░==== ░==== ░==== ░==== ░==== ░==== ░==== ░; OR ░T ; ░OPS ░SET ░ WOR ░) FR ░ THE ░TACK ░OP A ░ ORS ░┆
0x38200…38280 UnusedSector ┆ IT ░ THE ░EW S ░CK T ░ ELE ░NT ( ░WORD ░. P ░028: ░ ░ ░ ░ ░ ; ORSET: PTO0 : ; ┆
0x38280…38300 UnusedSector ┆ Z ░ H H ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ┆
0x38300…38380 UnusedSector ┆ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ┆
0x38380…38400 UnusedSector ┆ ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░┆
0x38400…38480 UnusedSector ┆Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z ░Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x38480…38500 UnusedSector ┆ ; ADDLONG ; POPS THE STACK TOP ELEMENT (2 WORDS) AND ADDS ; IT TO THE NEW STACK TOP ELEMENT (2 WORDS). PCO032: ┆
0x38500…38580 UnusedSector ┆ ; ADDLONG: PTO032: ; MOV R5 R0 ; S ADDC 2 ┆
0x38580…38600 UnusedSector ┆ R0 ; +2 => S1; ADD X5 X0 ; LEAST1+LEAST2 => LEAST1; INCD R5 R0 ┆
0x38600…38680 UnusedSector ┆ ; INCR(S); INCR(S1); ADDU X5 X0 ; CARRY+MOST1+MOST2 => MOST1; JVN PCOVER1 ┆
0x38680…38700 UnusedSector ┆; IF OVERFLOW THEN GOTO PCOVER FI; ADDC 1 R5 ; S+1 => S; JMP X4 ; G┆
0x38700…38780 UnusedSector ┆OTO NEXT; ;======================================================================= ; SUBWORD ; POPS THE STACK TOP ELEMENT (1 ┆
0x38780…38800 UnusedSector ┆WORD) AND SUBTRACTS ; IT FROM THE NEW STACK TOP ELEMENT (1 WORD). PCO033: ; SUBWORD: PTO033: ┆
0x38800…38880 UnusedSector ┆ MOV X5 R0 ; ST(S) => A; ADDC 1 R5 ; S+1 => S; SUB R0 ┆
0x38880…38900 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; ADDWORD ; POPS THE STACK T┆
0x38900…38980 UnusedSector ┆OP ELEMENT (1 WORD) AND ADDS ; IT TO THE NEW STACK TOP ELEMENT (1 WORD). PCO031: ; ADDWORD: PTO031:┆
0x38980…38a00 UnusedSector ┆ MOV X5 R0 ; ST(S) => X; ADDC 1 R5 ; S+1 => S; ADD R0 ┆
0x38a00…38a80 UnusedSector ┆ X5 ; ST(S)+X => ST(S); JVN PCOVER1 ; IF OVERFLOW THEN GOTO PCOVER FI; JMP ┆
0x38a80…38b00 UnusedSector ┆ X4 ; RETURN; ;======================================================================= PCOVER1: ┆
0x38b00…38b80 UnusedSector ┆ ; JMP PCOVER ; AVOIDS MODIFICATION OF JVN; ;===============================================┆
0x38b80…38c00 UnusedSector ┆======================== ;======================================================================= Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x38c00…38c80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x2…]
0x38d80…38e00 UnusedSector ┆ c^ 0 ░ H \ ░: ░ ░V ░ ░5 ░ ░ ; ░ST(S ░=> X ░ ░ AD ░ 1 ░ ░ ░ R5 ░; ┆
0x38e00…38e80 UnusedSector ┆ ; MOV 1. X5 R0 ; ST(S+1) => A; MUL R0 X5 ; A*ST(S) => LEAST, ┆
0x38e80…38f00 UnusedSector ┆MOST; ILT X5 0 ; IF LEAST < 0 THEN JMP PL1036 ; GOTO PL1036 FI; ┆
0x38f00…38f80 UnusedSector ┆ ION 1. X5 ; IF MOST <> 0 THEN JMP PCOVER ; OVERFLOW FI; PL2036: ┆
0x38f80…39000 UnusedSector ┆ ; NOT_OVERFLOW: MOV X5 1. X5 ; LEAST => ST(S+1); ADDC 1 R5 ;┆
0x39000…39080 UnusedSector ┆ S+1 => S; JMP X4 ; GOTO NEXT; PL1036: ; "LEAST < 0" MOV ┆
0x39080…39100 UnusedSector ┆ 1. X5 R0 ; INE R0 -1 ; IF MOST <> -1 THEN JMP PCOVER ; ┆
0x39100…39180 UnusedSector ┆GOTO PCOVER FI; JMP PL2036 ; GOTO PL2036; ;=========================================================┆
0x39180…39200 UnusedSector ┆============== ; MULLONG ; THE STACK IS ASSUMED TO CONTAIN TWO LONG INTEGERS. ; THE STACK TOP ELEMENT IS POPPED AND MULTIPLIED┆
0x39200…39280 UnusedSector ┆ TO THE NEW STACK TOP ; ELEMENT. PCO037: ; MULLONG: PTO037: ; M┆
0x39280…39300 UnusedSector ┆X5 ; ST(S)-A => ST(S); JVN PCOVER2 ; IF OVERFLOW THEN GOTO PCOVER FI; JMP ┆
0x39300…39380 UnusedSector ┆ X4 ; RETURN; ;======================================================================= PCOVER2: ┆
0x39380…39400 UnusedSector ┆ ; JMP PCOVER ; AVOIDS MODIFICATION OF JVN; ;=======================================================┆
0x39400…39480 UnusedSector ┆================ ;======================================================================= ; SUBLONG ; POPS THE STACK TOP ELEM┆
0x39480…39500 UnusedSector ┆ENT (2 WORDS) AND SUBTRACTS ; IT FROM THE NEW STACK TOP ELEMENT (2 WORDS). PCO034: ; SUBLONG: PTO03┆
0x39500…39580 UnusedSector ┆4: ; MOV R5 R0 ; S ADDC 2 R0 ; +2 => S1; ┆
0x39580…39600 UnusedSector ┆ SUB X5 X0 ; LEAST1-LEAST2 => LEAST1; INCD R5 R0 ; INCR(S); INCR(S1); ┆
0x39600…39680 UnusedSector ┆ SUBU X5 X0 ; MOST1-MOST2-BORROW => MOST1; JVN PCOVER2 ; IF OVERFLOW THEN GOTO PCO┆
0x39680…39700 UnusedSector ┆VER FI; ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;=================┆
0x39700…39780 UnusedSector ┆====================================================== ; SUBSET ; POPS A SET (8 WORDS) FROM THE STACK. CLEARS THE ; BITS OF TH┆
0x39780…39800 UnusedSector ┆E NEW STACK TOP ELEMENT (8 WORDS) THAT ; CORRESPONDS TO BITS SET IN THE POPPED SET. PCO035: ; SUBSE┆
0x39800…39880 UnusedSector ┆T: PTO035: ; MOV R5 R7 ; S ADDC 8 R7 ; +8 =┆
0x39880…39900 UnusedSector ┆> S1; MOVC 8 R0 ; "FOR LIMIT"; PLO035: ; FOR I := 1 TO 8 DO IN┆
0x39900…39980 UnusedSector ┆V X5 ; INV(ST(S)) AND X5 X7 ; &ST(S1) => ST(S1); INCD┆
0x39980…39a00 UnusedSector ┆ R5 R7 ; S+1 => S; S1+1 => S1; SOB R0 PLO035 ; ROF; JMP ┆
0x39a00…39a80 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; MULWORD ; POPS A WORD FROM TH┆
0x39a80…39b00 UnusedSector ┆E STACK AND MULTIPLIES ; IT TO THE NEW STACK TOP ELEMENT. PCO036: ; MULWORD: PTO036: ┆
0x39b00…39b80 UnusedSector ┆GN = MINUS THEN NEG R1 ; -RES => RES; PLO038: ; MOV ┆
0x39b80…39c00 UnusedSector ┆ R1 1. X5 ; RES => ST(S+1); ADDC 1 R5 ; S+1 => S; JMP X4 ; ┆
0x39c00…39c80 UnusedSector ┆GOTO NEXT; ;======================================================================= ; DIVLONG (OP1 / OP2) ; THE S┆
0x39c80…39d00 UnusedSector ┆OVL 2. X5 R01 ; ST(S+2),ST(S+3)=>OP2 IEQP R0 512 ; IF OP2=512 IEQ R1 ┆
0x39d00…39d80 UnusedSector ┆0 ; JMP MULQUICK1 ; GOTO MULQUICK1 MOVL X5 R01 ; ST(S),ST(S+1)=>LOP┆
0x39d80…39e00 UnusedSector ┆1,MOP1 IEQP R0 512 ; IF OP1=512 IEQ R1 0 ; JMP MULQUICK ┆
0x39e00…39e80 UnusedSector ┆ ; GO TO MULQUICK MOVC REGTOP R7 ; SAVE(B,G,Q,S) STC 6 ; MOV┆
0x39e80…39f00 UnusedSector ┆L 2. X5 R23 ; ST(S+2),ST(S+3)=>LOP2,MOP2 MON MULTIPLYLONG ; MOVL R01 2. X5┆
0x39f00…39f80 UnusedSector ┆ ; RESULT=>ST(S+2),ST(S+3) JVN PCOVRX ; IF OVERFLOW GOTO PCOVRX MOVC REGSAV R7┆
0x39f80…3a000 UnusedSector ┆ ; UNS 6 ; RESTORE(B,G,Q,S) ADDC 2 R5 ; S+2=>S JMP ┆
0x3a000…3a080 UnusedSector ┆ X4 ; GOTO NEXT; MULQUICK1: ; MULQUICK1: MOVL X5 R01 ; ST(S),ST┆
0x3a080…3a100 UnusedSector ┆(S+1) MOVL R01 2. X5 ; =>ST(S+2),ST(S+3) MULQUICK: ; MULQUICK: ADDC 2 ┆
0x3a100…3a180 UnusedSector ┆ R5 ; S+2=>S MOV 1. X5 R0 ; "THE 10 HIGHEST BITS IN MOST1 ADDC 64 ┆
0x3a180…3a200 UnusedSector ┆ R0 ; SHALL BE ALL ONES OR ALL IHS R0 128 ; ZEROES, IE. -64<=MOST1<64 JMP ┆
0x3a200…3a280 UnusedSector ┆ PCOVER ; (0<=MOST1+64<128)." SLLL X5 9 ; MUL(OP2,512) JMP X4 ┆
0x3a280…3a300 UnusedSector ┆; GOTO NEXT PCOVRX: ; PCOVRX: MOVC REGSAV R7 ; UNS 6 ┆
0x3a300…3a380 UnusedSector ┆ ; RSTORE(B,G,Q,S) JMP PCOVER ; GOTO OVERFLOW ERROR ;========================================┆
0x3a380…3a400 UnusedSector ┆=============================== ; DIVWORD ; POPS A WORD FROM THE STACK AND DIVIDES ; IT INTO THE NEW STACK TOP ELEMENT. PCO03┆
0x3a400…3a480 UnusedSector ┆8: ; DIVWORD: PTO038: ; MOVL X5 R01 ; MO┆
0x3a480…3a500 UnusedSector ┆VC 0 R7 ; "R7: SIGN OF RESULT"; IEQ R1 #8000 ; IF DIVISOR = -32768 THEN JMP┆
0x3a500…3a580 UnusedSector ┆ PCOVER ; OVERFLOW FI; ILTP R1 0 ; IF DIVISOR < 0 THEN INV ┆
0x3a580…3a600 UnusedSector ┆ R7 ; CHANGE SIGN; NEG R1 ; -DIVISOR => DIVISOR FI; IEQ R0 #80┆
0x3a600…3a680 UnusedSector ┆00 ; IF DIVIDEND = -32768 THEN JMP PCOVER ; OVERFLOW FI; ILTP R0 0 ┆
0x3a680…3a700 UnusedSector ┆ ; IF DIVIDEND < 0 THEN INV R7 ; CHANGE SIGN; NEG R0 ; -D┆
0x3a700…3a780 UnusedSector ┆IVIDEND => DIVIDEND FI; MOVC 0 R2 ; "CLEAR MOST SIGNIFICANT BITS"; DIV R0 R┆
0x3a780…3a800 UnusedSector ┆12 ; ABS(ST(S+1)) DIV ; ABS(ST(S)) => RES; JOZ R7 PLO038 ; IF SI┆
0x3a800…3a880 UnusedSector ┆ICK ; GOTO DIVQUICK PL1039: ; DIVSLOW: MOVC REGTOP R7 ; ┆
0x3a880…3a900 UnusedSector ┆ STC 6 ; SAVE(B,G,Q,S) MOVL X5 R23 ; ST(S), ST(S+1) => OP2; ADDC 2 ┆
0x3a900…3a980 UnusedSector ┆ R5 ; S+2=>S MOVL X5 R01 ; ST(S), ST(S+1) => OP1; MON DIVIDELONG ┆
0x3a980…3aa00 UnusedSector ┆ ; JVN PCOVRX ; IF OVERFLOW GOTO PCOVRX MOVC REGSAV R7 ; UNS 6 ┆
0x3aa00…3aa80 UnusedSector ┆ ; RESTORE(B,G,Q,S) ADDC 2 R5 ; S+2=>S JMP X4 ; GOTO NE┆
0x3aa80…3ab00 UnusedSector ┆XT DIVQUICK: ; DIVQUICK: ADDC 3 R5 ; S+3 => S; ILTP X5 0 ┆
0x3ab00…3ab80 UnusedSector ┆ ; IF OP1 < 0 THEN ADDC -3 R5 ; S-3 => S; JMP PL1039 ; GOTO D┆
0x3ab80…3ac00 UnusedSector ┆IVSLOW FI; ADDC -1 R5 ; SRLL X5 9 ; DIV(OP1, 512); JMP X4 ┆
0x3ac00…3ac80 UnusedSector ┆ ; GOTO NEXT ;======================================================================= ; MODWORD ; POPS A WORD FR┆
0x3ac80…3ad00 UnusedSector ┆OM THE STACK AND CHANGES THE NEW STACK ; TOP ELEMENT TO ITS OLD VALUE MODULO THE POPPED WORD. PCO040: ┆
0x3ad00…3ad80 UnusedSector ┆ ; MODWORD (A MOD B): PTO040: ; MOV 1. X5 R0 ; ST(S+1) => A; IEQ┆
0x3ad80…3ae00 UnusedSector ┆ R0 #8000 ; IF A = -32768 THEN JMP PCOVER ; OVERFLOW FI; MOVC 0 ┆
0x3ae00…3ae80 UnusedSector ┆ R2 ; "R2: SIGN"; ILTP R0 0 ; IF A < 0 THEN MOVC -1 R2 ; MIN┆
0x3ae80…3af00 UnusedSector ┆US => SIGN; NEG R0 ; ABS(A) => A FI; IEQ X5 #8000 ; IF B = -32768 THE┆
0x3af00…3af80 UnusedSector ┆N JMP PCOVER ; OVERFLOW FI; ILT X5 0 ; IF B < 0 THEN NEG ┆
0x3af80…3b000 UnusedSector ┆ X5 ; ABS(B) => B FI; MOVC 0 R1 ; "CLEAR MOST SIGNIFICANT BITS"; DIV ┆
0x3b000…3b080 UnusedSector ┆ X5 R01 ; ABS(A MOD B) => RES; JOZ R2 PCL040 ; IF SIGN = MINUS THEN NEG ┆
0x3b080…3b100 UnusedSector ┆ R1 ; -RES => RES; PCL040: ; MOV R1 1. X5 ; RES => ST(S+1)┆
0x3b100…3b180 UnusedSector ┆; ADDC 1 R5 ; S+1 => S; JMP X4 ; GOTO NEXT; ;=======================┆
0x3b180…3b200 UnusedSector ┆================================================ ; BUILDSET ; POPS A MEMBER NUMBER (.0..127.) FROM THE STACK. THE ; NEM STACK ┆
0x3b200…3b280 UnusedSector ┆TOP ELEMENT WILL NOW BE A SET IN WHICH THE ; MEMBER IS INCLUDED (THE CORRESPONDING BIT IS SET). PCO041: ┆
0x3b280…3b300 UnusedSector ┆ ; BUILDSET: PTO041: ; MOV X5 R0 ; ST(S) => A; MOVC 128 ┆
0x3b300…3b380 UnusedSector ┆ R2 ; IHS R0 R2 ; IF A >= 128 OR A < 0 THEN JMP PCRANG ; GO┆
0x3b380…3b400 UnusedSector ┆TACK IS ASUMED TO CONTAIN TWO LONG INTEGERS. ; THE STACK TOP ELEMENT IS POPPED AND DIVIDED INTO THE NEW STACK TOP ; ELEMENT. PC┆
0x3b400…3b480 UnusedSector ┆O039: ; DIVLONG: PTO039: ; MOVL X5 R01 ; ST(S)┆
0x3b480…3b500 UnusedSector ┆, ST(S+1) => OP2; IEQP R0 512 ; IF OP2 = 512 IEQ R1 0 ; JMP DIVQU┆
0x3b500…3b580 UnusedSector ┆R1 4 ; => BITNO; ADD R5 R0 ; WORDNO+S => X; ADDC 8 R5 ; S+8 ┆
0x3b580…3b600 UnusedSector ┆=> S; XTR X5 0 ; FALSE => ST(S); MOD R1 ; IBN X0 0 ┆
0x3b600…3b680 UnusedSector ┆ ; IF (BIT BITNO IN ST(X) IS ONE) INC X5 ; THEN TRUE => ST(S); JMP ┆
0x3b680…3b700 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; LSWORD ; A WORD IS PO┆
0x3b700…3b780 UnusedSector ┆PPED FROM THE STACK. IF IT IS GREATER ; THAN THE NEW STACK TOP ELEMENT, THIS IS REPLACED ; BY TRUE (=1), OTHERWISE BY FALSE (=0)┆
0x3b780…3b800 UnusedSector ┆. PCO043: ; LSWORD (A < B): PTO043: MOV 1. X5 R0 ; ST(S+1) => A; ┆
0x3b800…3b880 UnusedSector ┆CLR 1. X5 ; FALSE => ST(S+1); ILT R0 X5 ; IF A < ST(S) THEN INC ┆
0x3b880…3b900 UnusedSector ┆ 1. X5 ; TRUE => ST(S+1); ADDC 1 R5 ; S+1 => S; JMP X4 ; ┆
0x3b900…3b980 UnusedSector ┆ RETURN; ;======================================================================= ; EQWORD ; A WORD IS POPPED FROM THE STAC┆
0x3b980…3ba00 UnusedSector ┆K. IF IT IS EQUAL ; TO THE NEW STACK TOP ELEMENT, THIS IS REPLACED ; BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO044: ┆
0x3ba00…3ba80 UnusedSector ┆ ; EQWORD (A = B): PTO044: MOV 1. X5 R0 ; ST(S+1) => A; CLR 1. ┆
0x3ba80…3bb00 UnusedSector ┆ X5 ; FALSE => ST(S+1); IEQ R0 X5 ; IF A = ST(S) THEN INC 1. X5 ; ┆
0x3bb00…3bb80 UnusedSector ┆ TRUE => ST(S+1) FI; ADDC 1 R5 ; S+1 => S; JMP X4 ; RETURN; ;======┆
0x3bb80…3bc00 UnusedSector ┆================================================================= ; GRWORD ; A WORD IS POPPED FROM THE STACK. IF IT IS LESS ; ┆
0x3bc00…3bc80 UnusedSector ┆THAN THE NEW STACK TOP ELEMENT, THIS IS REPLACED ; BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO045: ;┆
0x3bc80…3bd00 UnusedSector ┆ GRWORD (A > B): PTO045: MOV 1. X5 R0 ; ST(S+1) => A; CLR 1. X5 ; FALSE =>┆
0x3bd00…3bd80 UnusedSector ┆ ST(S+1); ILT X5 R0 ; IF ST(S) < A THEN INC 1. X5 ; TRUE => ST(S+1); ┆
0x3bd80…3be00 UnusedSector ┆TO RANGEERROR; MOV R0 R1 ; XTR R0 4 ; B := BITNO. IN WORD; SRL ┆
0x3be00…3be80 UnusedSector ┆ R1 4 ; DISP := WORDNO IN SET; ADDC 1 R5 ; S+1 => S; ADD R5 ┆
0x3be80…3bf00 UnusedSector ┆ R1 ; DISP+S => X; SETS X1 R0 ; ST(X) OR BIT B => ST(X); JMP X4 ; ┆
0x3bf00…3bf80 UnusedSector ┆ GOTO NEXT; ;======================================================================= ; INSET ; POPS A SET FROM THE STACK. THE┆
0x3bf80…3c000 UnusedSector ┆ NEW STACK TOP ELEMENT ; IS ASSUMED TO BE A MEMBER NUMBER. IF THIS MEMBER IS ; INCLUDED IN THE SET (THE CORRESPONDING BIT IS SET┆
0x3c000…3c080 UnusedSector ┆) ; THEN THE STACK TOP IS SET TO TRUE (=1), OTHERWISE TO ; FALSE (=0). PCO042: ; INSET: PTO042: ┆
0x3c080…3c100 UnusedSector ┆ ; MOV 8. X5 R0 ; ST(S+8) => MEMNO; MOVC 128 R2 ; ┆
0x3c100…3c180 UnusedSector ┆ IHS R0 R2 ; IF MEMNO >= 128 OR A < 0 THEN JMP PCRANG ; GOTO RANGEERROR; ┆
0x3c180…3c200 UnusedSector ┆ MOV R0 R1 ; SRL R0 4 ; => WORDNO "DISPLACEMENT IN SET" XTR ┆
0x3c200…3c280 UnusedSector ┆5 ; S+1 => S; JMP X4 ; RETURN; ;============================================================┆
0x3c280…3c300 UnusedSector ┆=========== ; LSLONG (MOST1, LEAST1) < (MOST2, LEAST2) ; A LONG (2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; GREAT┆
0x3c300…3c380 UnusedSector ┆ER THAN THE NEW STACK TOP ELEMENT, THIS IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE. PCO049: ; L┆
0x3c380…3c400 UnusedSector ┆SLONG: PTO049: ; MOVL 2. X5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR ┆
0x3c400…3c480 UnusedSector ┆ 3. X5 ; FALSE => ST(S+3); ILT R1 1. X5 ; IF MOST1 < MOST2 THEN JMP ┆
0x3c480…3c500 UnusedSector ┆ PL1049 ; GOTO PL1049 FI; ; "HERE IS MOST1 >= MOST2"; SNEP R1┆
0x3c500…3c580 UnusedSector ┆ 1. X5 ; IF MOST1<>MOST2 THEN SKIP(2) FI; ; "HERE IS MOST1 = MOST2"; ILO ┆
0x3c580…3c600 UnusedSector ┆ R0 X5 ; IF LEAST1 <"U" LEAST2 THEN PL1049: ; INC 3. X5 ┆
0x3c600…3c680 UnusedSector ┆; TRUE => ST(S+3) FI; ADDC 3 R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ┆
0x3c680…3c700 UnusedSector ┆ ;======================================================================= ; EQLONG (MOST1, LEAST1) = (MOST2, LEAST2) ┆
0x3c700…3c780 UnusedSector ┆ ; A LONG (2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; EQUAL TO THE NEW STACK TOP ELEMENT, THIS IS REPLACED ; BY TRUE (=1), OT┆
0x3c780…3c800 UnusedSector ┆ ADDC 1 R5 ; S+1 => S; JMP X4 ; RETURN; ;===========================┆
0x3c800…3c880 UnusedSector ┆============================================ ; NLWORD ; A WORD IS POPPED FROM THE STACK. IF IT IS NOT GREATER ; THAN THE MEW S┆
0x3c880…3c900 UnusedSector ┆TACK TOP ELEMENT, THIS IS REPLACED BY ; TRUE (=1), OTHERWISE BY FALSE (=0). PCO046: ; NLWORD (A ┆
0x3c900…3c980 UnusedSector ┆>= B): PTO046: MOV 1. X5 R0 ; ST(S+1) => A; CLR 1. X5 ; FALSE => ST(S+1); ┆
0x3c980…3ca00 UnusedSector ┆ IGE R0 X5 ; IF A >= ST(S) THEN INC 1. X5 ; TRUE => ST(S+1) FI; ┆
0x3ca00…3ca80 UnusedSector ┆ ADDC 1 R5 ; S+1 => S; JMP X4 ; RETURN; ;==================================┆
0x3ca80…3cb00 UnusedSector ┆===================================== ; NEWORD ; A WORD IS POPPED FROM THE STACK. IF IT IS NOT EQUAL ; TO THE NEW STACK TOP EL┆
0x3cb00…3cb80 UnusedSector ┆EMENT, THIS IS REPLACED BY ; TRUE (=1), OTHERWISE BY FALSE (=0). PCO047: ; NEWORD (A <> B): PTO047┆
0x3cb80…3cc00 UnusedSector ┆: MOV 1. X5 R0 ; ST(S+1) => A; CLR 1. X5 ; FALSE => ST(S+1); INE ┆
0x3cc00…3cc80 UnusedSector ┆ R0 X5 ; IF A <> ST(S) THEN INC 1. X5 ; TRUE => ST(S+1); ADDC 1 ┆
0x3cc80…3cd00 UnusedSector ┆ R5 ; S+1 => S; JMP X4 ; RETURN; ;==================================================┆
0x3cd00…3cd80 UnusedSector ┆===================== ; NGWORD ; A WORD IS POPPED FROM THE STACK. IF IT IS NOT LESS ; THAN THE NEW STACK TOP ELEMENT, THIS IS ┆
0x3cd80…3ce00 UnusedSector ┆REPLACED BY ; TRUE (=1), OTHERWISE BY FALSE (=0). PCO048: ; NGWORD (A <= B): PTO048: MOV┆
0x3ce00…3ce80 UnusedSector ┆ 1. X5 R0 ; ST(S+1) => A; CLR 1. X5 ; FALSE => ST(S+1); IGE X5 ┆
0x3ce80…3cf00 UnusedSector ┆ R0 ; IF ST(S) >= A THEN INC 1. X5 ; TRUE => ST(S+1) FI; ADDC 1 R┆
0x3cf00…3cf80 UnusedSector ┆ 3. X5 ; TRUE => ST(S+3) FI; PL1052: ; ADDC 3 R5 ; ┆
0x3cf80…3d000 UnusedSector ┆S+3 => S; JMP X4 ; GOTO NEXT; ;=================================================================┆
0x3d000…3d080 UnusedSector ┆====== ; NELONG (MOST1, LEAST1) <> (MOST2, LEAST2) ; A LONG (2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; NOT EQUAL┆
0x3d080…3d100 UnusedSector ┆ TO THE NEW STACK TOP ELEMENT, THIS IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO053: ; ┆
0x3d100…3d180 UnusedSector ┆NELONG: PTO053: ; MOVL 2. X5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR┆
0x3d180…3d200 UnusedSector ┆HERWISE BY FALSE (=0). PCO050: ; EQLONG: PTO050: ; MOVL 2. ┆
0x3d200…3d280 UnusedSector ┆ X5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR 3. X5 ; FALSE => ST(S+3); INE ┆
0x3d280…3d300 UnusedSector ┆ R0 X5 ; IF LEAST1 <> LEAST2 THEN JMP PL1050 ; GOTO PL1050 FI; ┆
0x3d300…3d380 UnusedSector ┆ ; "HERE IS LEAST1 = LEAST2"; IEQ R1 1. X5 ; IF MOST1 = MOST2 THEN INC ┆
0x3d380…3d400 UnusedSector ┆ 3. X5 ; TRUE => ST(S+3) FI; PL1050: ; ADDC 3 R5 ; S+3 => S;┆
0x3d400…3d480 UnusedSector ┆ JMP X4 ; GOTO NEXT; ;======================================================================= ;┆
0x3d480…3d500 UnusedSector ┆ GRLONG (MOST1, LEAST1) > (MOST2, LEAST2) ; A LONG (2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; LESS THAN THE NEW S┆
0x3d500…3d580 UnusedSector ┆TACK TOP ELEMENT, THIS IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO051: ; GRLONG: PTO05┆
0x3d580…3d600 UnusedSector ┆1: ; MOVL 2. X5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR ┆
0x3d600…3d680 UnusedSector ┆ 3. X5 ; FALSE => ST(S+3); ILT R1 1. X5 ; IF MOST1 < MOST2 THEN JMP PL1051 ┆
0x3d680…3d700 UnusedSector ┆ ; GOTO PL1051 "FALSE" FI; ; "HERE IS MOST1 >= MOST2" SNE R1 1. ┆
0x3d700…3d780 UnusedSector ┆ X5 ; IF MOST1<>">" MOST2 THEN SKIP; ; "HERE IS MOST1 = MOST2" ILO ┆
0x3d780…3d800 UnusedSector ┆X5 R0 ; IF LEAST2 <"U" LEAST1 THEN INC 3. X5 ; TRUE => ST(S+3); PL1051: ┆
0x3d800…3d880 UnusedSector ┆ ; ADDC 3 R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ;=========┆
0x3d880…3d900 UnusedSector ┆============================================================== ; NLLONG (MOST1, LEAST1) >= (MOST2, LEAST2) ; A LONG ┆
0x3d900…3d980 UnusedSector ┆(2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; NOT GREATER THAN THE NEW STACK TOP ELEMENT, THIS ; IS REPLACED BY TRUE (=1), OTHE┆
0x3d980…3da00 UnusedSector ┆RWISE BY FALSE (=0). PCO052: ; NLLONG: PTO052: ; MOVL 2. X┆
0x3da00…3da80 UnusedSector ┆5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR 3. X5 ; FALSE => ST(S+3); ILT ┆
0x3da80…3db00 UnusedSector ┆R1 1. X5 ; IF MOST1 < MOST2 THEN JMP PL1052 ; GOTO PL1052 FI; ┆
0x3db00…3db80 UnusedSector ┆ ; "HERE IS MOST1 >= MOST2" SNE R1 1. X5 ; IF MOST1<>">"MOST2 THEN SKIP(1); ┆
0x3db80…3dc00 UnusedSector ┆ ; "HERE IS MOST1 = MOST2"; IHS R0 X5 ; IF LEAST1 >="U" LEAST2 THEN INC ┆
0x3dc00…3dc80 UnusedSector ┆ ; "HERE IS LEAST1 = LEAST2"; INE R1 1. X5 ; IF MOST1 <> MOST2 THEN ┆
0x3dc80…3dd00 UnusedSector ┆ INC 3. X5 ; TRUE => ST(S+3); ADDC 3 R5 ; S+3 => S; JMP ┆
0x3dd00…3dd80 UnusedSector ┆ X4 ; GOTO NEXT; ;======================================================================= ; NGLONG (MOST1,┆
0x3dd80…3de00 UnusedSector ┆ LEAST1) <= (MOST2, LEAST2) ; A LONG (2 WORDS) IS POPPED FROM THE STACK. IF IT IS ; NOT LESS THAN THE NEW STACK TOP ELEMENT, TH┆
0x3de00…3de80 UnusedSector ┆IS IS ; REPLACED BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO054: ; NGLONG: PTO054: ┆
0x3de80…3df00 UnusedSector ┆ ; MOVL 2. X5 R01 ; ST(S+2),ST(S+3)=>LEAST1,MOST1; CLR 3. X5 ; FALS┆
0x3df00…3df80 UnusedSector ┆E => ST(S+3); ILT R1 1. X5 ; IF MOST1 < MOST2 THEN JMP PL1054 ; GOTO PL10┆
0x3df80…3e000 UnusedSector ┆54; ; "HERE IS MOST1 >= MOST2" SNEP R1 1. X5 ; IF MOST1<>">"MOST2 ┆
0x3e000…3e080 UnusedSector ┆SKIP(2) FI; ; "HERE IS MOST1 = MOST2" IHS X5 R0 ; IF LEAST2 >=┆
0x3e080…3e100 UnusedSector ┆"U" LEAST1 THEN PL1054: ; INC 3. X5 ; TRUE => ST(S+3) FI; ADD┆
0x3e100…3e180 UnusedSector ┆C 3 R5 ; S+3 => S; JMP X4 ; GOTO NEXT; ;====================================┆
0x3e180…3e200 UnusedSector ┆=================================== ; EQSET ; A SET (8 WORDS) IS POPPED FROM THE STACK. IF IT IS ; EQUAL TO THE NEW STACK TOP ┆
0x3e200…3e280 UnusedSector ┆ELEMENT, THIS IS REPLACED ; BY TRUE (=1), OTHERWISE BY FALSE (=0). PCO055: ; EQSET: PTO055: ┆
0x3e280…3e300 UnusedSector ┆ ; MOV R5 R1 ; RE.ST(S); MOV R5 R2 ; ADDC 8 ┆
0x3e300…3e380 UnusedSector ┆ R2 ; RE.ST(S+8); ADDC 15 R5 ; S+15 => S; MOVC 8 R0 ; "F┆
0x3e380…3e400 UnusedSector ┆OR LIMIT" PL1055: ; FOR I := 1 TO 8 DO INEP X1 X2 ; IF ST(X1) <> ST(┆
0x3e400…3e480 UnusedSector ┆X2) THEN XTR X5 0 ; FALSE => ST(S); JMP PL2055 ; GOTO PL2055┆
0x3e480…3e500 UnusedSector ┆ FI; INCD R1 R2 ; INC(R1); INC(R2); SOB R0 PL1055 ; ROF; ┆
0x3e500…3e580 UnusedSector ┆ ; "THEY ARE EQUAL" MOVC 1 X5 ; TRUE => ST(S); PL2055: ┆
0x3e580…3e600 UnusedSector ┆ ; JMP X4 ; GOTO NEXT; ;======================================================================┆
0x3e600…3e680 UnusedSector ┆= Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x3e680…3e700 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
[…0x1…]
0x3e780…3e800 UnusedSector 0x1a[128]
[…0x1…]
0x3e880…3e900 UnusedSector ┆ 3. X5 ; FALSE => ST(S+3); SNE R0 X5 ; IF LEAST1 <> LEAST2 THEN SKIP(1) ┆