home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol144 / pmdlalds.frg < prev    next >
Encoding:
Text File  |  1984-04-29  |  12.1 KB  |  553 lines

  1. ;
  2. ;DIALING ROUTINES TAKEN (AND GREATLY MODIFIED) FROM PMMI MANUAL.
  3. ;MODEM CONTROL COMMAND WORDS
  4.  
  5. CLEAR    EQU 3FH    ;IDLE MODE
  6. MAKEM    EQU 1    ;TELE LINE MAKE (OFF HOOK)
  7. BRKM    EQU 0    ;TELE LINE ON HOOK (BREAK DURING DIALING)
  8. DTMSK    EQU 1    ;DIAL TONE MASK
  9. RBLMT    EQU 70    ;# OF SEC*10 TO WAIT BEFORE GIVING NO RING HEARG MSG
  10. RBWAIT    EQU 50    ;# OF SEC*10 DELAY BEFORE REDIALING NUMBER
  11. TMPUL    EQU 80H    ;TIMER PULSES MASK BIT
  12. ;
  13. DFLTMD    EQU 0    ;0=PULSE DIAL, ELSE MF
  14. ONTIM    EQU 7    ;TONE ON TIME (10 MS UNITS)
  15. OFTIM    EQU 7    ;TONE OFF TIME
  16. MFPORT    EQU 0D8H    ;8255 PORT A
  17. MFCTL    EQU 0DBH    ;8255 CTRL
  18. DYCON    EQU 0300H    ;FOR 10 MS DELAY @ 4MHZ
  19. ;
  20. NUMINS    EQU    '^'    ;INSERT USER NR HERE
  21. GOMF    EQU    '%'    ; GOTO M.F. MODE NOW
  22. WTDLTN    EQU    ','    ;WAIT FOR DIAL TONE
  23. ;
  24. DIALPL:    LDA    PMMIBYTE ;FLAG FOR PMMI OPERATION
  25.     ORA    A    ;SET FLAGS
  26.     RZ        ;PMMI FALSE, RETURN
  27.     MVI    A,80H
  28.     OUT    MFCTL    ;8255 CTRL SETUP
  29.     XRA    A    ; 0
  30.     STA    CRFLAG    ;CONTINUOUS REDIAL FLAG
  31.     STA    RBFLG    ;RINGBACK NOT WANTED INIT
  32.     CALL    DIALPL0    ; DISCONNECT, RECONNECT, WAIT DIAL TONE
  33.     JC    DILAGN    ;ASK IF TRY AGAIN
  34.     LXI    H,CMDBUF+1 ;POINT # OF CHARS IN BUFF
  35.     MOV    A,M    ;GET # OF CHARS
  36.     CPI    4    ;4 OR MORE CHARS TYPED BEFORE <CR>?
  37.     JC    ENTNUM    ;NO, ASK FOR NUMBER
  38.     LXI    H,CMDBUF+6 ;POINT TO NUMBER TO DIAL
  39.     JMP    DIAL10    ;CHECK IF LIB #, & DIAL
  40.  
  41. DIALPL0:
  42.     CALL    DISCONNT
  43.     CALL    ILPRT
  44. DB    CR,LF,'Waiting for dial tone',CR,LF,0
  45.  
  46.     MVI    A,MAKEM    ;MAKE MAKE (OFF-HOOK)
  47.     CALL    OUT$MODCTLP ;DO IT
  48.     MVI    A,CLEAR OR 80H
  49.     CALL    OUT$MODCTL2
  50. DTW:    MVI    D,DTMSK    ;DIAL TONE MASK
  51.     MVI    C,200    ;20 SECOND WAIT
  52.     CALL    WAIT    ;WAIT FOR DIAL TONE
  53.     NOP        ;DELAY
  54.  
  55. ; WAIT SUBROUTINE WILL RETURN WITH CARRY SET IF UNABLE TO
  56. ; GET DIALTONE, ELSE CARRY NOT SET MEANS DIALTONE RECEIVED
  57.  
  58.     RNC        ;IF DIAL TONE WITHIN 20 SECONDS
  59.     CALL    ILPRT    ;ELSE, MESSAGE AND RETURN WITH CARRY SET
  60. DB    CR,LF
  61. DB    '++No dial tone after 20 seconds++',CR,LF,0
  62.     STC
  63.     RET
  64.  
  65. ENTNUM:    ;this is all the set-up for the print at entnum2.
  66.     MVI    C,13    ;number of lines to move
  67.     LXI    H,NUMBLIB ;address of source memory
  68.     LXI    D,DBUF    ;address of target memory
  69.     CALL    NEWLINE    ;start with CRLF
  70.     STAX    D    ;+LF
  71.     INX    D    ;and bump it
  72.  
  73. ENTNUM1:
  74.     MVI    B,32    ;number of bytes to move
  75.     CALL    MOVE    ;move to buffer
  76.     CALL    SPACES    ;2 entries + 3 spaces = 67 characters
  77.     MVI    B,32
  78.     CALL    MOVE
  79.     CALL    NEWLINE
  80.     DCR    C    ;number of lines to print
  81.     JZ    ENTNUM2
  82.     JMP    ENTNUM1
  83.  
  84.  
  85. ENTNUM2:
  86.     MVI    A,'$'
  87.     STAX    D
  88.     MVI    C,PRINT
  89.     LXI    D,DBUF    ;point to table of numbers to print
  90.     CALL    BDOS
  91.     CALL    CRLF
  92.  
  93.     CALL    ILPRT
  94. DB    'Enter number or library letter - Type C/R when finished,',CR,LF
  95. DB    'CTRL-X cancels while dialing:        ',0
  96.  
  97.     LXI    D,CMDBUF
  98.     CALL    INBUFF
  99.  
  100. DIALLP1:
  101.     LDA    CMDBUF+1
  102.     ORA    A    ;NULL MEANS <CR> WAS TYPED
  103.     JZ    BORTIT    ;ABORT DIALING, RETURN TO MENU
  104.  
  105.     LXI    H,CMDBUF+2 ;FIRST TYPED CHAR OF NUMBER TO DIAL
  106.  ;
  107.  ; ENTER THIS ROUTINE WITH HL POINTING TO NUMBER TO DIAL
  108.  ;
  109. DIAL10:
  110.     MVI    B,'A'    ;FIRST LETTER OF ALPHABET
  111.     MVI    E,0    ;COUNTS NUMBER OF LETTERS TO MATCH
  112.     MVI    C,26    ;NUMBER OF LETTERS IN ALPHABET
  113.     MOV    A,M    ;GET CHAR BUFFER
  114. DIAL11:
  115.     CMP    B    ;NUMBER FROM TABLE?
  116.     JZ    LIBSET
  117.     INR    B    ;MAKE NEXT LETTER (A-Z)
  118.     INR    E    ;COUNT UP
  119.     DCR    C    ;COUNT DOWN
  120.     JZ    DIALLPX    ;NOT A LETTER
  121.     JMP    DIAL11    ;LOOP
  122.  
  123. LIBSET:
  124.     LXI    H,NUMBLIB ;PHONE NUMBER LIBRARY
  125.     LXI    B,32    ;LENGTH OF LIBRARY ENTRY
  126.     MOV    A,E    ;NUMBER OF TIMES TO ADD 32 TO HL
  127.     ORA    A    ;SET FLAGS
  128.     JZ    DIAL13
  129.  
  130. DIAL12:
  131.     MOV    A,M    ;GET FIRST CHAR OF SELECTED LIB ENTRY
  132.     ORA    A    ;SET FLAGS
  133.     JZ    DIALLP2    ;SEND BADLIB MSG
  134.     DAD    B    ;INCREMENT HL BY 30
  135.     DCR    E    ;COUNTDOWN
  136.     JNZ    DIAL12    ;NOT THERE YET, LOOP
  137.  
  138. DIAL13:
  139.     MVI    B,32    ;NUMBER OF CHARACTERS TO GET FROM TABLE
  140.     LXI    D,CMDBUF+1 ;POINT TO BUFFER
  141.     XCHG        ;HL POINTS TO CMDBUF+1
  142.     MOV    M,B    ;STORE # OF BYTES IN A TABLE ENTRY
  143.     XCHG        ;RESTORE REG.
  144.     INX    D    ;POINT TO FIRST CHAR POSITION IN BUFFER
  145.     CALL    MOVE    ;MOVE TABLE ENTRY TO BUFFER
  146.  
  147. DIALLPX:
  148.     LDA    CMDBUF+1
  149.     MOV    E,A    ;NUMBER OF CHARS IN BUFF
  150.     LXI    H,CMDBUF+2 ;POINT FIRST CHAR
  151. ;
  152. DILP2A:    XRA    A
  153.     STA    INSACT
  154.     MVI    A,DFLTMD ;PULSE OR MF DEFAULT
  155.     STA    MFMODE
  156. DIALLP2:
  157.     MOV    A,M    ;GET FIRST # FROM BUFFER
  158.     INX    H    ;BUMP POINTER NOW
  159.  ;
  160.  ; ROUTINE TO PRINT 'BADLIB' MESSAGE AND ABORT IF NULL ENCOUNTERED
  161.  ;
  162.     ORA    A    ;SET FLAGS
  163.     PUSH    D    ;SAVE DE REGISTERS
  164.     LXI    D,BADLIB ;BAD LIBRARY NUMBER IF NULL
  165.     MVI    C,PRINT    ; 9
  166.     PUSH    PSW    ;SAVE A AND FLAGS
  167.     CZ    BDOS
  168.     POP    PSW    ;RESTORE A AND FLAGS
  169.     POP    D    ;RESTORE DE REGISTERS
  170.     JZ    BORTIT    ;ABORT
  171. ;
  172. ; DIAL A DIGIT, CHECK KBD FOR ABORT
  173. ;
  174.     CALL    DIAL    ;DIAL IT
  175.     CALL    STAT    ; KEYPRESS?
  176.     ORA    A    ;SET FLAGS
  177.     CNZ    KEYIN    ;YES, GO GET IT
  178.     CPI    CAN    ; ^X?
  179.     JZ    BORTIT    ;YES, ABORT
  180.     PUSH    D    ;SAVE DE
  181.     PUSH    H    ;SAVE HL
  182.     MVI    B,1    ;WAIT 1 TIME INTERVAL
  183.     CALL    TIMER
  184.     POP    H    ;RESTORE HL
  185.     POP    D    ;RESTORE DE
  186.     DCR    E    ;COUNT DOWN CHARS IN BUFF
  187.     JNZ    DIALLP2    ;NOT DONE, LOOP
  188.     LDA    INSACT
  189.     ORA    A
  190.     JNZ    INSEND
  191.     LDA    RBFLG
  192.     ORA    A
  193.     JZ    DIALDN    ;DIALING DONE
  194.     JMP    RINGBK
  195. ;
  196. BADLIB:    DB    CR,LF,'++Bad library number called++',CR,LF,'$'
  197. ;
  198. INSEND:    XRA    A
  199.     STA    INSACT
  200.     LHLD    CANHSV
  201.     LDA    CANESV
  202.     MOV    E,A
  203.     JMP    DIALLP2
  204. ;
  205. DISCONNT:
  206.     XRA    A    ;0
  207.     CALL    OUT$MODCTL2 ;CLEAR DAV, ESD, ETC
  208.     CALL    OUT$MODCTLP ;HANG-UP
  209.     PUSH    B
  210.     MVI    B,8    ;wait for PMMI to disconnect
  211.     CALL    TIMER
  212.     POP    B
  213.     RET
  214.  
  215. TIMER:    LDA    PULSERATE    ;TRATE 250, VALUE FOR .1 SEC INTERVAL
  216.     CALL    OUT$BAUDRP ;B-REG CONTAINS NUMBER OF .1 SEC INTERVALS
  217. TIMES:    CALL    IN$BAUDRP  ;TO COUNT
  218.     ANI    TMPUL
  219.     JZ    TIMES    ;WAIT FOR TIMER TO GO HIGH
  220. TIMEE:    CALL    IN$BAUDRP
  221.     ANI    TMPUL
  222.     JNZ    TIMEE    ;WAIT FOR TIMER TO GO LOW
  223.     DCR    B
  224.     JNZ    TIMES
  225.     RET
  226.  
  227. BORTIT:    CALL DISCONNT
  228.     JMP    MENU
  229.  
  230. ;AUTO DIALER
  231.  
  232. DIAL:    CALL    TYPE    ;PRINT WHATEVER CHARACTER, DASHES, ETC.
  233.     CPI    '@'    ;CANNED NUMBER?
  234.     JZ    CANST1
  235.     CPI    '#'
  236.     JZ    CANST2
  237.     CPI    NUMINS    ;NUMBER INSERT?
  238.     JZ    NINSRT
  239.     CPI    GOMF    ;GO TO MF MODE?
  240.     JZ    MFSET
  241.     CPI    WTDLTN    ;WAIT 2ND DIAL TONE?
  242.     JZ    DTWAIT
  243.     CPI    '0'
  244.     RC        ;DIGIT MUST BE AT LEAST 0..
  245.     CPI    'R'    ;COULD IT BE A RINGBACK CHARACTER
  246.     JNZ    DIAL1    ;NO? - JUMP
  247.     PUSH    PSW    ;SAVE ACCUMULATOR & FLAGS
  248.     MOV    A,E    ;GET # OF CHAR LEFT INTO ACC.
  249.     CPI    01H    ;IS THIS THE LAST CHARACTER?
  250.     JZ    RBSET    ;IF SO, IT MUST BE RINGBACK CHAR - DO RINGBACK
  251.     POP    PSW    ;EVERYTHING BACK AS IT WAS
  252. DIAL1:    MOV    C,A    ;SAVE THE CHAR
  253.     LDA    MFMODE
  254.     ORA    A    ;IN EFFECT?
  255.     MOV    A,C
  256.     JNZ    MFDIG    ;YES
  257.     CPI    '9'+1
  258.     RNC        ;..AND NOT MORE THAN 9
  259.     ANI    0FH    ;STRIP ASCII -- COULD ALSO DO SUI 30H ('0')
  260.     JNZ    DIALS
  261.     MVI    A,10    ;CONVERT ZERO TO 10 PULSES
  262. DIALS:    MOV    C,A
  263.     LDA    PULSERATE ;CONTAINS VALUE FOR DIAL SPEED
  264.     CALL    OUT$BAUDRP
  265. DIALC:    CALL    IN$BAUDRP
  266.     ANI    TMPUL
  267.     JNZ    DIALC
  268. DIALB:    CALL    IN$BAUDRP
  269.     ANI    TMPUL
  270.     JZ    DIALB
  271. MAKEP:    MVI    A,MAKEM
  272.     CALL    OUT$MODCTLP
  273. TIMEM:    CALL    IN$BAUDRP
  274.     ANI    TMPUL
  275.     JNZ    TIMEM
  276.     MVI    A,BRKM
  277.     CALL    OUT$MODCTLP
  278. TIMEB:    CALL    IN$BAUDRP
  279.     ANI    TMPUL
  280.     JZ    TIMEB
  281.     DCR    C
  282.     JNZ    MAKEP
  283.     MVI    A,MAKEM
  284.     CALL    OUT$MODCTLP
  285.     MVI    B,2
  286.     CALL    TIMER
  287.     RET
  288. ;
  289. CANST1:    SHLD    NUMHSV    ;PTR TO NUMBER
  290.     MOV    A,E
  291.     STA    NUMESV    ;COUNT LEFT
  292.     LXI    H,CANLN1
  293. CNRCOM:    MOV    E,M
  294.     INX    H
  295.     RET
  296. ;
  297. CANST2:    SHLD    NUMHSV
  298.     MOV    A,E
  299.     STA    NUMESV
  300.     LXI    H,CANLN2
  301.     JMP    CNRCOM
  302. ;
  303. NINSRT:    SHLD    CANHSV    ;PTR TO CANNED NUMBER
  304.     MOV    A,E
  305.     STA    CANESV    ;CANNED COUNT LEFT
  306.     STA    INSACT    ;MARK INSERT ACTIVE
  307.     LHLD    NUMHSV    ;RESTORE NUMBER PTR
  308.     LDA    NUMESV
  309.     MOV    E,A    ;RESTORE COUNT
  310.     RET
  311. ;
  312. MFSET:    MVI    A,0FFH
  313.     STA    MFMODE
  314.     RET
  315. ;
  316. RBSET:    POP    PSW    ;ADJUST STACK
  317.     MVI    A,0FFH
  318.     STA    RBFLG    ;WANT RINGBACK
  319.     RET
  320. ;
  321. DTWAIT:    CALL    DTW    ;DIAL TONE TEST
  322.     RNC        ;GOT IT
  323.     POP    PSW    ;RETN OFF STACK
  324.     JMP    DILAGN
  325. ;
  326. ;    MULTI-FREQ. CALLING ROUTINE
  327. ;
  328. MFDIG:    PUSH    H
  329.     LXI    H,MFTBL
  330.     SUI    '0'    ;ASCII TO COUNT
  331.     ADD    L
  332.     MOV    L,A
  333.     JNC    NOCY
  334.     INR    H
  335. NOCY:    MOV    A,M
  336.     CMA
  337.     OUT    MFPORT
  338.     MVI    B,ONTIM
  339.     CALL    MFDLY
  340.     MVI    A,0FFH
  341.     OUT    MFPORT
  342.     MVI    B,OFTIM
  343.     CALL    MFDLY
  344.     POP    H
  345.     RET
  346. ;
  347. MFDLY:    LXI    H,DYCON
  348.     INR    H
  349. DYLP:    XTHL
  350.     XTHL
  351.     DCR    L
  352.     JNZ    DYLP
  353.     DCR    H
  354.     JNZ    DYLP
  355.     DCR    B
  356.     JNZ    MFDLY
  357.     RET
  358. ;
  359. RINGBK:    LDA    CMDBUF+1 ;GET # OF CHAR IN BUFFER
  360.     SUI    01    ;SUBTRACT 1 TO AVOID THE RINGBACK CHAR
  361.     STA    CMDBUF+1 ;STORE THE NEW VALUE
  362.     MVI    D,DTMSK    ;LOAD TONE DETECT MASK
  363.     MVI    C,RBLMT    ;SET TIMER FOR RBLMT NUMBER OF SECONDS
  364.     CALL    WAIT
  365.     JC    RBTIME    ;JUMP IF NO RING DETECTED
  366.     MVI    B,25    ;WAIT 2.5 SEC
  367.     CALL    TIMER
  368.     CALL    IN$BAUDRP ;IS TONE STILL PRESENT?
  369.     ANA    D
  370.     JNZ    RNGBK1
  371.     JMP    DILAGN    ;YES, MUST BE BUSY
  372.  
  373. RNGBK1:    CALL    HANGP    ;HANG UP THE PHONE
  374.     MVI    B,RBWAIT ;WAIT X SEC
  375.     CALL    TIMER
  376.     CALL    DIALPL0    ;GO OFF HOOK & LISTEN FOR DIAL TONE
  377.     JNC    DIALLPX    ;GO REDIAL NUMBER
  378.     JMP    DILAGN    ;NO DIAL TONE HEARD
  379.  
  380. RBTIME:    CALL    CRLF
  381.     JMP    RNGBK1    ;HANGUP, REDIAL, & LISTEN FOR CARRIER
  382.  
  383.  
  384. ;TIME OUT ROUTINE. MUST BE CALLED WITH MASK IN D REG FOR INPUT
  385. ;AT RELATIVE PORT 2 AND NUMBER OF SECONDS * 10 IN C REG.
  386.  
  387. WAIT:    MVI    B,1    
  388.     CALL    TIMER    ;WAIT FOR TIMER TO GO HIGH THEN LOW
  389.     CALL    IN$BAUDRP ;PMMIADDR+2 (MODEM STATUS PORT)
  390.     ANA    D    ;(CTS or DIALTONE MASK)
  391.     RZ        ;ACTIVE LOW, SO RETURN ON 0
  392.     PUSH    B    ;SAVE..
  393.     PUSH    D    ;..ACTIVE REG'S
  394.     CALL    STAT    ;KEYPRESS?
  395.     ORA    A    ;SET FLAGS
  396.     CNZ    KEYIN    ;YES, GET CHAR
  397.     POP D        ;RESTORE..
  398.     POP B        ;..REGS
  399.     CPI    CAN    ;^X?
  400.     JZ    DISCON1    ;YES, DISCONNECT, JMP TO MENU
  401.     ANI    5FH    ;ANY CASE OK
  402.     CPI    'C'
  403.     JZ    WAIT1
  404.     DCR C        ;COUNT-DOWN
  405.     JNZ    WAIT
  406.     STC        ;SET CARRY TO INDICATE MASK NOT SET
  407.     RET
  408. ;
  409. WAIT1:    ORA    A    ;ACCEPT
  410.     RET
  411. ;
  412. HANGP:    MVI    A,CLEAR
  413.     CALL    OUT$MODCTL2
  414.     MVI    A,0
  415.     CALL    OUT$MODCTLP
  416.     RET
  417.  
  418. DIALDN:    CALL    CRLF
  419.     MVI    A,0FFH        ;TURN ON DTR
  420.     CALL    OUT$MODCTL2 ;TIMER RATE?
  421.  
  422.     MVI    B,1
  423.     CALL    TIMER    ;WAIT FOR MODEM TO TURN ON DTR
  424.  
  425.     MVI    A,5DH    ;2 STOP BITS, NO PARITY, 8 DATA BITS
  426.             ;+ NO DISCONNECT AFTER 17 SECS
  427.     CALL    OUT$MODCTLP
  428.  
  429.     MVI    D,4      ;CLEAR TO SEND MASK
  430.     MVI    C,WAITCTS ;wait time for cts (25.5 SEC MAX)
  431.     CALL    WAIT
  432.     JNC    GOTCTS    ;GOT RESPONSE
  433.     MVI    C,100    ;10 MORE SECS
  434.     CALL    WAIT    ;GIVE A BIT MORE
  435.  
  436. GOTCTS:    MVI    A,07FH    ;KILL MONITOR
  437.     CALL    OUT$MODCTL2
  438.     JNC    CONMADE    ;CONNECTION MADE
  439.  
  440.     CALL    DISCONNT
  441. DILAGN:
  442.     LDA    CRFLAG    ;CONTINUOUS REDIAL FLAG
  443.     ORA    A
  444.     JNZ    DILAGN0
  445.     CALL    ILPRT
  446. DB    CR,LF,'No answer after time-out.  Redial? (Y/N/C): ',BELL,0
  447.     CALL    KEYIN    ;GET RESPONSE
  448.     CALL    TYPE    ;ECHO IT
  449.     CALL    UCASE    ;ANI 5FH
  450.     CALL    CRLF    ;NEW LINE
  451.     CPI    'N'    ;REDIAL?
  452.     JZ    MENU    ;NO, GO MENU
  453.     CPI    'Y'    ;REDIAL?
  454.     JZ    DILAGN0    ;YES, REDIAL
  455.     CPI    'C'    ;CONTINUOUS REDIAL?
  456.     JNZ    DILAGN    ;INVALID RESPONSE, ASK AGAIN
  457.     XRA A ! CMA    ;0FFH
  458.     STA    CRFLAG    ;CONTINUOUS REDIAL FLAG
  459.  DILAGN0:
  460.     MVI    B,50    ;5 seconds wait for pmmi reset
  461.     CALL    TIMER    ;else busy tone may be sensed as dialtone
  462.     CALL    DIALPL0    ;WAIT FOR DIAL TONE
  463.     JNC    DIALLP1    ;DIAL NUMBER
  464.     JMP    DILAGN    ;NO DIAL TONE AFTER 10 SECS
  465.  
  466. CONMADE:
  467.     CALL    ILPRT
  468. DB    CR,LF,'Connection established - Select options: ',BELL,0
  469. DILAGN1:
  470.     CALL    STAT    ;KEYPRESS?
  471.     ORA    A    ;SET FLAGS
  472.     JNZ    GETCMD    ;KEY PRESSED, GO GET OPTIONS
  473.     MVI    A,BELL
  474.     CALL    TYPE    ;RING BELL
  475.     LXI    B,2000H
  476. DILAGN2:        ;@7.32.........
  477.     DCR    C
  478.     JNZ    DILAGN2    ;KILL SOME TIME FOR TERMINAL TO PROCESS BELL
  479.     DCR    B
  480.     JNZ    DILAGN2    ;@7.32.........
  481.     JMP    DILAGN1    ;LOOP
  482. ;
  483. INSACT:    DB    0    ;INSERT ACTIVE
  484. MFMODE:    DB    DFLTMD
  485. CANHSV:    DS    2
  486. CANESV:    DS    1
  487. NUMHSV:    DS    2
  488. NUMESV:    DS    1
  489. RBFLG:    DB    0    ;RINGBACK FLAG
  490. CRFLAG:    DB    0    ; CONTIN REDIAL FLAG
  491. ;
  492. MFTBL:    DB    82H,11H,12H,14H    ;0,1,2,3
  493.     DB    21H,22H,24H,41H    ;4,5,6,7
  494.     DB    42H,44H,81H,84H    ;8,9,*,#
  495.     DB    18H,28H,48H,88H    ;A,B,C,D
  496.     DB    71H,72H,74H,78H    ;C1,C2,C3,C4
  497.     DB    17H,27H,47H,87H    ;R1,R2,R3,R4
  498. ;
  499. ; END OF PMMI ROUTINES
  500. ;
  501. ;
  502. ;THE NON PMMI SETUP ROUTINES ARE INTENDED TO COME FROM
  503. ;THE USER OVERLAY. THE FOLLOWING IS A SAFETY NET
  504. ;
  505. SETUPR:        RET
  506. ;
  507. ; PHONE NUMBER LIBRARY TABLE FOR DIALING FROM LIBRARY
  508. ; OF NUMBERS STORED IN THESE DB'S AT ASSEMBLY-TIME.
  509. ; EACH DB MUST BE 32 CHARACTERS LONG FOR PROPER OPERATION.
  510. ; A 'DB 0' INDICATES NO DIALING, PROGRAM WILL DISCONNECT
  511. ; AND RETURN TO COMMAND MODE.  LAST DB MUST BE DB 0. UP TO
  512. ; 26 NUMBERS ARE ALLOWED.
  513. ;
  514. NUMBLIB:
  515. ;    '----5---10---15---20---25-----32'
  516. DB    'A=Amrad           1-703-734-1387'    ;'A'
  517. DB    'B=                              '    ;'B'
  518. DB    'C=Cnode St.Coll.  1-814-238-4857'    ;'C'
  519. DB    'D=C.Cliff C.C.     @312-234-9257'    ;'D'
  520. DB    'E=Ron Fowler      @313-729-1905R'    ;'E'
  521. DB    'F=Chuck Forsberg  1-503-621-3193'    ;'F'
  522. DB    'G=Gasnet NASA      @301-344-9156'    ;'G'
  523. DB    'H=Dave Hardy       @313-846-6127'    ;'H'
  524. DB    'I=Wayne Hammerly   @301-953-3753'    ;'I'
  525. DB    'J=Sigi Kluger      @915-598-1668'    ;'J'
  526. DB    'K=David Kozinn    1-216-334-4604'    ;'K'
  527. DB    'L=Program Store   1-202-337-4694'    ;'L'
  528. DB    'M=Kelly Smith     1-805-527-9321'    ;'M'
  529. DB    'N=Ken Stritzel     @201-584-9227'    ;'N'
  530. DB    'O=SYSOP Sys        @313-885-0506'    ;'O'
  531. DB    'P=K.Petersen      @313-759-6569R'    ;'P'
  532. DB    'Q=R.Plouffe       1-303-524-2549'    ;'Q'
  533. DB    'R=Bruce Ratoff     @201-272-1874'    ;'R'
  534. DB    'S=ACGNJ ABBS       @201-968-1074'    ;'S'
  535. DB    'T=Tech. CBBS       @313-846-6127'    ;'T'
  536. DB    'U=PMMI            1-703-379-0303'    ;'U'
  537. DB    'V=Toronto I       1-416-231-9538'    ;'V'
  538. DB    'W=Toronto II      1-416-231-1262'    ;'W'
  539. DB    'X=                              '    ;'X'
  540. DB    'Y=                              '    ;'Y'
  541. DB    'Z=                              '    ;'Z'
  542. DB    0                    ; end
  543. ;
  544. ;    W. EARNEST NUMBER    @  as of 12/20/82
  545. CANLN1:    DB    CANM1E-CANNM1 ;CANNED NUMBER LENGTH
  546. CANNM1:    DB    '4342915,%xxxxxxxx^yy'
  547. CANM1E    EQU    $
  548. ;    T. EARNEST NUMBER    #  as of 12/20/82
  549. CANLN2:    DB    CANM2E-CANNM2 ;NUMBER LENGTH
  550. CANNM2:    DB    '4342915,%xxxxxxxx^yy'
  551. CANM2E    EQU    $
  552. ;
  553.