mirror of
https://github.com/a2stuff/chtype.git
synced 2024-06-12 14:29:29 +00:00
recased
This commit is contained in:
parent
f42539a517
commit
26857a74d1
98
chtype.s
98
chtype.s
|
@ -3,8 +3,13 @@
|
||||||
.org $2000
|
.org $2000
|
||||||
|
|
||||||
INBUF := $200 ;GETLN input buffer.
|
INBUF := $200 ;GETLN input buffer.
|
||||||
|
|
||||||
WAIT := $FCA8 ;Monitor wait routine.
|
WAIT := $FCA8 ;Monitor wait routine.
|
||||||
BELL := $FF3A ;Monitor bell routine
|
BELL := $FF3A ;Monitor bell routine
|
||||||
|
|
||||||
|
|
||||||
|
;;; BASIC.SYSTEM global page
|
||||||
|
|
||||||
EXTRNCMD := $BE06 ;External cmd JMP vector.
|
EXTRNCMD := $BE06 ;External cmd JMP vector.
|
||||||
XTRNADDR := $BE50 ;Ext cmd implementation addr.
|
XTRNADDR := $BE50 ;Ext cmd implementation addr.
|
||||||
XLEN := $BE52 ;Length of command string-1.
|
XLEN := $BE52 ;Length of command string-1.
|
||||||
|
@ -12,62 +17,67 @@ XCNUM := $BE53 ;CI cmd no. (ext cmd = 0).
|
||||||
PBITS := $BE54 ;Command parameter bits.
|
PBITS := $BE54 ;Command parameter bits.
|
||||||
VSLOT := $BE61 ;Verified slot parameter.
|
VSLOT := $BE61 ;Verified slot parameter.
|
||||||
|
|
||||||
|
;;; TODO: Relocate into ProDOS-allocated buffer
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; REMEMBER TO SAVE THE PREVIOUS COMMAND ADDRESS.
|
;;; Remember to save the previous command address.
|
||||||
;;;
|
;;;
|
||||||
LDA EXTRNCMD+1
|
lda EXTRNCMD+1
|
||||||
STA NXTCMD
|
sta nxtcmd
|
||||||
LDA EXTRNCMD+2
|
lda EXTRNCMD+2
|
||||||
STA NXTCMD+1
|
sta nxtcmd+1
|
||||||
;;;
|
;;;
|
||||||
LDA #>BEEPSLOT ;Install the address of our
|
lda #>beepslot ;Install the address of our
|
||||||
STA EXTRNCMD+1 ; command handler in the
|
sta EXTRNCMD+1 ; command handler in the
|
||||||
LDA #<BEEPSLOT ; external command JMP
|
lda #<beepslot ; external command JMP
|
||||||
STA EXTRNCMD+2 ; vector.
|
sta EXTRNCMD+2 ; vector.
|
||||||
RTS
|
RTS
|
||||||
;;;
|
;;;
|
||||||
BEEPSLOT: LDX #0 ;Check for our command.
|
beepslot:
|
||||||
NXTCHR: LDA INBUF,X ;Get first character.
|
ldx #0 ;Check for our command.
|
||||||
CMP CMD,X ;Does it match?
|
nxtchr: lda INBUF,X ;Get first character.
|
||||||
BNE NOTOURS ;NO, SO CONTINUE WITH NEXT CMD.
|
cmp cmd,X ;Does it match?
|
||||||
INX ;Next character
|
bne notours ;NO, SO CONTINUE WITH NEXT CMD.
|
||||||
CPX #CMDLEN ;All characters yet?
|
inx ;Next character
|
||||||
BNE NXTCHR ;No, read next one.
|
cpx #cmdlen ;All characters yet?
|
||||||
|
bne nxtchr ;No, read next one.
|
||||||
;;;
|
;;;
|
||||||
LDA #CMDLEN-1 ;Our cmd! Put cmd length-1
|
lda #cmdlen-1 ;Our cmd! Put cmd length-1
|
||||||
STA XLEN ; in CI global XLEN.
|
sta XLEN ; in CI global XLEN.
|
||||||
LDA #>EXECUTE ;Point XTRNADDR to our
|
lda #>execute ;Point XTRNADDR to our
|
||||||
STA XTRNADDR ; command execution
|
sta XTRNADDR ; command execution
|
||||||
LDA #<EXECUTE ; routine
|
lda #<execute ; routine
|
||||||
STA XTRNADDR+1
|
sta XTRNADDR+1
|
||||||
LDA #0 ;Mark the cmd number as
|
lda #0 ;Mark the cmd number as
|
||||||
STA XCNUM ; zero (external).
|
sta XCNUM ; zero (external).
|
||||||
;;;
|
;;;
|
||||||
LDA #%00010000 ;Set at least one bit
|
lda #%00010000 ;Set at least one bit
|
||||||
STA PBITS ; in PBITS low byte!
|
sta PBITS ; in PBITS low byte!
|
||||||
;;;
|
;;;
|
||||||
LDA #%00000100 ;And mark PBITS high byte
|
lda #%00000100 ;And mark PBITS high byte
|
||||||
STA PBITS+1 ; that slot & drive are legal.
|
sta PBITS+1 ; that slot & drive are legal.
|
||||||
CLC ;Everything is OK.
|
clc ;Everything is OK.
|
||||||
RTS ;Return to BASIC.SYSTEM
|
rts ;Return to BASIC.SYSTEM
|
||||||
;;;
|
;;;
|
||||||
EXECUTE: LDA VSLOT ;Get slot parameter.
|
execute:
|
||||||
TAX ;Transfer to index reg.
|
lda VSLOT ;Get slot parameter.
|
||||||
NXTBEEP: JSR BELL ;Else, beep once.
|
tax ;Transfer to index reg.
|
||||||
LDA #$80 ;Set up the delay
|
nxtbeep:
|
||||||
JSR WAIT ; and wait.
|
jsr BELL ;Else, beep once.
|
||||||
DEX ;decrement index and
|
lda #$80 ;Set up the delay
|
||||||
BNE NXTBEEP ; repeat until x = 0.
|
jsr WAIT ; and wait.
|
||||||
CLC ;All done successfully.
|
dex ;decrement index and
|
||||||
RTS ;Back to BASIC.SYSTEM.
|
bne nxtbeep ; repeat until x = 0.
|
||||||
|
clc ;All done successfully.
|
||||||
|
rts ;Back to BASIC.SYSTEM.
|
||||||
;;;
|
;;;
|
||||||
;;; IT'S NOT OUR COMMAND SO MAKE SURE YOU LET BASIC
|
;;; IT'S NOT OUR COMMAND SO MAKE SURE YOU LET BASIC
|
||||||
;;; CHECK WHETER OR NOT IT'S THE NEXT COMMAND.
|
;;; CHECK WHETER OR NOT IT'S THE NEXT COMMAND.
|
||||||
;;;
|
;;;
|
||||||
NOTOURS: SEC ;SET CARRY AND LET
|
notours: sec ;SET CARRY AND LET
|
||||||
JMP (NXTCMD) ; NEXT EXT CMD GO FOR IT.
|
jmp (nxtcmd) ; NEXT EXT CMD GO FOR IT.
|
||||||
;;;
|
;;;
|
||||||
CMD: .byte "BEEPSLOT" ;Our command
|
cmd: .byte "BEEPSLOT" ;Our command
|
||||||
CMDLEN = *-CMD ;Our command length
|
cmdlen = *-cmd ;Our command length
|
||||||
NXTCMD: .word 0 ; STORE THE NEXT COMMAND'S
|
nxtcmd: .word 0 ; STORE THE NEXT COMMAND'S
|
||||||
; ADDRESS HERE.
|
; ADDRESS HERE.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user