Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.         ; Main changes to ge this compiled with AS:
  2.         ; -> remove semicolons used to separate statements
  3.         ; -> rework statements that spanned multiple lines to single-line statements
  4.         ; -> change % to ; (comment lead-in)
  5.         ; -> rework hex constants #... to ...h
  6.         ; -> change CONST to EQU resp. =
  7.         ; -> change BYTE/WORD to DB/DW
  8.         ; -> change macro(s) to AS-style
  9.         ; -> change Rn to Rn^ for OTIR/IN/OUT (did this work with original assembler?)
  10.         ; -> change TIME to ITIME (conflicts with built-in symbol)
  11.         ; -> change ORIGIN to ORG resp. RORG
  12.  
  13.         CPU     Z8002:AMDSyntax=1
  14.         include "bitfuncs.inc"
  15.         SUPMODE ON
  16.  
  17. ;       PROGRAM PROCMTR ; TODO
  18.         TITLE   'PROC.070 MONITOR V2.0'
  19.         ORG     0h
  20.         PAGE    0
  21. ;
  22. CPT     =       0C001H  ;CONSOLE PORT  UPD 7201 CHIP
  23. SPT     =       0C005H  ;TTY PORT       UPD 7201 CHIP
  24. BKP     =       0E100H  ;BREAKPOINT REGISTER
  25. TPT     =       0C011H  ;TIMER PORT
  26. TMD2    =       0B6H    ;TIMER 2 MODE
  27. TMD1    =       76H     ;TIMER 1 MODE
  28. TMD0    =       036H    ;TIMER 0 MODE
  29. RT96    =       14H     ;TIMER RATE FOR 9600
  30. BNKMSK  =       0FF80H  ;BANKSWITCH MASK
  31. ;
  32. CR      =       0DH     ;CARRIAGE RETURN
  33. LF      =       0AH     ;LINE FEED
  34. ESC     =       1BH     ;ESCAPE
  35. DEL     =       7FH     ;CHARACTER DELETE
  36. CAN     =       18H     ;LINE CANCEL
  37. BSP     =       08H     ;BACKSPACE
  38. ;
  39. USERP   =       1000H   ;USER PROM ADDRESS
  40. DATA    =       7E04H   ;NPSAREA AND DATA STORAGE AREA
  41. SYMDE   =       4000H   ;SYSTEM MODE FLAG CONTROL WORD
  42. ;
  43. PTM     =       0D000H  ;TIMER DATA PORT
  44. MPTA    =       PTM+4   ;MASTER PIC PORT
  45. MPTB    =       PTM+6   ;MASTER PIC PORT A=1
  46. SA1A    =       PTM+8   ;SLAVE 1 PIC PORT
  47. SA1B    =       PTM+0AH ;SLAVE 1 PIC PORT A=1
  48. SA2A    =       PTM+0CH ;SLAVE 2 PIC PORT
  49. SA2B    =       PTM+0EH ;SLAVE 2 PIC PORT A=1
  50. ;
  51. TRMDE   =       5       ;SET IF STEP MODE PERMITTED
  52. STPFLG  =       6       ;SET IF IN STEP MODE
  53. ;
  54. M3      =       7       ;VARIOUS MASKS
  55. M4      =       0FH
  56. M5      =       1FH
  57. M7      =       7FH
  58. M8      =       0FFH
  59. MU4     =       0F000H
  60. MU8     =       0FF00H
  61. MU12    =       0FFF0H
  62. MU13    =       0FFF8H
  63. MU15    =       0FFFEH
  64. ;
  65. LDA     MACRO   DST,SRC
  66.         DW      4D05H           ;LD DA,IM
  67.         DW      DST             ;DA
  68.         DW      SRC             ;IM
  69.         ENDM
  70. ;
  71. PROCMTR:DW      0
  72.         DW      SYMDE
  73.         DW      INIT
  74. ;
  75. CHTAB:  DB      '    '          ; SPACE
  76. NIMS:   DB      ' NI='
  77. BSPMS:  DB      BSP,' ',BSP
  78. FCWL:   DB      'XSXVNXXXCZSPDH'
  79. PCMS:   DB      'NXT PC='
  80. BPCMS:  DB      'BRK PC='
  81. CNMSG:  DB      '#',CR,LF
  82. PRMSG:  DB      '*',CR,LF
  83. ERMSG:  DB      '?',CR,LF
  84. ;
  85. SIGNON: DB      CR,LF
  86.         DB      'PROC 070 MONITOR V 2,0'       
  87.         DB      CR,LF
  88. ;
  89. SIGNONL =       ^$-^SIGNON
  90. ;
  91. SPECM:  DB      'SPEC. OPCODE',CR,LF
  92. SPECML  =       ^$-^SPECM
  93. PRIVM:  DB      'PRIV. INSTR.',CR,LF
  94. PRIVML  =       ^$-^PRIVM
  95. NONVM:  DB      'NON VECT. INT.',CR,LF
  96. NONVML  =       ^$-^NONVM
  97. VEC3M:  DB      'VECT.3',CR,LF
  98. VEC3ML  =       ^$-^VEC3M
  99. ;
  100. CMDLST: DB      'BCDEFGHMNOPRSIVXZ',CR,0
  101.  
  102.  
  103.         RORG    LO($) & 1
  104. CMDADD: DW      SETBRK                  ;SET BREAKPOINTS AND GO
  105.         DW      SETCRY                  ;SET CARRY FLAG
  106.         DW      SETDAJ                  ;SET DEC ADJUST FLAG OR DISP MEMORY
  107.         DW      EXBRK                   ;SET HARDWARE BREAKPOINT
  108.         DW      FILMEM                  ;FILL MEMORY
  109.         DW      XECTE                   ;GO TO PC OR SPECIFIED ADDRESS
  110.         DW      SETHLF                  ;SET HALF CARRY FLAG
  111.         DW      MOVE                    ;MOVE MEMORY
  112.         DW      UMODE                   ;SET USER NORMAL MODE
  113.         DW      OUTPORT                 ;EXECUTE OUTPUT COMMAND
  114.         DW      SETPAR                  ;SET PARITY FLAG OR PC ADDRESS
  115.         DW      SETREG                  ;SET REGISTER CONTENT
  116.         DW      SETSGN                  ;SET SIGN FLAG OR SUBSTITUTE MEMORY
  117.         DW      IOPORT                  ;EXECUTE INPUT COMMAND
  118.         DW      SETOVF                  ;SET OVERFLOW FLAG
  119.         DW      DISREG                  ;DISPLAY REGISTERS
  120.         DW      SETZRO                  ;SET ZERO FLAG
  121.         DW      STEP                    ;EXECUTE STEP MODE
  122. ;
  123. ;DMSGL  =       ^$-^DMSG                ; TODO
  124. USERM:  DB      'PROGRAM ERROR',CR,LF
  125. USERML  =       ^$-^USERM
  126. ;
  127.         RORG    LO($) & 1
  128. ;
  129. STAREA: DW      SYMDE
  130.         DW      SPEC                    ;SPECIAL OPCODE
  131.         DW      SYMDE
  132.         DW      PRIV                    ;PRIV. INSTRUCTION
  133.         DW      SYMDE
  134.         DW      SYSCAL                  ;SYSTEM CALL
  135.         DW      SYMDE
  136.         DW      USERR
  137.         DW      SYMDE
  138.         DW      STPRTN                  ;NON MASK. INT.
  139.         DW      SYMDE
  140.         DW      NONV                    ;NON VECT INT.
  141.         DW      SYMDE
  142.         DW      CLOCK                   ;VECTORED INT.
  143.         DW      VEC1
  144.         DW      VEC2
  145.         DW      VEC3                    ;CLOCK INT
  146. ;
  147. USEXT:  DB      'PROGRAM EXIT'
  148. USEXTL  =       ^$-^USEXT
  149. ;
  150. VEC1M:  DB      'VECT.1',CR,LF
  151. VEC1ML  =       ^$-^VEC1M
  152. ;
  153. VEC2M:  DB      'VECT.2',CR,LF
  154. VEC2ML  =       ^$-^VEC2M
  155. ;
  156.         RORG    LO($) & 1
  157. ;
  158. INIT:   LD      R1,^STAREA              ;MOVE NPASP IN RAM
  159.         LD      R3,^NPSAREA
  160.         LD      R2,0010H
  161.         LDIR    R3^,R1^,R2
  162.         LD      R0,^NPSAREA-4
  163.         LDCTL   PSAPOFF,R0
  164.         SOUT    0FF00H,R0               ;SELECT BANK 0
  165.         CLR     BANKSW                  ;CLEAR BNKSW. REG
  166.         CLR     HWBRK                   ;CLEAR HWBRK REG.
  167. ;
  168. ;       INIT. PCMI 070
  169. ;
  170.         LD      R0,TMD2
  171.         OUT     TPT+6,R0                ;MODE TIMER 2
  172.         LD      R0,TMD1
  173.         OUT     TPT+6,R0                ;MODE TIMER 1
  174.         LD      R0,TMD0
  175.         OUT     TPT+6,R0                ;MODE TIMER 0
  176.         LD      R1,RT96
  177.         OUT     TPT,R1                  ;TIMER 0 LSB (CRT PORT)
  178.         EXB     RH1,RL1
  179.         OUT     TPT,R1                  ;TIMER 0 MSB
  180.         LD      R1,RT96
  181.         OUT     TPT+4,R1                ;TIMER 2 LSB (AUX PORT)
  182.         EXB     RH1,RL1
  183.         OUT     TPT+4,R1                ;TIMER 2 MSB
  184.         LD      R1,RT96
  185.         OUT     TPT+2,R1                ;TIMER 1 LSB (TTY PORT)
  186.         EXB     RH1,RL1
  187.         OUT     TPT+2,R1                ;TIMER 1 MSB
  188. ;
  189.         LD      R4,^ENDBUFA-^SRCBUFA
  190.         LD      R2,^SRCBUFA
  191.         LD      R1,CPT+2                ;INIT SIO #1 CH A : CONSOLE
  192.         OTIRB   R1,R2^,R4
  193. ;
  194.         LD      R4,^ENDBUFB-^SRCBUFB
  195.         LD      R2,^SRCBUFB
  196.         LD      R1,SPT+2                ;INIT SIO #1 CH B : TTY
  197.         OTIRB   R1,R2^,R4
  198. ;
  199.         LD      R4,^ENDBUFA-^SRCBUFA
  200.         LD      R2,^SRCBUFA
  201.         LD      R1,CPT+10               ;INIT SIO #2 CH A : AUX 1
  202.         OTIRB   R1,R2^,R4
  203. ;
  204.         LD      R4,^ENDBUFB-^SRCBUFB
  205.         LD      R2,^SRCBUFB
  206.         LD      R1,CPT+14               ;INIT SIO #2 CH B : AUX 2
  207.         OTIRB   R1,R2^,R4
  208. ;
  209. ;       INIT. PTIM 070
  210. ;
  211.         LD      R0,0FFFFH               ;MASTER RESET
  212.         OUT     PTM+2,R0
  213.         LD      R0,0FFEFH               ;16 BIT MODE
  214.         OUT     PTM+2,R0
  215.         LD      R0,0FF17H               ;MASTER MODE REGISTER
  216.         OUT     PTM+2,R0
  217.         LD      R0,6CE1H                ;MM SETTING 50HZ CLOCK
  218.         OUT     PTM,R0
  219. ;
  220.         LD      R0,0FF03H               ;DATA PNT CNT 3
  221.         OUT     PTM+2,R0
  222.         LD      R0,0B22H                ;SQUARE WAVE
  223.         OUT     PTM,R0
  224. ;
  225.         LD      R0,0FF04H               ;DATA PNT CNT 4
  226.         OUT     PTM+2,R0
  227.         LD      R0,0B22H                ;SQUARE WAVE
  228.         OUT     PTM,R0
  229. ;
  230.         LD      R0,0FF05H               ;DATA PNT CNT 5
  231.         OUT     PTM+2,R0
  232.         LD      R0,0E21H                ;PULS
  233.         OUT     PTM,R0
  234. ;
  235.         LD      R0,0FF0BH               ;DATA PNT CNT 3
  236.         OUT     PTM+2,R0
  237.         LD      R0,0008H                ;LOAD REG
  238.         OUT     PTM,R0
  239. ;
  240.         LD      R0,0FF0CH               ;DATA PNT CNT 4
  241.         OUT     PTM+2,R0
  242.         LD      R0,0010H                ;LOAD REG
  243.         OUT     PTM,R0
  244. ;
  245.         LD      R0,0FF0DH               ;DATA PNT CNT 5
  246.         OUT     PTM+2,R0
  247.         LD      R0,0258H                ;LOAD REG
  248.         OUT     PTM,R0
  249. ;
  250.         LD      R0,0FF7CH               ;LOAD AND ARM
  251.         OUT     PTM+2,R0
  252. ;
  253. ;       MASTER
  254. ;
  255.         LD      R0,0011H                ;ICW 1
  256.         OUT     MPTA,R0
  257.         LD      R0,0000H                ;ICW 2
  258.         OUT     MPTB,R0
  259.         LD      R0,00C0H                ;S7,S6 SLAVE
  260.         OUT     MPTB,R0
  261.         LD      R0,0017H                ;ICW 4
  262.         OUT     MPTB,R0
  263.         LD      R0,0002H
  264.         OUT     MPTB,R0                 ;OCW 1
  265.         OUT     MPTA,R0                 ;EN INT
  266. ;
  267. ;       SLAVE #1
  268. ;
  269.         LD      R0,0011H                ;ICW 1
  270.         OUT     SA1A,R0
  271.         LD      R0,0010H                ;ICW 2
  272.         OUT     SA1B,R0
  273.         LD      R0,0006H                ;ICW 3
  274.         OUT     SA1B,R0
  275.         LD      R0,0013H                ;ICW 4
  276.         OUT     SA1B,R0
  277.         LD      R0,0000H
  278.         OUT     SA1B,R0                 ;OCW 1
  279.         OUT     SA1A,R0                 ;EN INT
  280. ;
  281. ;       SLAVE #2
  282. ;
  283.         LD      R0,0011H                ;ICW 1
  284.         OUT     SA2A,R0
  285.         LD      R0,0020H                ;ICW 2
  286.         OUT     SA2B,R0
  287.         LD      R0,0007H                ;ICW 3
  288.         OUT     SA2B,R0
  289.         LD      R0,0013H                ;ICW 4
  290.         OUT     SA2B,R0
  291.         LD      R0,0000H                ;OCW 1
  292.         OUT     SA2B,R0                 ;EN INT
  293.         OUT     SA2A,R0
  294. ;
  295. ;       MOVE MONITOR IN SAME RAM SPACE
  296. ;       AND DISABLE PROM.
  297. ;
  298.         LD      R1,0
  299.         LD      R3,0
  300.         LD      R2,0800H
  301.         LDIR    R3^,R1^,R2
  302.         MSET
  303. ;
  304.         CLR     CTLWD
  305. SETUPC: LD      USPC,USERP              ;SET DEFAULT USER PC
  306.         CLR     USFCW                   ;SET DEFAULT USER FCW
  307.  
  308.         LD      R15,^STACK              ;SET MONITOR STACK
  309.         LD      R0,^USRSTK              ;SET DEFAULT USER STACK
  310.         LD      R14,^SIGNON
  311.         LD      R13,SIGNONL
  312.         CALR    RESET_RECVE_SWITCH
  313.         LD      U15,R0
  314.         JR      DISER
  315. PROMPT: LD      R14,^PRMSG
  316. DISERA: LD      R13,3
  317. DISER:  CALR    CONOUT                  ;PROMPT
  318. RDKBD:  CALR    CONIN                   ;GET COMMAND(KEYBD ADDRESS IN R14)
  319. PRKBD:  LD      R2,' '
  320.         LD      R3,R2                   ;CLEAR ASSEMBLY
  321.         CALR    GETCH
  322.         CP      R0,ESC
  323.         JR      NZ,TESTCR
  324.         CALR    GETCH
  325. TESTCR: CP      R0,CR
  326.         JR      ZR,DECPOS               ;END ON CR
  327.         LD      R1,R3
  328.         AND     R1,M8
  329.         SRLL    RR2,8
  330.         SLL     R0,8
  331.         OR      R2,R0
  332.         CALR    NEXCH                   ;NEXT CHARACTER
  333.         CP      R0,' '
  334.         JR      NZ,TESTCR
  335. DECPOS: DEC     R14,1
  336.         CPL     RR2,'MSA '-32
  337.         JP      ZR,XASM                 ;ASSEMBLER REQUEST
  338.         CPL     RR2,'KNAB'              ;SELECT BANK
  339.         JP      ZR,BANK                 ;SWITCH BANK
  340.         CPL     RR2,'TMEM'
  341.         JP      ZR,MEMTST
  342.         CPL     RR2,'EMIT'              ;TIME
  343.         JP      ZR,ITIME
  344.         CPL     RR2,'PMUD'              ;DUMP
  345.         JP      ZR,DUMP
  346.         CPL     RR2,'DAOL'              ;LOAD
  347.         JP      ZR,LOAD
  348.         CPL     RR2,'1XUA'              ;AUX1
  349.         JP      ZR,AUX1
  350.         CPL     RR2,'2XUA'              ;AUX2
  351.         JP      ZR,AUX2
  352. RESKBD: LD      R14,^KEYBD
  353.         CALR    GETCH                   ;CHECK SINGLE LETTER COMMANDS
  354.         CP      R0,ESC
  355.         JR      NZ,SAVPOS
  356.         CALR    GETCH
  357. SAVPOS: PUSH    R15^,R14
  358.         LD      R14,^ CMDLST
  359.         LD      R1,^CMDADD(-2)
  360.         LD      R2,R0
  361. CMDTLP: INC     R1,2
  362.         CALR    NEXCH
  363.         TEST    R0
  364.         JR      ZR,CMDPOP
  365.         CP      R0,R2
  366.         JR      NZ,CMDTLP
  367.         POP     R14,R15^
  368.         LD      R2,R1^
  369.         JP      R2^                     ;EXECUTE SINGLE LETTER COMMAND
  370. CMDPOP: POP     R14,R15^
  371. CMDER:  LD      R14,^ERMSG
  372.         JR      DISERA                  ;PUT QUESTION PROMPT
  373. ;
  374. ;       SET BREAKPOINT(1-3) AND EXECUTE - B COMMAND
  375. ;
  376. SETBRK: CLR     R11
  377.         CLR     R12
  378. SETBA:  CALR    HEX_TST                 ;FETCH BREAKPOINT ADDRESS
  379.         LD      R13,R12
  380.         LD      R12,R11
  381.         RES     R1,0
  382.         LD      R11,R1
  383.         CP      R0,CR
  384.         JR      ZR,SETBB
  385.         TEST    R13
  386.         JR      NZ,CMDER
  387.         JR      SETBA
  388. SETBB:  LD      R0,3
  389.         LD      R1,^BRKTAB
  390. SETBC:  LD      R1^,R11                 ;SAVE ADDRESS
  391.         INC     R1,2
  392.         TEST    R11
  393.         JR      ZR,SETBD
  394.         LD      R2,R11^
  395.         LD      R1^,R2                  ;SAVE CONTENT
  396.         LD      R11^,7FFFH              ;STUFF SYSTEM CALL
  397. SETBD:  INC     R1,2
  398.         LD      R11,R12
  399.         LD      R12,R13
  400.         DBJNZ   RL0,SETBC               ;LOOP FOR 3 BREAKPOINTS
  401.         SET     CTLWD,TRMDE
  402. SETBE:  CALR    RESTR                   ;RESTORE USER REGISTERS
  403.         IRET
  404. ;
  405. ;       SET HARDWARE BREAKPOINT - E COMMAND
  406. ;
  407. EXBRK:  CALR    HEX_TST
  408.         PUSH    R15^,R1
  409.         CALR    COMMA
  410.         JP      NZ,CMDERR
  411.         CALR    HEX_TST
  412.         CALR    CR_CHK
  413.         OUT     BKP+2,R1
  414.         POP     R1,R15^
  415. EXBRK1: OUT     BKP,R1
  416.         LD      HWBRK,R1
  417.         SET     CTLWD,STPFLG
  418.         JR      SETFCB
  419. ;
  420. ;       SET CARRY FLAG(OR CLEAR) - C COMMAND
  421. ;
  422. SETCRY: LD      R2,7
  423. SETFCW: CALR    GETBIT
  424.         JR      NZ,CMDER
  425. SETFCA: LD      R0,1
  426.         SDL     R0,R2
  427.         COM     R0
  428.         SDL     R1,R2
  429.         LD      R2,USFCW
  430.         AND     R2,R0
  431.         OR      R2,R1
  432.         LD      USFCW,R2
  433. SETFCB: JP      PROMPT
  434. ;
  435. ;       SET DECIMAL ADJUST(OR CLEAR) - D COMMAND
  436. ;
  437. SETDAJ: PUSH    R15^,R14
  438.         CALR    GETBIT
  439.         POP     R14,R15^
  440.         LD      R2,3
  441.         JR      ZR,SETFCA
  442. ;
  443. ;       DISPLAY MEMORY WORDS IN HEX AND ASCII -D COMMAND
  444. ;
  445.         CALR    HEX_TST                 ;FETCH FROM ADDRESS
  446.         LD      R12,R1
  447.         RES     R12,0
  448.         LD      R13,R12
  449.         CP      R0,CR
  450.         JR      ZR,DISMED               ;NO END ADDRESS
  451.         CALR    HEX_TST                 ;FETCH TO ADDRESS
  452.         LD      R13,R1
  453.         RES     R13,0
  454.         CALR    CR_CHK
  455.         CP      R12,R13
  456.         JR      LGT,CMDER               ;FROM > TO
  457. DISMED: INC     R13,2                   ;SET LWA+1
  458. DISMEA: LD      R10,R13
  459.         SUB     R10,R12
  460.         LD      R11,16
  461.         JR      NZ,DISMEB
  462.         JR      SETFCB
  463. DISMEB: CP      R10,R11
  464.         JR      NC,DISMEC
  465.         LD      R11,R10
  466. DISMEC: LD      R10,R11
  467.         LD      R14,R12
  468.         LD      R8,^KEYBD
  469.         LD      R1,R14
  470.         CALR    PUTH4                   ;ADDRESS TO OUTPUT AREA
  471.         LD      R1,4
  472.         CALR    PUTSP                   ;4 SPACES AFTER ADDRESS
  473. DISMEE: LD      R1,R12^
  474.         INC     R12,2
  475.         CALR    PUTH4                   ;HEX DATA TO OUTPUT AREA
  476.         LD      R0,' '
  477.         CALR    PUTCH
  478.         DEC     R10,2
  479.         JR      NZ,DISMEE
  480. DISMEF: CALR    NEXCH
  481.         CP      R0,' '
  482.         JR      CY,DISMEG
  483.         CP      R0,DEL
  484.         JR      CY,DISMEH
  485. DISMEG: LD      R0,'_'
  486. DISMEH: CALR    PUTCH                   ;ASCII DATA TO OUTPUT AREA
  487.         DEC     R11,1
  488.         JR      NZ,DISMEF
  489.         CALR    CRLF
  490.         PUSH    R15^,R13
  491.         PUSH    R15^,R14
  492.         LD      R14,^KEYBD
  493.         LD      R13,R8
  494.         SUB     R13,R14
  495.         CALR    CONOUT                  ;DISPLAY DATA LINE
  496.         POP     R12,R15^
  497.         POP     R13,R15^
  498.         CALR    BREAK                   ;BACK TO MONITOR ?
  499.         JP      ZR,GOPRM                ;YES
  500.         JR      DISMEA                  ;LOOP FOR MORE LINES
  501. ;
  502. ;       FILL MEMORY - F COMMAND
  503. ;
  504. FILMEM: CALR    HEX_TST                 ;FETCH FIRST (OR ONLY) ADDRESS
  505.         LD      R12,R1
  506.         RES     R12,0
  507.         LD      R13,R12
  508.         CALR    COMMA
  509.         JR      NZ,CMDERR
  510.         CALR    HEX_TST                 ;FETCH SECOND ADDRESS (OR VALUE)
  511.         CP      R0,CR
  512.         JR      ZR,FILMA                ;ONLY ONE ADDRESS
  513.         LD      R13,R1
  514.         RES     R13,0
  515.         CP      R12,R13
  516.         JR      LGT,CMDERR              ;FROM > TO
  517.         CALR    HEX_TST                 ;FETCH VALUE
  518.         CALR    CR_CHK
  519. FILMA:  LD      R12^,R1                 ;DO FILL
  520.         INC     R12,2
  521.         CP      R12,R13
  522.         JR      LLE,FILMA               ;LOOP TO END
  523.         JR      GOPRM
  524. ;
  525. ;       SET HALF CARRY FLAG(OR CLEAR) - H COMMAND
  526. ;
  527. SETHLF: LD      R2,2
  528. SETHLA: JR      SETFCW
  529. ;
  530. ;       MOVE MEMORY - M COMMAND
  531. ;
  532. MOVE:   CALR    HEX_TST;FETCH FROM ADDRESS
  533.         LD      R12,R1
  534.         RES     R12,0
  535.         CALR    COMMA
  536.         JR      NZ,CMDERR
  537.         CALR    HEX_TST                 ;FETCH THROUGH ADDRESS
  538.         LD      R13,R1
  539.         RES     R13,0
  540.         CALR    COMMA
  541.         JR      NZ,CMDERR
  542.         CALR    HEX_TST                 ;FETCH TO ADDRESS
  543.         CALR    CR_CHK
  544.         CP      R12,R13
  545.         JR      LGT,CMDERR
  546.         LD      R2,R13
  547.         SUB     R2,R12
  548.         CP      R1,R12
  549.         JR      LGT,MOVEA
  550.         INC     R2,2
  551.         SRL     R2,1
  552.         LDIR    R1^,R12^,R2
  553.         JR      GOPRM
  554. MOVEA:  ADD     R1,R2
  555.         INC     R2,2
  556.         SRL     R2,1
  557.         LDDR    R1^,R13^,R2
  558.         JR      GOPRM
  559. ;
  560. ;       SET USER NORMAL MODE - NM COMMAND
  561. ;
  562. UMODE:  CALR    GETCH
  563.         CP      R0,'M'
  564.         JR      ZR,NOMO
  565. ;
  566. ;       SET NVECT.INT. (OR CLEAR) - N COMMAND
  567. ;
  568.         CP      R0,'1'
  569.         JR      ZR,NVECT
  570.         CP      R0,'0'
  571.         JR      NZ,CMDERR
  572. NVECT:  LD      R2,11
  573.         CALR    GETBIT1
  574.         JR      NZ,CMDERR
  575.         JP      SETFCA
  576. NOMO:   CLR     R3
  577.         JR      SETMDE
  578. ;
  579. ;       SET PARITY/OVERFLOW FLAG(OR CLEAR) - P COMMAND
  580. ;
  581. SETPAR: PUSH    R15^,R14
  582.         CALR    GETBIT
  583.         POP     R14,R15^
  584.         LD      R2,4
  585. SETPAA: JP      ZR,SETFCA
  586. ;
  587. ;       SET USER PC ADDRESS - P COMMAND
  588. ;
  589.         CALR    GETCH
  590.         CP      R0,'='
  591.         JR      NZ,CMDERR
  592.         CALR    HEX_TST
  593.         CALR    CR_CHK
  594.         LD      USPC,R1
  595.         JR      GOPRM
  596. ;
  597. ;       SET REGISTER CONTENT - R COMMAND
  598. ;
  599. SETREG: PUSH    R15^,R14
  600.         CALR    GETCH
  601.         CLR     R13
  602.         CP      R0,'L'
  603.         JR      ZR,SETBRG               ;LOWER BYTE REGISTER
  604.         SET     R13,3
  605.         CP      R0,'H'
  606.         JR      ZR,SETBRG               ;UPPER BYTE REGISTER
  607.         POP     R14,R15^
  608.         CALR    REGVAL
  609.         JR      ZR,SETREA
  610. CMDERR: JP      CMDER
  611. REGVAL: CALR    DEC4
  612.         RET     NZ
  613.         CP      R0,'='
  614.         RET     NZ
  615.         LD      R12,R1
  616.         ADD     R12,R12
  617.         CALR    HEX16
  618.         RET     NZ
  619.         CP      R0,CR
  620.         RET
  621. SETBRG: POP     R1,R15^
  622.         CALR    REGVAL
  623.         JR      NZ,CMDERR
  624.         LD      R0,R12
  625.         AND     R0,MU12
  626.         JR      NZ,CMDERR
  627.         LD      R2,R1
  628.         AND     R1,MU8
  629.         JR      NZ,CMDERR
  630.         LD      R1,U0(R12)
  631.         SDL     R2,R13
  632.         LD      R0,M8
  633.         SDL     R0,R13
  634.         COM     R0
  635.         AND     R1,R0
  636.         OR      R1,R2
  637. SETREA: LD      U0(R12),R1
  638. GOPRM:  JP      PROMPT
  639. ;
  640. ;       SET SIGN FLAG(OR CLEAR) - S COMMAND
  641. ;
  642. SETSGN: PUSH    R15^,R14
  643.         CALR    GETBIT
  644.         POP     R14,R15^
  645.         LD      R2,5
  646.         JP      ZR,SETFCA
  647. ;
  648. ;       SET USER SYSTEM MODE - SM COMMAND
  649. ;
  650.         CALR    GETCH
  651.         CP      R0,'M'
  652.         JR      NZ,SUBST
  653.         LD      R3,4000H
  654. SETMDE: CALR    GETCH
  655.         JR      NZ,CMDERR
  656.         LD      USFCW,R3
  657.         JR      GOPRM
  658. ;
  659. ;       SUBSTITUTE MEMORY - S COMMAND
  660. ;
  661. SUBST:  DEC     R14,1
  662.         CALR    HEX_TST                 ;FETCH SUBSTITUTE ADDRESS
  663.         CALR    CR_CHK
  664.         LD      R13,R1
  665.         RES     R13,0
  666. SUBSTA: LD      R8,^KEYBD
  667.         LD      R1,R13
  668.         CALR    PUTH4                   ;ADRESS TO OUTPUT AREA
  669.         LD      R0,' '
  670.         CALR    PUTCH                   ;SPACE AFTER ADDRESS
  671.         LD      R1,R13^
  672.         CALR    PUTH4                   ;CONTENT TO OUTPUT AREA
  673.         LD      R0,'-'
  674.         CALR    PUTCH                   ;HYPHEN PROMPT
  675.         PUSH    R15^,R13
  676.         LD      R14,^KEYBD
  677.         LD      R13,10
  678.         CALR    CONOUT                  ;DISPLAY LINE
  679.         CALR    CONIN                   ;FETCH RESPONSE
  680.         POP     R13,R15^
  681.         CALR    GETCH
  682.         JR      ZR,SUBSTB               ;CR ONLY IS ADVANCE
  683.         CP      R0,'.'
  684.         JP      ZR,PROMPT               ;PERIOD IS TERMINATE
  685.         DEC     R14,1
  686.         CALR    HEX16                   ;GET SUBSTITUTE VALUE
  687.         JR      NZ,SUBSTA               ;IGNORE ERRORS
  688.         CP      R0,CR
  689.         JR      NZ,SUBSTA
  690.         LD      R13^,R1                 ;DO SUBSTITUTION
  691. SUBSTB: INC     R13,2
  692.         JR      SUBSTA
  693. ;
  694. ;       EXECUTE INPUT - I COMMAND
  695. ;
  696. IOPORT: CALR    HEX_TST
  697.         CALR    CR_CHK
  698.         LD      R13,R1
  699. IOPORT1:LD      R8,^KEYBD
  700.         LD      R1,R13
  701.         CALR    PUTH4
  702.         LD      R0,' '
  703.         CALR    PUTCH
  704.         IN      R1,R13
  705.         CALR    PUTH4
  706.         PUSH    R15^,R13
  707.         LD      R14,^KEYBD
  708.         LD      R13,9
  709.         CALR    CONOUT
  710.         CALR    CONIN
  711.         POP     R13,R15^
  712.         CALR    GETCH
  713.         JR      ZR,IOPORT2
  714.         CP      R0,'.'
  715.         JR      ZR,GOPRM
  716.         JR      IOPORT1
  717. IOPORT2:INC     R13,1
  718.         JR      IOPORT1
  719. ;
  720. ;       EXECUTE OUTPUT - O COMMAND
  721. ;
  722. OUTPORT:CALR    HEX_TST
  723.         CALR    CR_CHK
  724.         LD      R13,R1
  725. OUT1:   LD      R8,^KEYBD
  726.         LD      R1,R13
  727.         CALR    PUTH4
  728.         LD      R0,'-'
  729.         CALR    PUTCH
  730.         PUSH    R15^,R13
  731.         LD      R14,^KEYBD
  732.         LD      R13,5
  733.         CALR    CONOUT
  734.         CALR    CONIN
  735.         POP     R13,R15^
  736.         CALR    GETCH
  737.         JR      ZR,OUT2
  738.         CP      R0,'.'
  739.         JR      ZR,GOPRM
  740.         DEC     R14,1
  741.         CALR    HEX16
  742.         JR      NZ,OUT1
  743.         CP      R0,CR
  744.         JR      NZ,OUT1
  745.         OUT     R13,R1
  746. OUT2:   INC     R13,1
  747.         JR      OUT1
  748. ;
  749. ;       SET VECT. INT. ENABLE (OR CLEAR) - V COMMAND
  750. ;
  751. SETOVF: LD      R2,12
  752.         JP      SETFCW
  753. ;
  754. ;       DISPLAY REGISTERS - X COMMAND
  755. ;
  756. DISREG: LD      R8,^KEYBD
  757.         CALR    GETCH
  758.         JR      NZ,DISPRG               ;NOT GENERAL CASE
  759.         LD      R13,^U0
  760.         CLR     R12
  761.         CALR    PUTPC                   ;PC=XXXX
  762.         LD      R1,3
  763. DISRA:  CALR    PUTSP
  764.         CALR    PUTRG                   ;REGISTERS 0-7
  765.         INC     R13,2
  766.         LD      R1,1
  767.         INC     R12,1
  768.         CP      R12,8
  769.         JR      NZ,DISRA
  770.         CALR    CRLF
  771.         PUSHL   R15^,RR12
  772.         LD      R14,^KEYBD
  773.         LD      R13,79
  774.         CALR    CONOUT
  775.         POPL    RR12,R15^
  776.         LD      R8,^KEYBD
  777.         LD      R1,14
  778. DISRB:  CALR    PUTSP
  779.         CALR    PUTRG                   ;REGISTERS 8-15
  780.         INC     R13,2
  781.         LD      R1,1
  782.         INC     R12,1
  783.         CP      R12,16
  784.         JR      NZ,DISRB
  785.         LD      R13,79
  786. DISRC:  CALR    CRLF
  787.         LD      R14,^KEYBD
  788.         CALR    CONOUT
  789. DISRE:  LD      R8,^KEYBD
  790.         CALR    PUTFL1
  791.         LD      R13,10H
  792.         CALR    CRLF
  793.         LD      R14,^KEYBD
  794.         CALR    CONOUT
  795.         LD      R8,^KEYBD
  796.         CALR    PUTFL2
  797.         LD      R13,10H
  798. DISRF:  CALR    CRLF
  799.         LD      R14,^KEYBD
  800.         CALR    CONOUT
  801. DISRD:  JP      SETFCB
  802. DISPRG: CP      R0,'P'
  803.         JR      NZ,DISFLG
  804.         CALR    GETCH           ;HANDLE P REGISTER
  805.         JP      NZ,CMDER
  806.         CALR    BRKDIS          ;PC=XXXX
  807.         JR      DISRD
  808. DISFLG: CP      R0,'F'
  809.         JR      NZ,DISNRG
  810.         CALR    GETCH           ;HANDLE FLAG REGISTER
  811.         JP      NZ,CMDRE
  812.         CALR    PUTFL1
  813.         JR      DISRE
  814. DISNRG: DEC     R14,1           ;DO SPECIFIC REGISTER
  815.         CALR    DEC4
  816.         JP      NZ,CMDRE
  817.         CALR    CR_CHK
  818.         LD      R12,R1
  819.         LD      R13,^U0(R1)
  820.         ADD     R13,R1
  821.         CALR    PUTRG
  822.         LD      R13,9
  823.         JR      DISRC
  824. ;
  825. ;       SET ZERO FLAG(OR CLEAR) - Z COMMAND
  826. ;
  827. SETZRO: LD      R2,6
  828.         JP      SETFCW
  829. ;
  830. ;       GO COMMAND
  831. ;
  832. XECTE:  RES     CTLWD,TRMDE
  833.         CALR    GETCH
  834.         JR      ZR,SETBEE       ;NO ADDRESS
  835.         DEC     R14,1
  836.         CALR    HEX_TST         ;FETCH PC ADDRESS
  837.         CALR    CR_CHK
  838.         LD      USPC,R1
  839. SETBEE: JP      SETBE
  840. ;
  841. ;       ASM COMMAND
  842. ;
  843. XASM:   RES     CTLWD,TRMDE
  844.         LD      USPC,USERP
  845.         LD      USFCW,SYMDE
  846.         JR      SETBEE
  847. ;
  848. ;       RAMTEST
  849. ;
  850. MEMTST: CALR    HEX_TST
  851.         LD      R11,R1          ;START ADDR. IN R11
  852.         RES     R11,0
  853.         CALR    COMMA
  854.         JP      NZ,CMDERR
  855.         CALR    HEX_TST
  856.         CALR    CR_CHK
  857.         LD      R12,R1          ;END ADDR. IN R12
  858.         RES     R12,0
  859.         CP      R11,R12
  860.         JP      LGT,CMDERR      ;R11>R12,THEN ERROR
  861.         LD      R3,0000H
  862.         CALR    DISPL
  863.         LD      R10,R11         ;START ADDR. IN R10
  864.         LD      R9,0
  865. VUNU:   LD      R10^,R9
  866.         CP      R10,R12
  867.         JR      ZR,VEVO
  868.         INC     R10,2
  869.         JR      VUNU
  870. VEVO:   LD      R6,R9
  871.         INC     R9,1
  872. ;
  873. CONT:   CALR    BREAK           ;BACK TO MONITOR ?
  874.         JP      ZR,PROMPT       ;YES
  875.         CALR    BEGREG
  876.         INC     R3,1
  877.         CALR    DISPL
  878.         LD      R10,R11         ;START ADDR IN R10
  879. VOLG:   LD      R7,R10^
  880.         CP      R6,R7           ;PRIVIOUS DATA CORRECT ?
  881.         JR      ZR,NOERR        ;YES
  882.         CALR    BREAK           ;BACK TO MONITOR ?
  883.         JP      ZR,PROMPT       ;YES
  884.         CALR    ERROR
  885. NOERR:  LD      R10^,R9
  886.         CP      R10,R12
  887.         JR      ZR,ENDADR
  888.         INC     R10,2
  889.         JR      VOLG
  890. ENDADR: LD      R6,R9
  891.         RL      R9,1
  892.         JR      NC,CONT
  893.         CP      R9,0FFFFH
  894.         JR      ZR,RCM30
  895. RCM25:  RLC     R9,1
  896.         JR      CY,RCM25
  897.         JR      CONT
  898. RCM30:  LD      R6,R9
  899.         LD      R9,1
  900.         JR      CONT
  901. ;
  902. BREAK:  CLRB    RL0
  903.         INB     RL0,CPT
  904.         CPB     RL0,'S'
  905.         RET     NZ
  906. BREAK1: INB     RL0,CPT
  907.         CPB     RL0,ESC
  908.         RET     ZR
  909.         CPB     RL0,'C'
  910.         JR      NZ,BREAK1
  911.         RESFLG  ZR
  912.         RET
  913. ;
  914. BEGREG: LD      R14,^SIGNON
  915.         LD      R13,1
  916.         CALR    CONOUT
  917.         RET
  918. ;
  919. NREG:   LD      R14,^SIGNON
  920.         LD      R13,2
  921.         CALR    CONOUT
  922.         RET
  923. ;
  924. ERROR:  LD      R8,^KEYBD       ;R8=BUFFER POINTER
  925.         LD      R14,R8
  926.         LD      R1,R10
  927.         CALR    PUTH4           ;R10 IN BUFFER
  928.         LD      R1,4
  929.         CALR    PUTSP           ;4 SPACES IN BUFFER
  930.         LD      R1,R7
  931.         CALR    PUTH4           ;R7 IN BUFFER
  932.         LD      R1,4
  933.         CALR    PUTSP           ;4 SPACES IN BUFFER
  934.         LD      R1,R6
  935.         CALR    PUTH4           ;R6 IN BUFFER
  936.         CALR    CRLF
  937.         LD      R13,22          ;22 CHARACTERS
  938.         CALR    CONOUT
  939.         RET
  940. ;
  941. DISPL:  LD      R8,^KEYBD
  942.         LD      R14,R8
  943.         LD      R1,R3
  944.         CALR    PUTH4
  945.         LD      R13,4
  946.         CALR    CONOUT
  947.         RET
  948. ;
  949. CR_CHK:
  950.         CP      R0,CR
  951.         RET     EQ
  952.         POP     R2,R15^
  953. CMDRE:
  954.         CALR    RESET_RECVE_SWITCH
  955.         JP      CMDER
  956. ;
  957. DISERG:
  958.         CALR    RESET_RECVE_SWITCH
  959.         CALR    CONOUT
  960.         JP      SETFCB
  961. ;
  962. ;       INPUT TIME - TIME COMMAND.
  963. ;
  964. ITIME:  CALR    HEX_TST         ;FETCH HOURS,MINUTES
  965.         LD      R12,R1
  966.         LD      R13,R12
  967.         JP      NZ,CMDERR
  968.         CALR    CR_CHK          ;R12 = HOURS,MINUTES
  969. ;
  970.         LD      R0,0FF01H       ;DATA PNT CNT 1
  971.         OUT     PTM+2,R0
  972.         LD      R0,1139H        ;MODE
  973.         OUT     PTM,R0
  974. ;
  975.         LD      R0,0FF02H       ;DATA PNT CNT 2
  976.         OUT     PTM+2,R0
  977.         LD      R0,0039H        ;MODE
  978.         OUT     PTM,R0
  979. ;
  980.         LD      R0,0FF09H       ;CLEAR  COUNTER 1
  981.         OUT     PTM+2,R0
  982.         LD      R0,0
  983.         OUT     PTM,R0
  984. ;
  985.         LD      R0,0FF0AH       ;CLEAR  COUNTER 2
  986.         OUT     PTM+2,R0
  987.         LD      R0,0
  988.         OUT     PTM,R0
  989. ;
  990.         LD      R0,0FF43H       ;LOAD
  991.         OUT     PTM+2,R0        ;COUNTERS 1 AND 2
  992. ;
  993.         LD      R0,0FF09H       ;DATA PNT CNT 1
  994.         OUT     PTM+2,R0        ;LOAD
  995.         LD      R0,0            ;CLEAR SECONDS
  996.         OUT     PTM,R0
  997.         LD      R0,0FF0AH       ;DATA PNT CNT 1
  998.         OUT     PTM+2,R0        ;LOAD
  999.         OUT     PTM,R12         ;LOAD HOURS AND MINUTES
  1000.         LD      R0,0FF43H       ;LOAD CNT 1 AND 2
  1001.         OUT     PTM+2,R0
  1002. ;
  1003.         LD      R0,0FF09H       ;CLEAR COUNTER 1
  1004.         OUT     PTM+2,R0
  1005.         LD      R0,0
  1006.         OUT     PTM,R0
  1007. ;
  1008.         LD      R0,0FF0AH       ;CLEAR COUNTER 2
  1009.         OUT     PTM+2,R0
  1010.         LD      R0,0
  1011.         OUT     PTM,R0
  1012. ;
  1013.         LD      R0,0FF23H       ;ARM COUNTER 1 AND 2
  1014.         OUT     PTM+2,R0
  1015.         EI      VI              ;ENABLE VECT. INT.
  1016.         JP      PROMPT
  1017. ;
  1018. ;       DUMP MEMORY ON TTY IN MOTOROLA FORMAT
  1019. ;
  1020. DUMP:   CALR    HEX_TST
  1021.         LD      R10,R1          ;START ADDRESS IN R10
  1022.         CALR    COMMA
  1023.         JP      NZ,CMDERR
  1024.         CALR    HEX_TST
  1025.         LD      R11,R1          ;END ADDRESS IN R11
  1026. DUMP10: LD      R4,R11
  1027.         SUB     R4,R10
  1028.         CP      R4,10H
  1029.         JR      CY,DUMP20
  1030.         LD      R4,0FH
  1031. DUMP20: ADD     R4,4
  1032.         LD      R5,R4
  1033.         SUB     R5,3
  1034.         LDB     RL0,CR
  1035.         CALR    TRNCHE
  1036.         LDB     RL0,LF
  1037.         CALR    TRNCHE
  1038.         LDB     RL0,'S'
  1039.         CALR    TRNCHE
  1040.         LDB     RL0,'1'
  1041.         CALR    TRNCHE
  1042.         CLRB    RL6
  1043.         LDB     RL0,RL4
  1044.         CALR    DUMP40
  1045.         LD      R1,R10
  1046.         LDB     RL0,RH1
  1047.         CALR    DUMP40
  1048.         LDB     RL0,RL1
  1049.         CALR    DUMP40
  1050. DUMP30: LDB     RL0,R10^
  1051.         CALR    DUMP40
  1052.         INC     R10,1
  1053.         DEC     R5,1
  1054.         JR      NZ,DUMP30
  1055.         COMB    RL6
  1056.         LDB     RL0,RL6
  1057.         CALR    DUMP40
  1058.         CP      R10,R11
  1059.         JR      CY,DUMP10       ;NEXT RECORD
  1060.         LDB     RL0,CR
  1061.         CALR    TRNCHE
  1062.         LDB     RL0,LF
  1063.         CALR    TRNCHE
  1064.         LDB     RL0,'S'
  1065.         CALR    TRNCHE
  1066.         LDB     RL0,'9'
  1067.         CALR    TRNCHE
  1068.         LDB     RL0,CR
  1069.         CALR    TRNCHE
  1070.         LDB     RL0,LF
  1071.         CALR    TRNCHE
  1072.         JP      PROMPT
  1073. ;
  1074. ;
  1075. DUMP40: ADDB    RL6,RL0
  1076.         LDB     RL7,RL0
  1077.         RRB     RL0,2
  1078.         RRB     RL0,2
  1079.         CALR    DUMP50
  1080.         LDB     RL0,RL7
  1081. DUMP50: ANDB    RL0,0FH
  1082.         ADDB    RL0,'0'
  1083.         CPB     RL0,'9'
  1084.         JR      LLE,DUMP60
  1085.         ADDB    RL0,07H
  1086. DUMP60: CALR    TRNCHE
  1087.         RET
  1088. ;
  1089. ;       LOAD FROM TTY IN MOTOROLA FORMAT
  1090. ;
  1091. LOAD:   CALR    RECHB           ;INPUT  CHARACTER
  1092.         CPB     RL0,'S'
  1093.         JR      NZ,LOAD
  1094.         CALR    RECHB
  1095.         CPB     RL0,'9'
  1096.         JR      NZ,LOAD00
  1097.         JP      PROMPT          ;LAST CHARACTER
  1098. ;
  1099. LOAD00: CPB     RL0,'1'
  1100.         JR      NZ,LOAD
  1101. LOAD10: CLRB    RL6
  1102.         CALR    LOAD50          ;INPUT BYTE COUNT
  1103.         DECB    RL0,2           ;DEC. BYTE COUNT
  1104.         LDB     RH6,RL0
  1105.         CALR    LOAD40
  1106. LOAD20: CALR    LOAD50
  1107.         DECB    RH6,1
  1108.         JR      ZR,LOAD30       ;INPUT BYTE
  1109.         LDB     R7^,RL0
  1110.         INC     R7,1
  1111.         JR      LOAD20
  1112. LOAD30: INCB    RL6,1
  1113.         JR      ZR,LOAD
  1114.         JP      CMDERR
  1115. ;
  1116. LOAD40: CALR    LOAD50
  1117.         LDB     RH7,RL0
  1118.         CALR    LOAD50
  1119.         LDB     RL7,RL0         ;START ADDRESS IN R7
  1120.         RET
  1121. ;
  1122. LOAD50: CALR    RECHB           ;INPUT 2 ASCII CHARACTERS
  1123.         CALR    LOAD60
  1124.         LDB     RH3,RL0
  1125.         CALR    RECHB
  1126.         CALR    LOAD60
  1127.         RLB     RH3,2
  1128.         RLB     RH3,2
  1129.         ADDB    RL0,RH3
  1130.         ADDB    RL6,RL0         ;2 HEX CHARACTERS IN RL6
  1131.         RET
  1132. ;
  1133. LOAD60: CPB     RL0,'0'         ;CONVERT ASCII TO HEX NIBBLE
  1134.         JP      CY,CMDERR
  1135.         CPB     RL0,3AH
  1136.         JR      CY,LOAD70
  1137.         CPB     RL0,41H
  1138.         JP      CY,CMDERR
  1139.         CPB     RL0,46H
  1140.         JP      LGT,CMDERR
  1141.         SUBB    RL0,07H
  1142. LOAD70: ANDB    RL0,0FH
  1143.         RET
  1144. ;
  1145. ;       USER PROGRAM ILLEGAL TRAP
  1146. ;
  1147. USERR:  CALR    SAVER           ;SAVE USER REGISTERS
  1148.         RES     CTLWD,STPFLG    ;CLEAR STEP CONTROL
  1149.         LD      R14,^USERM
  1150.         LD      R13,USERML
  1151.         JP      DISERG
  1152. SPEC:   CALR    SAVER
  1153.         RES     CTLWD,STPFLG
  1154.         LD      R14,^SPECM
  1155.         LD      R13,SPECML
  1156.         JP      DISERG
  1157.  
  1158. PRIV:   CALR    SAVER
  1159.         RES     CTLWD,STPFLG
  1160.         LD      R14,^PRIVM
  1161.         LD      R13,PRIVML
  1162.         JP      DISERG
  1163. NONV:   CALR    SAVER
  1164.         RES     CTLWD,STPFLG
  1165.         LD      R14,^NONVM
  1166.         LD      R13,NONVML
  1167.         JP      DISERG
  1168. VEC3:   CALR    SAVER
  1169.         RES     CTLWD,STPFLG
  1170.         LD      R14,^VEC3M
  1171.         LD      R13,VEC3ML
  1172.         JP      DISERG
  1173. ;
  1174. VEC1:   CALR    SAVER
  1175.         RES     CTLWD,STPFLG
  1176.         LD      R14,^VEC1M
  1177.         LD      R13,VEC1ML
  1178.         JP      DISERG
  1179. ;
  1180. VEC2:   CALR    SAVER
  1181.         RES     CTLWD,STPFLG
  1182.         LD      R14,^VEC2M
  1183.         LD      R13,VEC2ML
  1184.         JP      DISERG
  1185. ;
  1186. ;       BANK SWITCH
  1187. ;
  1188. BANK:   LD      R13,BANKSW
  1189.         AND     R13,7
  1190.         LD      R8,^KEYBD
  1191.         LD      R1,R13
  1192.         CALL    PUTH4
  1193.         LD      R0,'-'
  1194.         CALL    PUTCH
  1195.         PUSH    R15^,R13
  1196.         LD      R14,^KEYBD+3
  1197.         LD      R13,2
  1198.         CALR    CONOUT
  1199.         CALR    CONIN
  1200.         POP     R13,R15^
  1201.         CALR    GETCH
  1202.         JR      ZR,BANK1
  1203.         DEC     R14,1
  1204.         CALR    HEX16
  1205.         JP      NZ,CMDERR
  1206.         CP      R0,CR
  1207.         JR      NZ,BANK1
  1208.         CP      R1,8
  1209.         JP      PL,CMDERR
  1210.         OR      R1,BNKMSK
  1211.         LD      R0,1
  1212.         SOUTD   R1^,R2^,R0
  1213.         LD      BANKSW,R1
  1214. BANK1:  JP      PROMPT
  1215. ;
  1216. ;       NON MASK. INTERUPT
  1217. ;
  1218. STPRTN: CALR    SAVER           ;SAVE USER REGISTERS
  1219.         BIT     CTLWD,STPFLG
  1220.         LD      R4,USPC
  1221.         OUT     BKP,R4
  1222.         CALR    BRKDIS1
  1223.         LD      HWBRK,R4
  1224. STPRTB: RES     CTLWD,STPFLG
  1225.         CALR    BRKDIS
  1226.         SET     CTLWD,STPFLG
  1227.         JP      RDKBD
  1228. ;
  1229. ;       STEP COMMAND(CR ONLY IF CONDITION SET)
  1230. ;
  1231. STEP:   BIT     CTLWD,STPFLG
  1232.         JP      ZR,CMDER
  1233.         JP      SETBE
  1234. ;
  1235. ;       USER PROGRAM CALL
  1236. ;
  1237. SYSCAL: CALR    SAVER           ;SAVE USER REGISTERS
  1238.         AND     R2,M8
  1239.         JR      ZR,PROCAL       ;SERVICE REQUEST
  1240.         CP      R2,M8
  1241.         JR      NZ,UEXIT        ;NOT BREAKPOINT TRAP
  1242.         LD      R0,3
  1243.         LD      R4,^BRKTAB
  1244.         LD      R3,USPC
  1245.         DEC     R3,2            ;BACK PC TO TRAP ADDRESS
  1246. CHKBRK: TEST    R4
  1247.         JR      ZR,UEXIT
  1248.         CP      R3,R4^
  1249.         JR      ZR,BRKHIT       ;MATCH ON SET BREAKPOINT
  1250.         INC     R4,4
  1251.         DEC     R0,1
  1252.         JR      NZ,CHKBRK
  1253. UEXIT:  CALR    CLRBRK          ;CLEAR BREAKPOINT TABLE
  1254.         RES     CTLWD,STPFLG
  1255.         LD      R8,^KEYBD
  1256.         PUSH    R15^,R2
  1257.         LD      R1,USEXTL
  1258.         LD      R2,^USEXT
  1259.         CALR    PUTMS
  1260.         POP     R1,R15^
  1261.         SLA     R1,8
  1262.         CALR    PUTHXB
  1263.         LD      R13,USEXTL+4
  1264.         JP      DISRF
  1265. BRKHIT: LD      USPC,R3         ;SET USER PC TO TRAP LOCATION
  1266.         CALR    CLRBRK          ;AND CLEAR BREAKPOINT TABLE
  1267.         JR      STPRTB
  1268. CLRBRK: LD      R0,3            ;CLEAR BREAKPOINT TABLE(IN REVERSE)
  1269.         LD      R4,^BRKTAB(8)
  1270. CLRBA:  LD      R5,R4^
  1271.         CLR     R4^
  1272.         INC     R4,2
  1273.         TEST    R5
  1274.         JR      ZR,CLRBB
  1275.         LD      R6,R4^
  1276.         CLR     R4^
  1277.         LD      R5^,R6          ;RESTORE BREAKPOINT CONTENT
  1278. CLRBB:  DEC     R4,6
  1279.         DEC     R0,1
  1280.         JR      NZ,CLRBA
  1281.         RET
  1282. ;
  1283. ;       PROCESS A USER PROGRAM REQUEST
  1284. ;
  1285. PROCAL: LDM     R3,R1^,4        ;FETCH PARAMETER LIST
  1286.         SRA     R3,8
  1287.         AND     R3,M8
  1288.         CP      R3,1
  1289.         JR      CY,PROCAA
  1290.         JR      NZ,PROCAE
  1291.         CALR    CONIN           ;RETURN KEYBOARD REQUEST
  1292.         CALR    GETCH
  1293.         CP      R0,ESC
  1294.         JP      ZR,PRKBD        ;ESCAPE IS MONITOR RETURN
  1295. PROCAA: LD      R1,U1
  1296.         LD      R14,^KEYBD
  1297.         LDM     R3,R1^,4
  1298.         LD      R8,R5
  1299.         LD      R7,R6
  1300.         CLR     R6
  1301. PROCAB: SUB     R7,1
  1302.         JR      CY,PROCAC       ;PREMATURE END
  1303.         CALR    NEXCH
  1304.         LD      R9,R0
  1305.         CALR    PUTCH
  1306.         INC     R6,1
  1307.         CP      R9,CR
  1308.         JR      NZ,PROCAB
  1309.         CLR     R7              ;NORMAL END
  1310. PROCAC: NEG     R7
  1311. PROCAD: AND     R3,MU8
  1312.         OR      R3,R7
  1313.         LD      R1,U1
  1314.         LDM     R1^,R3,4        ;RESTORE USER PARAMETERS
  1315.         JP      SETBE
  1316. PROCAE: CP      R3,3
  1317.         LD      R13,R6          ;OUTPUT CONSOLE REQUEST
  1318.         JR      NC,PROCAG
  1319.         LD      R14,R5
  1320.         CALR    CONOUT
  1321.         CLR     R7
  1322. PROCAF: LD      R1,U1
  1323.         LDM     R3,R1^,4
  1324.         JR      PROCAD
  1325. PROCAG: LD      R14,R4
  1326.         CLR     R4
  1327.         JR      ZR,PROCAC
  1328.         LD      R4,R14
  1329.         CP      R3,7
  1330.         JR      NC,PROCAC
  1331.         CLR     R13
  1332. PROCAH: JP      PROCAC
  1333. ;
  1334. ;       TRANSMIT CHARACTER IN R0
  1335. ;
  1336. TRNCHE: IN      R2,SPT+2
  1337.         BIT     R2,2
  1338.         JR      ZR,TRNCHE       ;WAIT SERIAL READY
  1339.         OUT     SPT,R0
  1340.         RET
  1341. ;
  1342. ;       RECEIVE CHARACTER TO R0
  1343. ;
  1344. RECHB:  IN      R0,SPT+2
  1345.         BITB    RL0,0H
  1346.         JR      ZR,RECHB
  1347.         IN      R0,SPT
  1348. RECHF:  ANDB    RL0,M8
  1349.         CLRB    RH0
  1350.         RES     R0,7
  1351.         RET
  1352. ;
  1353. ;       TTY OUTPUT GOES TO AUX1
  1354. ;
  1355. AUX1:   LD      R4,2
  1356.         LD      R5,10
  1357.         LD      TRNCHE(R4),CPT+10
  1358.         LD      TRNCHE(R5),CPT+8
  1359.         LD      RECHB(R4),CPT+10
  1360.         LD      RECHB(R5),CPT+8
  1361. PRPT:   JP      PROMPT
  1362. ;
  1363. ;       TTY OUTPUT GOES TO AUX2
  1364. ;
  1365. AUX2:   LD      R4,2
  1366.         LD      R5,10
  1367.         LD      TRNCHE(R4),CPT+14
  1368.         LD      TRNCHE(R5),CPT+12
  1369.         LD      RECHB(R4),CPT+14
  1370.         LD      RECHB(R5),CPT+12
  1371.         JR      PRPT
  1372. ;
  1373. ;       READ KEYBOARD MESSAGE
  1374. ;
  1375. CONIN:  LD      R8,^KEYBD
  1376.         LD      R5,R8
  1377.         LD      R13,80
  1378.         JR      CRTWT           ;RS232 CONSOLE
  1379. CONID:  CALR    PUTCH
  1380.         LD      R14,^PRMSG+1
  1381.         LD      R13,2
  1382.         CALR    CONOUT          ;ECHO CARRIAGE RETURN LINE FEED
  1383. CONIE:  LD      R14,^KEYBD
  1384.         RET
  1385. ;
  1386. ;       INPUT FROM SERIAL CONSOLE
  1387. ;
  1388. CRTWT:  IN      R0,CPT+2
  1389.         BITB    RL0,0H
  1390.         JR      ZR,CRTWT
  1391.         IN      R0,CPT
  1392.         AND     R0,M7
  1393.         CP      R0,CR
  1394.         JR      ZR,CONID        ;CARRIAGE RETURN
  1395.         CALR    PROCH
  1396.         JR      CRTWT
  1397. PROCH:  CP      R0,DEL
  1398.         JR      ZR,PRODL
  1399.         CP      R0,BSP
  1400.         JR      ZR,PRODL
  1401.         CP      R0,CAN
  1402.         JR      ZR,PROCN
  1403.         CP      R0,' '
  1404.         RET     CY
  1405.         LD      R2,^KEYBD+79
  1406.         CP      R8,R2
  1407.         RET     ZR
  1408.         LD      R14,R8
  1409.         LD      R13,1
  1410.         CALR    PUTCH
  1411.         CALR    CONOUT          ;ECHO CHARACTER
  1412.         RET
  1413. PRODL:  LD      R2,^KEYBD
  1414.         CP      R8,R2
  1415.         RET     ZR
  1416.         LD      R14,^BSPMS
  1417.         DEC     R8,1
  1418. PRODM:  LD      R13,3
  1419.         CALR    CONOUT
  1420.         RET
  1421. PROCN:  LD      R14,^CNMSG
  1422.         LD      R8,^KEYBD
  1423.         JR      PRODM
  1424. ;
  1425. ;       OUT R13 CHARACTERS FROM R14 TO CONSOLE
  1426. ;
  1427. CONOUT: CALR    NEXCH
  1428.         CP      R0,DEL
  1429.         JR      LGE,CONLF
  1430.         JR      CONCRT          ;RS232 CONSOLE
  1431. CONLF:  DEC     R13,1
  1432.         JR      NZ,CONOUT
  1433.         RET
  1434. CONCRT: IN      R1,CPT+2
  1435.         BITB    RL1,2H
  1436.         JR      ZR,CONCRT
  1437.         OUT     CPT,R0
  1438.         JR      CONLF
  1439. ;
  1440. ;       FETCH NEXT CHARACTER FROM (R14) TO R0
  1441. ;
  1442. NEXCH:  LDB     RL0,R14^
  1443.         INC     R14,1
  1444.         CLRB    RH0
  1445.         CP      R0,CR
  1446.         RET
  1447. ;
  1448. ;       FETCH NEXT NON-BLANK CHARACTER FROM (R14) TO R0 - SET CR FLAG
  1449. ;
  1450. GETCH:  CALR    NEXCH
  1451.         RET     ZR
  1452.         CP      R0,' '
  1453.         JR      ZR,GETCH
  1454.         RET
  1455. ;
  1456. ;       FETCH 16 BIT HEX TO R1 FROM (R14) TO CR OR COMMA
  1457. ;
  1458. HEX_TST:CALR    HEX16
  1459.         RET     ZR
  1460.         POP     R2,R15^
  1461.         JP      CMDER
  1462. HEX16:  CLR     R1
  1463.         CALR    GETCH
  1464. HX16A:  SUB     R0,'0'
  1465.         RET     CY
  1466.         CP      R0,10
  1467.         JR      CY,HX16B
  1468.         SUB     R0,7
  1469.         CP      R0,10
  1470.         RET     CY
  1471.         CP      R0,15
  1472.         RET     LGT
  1473. HX16B:  LD      R2,R1
  1474.         AND     R2,MU4
  1475.         RET     NZ
  1476.         SLL     R1,4
  1477.         OR      R1,R0
  1478.         CALR    GETCH
  1479.         RET     ZR
  1480.         CP      R0,','
  1481.         RET     ZR
  1482.         JR      HX16A
  1483. ;
  1484. ;       FETCH 0 OR 1 BIT TO R1 FROM (R14)
  1485. ;
  1486. GETBIT: CALR    GETCH
  1487. GETBIT1:SUB     R0,'0'
  1488.         RET     CY
  1489.         LD      R1,R0
  1490.         SUB     R0,1
  1491.         RET     LGT
  1492.         JR      GETCH
  1493. ;
  1494. ;       PUT 4 HEX DIGITS FROM R1 TO (R8)
  1495. ;
  1496. PUTH4:  CALR    PUTHD
  1497.         CALR    PUTHD
  1498. PUTHXB: CALR    PUTHD
  1499. PUTHD:  SLLL    RR0,4
  1500.         AND     R0,M4
  1501.         ADD     R0,'0'
  1502.         CP      R0,'9'+1
  1503.         JR      MI,PUTCH
  1504.         ADD     R0,7
  1505. PUTCH:  LDB     R8^,RL0
  1506.         INC     R8,1
  1507.         RET
  1508. ;
  1509. ;       PUT CR AND LF TO (R8)
  1510. ;
  1511. CRLF:   LD      R0,CR
  1512.         CALR    PUTCH
  1513.         LD      R0,LF
  1514.         JR      PUTCH
  1515. ;
  1516. ;       RESTORE USER REGISTERS
  1517. ;
  1518. RESTR:  LD      R0,U15
  1519.         POP     U15,R15^
  1520.         LDL     RR2,USFCW
  1521.         BIT     R2,14
  1522.         JR      NZ,RESTRB       ;ENTERING SYSTEM MODE
  1523.         LDCTL   NSPOFF,R0
  1524. RESTRA: PUSHL   R15^,RR2
  1525.         PUSH    R15^,R2
  1526.         LDM     R0,U0,15
  1527.         PUSH    R15^,U15
  1528.         RET
  1529. RESTRB: LD      R15,R0
  1530.         JR      RESTRA
  1531. ;
  1532. ;       FETCH 16 BIT DECIMAL TO R1 FROM (R14) TO CR, =,OR COMMA
  1533. ;
  1534. DEC16:  CLR     R1
  1535.         CALR    GETCH
  1536. DEC16A: SUB     R0,'0'
  1537.         RET     CY
  1538.         CP      R0,9
  1539.         RET     LGT
  1540.         LD      R2,R0
  1541.         MULT    RR0,10
  1542.         ADD     R1,R2
  1543.         CLR     R2
  1544.         ADC     R0,R2
  1545.         RET     NZ
  1546.         CALR    GETCH
  1547.         RET     ZR
  1548.         CP      R0,'='
  1549.         RET     ZR
  1550.         CALR    COMMA
  1551.         RET     ZR
  1552.         JR      DEC16A
  1553. ;
  1554. ;       FETCH 4 BIT DECIMAL TO R1 FROM (R14) TO CR, =, OR COMMA
  1555. ;
  1556. DEC4:   CALR    DEC16
  1557.         LD      R2,R1
  1558.         AND     R2,MU12
  1559.         RET
  1560. ;
  1561. ;       PUT R1 SPACES TO (R8)
  1562. ;
  1563. PUTSP:  LD      R0,' '
  1564.         CALR    PUTCH
  1565.         DEC     R1,1
  1566.         JR      NZ,PUTSP
  1567.         RET
  1568. ;
  1569. ;       PUT R1 CHARACTERS FROM R2 TO (R8)
  1570. ;
  1571. PUTMS:  LDIRB   R8^,R2^,R1
  1572.         RET
  1573. ;
  1574. ;       PUT NXT PC=XXXX TO (R8)
  1575. ;
  1576. PUTPC:  LD      R1,7
  1577.         LD      R2,^PCMS
  1578.         CALR    PUTMS
  1579.         LD      R1,USPC
  1580.         CALR    PUTH4
  1581.         RET
  1582. ;
  1583. ;       REGISTER IN R13=(R23) TO (R8)
  1584. ;
  1585. PUTRG:  CP      R12,10
  1586.         JR      CY,PUTRA
  1587.         LD      R0,'1'
  1588.         CALR    PUTCH
  1589.         LD      R0,R12
  1590.         ADD     R0,'0'-10
  1591.         JR      PUTRB
  1592. PUTRA:  LD      R0,' '
  1593.         CALR    PUTCH
  1594.         LD      R0,R12
  1595.         ADD     R0,'0'
  1596. PUTRB:  CALR    PUTCH
  1597.         LD      R0,'='
  1598.         CALR    PUTCH
  1599.         LD      R1,R13^
  1600.         JP      PUTH4
  1601. ;
  1602. ;       FLAG REGISTER TO (R8) CZSPDH
  1603. ;
  1604. PUTFL1: LD      R14,^FCWL
  1605.         LD      R3,0EH
  1606. PUTFA:  CALR    NEXCH
  1607.         CALR    PUTCH
  1608.         DBJNZ   RL3,PUTFA
  1609.         RET
  1610. ;
  1611. PUTFL2: LD      R1,USFCW
  1612.         LD      R3,0EH
  1613. PUTFB:  LD      R0,'0'/2
  1614.         RL      R1,1
  1615.         ADC     R0,R0
  1616.         CALR    PUTCH
  1617.         DBJNZ   RL3,PUTFB
  1618.         RET
  1619. ;
  1620. ;       SAVE USER REGISTERS
  1621. ;
  1622. SAVER:  LDM     U0,R0,15
  1623.         POP     R3,R15^
  1624.         POP     R2,R15^
  1625.         POPL    RR4,R15^
  1626.         LDL     USFCW,RR4
  1627.         BIT     R4,14
  1628.         JR      NZ,SAVERA       ;FROM SYSTEM MODE
  1629.         LDCTL   R0,NSPOFF
  1630.         LD      U15,R0
  1631.         JP      R3^
  1632. SAVERA: LD      U15,R15
  1633.         LD      R15,^STACK
  1634.         JP      R3^
  1635. ;
  1636. ;       DISPLAY NXT PC=XXXX FOR BREAKPOINT
  1637. ;
  1638. BRKDIS: LD      R8,^KEYBD
  1639.         CALR    PUTPC
  1640.         LD      R2,^NIMS
  1641.         LD      R1,4
  1642.         CALR    PUTMS
  1643.         LD      R2,USPC
  1644.         LD      R1,R2^
  1645.         CALR    PUTH4
  1646.         CALR    CRLF
  1647.         LD      R13,21
  1648.         LD      R14,^KEYBD
  1649.         CALR    CONOUT
  1650.         RET
  1651. ;
  1652. ;       DISPLAY BRK PC=XXXX
  1653. ;
  1654. BRKDIS1:LD      R8,^KEYBD
  1655.         CALR    PUTBPC
  1656.         CALR    CRLF
  1657.         LD      R13,13
  1658.         LD      R14,^KEYBD
  1659.         CALR    CONOUT
  1660.         RET
  1661. ;
  1662. ;       PUT BRK PC=XXXX TO (R8)
  1663. ;
  1664. PUTBPC: LD      R1,7
  1665.         LD      R2,^BPCMS
  1666.         CALR    PUTMS
  1667.         LD      R1,HWBRK
  1668.         CALR    PUTH4
  1669.         RET
  1670. ;
  1671. RESET_RECVE_SWITCH:
  1672.         LDA     CHDEST,PUTCH    ; RESET CO-ROUTINE SWITCH
  1673.         RET
  1674. ;
  1675. COMMA:  CP      R0,','
  1676.         RET
  1677. ;
  1678. ; READ TIME AND DISPLAY
  1679. ;
  1680. CLOCK:  PUSHL   R15^,RR0        ;SAVE REGISTERS
  1681.         PUSHL   R15^,RR2
  1682.         PUSHL   R15^,RR4
  1683.         PUSH    R15^,R8
  1684.         PUSH    R15^,R14
  1685.         LD      R0,0FFA3H       ;SAVE CNT 1 & 2
  1686.         OUT     PTM+2,R0
  1687.         LD      R0,0FF11H       ;DATA PNT
  1688.         OUT     PTM+2,R0        ;
  1689.         IN      R3,PTM          ;INPUT SECONDS
  1690.         LD      R0,0FF12H       ;DATA PNT
  1691.         OUT     PTM+2,R0        ;TO CNT 2
  1692.         IN      R2,PTM          ;INPUT HOURS,MINUTES,SECONDS
  1693.         LD      R8,^KEYBD       ;DISPLAY TIME
  1694.         CALR    CRLF
  1695.         LD      R1,R2           ;HOUR MINUTES
  1696.         CALR    PUTH4
  1697.         LD      R0,':'
  1698.         CALR    PUTCH
  1699.         LD      R1,R3           ;SECONDS
  1700.         CALR    PUTH4
  1701.         LD      R14,^KEYBD
  1702.         LD      R13,11
  1703.         CALR    CONOUT          ;DISPLAY
  1704.         POP     R14,R15^
  1705.         POP     R8,R15^
  1706.         POPL    RR4,R15^
  1707.         POPL    RR2,R15^
  1708.         POPL    RR0,R15^
  1709.         EI      VI
  1710.         IRET
  1711. ;
  1712. ; CHANNEL A
  1713. ;
  1714. SRCBUFA:DB      18H             ;CHANNEL A RESET
  1715.         DB      04H             ;SELECT WR 4.
  1716.         DB      44H             ;X16,1 STOPB,N.PARITY.
  1717.         DB      05H             ;SELECT WR 5.
  1718.         DB      68H             ; 8 BITS, TX EN.
  1719.         DB      03H             ;SELECT WR 3.
  1720.         DB      0C1H            ; 8 BITS, RX EN.
  1721.         DB      01H             ;SELECT WR 1.
  1722.         DB      12H             ;TXINT,RXINT EN.
  1723.         DB      00H             ;SELECT RR0
  1724. ENDBUFA:
  1725. ;
  1726. ;CHANNEL B
  1727. ;
  1728. SRCBUFB:DB      18H             ;CHANNEL B RESET
  1729.         DB      04H             ;SELECT WR 4.
  1730.         DB      44H             ;X16,1 STOPB,N.PARITY.
  1731.         DB      05H             ;SELECT WR 5.
  1732.         DB      68H             ; 8 BITS, TX EN.
  1733.         DB      03H             ;SELECT WR 3.
  1734.         DB      0C1H            ; 8 BITS, RX EN.
  1735.         DB      01H             ;SELECT WR 1.
  1736.         DB      12H             ;TXINT,RXINT EN.
  1737.         DB      00H             ;SELECT RR0
  1738. ENDBUFB:
  1739. ;       ORIGIN  DATA            ; TODO
  1740. ;
  1741. ;
  1742. NPSAREA:DW      126 DUP (?)     ;NEW PROGRAM STATUS AREA
  1743. ;
  1744. ;
  1745. STATE:
  1746. CHDEST: DW      1 DUP (?)       ;CO-ROUTINE ENTRY POINT
  1747. COUNT:  DW      1 DUP (?)       ;#BYTES TO BE TRANSFERED
  1748. DEST_ADR: DW    1 DUP (?)       ;DESTINATION ADDRESS
  1749. OLD_STATE: DW   3 DUP (?)       ;CO-ROUTINE RECOVERY INFO
  1750. BANKSW: DW      1 DUP (?)       ;BANKSWITCH REGISTER
  1751. CTLWD:  DW      1 DUP (?)       ;CONSOLE I/O SWITCH CONTROL
  1752. KEYBD:  DW      41 DUP (?)      ;KEYBOARD BUFFER
  1753. HWBRK:  DW      1 DUP (?)       ;HARDWARE BREAKPOINT
  1754. BRKTAB: DW      6 DUP (?)       ;BREAKPOINT TABLE
  1755. TRCNT:  DW      1 DUP (?)       ;TRACE INSTRUCTION COUNT
  1756. TRDIS:  DW      1 DUP (?)       ;TRACE DISPLAY INTERVAL
  1757. TRINC:  DW      1 DUP (?)       ;TRACE DISPLAY COUNT
  1758. USFCW:  DW      1 DUP (?)       ;USER FLAG CONTROL DW
  1759. USPC:   DW      1 DUP (?)       ;USER PROGRAM COUNTER
  1760. U0:     DW      1 DUP (?)       ;USER REGISTER SAVE AREA
  1761. U1:     DW      1 DUP (?)
  1762. U2:     DW      1 DUP (?)
  1763. U3:     DW      1 DUP (?)
  1764. U4:     DW      1 DUP (?)
  1765. U5:     DW      1 DUP (?)
  1766. U6:     DW      1 DUP (?)
  1767. U7:     DW      1 DUP (?)
  1768. U8:     DW      1 DUP (?)
  1769. U9:     DW      1 DUP (?)
  1770. U10:    DW      1 DUP (?)
  1771. U11:    DW      1 DUP (?)
  1772. U12:    DW      1 DUP (?)
  1773. U13:    DW      1 DUP (?)
  1774. U14:    DW      1 DUP (?)
  1775. U15:    DW      1 DUP (?)
  1776.         DW      20 DUP (?)      ;USER STACK AREA
  1777. USRSTK: DW      0 DUP (?)
  1778.         DW      20 DUP (?)      ;SYSTEM STACK
  1779. STACK:  DW      0 DUP (?)
  1780.         END
  1781.