      HED DIRECTORY 
* THE DIRECTORY COMMAND IS A SYSTEM COMMAND WHICH CAUSES THE
* CONTENTS OF THE DISC DIRECTORY TO BE PRINTED ON THE SYSTEM
* CONSOLE.  THE FORMAT OF THE PRINTOUT IS AS FOLLOWS: 
* 
* <ID> <NAME>  <PURGE DATE> <DISC ADR> <LENGTH> 
* *q
* THE PURGE DATE IS PRINTED AS A 3-DIGIT INTEGER INDICATING THE DAY 
* OF YEAR AND A 2-DIGIT INTEGER INDICATING THE YEAR. THE DISC 
* ADDRESS CONSISTS OF 3 INTEGERS INDICATING DISC, TRACK, AND SECTOR.
* THESE ARE ALL PRINTED IN DECIMAL. 
* TYPING DIR-ID WILL START THE LISTING WITH THAT ID.
      SPC 2 26
      ORG LIBRA 
      SPC 1 
      CLA 
      STA CID      CLEAR CURRENT ID 
      STA DID D2
      JSB T35CH,I  S GET CHARACTER
      JMP DIRNI    COMPLETE LIST
      ADA M72B     DIGIT? 
      SSA,RSS      COULD BE 
      JMP DIR.1    NO - GET ID
      ADA .+10
      SSA 
      JMP LFRER    INVLAID CHARACTER
      LDB 0        SAVE DIGIT 
      ADB .-4        TOO BIG? 
      SSB,RSS 
      JMP LFRER    YES - ERROR
* 
      CLB          DIGIT ID OK
      STB DSUBF    SET FLAG TO INDICATE ONLY
      STA DSUBC      1 SUBCHANNEL 
      MPY .+14     COMPUTE B.P. 
      ADA DIRD0    CIRECTORY
      JMP DIR.2 
DIR.1 CCA          BACKSPACE TTY
      ADA T35CP 
      STA T35CP P}
      JSB GETID    GO TRY FOR ID
      JMP LFRER    NO CR AT END 
      LDA ID
      STA DID 22
      CMA,INA 
      STA DMID
      CCB 
      LDA A000    MASTER USER?
      STA DSUBF    SET FLAG FOR ALL DISCS 
* qq
DIR11 INB          INCREMTN SUBCHANNEL
      STB DSUBC    SAVE SUBCHANNEL
      CPB .+4      DONE?
      JMP LEND     YES
      STB 0        SUBCHANNEL IN A
      MPY .+14     GET BP DIRECTORY 
      ADA DIRD0 
DIR.2 LDB CID      GET CURRENT ID 
      SZB 
      JMP DR.17 
* 
*     OUTPUT HEADER 
* qq
      STA DPNT     SAVE POINTER 
      LDA DIRHD    LOAD ADDRESS OF HEADING
      STA MOVES 
      LDA T35B1    MOVE HEADING INTO TTY35 BUF
      STA MOVED 
      LDB .-23
      JSB MOVEW 
      LDA .+45
      LDB T35B1 
      JSB T35SP    OUTPUT HEADING AND SUSPEND 
      RSS 
* 
DR.17 STA DPNT     SAVE POINTER 
      LDB .-2      SET FLAG TO CHECK BOTH TRACKS
      LDA DID       ID? 
      SZA          IF ID=0 THEN BOTH TRACKS 
      INB          NO - JUST CHECK ONE TRACK
      STB DTFLG 
      LDB DPNT
      SZA,RSS      IF ALL IDS TO BE CHEKED THEN 
      JMP DIR.3      SKIP THE TEST
      ADB .+7 
      LDA 1,I      LOAD LENGTH
      INB 
      SZA,RSS      IF ZERO, THEN NEXT TRACK 
      JMP DIR.4 
      LDA 1,I      GET ID 
      CPA DID       SAME? 
      JMP DR.18 
      ADA DMID      NO, SUBTRACT REQUESTED ID 
DIR.4 ADB .-8      BACK TO FIRST TRACK
      SSA Au
      ADB .+7      TRACK 2
      STB DPNT     SAVE B.P. ENTRY
* 
*  B REG POINTES TO B.P. DIREC. ENTRY TO BE SCANNED 
* 
DIR.3 LDA 1,I      LOAD LENGTH
      SZA,RSS      ZERO?
      JMP DIR.5    YES - NO CHECK 
       STA WORD    SET LENGTH 
      ADB .+6 
      LDA 1,I      LOAD DISC ADDRESS
      LDB LIBDI    INPUT DIRECTORY TRACK
      JSB DISCL 
