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
/
ENTERPRS
/
CPM
/
UTILS
/
S
/
ZPM3N10.ARK
/
AUTOTOG.Z80
< prev
next >
Wrap
Text File
|
1993-02-01
|
4KB
|
131 lines
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; A U T O T O G
; for ZPM3
; by Simeon Cran
; 30/3/92
;
; This program toggles the Auto Command Prompting facility of ZPM3. It is
; presented in source code form to inform users about how the facility is
; manipulated.
; Be aware that when Auto Command Prompting is enabled with this program,
; it won't actually operate until turned on at the keyboard with ^Q. This
; program simply enables the ^Q toggling of Auto Command Prompting.
; When ZPM3 is booted, Auto Command Prompting is disabled. Usually, a
; startup file would include the AUTOTOG command to turn it on unless it
; is felt that the facility could confuse the operator (as may happen with
; a remote ZPM3 system).
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; SYNTAX:
; AUTOTOG Toggles the state of the Auto Command Prompting
; AUTOTOG ON Enables Auto Command Prompting
; AUTOTOG OFF Disables Auto Command Prompting
; AUTOTOG // Displays a brief help message
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Automatic Command Prompting is enabled and disabled by a bit 6 of offset
; 85h of the SCB page. This offset can not be directly accessed by the SCB
; function (31h). Instead, we get the SCB base page with function 31h, and
; then find the offset from there. No other bits in the byte may be touched.
;
;===============================================================================
BDOS equ 5
deffcb equ 5ch
SCBfunc equ 31h ; Get/Set SCB function number
SCBoff equ 3bh ; Offset in SCB to get SCB base page
ACPoff equ 85h ; Offset in SCB base page of Auto Command Prompting bit
jp start ; Jump over general data
HELPmsg:
db ' SYNTAX:'
db 10,13
db ' AUTOTOG Toggles the state of the Auto Command Prompting'
db 10,13
db ' AUTOTOG ON Enables Auto Command Prompting'
db 10,13
db ' AUTOTOG OFF Disables Auto Command Prompting'
db 10,13
db ' AUTOTOG // Displays a brief help message'
db '$'
ONmsg:
db 'ZPM3 Auto Command Prompting is now enabled. Toggle with ^Q.'
db '$'
OFFmsg:
db 'ZPM3 Auto Command Prompting is now disabled.'
db '$'
ONword: ; Word to match to turn Auto Command Prompting on
db 'ON '
OFFword: ; Word to match to turn Auto Command Prompting off
db 'OFF '
TOGword: ; Word to match to toggle Auto Command Prompting
db ' '
HELP: ld de,HELPmsg
MSGexit:
ld c,9
call bdos
rst 0
start: ; Get the address of the bit which controls Auto Command Prompting.
ld c,SCBfunc
ld de,SCBPB
call bdos ; Get base page of SCB
ld h,a
ld l,ACPoff ; HL is now the address of the byte
ld (ACPaddr),hl ; Save it
; Find out what the user wants to do. If the argument matches
; any of the three control words, act accordingly, otherwise
; show the help message and exit.
ld hl,ONword
call matchWord
jr z,TurnON
ld hl,OFFword
call matchWord
jr z,TurnOFF
ld hl,TOGword
call matchWord
jr nz,HELP
; Toggle the Auto Command Prompting.
ld hl,(ACPaddr)
bit 6,(hl)
jr z,TurnON
TurnOFF: ; Turn the Auto Command Prompting off.
ld hl,(ACPaddr)
res 6,(hl)
ld de,OFFmsg
jr MSGexit
TurnON: ; Turn the Auto Command Prompting on.
ld hl,(ACPaddr)
set 6,(hl)
ld de,ONmsg
jr MSGexit
matchWord: ; Compare the string at HL with the string at defFCB+1 for
; 8 bytes. Return Z if it matches.
ld de,defFCB
ld bc,8
matchW1:
inc de
ld a,(de)
cpi
ret nz
jp pe,matchW1
ret
SCBPB: ; System control block function parameter block.
ACPaddr: ; Save the address of the ACP bit here too.
db 03bh
db 0 ; Get operation