home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
kaypro
/
trompat1.lbr
/
FB84PAT.AQM
/
FB84PAT.ASM
Wrap
Assembly Source File
|
1986-07-13
|
4KB
|
140 lines
; 6-16-86 GSD added ID string for TRPATCH
; 5-21-86 GSD fixed bug in '83 patches
; 4-3-86 Gary Dickinson Advent Products, Inc.
;
; Patches to Phil Becker's FASTBACK and FASTREST programs
; to enable them to operate with '83 and '84 model Kaypro computers
;
; These patches have been tested on FASTBACK 1.1, FASTREST 1.1A, and
; FASTREST 1.1B.
;
; The patches assemble with DRI MAC assembler and are intended to be
; patched into either FASTBACK.COM or FASTREST.COM using DDT.
;
; This code selects the first floppy disk drive which must be a
; standard double sided 48 TPI disk drive.
;
; This code takes into account the differences between the following
; types of 8 bit Kaypro Computers:
;
; 1. '83 Kaypros (single serial port, no graphics)
; 2. '84 Kaypros (two serial ports, graphics)
; 3. Kaypro 10s (two serial ports, graphics, hard disk controller
; reset logic tied to floppy disk select logic.
;
;
; The following table relates the bit port definitions for the 3 types
; of Kaypro Computers:
;
; +--------+------+-------+-------+-------+-------+-------+------+------+
; | BIT | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
; +--------+------+-------+-------+-------+-------+-------+------+------+
; | '84/10 | BANK | (1) | DDEN* | MTRON | STRB* | SIDE* | B* | A* |
; +--------+------+-------+-------+-------+-------+-------+------+------+
; | '84 | BANK | MTRON*| DDEN* | STRB* | (2) | SIDE | B | A |
; +--------+------+-------+-------+-------+-------+-------+------+------+
;
; Notes:
; (1) This bit when read is the BUSY* status for the parallel port.
; This bit as an output controlls the alternate character gen-
; erator logic that has probably never been used.
; (2) This bit when read is the BUSY* status for the parallel port.
; * These bits are active LOW
;
;
TRUE EQU 0ffffh
FALSE EQU NOT TRUE
K10 EQU FALSE ; set true if Kaypro 10
K84 EQU TRUE ; set true if '84 Kaypro that is not K10
K83 EQU FALSE ; set true if '83 Kaypro
FBACK EQU TRUE ; set true if FASTBACK, FALSE if FASTREST
FRVERS EQU 11BH ; FASTREST version 1.1B (11AH for version 1.1A)
if FBACK ; FASTBACK.COM Version 1.1
VMSG EQU 02C0H
org 02d2H ; ID string
db '1.1'
SELDRV EQU 0E4EH
TGLSID EQU 0E89H
else
if FRVERS EQ 11AH ; FASTREST.COM Version 1.1A
VMSG EQU 02C0H
org 02d2H ; ID string
db '1.1a'
SELDRV EQU 1405H
TGLSID EQU 1435H
endif
if FRVERS EQ 11BH ; FASTREST.COM Version 1.1B
VMSG EQU 02C0H
org 02d2H ; ID string
db '1.1b'
SELDRV EQU 1405H
TGLSID EQU 1438H
endif
endif
if K84 OR K10 ; '84 and K10 port and bit addresses
BITPORT EQU 014H ; bit port address
BANK EQU 080H ; Bank select bit pattern
DDEN EQU 020H ; Double density bit pattern
MTRON EQU 010H ; Motor on bit
STROBE EQU 008H ; Parallel port strobe
SIDSEL EQU 004H ; side select bit
BSEL EQU 002H ; B: drive select
ASEL EQU 001H ; A: drive select
STATE EQU DDEN OR SIDSEL OR BSEL OR ASEL ; negative true bits
else ; '83 port and bit addresses
BITPORT EQU 01CH ; bit port address
BANK EQU 080H ; Bank select bit pattern
MTRON EQU 040H ; Motor on bit
DDEN EQU 020H ; Double density bit pattern
STROBE EQU 010H ; Parallel port strobe
SIDSEL EQU 004H ; side select bit
BSEL EQU 002H ; B: drive select
ASEL EQU 001H ; A: drive select
STATE EQU MTRON OR DDEN ; negative true bits
endif
if K10
BITMSK EQU 002H ; mask for hard disk reset
else
BITMSK EQU 000H ; no hard disk reset
endif
org VMSG ; version message
if K10
db 'Kaypro 10 Version'
endif
if K84
db 'Kaypro 84 Version'
endif
if K83
db 'Kaypro 83 Version'
endif
org SELDRV ; code to select floppy disk drive
in BITPORT
ani BANK OR STROBE OR BITMSK
ori ((MTRON OR ASEL OR DDEN) XOR STATE) AND NOT BITMSK
out BITPORT
org TGLSID ; code to switch sides on the diskette
ani SIDSEL ; isolate side select bit
xri STATE ; correct side select polarity
mov b,a
in BITPORT
ani BANK OR STROBE OR BITMSK ; preserve these bits
ori ((MTRON OR ASEL OR DDEN) XOR STATE) AND NOT (BITMSK OR SIDSEL)
ora b ; add back side select bit
out BITPORT
end