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
/
KAYPRO
/
DUALPORT.LBR
/
DUALPORT.AZM
/
DUALPORT.ASM
Wrap
Assembly Source File
|
2000-06-30
|
4KB
|
113 lines
;**************************************************************************
; *
; Program - DUALPORT Console output modification for *
; Author - E. L. Bergh demos where multiple displays *
; Date Written - 02/11/84 are needed. *
; *
; *** Written for the Kaypro II *** *
; *
;-------------------------------------------------------------------------*
; *
; Copyright (c) 1984, E. L. Bergh II *
; *
; All rights reserved, permissions to use, modify, and copy are granted *
; but permission is not granted to sell this program. *
; No warranties are expressed or implied. *
; *
;-------------------------------------------------------------------------*
; *
; This program modifies the BIOS console output vector *
; to pass control thru a "small" program that is *
; installed in the RESTART vector area of memory. The *
; program remains active until a system-reset is done. *
; *
; A>DUALPORT<cr> *
; *
;**************************************************************************
;
boot equ 0 ;system re-boot vector
iobyte equ 3 ;system i/o byte
bdos equ 5 ;system function call vector
conot equ 9 ;displacement to the CONOT vector
small equ 8 ;where the program will run
baudp equ 0 ;baud rate port
;
org 100h ;set program origin
;
call begin ;go begin the program
db 13,10,'DUALPORT Vers 1.00 Dual Display Installation'
db 13,10,'---------------------------------------------'
db 13,10,10,'$'
;
;********************************************************************
; *
; This is the un-installed copy of the "small" program *
; that will be left behind in memory. *
; *
;********************************************************************
;
smallp equ $ ;beginning of the small program
push b ;save the data byte
lda iobyte
ani 11111100b ;select the TTY: device
sta iobyte
call1 call 0 ;display on the serial device first
lda iobyte
ori 00000001b ;select the CRT: device
sta iobyte
pop b
call2 call 0 ;display on the screen second
mov a,c ;just like a normal call-return
ret
slen equ $-smallp ;figure the module length
;
begin equ $ ;begin the program
pop d ;get the signon msg address
mvi c,9 ;write buffer command
call bdos ;display the signon
;
lhld boot+1 ;get the address of the BOOT vector
lxi d,conot+1 ;get the displacement to the CONOT
dad d
;
mov e,m
inx h
mov d,m ;get the CONOT address
;
dcx h ;fix pointer to the start
push h ;save the address
;
xchg ;get the CONOT address in (hl)
shld call1+1
shld call2+1 ;patch the call statements
;
lxi d,smallp ;address of the small program
lxi h,small ;where to install the small program
mvi b,slen ;length of the small program
;
move equ $ ;move loop
ldax d
mov m,a ;copy a byte
inx d
inx h ;increment pointers
dcr b ;decr counters
jnz move ;loop
pop h ;restore BIOS-CONOT address
lxi d,small ;where to pass control
mov m,e
inx h
mov m,d ;patch the BIOS-CONOT vector
;
mvi a,14 ;9600 baud rate value
out baudp ;set the baudrate
;
lda iobyte
ani 11111101b
ori 00000001b ;insure CRT: to start with
sta iobyte
;
ret ;all done ...
;
end