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 / MODEMS / MODEM / CP405SRC.ARK / CP4NEC.HLP < prev    next >
Internet Message Format  |  1986-12-25  |  3KB

  1. Date: Wed 28 Aug 85 11:17:59-PDT
  2. From: Ronald Blanford <CONTEXT@WASHINGTON.ARPA>
  3. Subject: Kermit on NEC 8800
  4.  
  5. Some time ago there was a complaint that the Generic version of Kermit
  6. only partially worked on the NEC 8800.  I had reason to need it recently
  7. and found the following fix which works quite well.
  8.  
  9. Generic Kermit uses the iobyte to switch to the BAT console (which takes
  10. its input from the RDR device) so that it can check the serial port input
  11. status using the Console Status BIOS call.  The BIOS therefore must check
  12. the iobyte twice in this situation, once to determine that the BAT console
  13. is in use, then again to decide which physical device RDR is set to.  The
  14. NEC 8800 does this for the Console Input routine, but not for Console Status.
  15. The default Console Status routine always returns No Input Available, so
  16. that Kermit never tries to receive a character even though it can send them
  17. just fine.
  18.  
  19. The solution is to patch the dispatch table for the Console Status routine
  20. so that it proceeds to the serial status routine instead of the default.
  21. It might be hard to determine the address of the status routine if RDR is
  22. set to the PTR, UR1, or UR2 device, but for the TTY device the address is
  23. just two entries earlier in the table to be patched.  Fortunately Kermit
  24. uses the TTY device by default.
  25.  
  26. On the NEC 8800, the serial driver is loaded dynamically, and the address
  27. of the status routine varies depending on which driver is used.  Therefore
  28. this patch must be made each time the system is cold-booted, after installing
  29. the serial device driver but before running Kermit.  It's easiest to make
  30. the patch into a simple program using DDT as follows:
  31.  
  32. A>DDT
  33. DDT VERS 2.2
  34. -A100
  35. 0100 LHLD 1        ; get the address of the BIOS jump table
  36. 0103 INX  H        ; step forward to the Console Status entry
  37. 0104 INX  H
  38. 0105 INX  H
  39. 0106 INX  H
  40. 0107 MOV  A,M        ; get the address of the Console Status dispatcher
  41. 0108 INX  H
  42. 0109 MOV  H,M
  43. 010A MOV  L,A
  44. 010B INX  H        ; step past the dispatcher's initial JMP instruction
  45. 010C INX  H
  46. 010D INX  H
  47. 010E MOV  C,M        ; pick up the address for the TTY Status routine
  48. 010F INX  H
  49. 0110 MOV  B,M
  50. 0111 INX  H
  51. 0112 INX  H        ; step forward to the BAT entry
  52. 0113 INX  H
  53. 0114 MOV  M,C        ; save the TTY address in the BAT entry
  54. 0115 INX  H
  55. 0116 MOV  M,B
  56. 0117 RET        ; return to CP/M
  57. 0118 .
  58. -^C            ; Now get out of DDT
  59. A>SAVE 1 KPATCH.COM    ;  and save the patch as a COM file
  60.  
  61. With this patch program available, perform the following sequence of
  62. actions after cold boot to bring up Kermit:
  63.  
  64. A>INSTALL8 IRS232A TTY: [,,,,O]        ; install the driver as device TTY
  65.                     ; set up for Object files.  The driver
  66.                     ; name may vary.
  67. A>KPATCH                ; Patch the BAT status routine
  68. A>KERMIT                ; Start Kermit
  69.  
  70. With the interrupt-driven serial driver in place, this has worked perfectly
  71. for me at up to 9600 baud.  Good luck.
  72.  
  73. -- Ron
  74.