home *** CD-ROM | disk | FTP | other *** search
-
- The unspool program by Gary P. Novosielski is a very useful routine,
- particularly for those with slow printers. Apple owners will never
- get beyond the message "Error in system table" without a little added
- massage. Gary aimed me in the right direction, any errors are mine.
-
- The big problem is that standard CP/M 2.2 has ( & unspool expects) 16
- jump vectors st the start of BIOS, counting from the warm boot vector.
- Microsoft ("in their infinite wisdom")only saw fit to provide standard
- implementations for 14 of these. Unspool uses number 15, LISTST:, which
- checks list device ready status, returning 00 in a if not ready, 0ffh
- in a if ready. {Implementing vector 16 must wait for another day.}
-
- First, Unspool must be modified to only expect 15 jumps. At (about)
- line 104, NVECTS equ 16 must be changed from 16 to 15, so that Unspool
- will be happy with just 15 vectors.
-
- Next, you must add and implement vector No. 15. This vector should be
- found at address 242dh in cpm56.com (or 0da2dh in 56k CP/M BIOS, or,
- according to my manual, at 0aa2dh in 44k CP/M BIOS; all future address
- references will be to the image in cpm56.com). Occupying that location
- now is [xor a, ret] af c9 00, which is a simulated and jumpless LISTST,
- always returning 00 in a. At this address you will have to place a jump
- to where you will want to place LISTST; I would suggest 2483h as this
- location, hence use DDT to install c3 83 da. Naturally, the jump address
- must be the actual CP/M address, not the address it occupies in
- cpm56.com, that is da not 24 high-order byte. Note that all these changes
- in cpm56.com will be incorporated in CP/M by running cpm56.com, but
- remember after this to reestablish any special items you have used
- CONFIGIO to install, such as printer drivers, keyboard redefinitions
- or undefinitions, terminal configurations, etc., as cpm56.com returns
- these all to their default values.
-
- Finally you have to write your own LISTST code, and find a place to
- put it. The batches of 00's starting at 2433h are a series of 16
- byte disk parameter headers, 6 in all for disk drives a: through f:.
- If, like me, you will never need drive f:, you can use that location
- (16 bytes in length) for LISTST. The location is 2483h through
- 2492h. A LISTST (in z-80 code) for the CCS-7728 parallel printer
- card in slot 1 is given below, it is only 10 bytes (11 if you con-
- vert to 8080 code by changing the relative jump). Note that the
- status code of the 7728 is exactly the opposite of that expected by
- LISTST, hence the xor a and cpl codes to get things right.
-
- ;This is a is a simple implementation of LISTST for the
- ;ccs-7728 printer card in slot 1
-
- .z80
- E090 status equ 0e090h ;status port, ccs-7728
- ;in slot 1
- 0000' aseg
- org 0da83h ;loc. of DPH for
- ;drive f:
- DA83 3A E090 ld a,(status) ;printer status to a
- DA86 B7 or a ;set flags
- DA87 28 02 jr z,ready ;if zero, jump to
- ;next routine
- DA89 AF xor a ;set a to 00h, meaning
- ;not ready
- DA8A C9 ret ;and return
- DA8B 2F ready: cpl ;since a was 0,
- ;complement = 0ffh
- DA8C C9 ret ;a=ff shows lst: ready
- ;for char.
- end 0da83h
-
-
- That's all there is to it, folks, sit back and enjoy printing while you
- compute!!
-
- Bob Thompson
- Reply messages via Hyde Park or Calamity Cliffs RCPM, Chicago, please.
-