home *** CD-ROM | disk | FTP | other *** search
-
- ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; 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
-