home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / 22RSX / BYERSX.ARK / RSXINIT.BYE < prev    next >
Text File  |  1986-02-17  |  4KB  |  136 lines

  1. ; This RSXINIT.BYE should be renamed to "RSXINIT.INC" for assembly
  2. subttl    '-------initialization of BYERSX system--------'
  3. ;
  4. ;    C.B. Falconer, 85/11/11
  5. ;
  6. ; Required routine
  7. ; Check run command parameters.  Carry if not satisfactory
  8. ; This routine may parse values into storage as desired.
  9. ; If failure and carry set,
  10. ; then (de) must return a pointer to a help msg
  11. ; a,f,b,c,d,e,h,l (allowed)
  12. chkparms:
  13.     ora    a;    clear carry, all well
  14.     ret
  15. ;
  16. ; Custom initialization. Required routine 
  17. ; When this routine is reached the various bios vector copies
  18. ; (and patches if "driver" is true) have been made.  This 
  19. ; routine may alter the connectors in "biosv" to install new
  20. ; drivers, etc.  The original routines are available thru
  21. ; "bsave" table.  Remember that any routines connected MUST
  22. ; live in the retained portion of code, following "@keep"
  23. ; below, and I recommend putting their code in the "rsx" area.
  24. ; If "driver" is false any bios modifications made through
  25. ; this routine will only be available to applications calling
  26. ; the bios directly (through location 1), and not to BDOS.
  27. ; a,f,b,c,d,e,h,l allowed
  28. init:    lxi    d,imsg
  29.     call    tstr
  30. ;    "    "
  31. ; find the CCP command line location, and save it for chaining
  32.     lhld    boot+1
  33.     xchg
  34.     lhld    bdos+1
  35.     call    chksys;        worked before, must now
  36.     lxi    d,-ccplgh
  37.     dad    d
  38.     if    zcpr2xc;    ZCPR2 w/external command line
  39.      mvi    l,0
  40.      shld    dochn3+1;    set ccp exec. line entry point
  41.      lxi    h,@zcmd
  42.      shld    dochn+1;    set ccp cmd line location
  43.     else;        NOT zcpr2xc, standard arrangement
  44.      shld    dochn+1;    save ccp cmd line & entry point
  45.      mvi    l,0;        for ccp entry point
  46.      shld    dochn3+1;    set ccp exec. line entry point
  47.     endif;        NOT zcpr2xc
  48. ;    "    "
  49. ; Clear the uninitialized storage area, for defaults
  50.     lxi    h,firstoclear
  51.     lxi    b,countoclear
  52. init1:    mvi    m,0;        among other things this
  53.     inx    h;        clears remenbl
  54.     dcx    b
  55.     mov    a,b
  56.     ora    c
  57.     jnz    init1
  58. ;    "    "
  59.     if    NOT oldlc;    The buffer is labelled with size
  60.      mvi    a,lcbufsz
  61.      sta    lcbuff;        mark the size available
  62.     endif
  63. ;    "    "
  64. ; Set some initial flags so that the system must be
  65. ; specifically armed by other programs.
  66.     call    mdinit;        init the comm module. Assume works
  67.     mvi    a,defbaud;    and default baud rate
  68.     call    sgbaud;        so terminal works immediately
  69. ;    "    "
  70. ; Now patch the bios entries to the dual console
  71.     lxi    d,dcsta
  72.     mvi    a,2
  73.     call    apatch
  74.     lxi    d,dcin;        This are not in effect until
  75.     mvi    a,3;        remon is set true
  76.     call    apatch
  77.     lxi    d,dcout
  78.     mvi    a,4
  79.     call    apatch
  80.     lxi    d,lout
  81.     mvi    a,5
  82.     call    apatch
  83.     lxi    d,pout
  84.     mvi    a,6
  85.     call    apatch
  86.     lxi    d,rin
  87.     mvi    a,7
  88.     call    apatch
  89.     lxi    d,dsksel
  90.     mvi    a,9
  91.     call    apatch
  92.     lxi    d,dskwrt
  93.     mvi    a,14
  94.     call    apatch
  95.     lxi    d,lstat
  96.     mvi    a,15
  97. ;    "    "
  98. ; Patch bios connector (a) to connect to (de).  Note that
  99. ; the 0th connector is the cold boot entry (per DR standards).
  100. ; Also note that the first entry in biosv is entry # 1
  101. ; DO NOT patch connectors 0 or 1, nor any above "n22vecs"
  102. ; a,f
  103. apatch:    dcr    a
  104.     dcr    a
  105.     push    h
  106.     mov    l,a
  107.     add    a
  108.     add    l;        *3
  109.     lxi    h,biosv+4;    offset past "jmp" opcode
  110.     add    l
  111.     mov    l,a
  112.     adc    h
  113.     sub    l
  114.     mov    h,a
  115.     mov    m,e
  116.     inx    h
  117.     mov    m,d
  118.     pop    h
  119.     ret
  120. ;
  121. ; This message is displayed on system signon.  Terminate with '$'
  122. signon:    db    'BYERSX by C.B. Falconer$'
  123. ;
  124. ; This routine MUST be supplied.  Normally just returns.  It is
  125. ; called only when the RSX is found to be already installed.  If
  126. ; it returns the RSX will be brought down.  This may control the
  127. ; pre-installed RSX, and exit with "jmp boot".  When called the
  128. ; "ckparms" routine has already been executed, but "init" has
  129. ; not (and will not be called)
  130. ; a,f,b,c,d,e,h,l (allowed)
  131. killhk:    jmp    mdquit;        remove any interrupt system
  132. ;
  133. ; This message only used above in init. Optional. Last item in
  134. ; this file, so can easily be patched.
  135. imsg:    db    ' installing                               $'
  136. :