home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / packet / rli120.ark / INIT.MAC < prev    next >
Text File  |  1987-05-11  |  10KB  |  508 lines

  1. ; INIT.MAC - 5/11/87 - Read the configuration file (CONFIG.TNC).
  2. ;  This code is overlaid by the log file buffer.
  3.  
  4.     .z80
  5.     .xlist
  6.     maclib    TNC.LIB
  7.     asciictl
  8.     bdosdef
  9.     tncdefs
  10.     timdef
  11.     .list
  12.  
  13.     entry        init,logbuf,logsiz
  14.  
  15.     external    mcall,ocall,ckdrv,ckro
  16.     external    @openr,@prtx,@fill,@mcmd,@outch
  17.     external    rdstr,rdmstr,rdcmd,cmd,parse
  18.     external    prtcmd,ckname,bindec,decbin,numb,muldec
  19.     external    cafcb,ffcb,lfcb,mfcb,mbfcb,mofcb,msgfcb
  20.     external    hfcb,ifcb,ufcb,ubfcb,rfcb,fcb1,defdrv
  21.  
  22.     external    settim,blink,ioini,monini
  23.     external    opnmsg,opnusr,getusr,tnca,tncb
  24.     external    $memry,memtop,cmdtnc,@docmd
  25.  
  26. ; The following are parameters set by the call to this routine.
  27.  
  28.     external    achar,rchar,tchar,wchar
  29.     external    bkm1,bkm2,bkm3,bkm4,bkm5,bkm6,bkm7,bkm8
  30.     external    bbmenu,symenu,lmenul,lmenus,rmenus,rmenul
  31.     external    gmenus,gmenul,seenew,motd,itime,dtime,utime
  32.     external    mcalls,mxusr,hrdmax,seebea,excill,ndigia,ndigib
  33.     external    illdig
  34.     external    logging,loggate,logfile,logmsg,logloc,ncmsg
  35.     external    bbsa,bbsb,bbsl,infm1,byemsg,lm1,lm2,lm3,lm4,lm5
  36.     external    tm1,tm2,tm3,tm4,tm5
  37.     external    mumsg,reqmsg,twotnc,gateok
  38.     external    monok,moncnt,montim,primet
  39.     external    scia,scib,scua,scub,scsa,scsb
  40.     external    talkm1,talkm2,talkm3,talkm4
  41.     external    gm1,gm2,gm3,gm4,gm5,gm6,gm7,gm9,gm10
  42.     external    gm11,gm12,gm13,gm14,gm15
  43.     external    mm1,mm2,mm3,mm4,mm5,mm6,mm7,mm8,mm9,mm9a
  44.     external    mm10,mm11,mm12,mm13,mm14,mm15
  45.     external    um1,um2,um3,um4,um5,um6,um7,um8,um9,um9a,um10
  46.     external    um11,um12,um13,um14,um15,um16,um17,dname
  47.     external    ucmax,fwdmin,kilfwd,fstay,svcmsg,fm2
  48.     external    etflg,etmto,etmat,etmty,etmtit,etmerr
  49.     external    mname,mcant,mfind,mprot,mexst
  50.     external    mtime,mwhat,mdone
  51.     external    mbbsq,msnoop,mplsno
  52.  
  53. @fn    macro    @f
  54.     ld    hl,@f
  55.     call    rdfn
  56.     endm
  57.  
  58. @cchr    macro    @a
  59.     call    rdccr
  60.     ld    (@a),a
  61.     endm
  62.  
  63. @kw    macro    @a
  64.     ld    hl,@a
  65.     call    rdkeyw
  66.     endm
  67.  
  68. @mst    macro    @a
  69.     call    mstr
  70.     ld    (@a),hl
  71.     endm
  72.  
  73. @st    macro    @a
  74.     call    str
  75.     ld    (@a),hl
  76.     endm
  77.  
  78.     dseg
  79. logbuf:
  80.  
  81. inia:    ds    2
  82. inib:    ds    2
  83.  
  84. msiz:    db    '$Q bytes in pool memory.',cr,0
  85. init:    ld    hl,(dosent+1)    ; Last avail address + 1
  86.     dec    hl
  87.     ld    (memtop),hl    ; Last avail address
  88.     call    blink        ; Link to BIOS character I/O
  89.     console            ; Set local console
  90.     call    ioini        ; Initialize buffered file I/O
  91.     call    rdpar        ; Read CONFIG.TNC
  92.     call    tnca
  93.     call    cmdtnc        ; TNC to command mode
  94.     docmd    inia        ; Initialize COMM TNC
  95.     cmpm    twotnc,false    ; Two TNCs?
  96.     jr    z,inita        ; No
  97.     call    tncb
  98.     call    cmdtnc        ; TNC to command mode
  99.     docmd    inib        ; Initialize PRINTER TNC
  100. inita:    console
  101.     ld    c,cr
  102.     call    @outch        ; TNC left cmd: on line
  103.     cmpm    yr,0
  104.     call    z,settim    ; Was cold boot, get time/date
  105.     call    opnmsg        ; Open the mail file
  106.     call    opnusr        ; Open the user file
  107.     call    getusr        ; Make owner current user
  108.     call    monini        ; Initialize monitoring. Read CALLS.TNC
  109. ;    call    pioini        ; Init PIO
  110. ; Tell how much memory left.
  111.     ld    hl,(memtop)
  112.     ld    de,($memry)
  113.     or    a
  114.     sbc    hl,de        ; Available memory
  115.     call    bindec
  116.     ld    hl,msiz
  117.     call    @prtx
  118.     ret
  119.  
  120. fcbad:    ds    2
  121. cfcb:    db    0,'CONFIG  TNC'
  122.     rept    24
  123.     db    0
  124.     endm
  125.  
  126. cnf1:    db    'Error reading configuration file.',cr,0
  127. cnf2:    db    'Cannot open configuration file.',cr,0
  128. cnf3:    db    '$F*** Configuration data:',cr,0
  129. cnf4:    db    'TNC on COMM port only.',cr,0
  130. cnf5:    db    'TNCs on both COMM and PRINTER ports.',cr,0
  131. cnf6:    db    'Gateway available.',cr,0
  132. cnf7:    db    'Gateway not available.',cr,0
  133. cnf8:    db    'Forward at minute $Q',cr,0
  134. sc:    db    'The call of this station is $O',cr,0
  135. fne:    db    'Error in file name: ',0
  136. doff:    db    'Drive off line: ',0
  137. dro:    db    'Drive read only: ',0
  138.  
  139. rdccr:    call    rdcmd
  140.     jp    z,cnfe
  141.     ld    a,(cmd)
  142.     sub    40H
  143.     ret
  144.  
  145. rdfn:    ld    (fcbad),hl
  146.     call    rdcmd
  147.     jp    z,cnfe
  148.     call    parse
  149.     ckname    fcb1
  150.     jr    z,rdfnc
  151.     ld    a,(fcb1)
  152.     call    ckdrv
  153.     jr    nc,rdfnd
  154.     ld    a,(fcb1)
  155.     call    ckro
  156.     jr    c,rdfne
  157.     ld    de,(fcbad)
  158.     zmov    ,fcb1,fcbsize
  159.     ret
  160.  
  161. rdfnc:    ld    hl,fne
  162.     call    @prtx
  163.     jr    rdfnx
  164. rdfnd:    ld    hl,doff
  165.     call    @prtx
  166.     jr    rdfnx
  167. rdfne:    ld    hl,dro
  168.     call    @prtx
  169. rdfnx:    call    prtcmd
  170.     jp    cnfe
  171.  
  172. rdnumb:    call    rdcmd
  173.     jp    z,cnfe
  174.     call    parse
  175.     zmov    numb,fcb1+1,5
  176.     call    decbin
  177.     ld    a,l        ; Return 8 bit value in A
  178.     ret
  179.  
  180. rdkeyw:    ld    (hl),false
  181.     push    hl
  182.     call    rdcmd
  183.     pop    hl
  184.     jp    z,cnfe
  185.     cmpm    cmd,'Y'
  186.     jr nz,    rdkw1
  187.     ld    (hl),true
  188.     ret
  189.  
  190. rdkw1:    cmpm    cmd,'B'        ; Busy hours?
  191.     jr nz,    rdkw2
  192.     ld (hl),btime
  193.     ret
  194.  
  195. rdkw2:    cmpm    cmd,'Q'        ; Quiet hours?
  196.     jr nz,    rdkw3
  197.     ld (hl),qtime
  198.     ret
  199.  
  200. rdkw3:    cmpm    cmd,'N'
  201.     jp nz,    cnfe
  202.     ret
  203.     
  204.  
  205. rdtim:    push    hl
  206.     call    rdcmd
  207.     pop    hl
  208.     jp z,    cnfe
  209.     ld de,    cmd        ;Point at string of 0s and 1s
  210.     ld b,    3        ;Count 3 bytes
  211. rdtl1:    push    bc
  212.     ld b,    8        ;Count 8 bits per byte
  213. rdtl2:    ld a,    (de)        ;Char from config line
  214.     inc    de
  215.     cp    '0'
  216.     jr z,    rdtn2
  217.     cp    '1'
  218.     jp nz,    cnfe        ;Err if not 0 or 1
  219.     ccf
  220. rdtn2:    rl    c        ;Shift CY into byte
  221.     dec    b        ;Count 8 hours
  222.     jr nz,    rdtl2
  223.     ld (hl),c        ;Store 8 bits of hours
  224.     inc    hl
  225.     pop    bc
  226.     dec    b        ;Count 3 bytes of 8 hours each
  227.     jr nz,    rdtl1
  228.     ret            ;Read 24 hours (3 bytes)
  229.  
  230. mstr:    call    rdmstr
  231.     jp    z,cnfe
  232.     ret
  233.  
  234. str:    call    rdstr
  235.     jp    z,cnfe
  236.     ret
  237.  
  238. cnfe:    ld    hl,cnf1
  239.     call    @prtx
  240.     jp    wboot
  241.  
  242. cnfq:    ld    hl,cnf2
  243.     call    @prtx
  244.     jp    wboot
  245.  
  246. rdpar:    ld    hl,cnf3
  247.     call    @prtx
  248.     ld    a,(dfcb1+1)
  249.     cp    ' '
  250.     jr    z,rdpara    ; No file given on command line.
  251.     zmov    cfcb,dfcb1,16
  252.     ld    a,(cfcb)
  253.     or    a
  254.     jr    nz,rdpara
  255.     ld    a,(defdrv)
  256.     inc    a
  257.     ld    (cfcb),a
  258. rdpara:    openr    cfcb
  259.     jp    z,cnfq
  260. ; Message-of-the-day
  261.     @mst    motd
  262.     prtx    motd
  263. ; The remote menus
  264.     @mst    bbmenu        ; Menu for connected bbs
  265.     @mst    symenu        ; Remote sysop menu
  266.     @mst    rmenus
  267.     @mst    rmenul
  268. ; Gateway menus
  269.     @mst    gmenus
  270.     @mst    gmenul
  271. ; Local menu
  272.     @mst    lmenus
  273.     @mst    lmenul
  274. ; Multi-line messages
  275.     @mst    mbbsq        ; Ask for his home BBS
  276.     @mst    msnoop        ; Msg sent to mail snoopers
  277.     @mst    mplsno        ; Ask him not to S while *** linked
  278. ; Who are we?
  279.     call    rdcmd
  280.     jp    z,cnfe
  281.     fill    ocall,6,' '
  282.     movcmd    ocall,0,6
  283.     zmov    mcall,ocall,6
  284.     ld    hl,sc
  285.     call    @prtx
  286. ; File names.
  287.     @fn    hfcb
  288.     @fn    ifcb
  289.     @fn    cafcb
  290.     @fn    ffcb
  291.     @fn    lfcb
  292.     @fn    mofcb
  293.     @fn    msgfcb
  294.     @fn    mfcb
  295.     @fn    mbfcb
  296.     @fn    ufcb
  297.     @fn    ubfcb
  298. ; Allow download of "new" files?
  299.     @kw    seenew
  300. ; Exclude user with illegal call?
  301.     @kw    excill
  302. ; Exclude connect thru digi with illegal call?
  303.     @kw    illdig
  304. ; Allow only BBS on COMM or PRINTER or LINKED
  305.     @kw    bbsa
  306.     @kw    bbsb
  307.     @kw    bbsl
  308. ; Get busy/quiet hours
  309.     ld hl,    primet
  310.     call    rdtim
  311. ; # digi allowed on connect.
  312.     call    rdnumb
  313.     ld    (ndigia),a
  314.     call    rdnumb
  315.     ld    (ndigib),a
  316. ; Minutes timeout waiting for input from user.
  317.     call    rdnumb
  318.     ex    de,hl
  319.     ld    c,60
  320.     call    muldec
  321.     ld    (itime),de
  322. ; Minutes allowed in GateWay monitor mode.
  323.     call    rdnumb
  324.     ex    de,hl
  325.     ld    c,60
  326.     call    muldec
  327.     ld    (montim),de
  328. ; Max lines allowed in GateWay monitor mode.
  329.     call    rdnumb
  330.     ld    (moncnt),hl
  331. ; Seconds timeout waiting for disconnect.
  332.     call    rdnumb
  333.     ld    (dtime),hl
  334. ; Seconds between "user" routine calls.
  335.     call    rdnumb
  336.     ld    (utime),hl
  337. ; Max # calls in monitor list.
  338.     call    rdnumb
  339.     ld    (mcalls),hl
  340. ; Max # users in user file.
  341.     call    rdnumb
  342.     ld    (mxusr),hl
  343. ; Max # calls for "recent calls seen" lists.
  344.     call    rdnumb
  345.     ld    (hrdmax),hl
  346. ; Monitor beacons?
  347.     @kw    seebea
  348. ; Are there two TNC's?
  349.     @kw    twotnc
  350.     cmpm    twotnc,true
  351.     ld    hl,cnf5
  352.     jr    z,cnfc
  353.     ld    hl,cnf4
  354. cnfc:    call    @prtx
  355. ; Is gateway avail?
  356.     @kw    gateok
  357.     ld    hl,cnf7
  358.     cmpm    twotnc,true
  359.     jr    nz,cnff
  360.     cmpm    gateok,true
  361.     jr    nz,cnff
  362.     ld    hl,cnf6
  363. cnff:    call    @prtx
  364.     @kw    monok        ; Monitor thru gate?
  365. ; Logging
  366.     @kw    logging
  367.     @kw    loggate
  368.     @kw    logfile
  369.     @kw    logmsg
  370.     @kw    logloc
  371.     @st    ncmsg
  372. ; Message to send at disconnect.
  373.     @st    byemsg
  374. ; Info about calls heard header.
  375.     @st    infm1
  376. ; Local messages.
  377.     @cchr    achar
  378.     @cchr    rchar
  379.     @cchr    tchar
  380.     @cchr    wchar
  381.     @st    lm1
  382.     @st    lm2
  383.     @st    lm3
  384.     @st    lm4
  385.     @st    lm5
  386. ; Prompt text for setting day clock.
  387.     @st    tm1
  388.     @st    tm2
  389.     @st    tm3
  390.     @st    tm4
  391.     @st    tm5
  392. ; TNC state changes
  393.     @mst    scia
  394.     @mst    scib
  395.     @mst    scua
  396.     @mst    scub
  397.     @mst    scsa
  398.     @mst    scsb
  399. ; TNC initialization
  400.     @mst    inia
  401.     @mst    inib
  402. ; Text for local display of user call.
  403.     @st    mumsg
  404. ; Text to send when get connect request.
  405.     @st    reqmsg
  406. ; Various "talk to the owner" texts.
  407.     @st    talkm1
  408.     @st    talkm2
  409.     @st    talkm3
  410.     @st    talkm4
  411. ; The GateWay messages
  412.     @st    gm1
  413.     @st    gm2
  414.     @st    gm3
  415.     @st    gm4
  416.     @st    gm5
  417.     @st    gm6
  418.     @st    gm7
  419.     @st    gm9
  420.     @st    gm10
  421.     @st    gm11
  422.     @st    gm12
  423.     @st    gm13
  424.     @st    gm14
  425.     @st    gm15
  426. ; MailBox messages.
  427.     @st    mm1
  428.     @st    mm2
  429.     @st    mm3
  430.     @st    mm4
  431.     @st    mm5
  432.     @st    mm6
  433.     @st    mm7
  434.     @st    mm8
  435.     @st    mm9
  436.     @st    mm9a
  437.     @st    mm10
  438.     @st    mm11
  439.     @st    mm12
  440.     @st    mm13
  441.     @st    mm14
  442.     @st    mm15
  443. ; What minute of the hour to attempt auto-forwarding.
  444.     call    rdnumb
  445.     ld    (fwdmin),a
  446.     ld    hl,cnf8
  447.     call    @prtx
  448. ; Max calls in unread mail list.
  449.     call    rdnumb
  450.     ld    (ucmax),hl
  451. ; Kill message after forward?
  452.     @kw    kilfwd
  453. ; F message stays after forward?
  454.     @kw    fstay
  455. ; Generate service msg after KT?
  456.     @kw    svcmsg
  457. ; Allow non-sysop to do ET command?
  458.     @kw    etflg
  459. ; Messages for ET command
  460.     @st    etmto
  461.     @st    etmat
  462.     @st    etmty
  463.     @st    etmtit
  464.     @st    etmerr
  465. ; Upload/download prompts.
  466.     @st    fm2
  467. ; User file text.
  468.     @st    dname
  469.     @st    um14
  470.     @st    um6
  471.     @st    um1
  472.     @st    um2
  473.     @st    um15
  474.     @st    um9a
  475.     @st    um4
  476.     @st    um16
  477.     @st    um17
  478.     @st    um3
  479.     @st    um10
  480.     @st    um5
  481.     @st    um7
  482.     @st    um8
  483.     @st    um9
  484.     @st    um11
  485.     @st    um12
  486.     @st    um13
  487. ; Error/status messages.
  488.     @st    mname
  489.     @st    mcant
  490.     @st    mfind
  491.     @st    mprot
  492.     @st    mexst
  493.     @st    mtime
  494.     @st    mwhat
  495.     @st    mdone
  496.     @st    bkm1
  497.     @st    bkm2
  498.     @st    bkm3
  499.     @st    bkm4
  500.     @st    bkm5
  501.     @st    bkm6
  502.     @st    bkm7
  503.     @st    bkm8
  504.     ret
  505. logsiz    equ    $-logbuf
  506.     end
  507. 
  508.