L P##TABLE // ACC1 := Ptr to start of table
LAR1 // AR1 := Ptr to start of table
L W#16#0 // ACC1 := 0
L W [AR1,P#0.0] // Memory reference byte 0..1 ; ACC2 := 0
==I // if(memory reference byte 0..1 = DB#)
JZ IF01 // {
T #BLOCK_NO // ACC1 := DB#
OPN DB [#BLOCK_NO] // Open DB#
IF01: NOP 0 // }
L D [AR1,P#2.0] // ACC1 := Starting address of table
LAR1 // AR1 := Starting address of table
// Check if table is full
L W [AR1,P#0.0] // ACC1 := TABLE[0] // max len
L W [AR1,P#2.0] // ACC2 := TABLE[1] // # of entries
>I // if(max_len > # of entries)
JCN FAIL // { FAIL }
// Increment # of entries in the table
L 1 // TABLE[1] := TABLE[1] - 1
+I // .
T W [AR1,P#2.0] // // 指向入口地址指针+1 ---》 指针 等同于 入口地址+1 .
// Insert data into table
L 1 // AR1 := addr of TABLE[TABLE[1] + 1]
+I // .
SLD 4 // ERI 8/8/01 RQ 241572 双子左移指令
TAR1 // ERI 8/8/01 RQ 241572
+D // ERI 8/8/01 RQ 241572
LAR1 // ERI 8/8/01 RQ 241572
L #DATA // ACC1 := DATA
T W [AR1,P#0.0] // TABLE[TABLE[1] + 1] := DATA
SET // RL0 := 1
JU SBR // .
FAIL: CLR // RLO := 0
SBR: SAVE // Set BR indicating function success or failure