* 
* 
* *q
      LDA DPNT,I   LOAD DIRECTORY LENGTH
      CMA,INA      SET END OF TRACK 
      ADA LIBD     POINTER
      STA DEND
      LDB LIBD
DIR.9 LDA DID       ID CHECK (ARE YA 21 KID)
      SZA,RSS 
      JMP DIR.6    NO (THROW 'IM OUT) 
* 
      CPA 1,I      RIGHT ID?
      JMP DIR.6    YES
DIR.8 ADB .+8      NEXT ENTRY 
      CPB DEND     ALL DONE?
      JMP DIR.5    YES - CHECK IF MORE
      JMP DIR.9    NO - NEXT ENTRY
* qqq{
*     THE ENTRY IS POINTERED TO BY THE B REGIRSTER
* 
DIR.6 STB DIRAD    SAVE ADDRESS 
      LDA 1,I      LOAD ID
      SZA,RSS     IF THIS IS A DUMMY ENTRY THEN SKIP
      JMP DIR.8 
      CPA .-1 
      JMP DIR.8 8
      CPA CID      IS IT CURRENT? 
      JMP DIR15    YES - DON'T OUTPUT IT
      STA CID      NO - SET IT
      AND B1777    GET #
      CLB 
       DIV .100    FIRST DIGIT IN A 
      STA T35BF    SAVE IT
      LDA DIRAD,I  RELOAD ID
      RAR,RAR      GET LETTER 
      AND DIRMS      PART OF ID 
      IOR T35BF F^
      ADA DIRFS    MAKE ASCII 
      STA T35BF 
      LDA 1        GET REMAINER IN A
      JSB DIRNM    CONVERT TOA ASCII
      STA T35BF+1 
      ISZ DIRAD    POINT TO NAME
      LDA BB
      STA T35BF+2  STORE BLANKS 
DIR16 DLD DIRAD,I  GET NAME 
      DST T35BF+3    SAVE IT IN THE BUFFER
      LDB DIRAD 
      ADB .+2 
      LDA 1,I 
      STA T35BF+5 
      LDA BBll
      STA T35BF+6 6I
* 
* qq
      ISZ DIRAD    POINT TO DATE
      ADB .+2      POINT TO DATE
      STB DIRAD    RESOTRE POINTER
      LDA DIRAD,I  GET DATE 
      AND B777     GET DAY
      CLB 
      DIV .+10     A=1ST TWO DIGITS 
      BLF,BLF      B=3RD
      ADB DIR0S    MAKE ASCII 
      STB T35BF+8 
      JSB DIRNM    CONVERT FIRST 2
      STA T35BF+7 
      LDA DIRAD,I  NO GET YEAR
      ALF,ALF      ROTATE YEAR PORTION DOWN 
      RAR 
      AND B177
      JSB DIRNM    CONVERT TO ASCII 
      STA T35BF+9 
* *q
      ISZ DIRAD 
      LDA BB
      STA T35BF+10
      LDA DSUBC     LOAD SUBCHANNEL 
      ALF,ALF       ROTATE DIGIT UP 
      IOR ASC0B       AND MAKE ASCII             [E]
      STA T35BF+111
      LDA BB
      STA T35BF+12
* 
*     TRACK/SECTOR
* qq
      LDA DIRAD,I  GET DISC ADDRESS 
      CLB 
      ASR 7         GET TRACK 
      AND B377
      DIV .+10     CONVERT TO ASCII 
      BLF,BLF 
      ADB DIR0S 
      STB T35BF+14
      JSB DIRNM 
      STA T35BF+13
* *q
* *q
      LDA DIRAD,I 
      AND B77        GET SECTOR 
      JSB DIRNM 
      STA T35BF+15
* *q
* 
      ISZ DIRAD    POINT TO LENGTH
      LDA BB
      STA T35BF+16 STORE BLANKS 
      STA T35BF+17
      CLB 
      LDA DIRAD,I  CONVERT TO POSITIVE
      AND M128     ROUND UP TO NEXT SECTOR
      CMA,INA        SECTORS
      ASR 7 
      JSB DIRNM 
      STA T35BF+18
* 
*     NOW GET FILE AND PROTECT BITS 
* 
      LDA DIRAD    GET FILE BIT 
      ADA .-5 
      STA DIRAD 
      LDB 0,I      LOAD WORD
      LDA BB       LOAD BLANKS
      STA T35BF+19
      SSB          IF FILE? 
      LDA BF         THEN OUTPUT F
      STA T35BF+20
      LDA DIRAD    GET PROTECT BIT
      ADA .-1 
      LDB 0,I 
      LDA BB       LOAD BLANKS
      SSB BW
      LDA PB        PROTECTED 
      STA T35BF+21
      LDA .+43
      LDB T35B1 
      JSB T35SP    OUPTU LINE 
      LDB DPNT    READ DIRECTORY TRACK BACK IN
      LDA 1,I    GET LENGTH 
      STA WORD
      ADB .+6   GET DISC ADDRESS
      LDA 1,I 
      LDB LIBDI 
      JSB DISCL   INPUT DIRECTORY TRACK 
      LDB DIRAD    POINT BACK TO ENTRY
      ADB .-2 
      JMP DIR.8 
DIR15 LDA BB       NO ID TO BE OUTPUT 
      STA T35BF    SO FILL WITH BLANKS
      STA T35BF+1 
      ISZ DIRAD 
      JMP DIR16 
* 
* 
* qq
DIR.5 ISZ DTFLG    CHECK IF TWO TRACKS
      RSS          YES - GO FOR NEXT ONE
      JMP DIR10    NO - SEE IF ANOTHER SUBCHAN
      LDB DPNT     LOAD BASE PABE POINTER 
      ADB .+7      SET TO NEXT TRACK
      STB DPNT
      JMP DIR.3    GO READ TRACK
DIR10 LDA DSUBF    ONLY 1 SUBCHANNEL? 
      SZA,RSS 
      JMP LEND     YES - DONE?
      LDB DSUBC    NO - GO TO NEXT ONE
      JMP DIR11 
* 
DIRNI CLB          CLEAR SUBCHANNEL 
      STB DSUBC 
      INB          SET FLAG TO SEARCH ALL SUBCHANS
      STB DSUBF 
      LDA DIRD0 
      JMP DIR.2 
* 
DR.18 LDA .-2      SET FLAG TO CHECK BOTH TRACKS
      STA DTFLG 
      CLA          CLEAR A SO TEST IS RIGHT 
      JMP DIR.4 
* *q
DIRNM NOP 
      CLB          CONVERT TWO DIGIT NUMBER IN A
      DIV .+10     TO ASCII CHARACTERS
      ALF,ALF 
      ADA 1 
      ADA ASC00 
      JMP DIRNM,I 
* 
* 
BF    ASC 1, F
PB    ASC 1,P 
BB    EQU ASCBB 
DIRAD EQU T35BF+35
CID   EQU T35BF+34
DSUBF EQU T35BF+33
DTFLG EQU T35BF+32
DSUBC EQU T35BF+31
DPNT  EQU T35BF+30
DEND  EQU T35BF+29
* 
$DIR  EQU * 
      HED ROSTER
* ROSTER PRINTS A LISTING, ON THE SYSTEM CONSOLE, OF ALL
* IDS OF CURRENTLY ACTIVE USERS. THEY ARE PRINTED 8 PER LINE. 
      SPC 2 
      ORG LIBRA 
      LDA ROSLB     SET LF-BLANK IN BUFFER
      STA T35BF 
      JSB ROST8     PROCESS FIRST 8 
      DEF TTY00+?ID 
      LDA .+48      OUTPUT THEM.
      LDB T35B1 
      JSB T35SP Pk
      LDA T35BF 
      IOR HIMSK 
      STA T35BF 
      JSB ROST8     PROCESS LAST 8
      DEF TTY10+?ID 
      LDA .+48      OUTPUT THEM 
      LDB T35B1 
      JMP LEND2 
      SPC 1 
* ROST8 FILLS THE TELETYPE BUFFER WITH 8 IDS. THE FORMAT IS:
*     LF,BLANK,7(ID,BLANK,BLANK),ID 
      SPC 1 
ROST8 NOP 
      LDA T35B1     SET UP POINTER FOR FIRST ID.
      INA 
      STA ROSP
      LDA .-8       SET UP COUNTER. 
      STA ROSCSz
      LDA ROST8,I   SET UP POINTER TO ID. 
      STA ROSID 
      JMP ROS2      GO DO FIRST ID. 
ROS1  LDA ASCBB     PUT BLANKS IN AS SEPARATORS.
      STA ROSP,I
      ISZ ROSP
ROS2  LDA ROSID,I   GET ID
      SZA,RSS       TEST FOR NO ID. 
      JMP ROS3
      AND B1777     MASK NUMBER PART
      CLB           GET #/100 IN A,# MOD 100 IN B.
      DIV .100
      STB ROST      SAVE LAST 2 DIGITS. 
      STA 1         COMBINE FIRST DIGIT WITH LETTER.
      LDA ROSID,I Ia
      ARS,ARS 
      AND ROSMS &.
      ADA 1 
      ADA ROSFX X>
      STA ROSP,I    STORE IN BUFFER.
      ISZ ROSP
      LDA ROST      GET LAST 2 DIGITS.
      CLB 
      DIV .+10      SEPARATE THEM.
      ALF,ALF       PACK AND CONVERT
      ADA 1          TO ASCII.
      ADA ASC00 0S
      JMP ROS4      GO STORE IN BUFFER. 
ROS3  LDA ROSDD     IF NO ID, PUT DOTS IN BUFFER. 
      STA ROSP,I
      ISZ ROSP
ROS4  STA ROSP,I
      ISZ ROSP
      LDA ROSID     ADVANCE ID POINTER. 
      ADA .+TTY01-TTY00 
      STA ROSID 
      ISZ ROSC      ANY MORE? 
      JMP ROS1      YES.
      ISZ ROST8 
      JMP ROST8,I   NO
* *q
ROSP  EQU LTEMP 
ROSC  EQU LTEMP+1 
ROSLB OCT 5040
ROSID EQU LTEMP+2 
ROST  EQU LTEMP+3 
ROSMS OCT 17400 
ROSFX ASC 1,@0
ROSDD ASC 1,..
$ROS  EQU * 
      HED RESET 
* RESET ALLOWS A USER'S TIME-TO-DATE ENTRY TO BE MODIFIED.
* THE FORMAT IS AS FOLLOWS: 
* 
* RESET-ALL         ALL TIMES ARE SET TO ZERO 
* 
* RESET-ID          SPECIFIED USER'S TIME SET TO ZERO 
* qq
* RESET-ID,TIME     SPECIFIED ID SET TO SPECIFIED TIME. 
* 
      SPC 2 
      ORG LIBRA Ah
* 
      CLA           INITIALIZE ID TO 0. 
      STA ID
      STA REST      INITIALIZE TIME ALSO. 
      JSB T35CH,I   GET 1ST CHAR. 
      JMP LFRER     CR - - NO PARAMETERS
* 
      CPA RESCA     "A" ? 
      JMP RESX1     YES 
      CCA           BACKSPACE 
RESXE EQU * 
      ADA T35CP      BUFFER POINTER.
      STA T35CP P}
* 
      JSB GETID     GET THE ID. 
      JMP RES2      GO GET TIME--NO CARRIAGE RETURN.
* 
RES7  EQU * 
      JSB FIDT     FIND REQUESTED ID
      RSS         GOT IT
      JMP RES8
* 
* 
      ADB .+5       SET IN
      LDA REST       NEW TIME.
      STA 1,I 
* qq
      LDA IDTRA,I     OUTPUT ID TO DISC 
      LDB LIBD
      JSB DISCL Lq
      JMP LEND
* 
RES1  EQU * 
      LDA ID      ALL?
      SZA 
      JMP RES7    NON
      LDA IDTTA    YES - SET TO SCAN ALL TRACKS 
      STA IDTRA 
      LDA IDTRL 
      STA IDTLA 
* qq
RES6  LDA IDTLA,I   INPUT ID TRACK
      SZA,RSS Su
      JMP RES5         EMPTY TRACK
      STA WORD
      LDA IDTRA,I 
      LDB LIBDI 
      JSB DISCL         READ TRACK
* 
      LDB LIBD
      LDA IDTLA,I   COMPUTE # OF ENTRIES ON THIS TRACK
      ARS,ARS               TRACK 
      ARS 
      STA RESC
* 
      ADB .+5 
      LDA REST
      STA 1,I         SET TIME TO INDICATED VALUE 
      ADB .+8 
      ISZ RESC        MORE? 
      JMP *-3         YES 
* qq
      LDA IDTRA,I     NO - OUTPUT THIS TRACK
      LDB LIBD
      JSB DISCL 
RES5  LDA IDTTA       ANY MORE TRACKS?
      ADA .+3 3n
      CPA IDTRA 
      JMP LEND
      ISZ IDTRA 
      ISZ IDTLA 
      JMP RES6
      ADB .+5       CLEAR ALL TIMERS
      LDA REST      GET TIME
RES42 EQU * 
      ISZ RESC      TEST FOR ANY MORE.
      RSS 
      JMP RES6      GO WRITE IDT BACK OUT.
      STA 1,I       STORE TIME
      ADB .+8       BUMP ADDRESS TO NEXT ENTRY. 
      JMP RES42     LOOP
* 
RESX1 EQU * 
      JSB T35CH,I   GET NEXT CHARACTER
      JMP LFRER     ERROR, NOT ENOUGH CHARACTERS
      CPA RESCL     "L" ? 
      JMP RESX2     YES 
      LDA .-2 
      JMP RESXE     GO TRY TO PACK ID 
RESX2 EQU * {{
      JSB T35CH,I   GET ANOTHER 
      JMP LFRER     ERROR, NOT ENOUGH CHARACTERS
      CPA RESCL     "L" ? 
      JMP RESX3     YES, RESET ALL USERS
      JMP LFRER     NOT "ALL" OR LEGAL ID 
RESX3 EQU * 
      JSB T35CH,I   GET ANOTHER CHARACTER 
      JMP RES1      CR, RESET TO ZERO 
* 
*  COMPUTE THE TIME 
* 
RES2  CPA .+54B     TEST FOR COMMA
      JSB T35CH,I   COMMA OK--GET NEXT CHAR.
      JMP LFRER     ERROR IF NONE.
      JMP *+3 
RES3  JSB T35CH,I   GET NEXT CHAR.
      JMP RES1
      ADA M72B      TEST FOR DIGIT. 
      SSA,RSS S
      JMP LFRER     ERROR.
      ADA .+10
      CLE,SSA 
      JMP LFRER     ERROR.
      STA RESD      SAVE DIGIT. 
      LDA REST      GET PARTIAL RESULT. 
      MPY .+10      COMPUTE NEW VALUE.
      ADA RESD      ADD IN NEW DIGIT. 
      STA REST      SAVE NEW RESULT.
      SEZ,SZB,RSS   TEST FOR OVERFLOW.
      JMP RES3
      JMP LFRER     ERROR.
* 
RES8  LDA RESMA     MOVE
      STA MOVES       ERROR 
      LDA T35B1         MESSAGE 
      STA MOVED           TO
      LDB .-6               TTY35 
      JSB MOVEW               BUFFER
      LDA .+111
      LDB T35B1 
      JMP LEND2 
* 
RESMA DEF *+1 
      OCT 5116
      ASC 5,O SUCH ID 
RESCA OCT 101       ASCII "A" 
RESCL OCT 114       ASCII "L" 
* 
RESC  EQU LTEMP 
REST  EQU LTEMP+1 
RESD  EQU LTEMP+2 
$RES  EQU * 
      HED SPEED 
*   THE SPEED COMMAND IS USED TO CONFIGURE A PORT FOR A 
*   SPECIFIED SPEED AND CHARACTER SIZE.  THE FORMAT FOR 
*   THE COMMAND IS: 
* *q
*       SPEED-BAUD RATE,CHAR. SIZE,PORT# OR ALL [,PORT#]... 
* 
      SPC 1 
      ORG LIBRA 
      JSB SPEDN     GET THE 
      LDA SNUM        BAUD RATE 
      AND B377      MASK TO 8 BITS. 
      LDB A         STORE TEMPORARILY.
      ADA BAUDL     LESS THAN 47B(=300 BAUD)? 
      SSA 
      JMP LFRER     YES. ERROR! 
      LDA B         NO. GREATER THAN 277B(=75 BAUD)?
      ADA BAUDH 
      SSA,RSS 
      JMP LFRER     YES. ERROR! 
      STB SPRAM     NO. STORE BAUD RATE.
      JSB SPEDN     GET CHARACTER SIZE
      LDA SPRAM     A = BAUD RATE 
      LDB SNUM
      CPB .+1       CHARACTER SIZE = 1? 
      RSS 
      JMP SPD1      NO
      IOR BIT8      YES, ADD TO SPEED PARAMETER 
      JMP SPD2
SPD1  CPB .+2       CHARACTER SIZE = 2? 
      RSS 
      JMP LFRER     NO - ERROR
      IOR BIT9      YES, ADD TO SPEED PARAMETER 
SPD2  STA SPRAM 
* 
**   BAUD RATE AND SPEED OK - NOW GET PORT NUMBERS
* 
      JSB T35CQ     GET NEXT CHARACTER
      JMP LFRER     CR - ERROR
      CPA SP.A      IS CHARACTER AN "A"?
      JMP SPD7      YES 
      CCA           NO, BACK-UP 
      ADA T35CP       CHARACTER 
      STA T35CP         POINTER 
SPD3  CLA           CLEAR PORT
      STA SNUM        INDICATOR 
SPD4  JSB T35CQ     GET NEXT CHARACTER
      JMP SPD5      CARRIAGE RETURN 
      CPA .+54B     COMMA?
      JMP SPD6      YES 
      ADA D72       NO
      SSA,RSS       CHECK Kl
      JMP LFRER       FOR 
      ADA .+10          DIGIT 
      SSA Au
      JMP LFRER     NO - ERROR
      STA STEMP     COMPUTE 
      LDA SNUM
      MPY .+10        PORT
      ADA STEMP 
      STA SNUM          NUMBER
      JMP SPD4      GET NEXT CHARACTER
* 
SPD5  CCA           CR, SET COUNTER 
      STA SCNTR       FOR LAST PORT 
SPD6  LDA SNUM      IS PORT NUMBER
      ADA NPORT       IN CORRECT RANGE? 
      SSA,RSS 
      JMP LFRER     NO
      JSB SPORT     YES, UPDATE SPEED FOR THIS PORT 
      JMP SPD3
* qq
**   ADJUST SPEED FOR ALL PORTS 
* 
SPD7  JSB T35CQ     GET NEXT CHAR.
      JMP LFRER     CR - ERROR
      CPA SP.L      CHAR. A "L"?
      RSS 
      JMP LFRER     NO - ERROR
      JSB T35CQ     GET NEXT CHAR 
      JMP LFRER     CR - ERROR
      CPA SP.L      CHAR A "L"? 
      RSS 
      JMP LFRER     NO - ERROR
      JSB T35CQ     GET NEXT CHAR 
      RSS 
      JMP LFRER     ERROR - NOT CR
      LDA NPORT     SET COUNTER TO
      STA SCNTR       NUMBER OF PORTS 
      CLA           INITIALIZE PORT 
      STA SNUM        NUMBER INDICATOR
SPD8  JSB SPORT     SET SPEED FOR NEXT PORT 
      ISZ SNUM      BUMP PORT NUMBER INDICATOR
      JMP SPD8
* 
**   SPEED UPDATE SUBROUTINE
* qq
SPORT NOP P
      LDA SNUM      A = PORT# 
      ADA TTYTP     ADD TELETYPE TABLE POINTER
      LDB A,I 
      ADB .+?ID     B => ID 
      LDA B,I       A = ID
      SZA           IS A USER LOGGED ON THIS PORT?
      JMP SPRT      YES - SKIP
      ADB .+?RPRM-?ID  NO 
      LDA B,I       B = RECEIVE PARAM 
      AND SMASK     SET 
      IOR SPRAM       NEW 
      STA B,I           SPEED 
      STA STEMP 
      INB 
      LDA B,I       B = SEND PARAM
      AND HIMSK     SET 
      IOR SPRAM       NEW 
      STA B,I           SPEED 
      LDB SNUM
      BLF,BLF       B = POSITIONED UNIT#
      JSB MUXR,I    OUTPUT SEND PARAM 
      LDA STEMP     A = RECEIVE PARAM 
      LDB SNUM
      BLF,BLF       B = POSITIONED UNIT#
      JSB MUXR,I    OUTPUT RECEIVE PARAM
SPRT  EQU * 
      ISZ SCNTR     ALL DONE? 
      JMP SPORT,I   NO
      JMP LEND      HAUL
      SPC 1 
* qq
**   NUMBER RETRIEVAL SUBROUTINE
* 
SPEDN NOP 
      CLA           INITIALIZE
      STA SNUM        ACCUMULATOR 
SPDN  JSB T35CQ     GET CHARACTER 
      JMP LFRER     CR - ERROR
      CPA .+54B     COMMA?
      JMP SPEDN,I   YES, RETURN 
      ADA D72       NO
      SSA,RSS       CHECK 
      JMP LFRER       FOR 
      ADA .+10          DIGIT 
      SSA 
      JMP LFRER     ERROR 
      STA STEMP 
      LDA SNUM      COMPUTE 
      MPY .+10        THE 
      ADA STEMP         NUMBER
      STA SNUM
      JMP SPDN      GET NEXT CHAR 
* *q
BAUDL DEC -47 
BAUDH DEC -192
SNUM  BSS 1 
SPRAM BSS 1 
STEMP BSS 1 
SCNTR OCT 0 
SP.A  OCT 101 
SP.L  OCT 114 
SMASK OCT 174000
$SPE  EQU * 
