Upload files to "kernal"
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
.segment "OPENC"
|
||||
;***************************************
|
||||
;* chkin -- open channel for input *
|
||||
;* *
|
||||
;* the number of the logical file to be*
|
||||
;* opened for input is passed in .x. *
|
||||
;* chkin searches the logical file *
|
||||
;* to look up device and command info. *
|
||||
;* errors are reported if the device *
|
||||
;* was not opened for input ,(e.g. *
|
||||
;* cassette write file), or the logical*
|
||||
;* file has no reference in the tables.*
|
||||
;* device 0, (keyboard), and device 3 *
|
||||
;* (screen), require no table entries *
|
||||
;* and are handled separate. *
|
||||
;***************************************
|
||||
;
|
||||
nchkin jsr lookup ;see if file known
|
||||
beq jx310 ;yup...
|
||||
;
|
||||
jmp error3 ;no...file not open
|
||||
;
|
||||
jx310 jsr jz100 ;extract file info
|
||||
;
|
||||
lda fa
|
||||
beq jx320 ;is keyboard...done.
|
||||
;
|
||||
;could be screen, keyboard, or serial
|
||||
;
|
||||
cmp #3
|
||||
beq jx320 ;is screen...done.
|
||||
bcs jx330 ;is serial...address it
|
||||
cmp #2 ;rs232?
|
||||
bne jx315 ;no...
|
||||
;
|
||||
; jmp cki232
|
||||
;
|
||||
;some extra checks for tape
|
||||
;
|
||||
jx315 ldx sa
|
||||
cpx #$60 ;is command a read?
|
||||
beq jx320 ;yes...o.k....done
|
||||
;
|
||||
jmp error6 ;not input file
|
||||
;
|
||||
jx320 sta dfltn ;all input come from here
|
||||
;
|
||||
clc ;good exit
|
||||
rts
|
||||
;
|
||||
;an serial device has to be a talker
|
||||
;
|
||||
jx330 tax ;device # for dflto
|
||||
jsr talk ;tell him to talk
|
||||
;
|
||||
lda sa ;a second?
|
||||
bpl jx340 ;yes...send it
|
||||
jsr tkatn ;no...let go
|
||||
jmp jx350
|
||||
;
|
||||
jx340 jsr tksa ;send second
|
||||
;
|
||||
jx350 txa
|
||||
bit status ;did he listen?
|
||||
bpl jx320 ;yes
|
||||
;
|
||||
jmp error5 ;device not present
|
||||
|
||||
;***************************************
|
||||
;* chkout -- open channel for output *
|
||||
;* *
|
||||
;* the number of the logical file to be*
|
||||
;* opened for output is passed in .x. *
|
||||
;* chkout searches the logical file *
|
||||
;* to look up device and command info. *
|
||||
;* errors are reported if the device *
|
||||
;* was not opened for input ,(e.g. *
|
||||
;* keyboard), or the logical file has *
|
||||
;* reference in the tables. *
|
||||
;* device 0, (keyboard), and device 3 *
|
||||
;* (screen), require no table entries *
|
||||
;* and are handled separate. *
|
||||
;***************************************
|
||||
;
|
||||
nckout jsr lookup ;is file in table?
|
||||
beq ck5 ;yes...
|
||||
;
|
||||
jmp error3 ;no...file not open
|
||||
;
|
||||
ck5 jsr jz100 ;extract table info
|
||||
;
|
||||
lda fa ;is it keyboard?
|
||||
bne ck10 ;no...something else.
|
||||
;
|
||||
ck20 jmp error7 ;yes...not output file
|
||||
;
|
||||
;could be screen,serial,or tapes
|
||||
;
|
||||
ck10 cmp #3
|
||||
beq ck30 ;is screen...done
|
||||
bcs ck40 ;is serial...address it
|
||||
; cmp #2 ;rs232?
|
||||
; bne ck15
|
||||
;
|
||||
; jmp cko232
|
||||
;
|
||||
;
|
||||
;special tape channel handling
|
||||
;
|
||||
ck15 ldx sa
|
||||
cpx #$60 ;is command read?
|
||||
beq ck20 ;yes...error
|
||||
;
|
||||
ck30 sta dflto ;all output goes here
|
||||
;
|
||||
clc ;good exit
|
||||
rts
|
||||
;
|
||||
ck40 tax ;save device for dflto
|
||||
jsr listn ;tell him to listen
|
||||
;
|
||||
lda sa ;is there a second?
|
||||
bpl ck50 ;yes...
|
||||
;
|
||||
jsr scatn ;no...release lines
|
||||
bne ck60 ;branch always
|
||||
;
|
||||
ck50 jsr secnd ;send second...
|
||||
;
|
||||
ck60 txa
|
||||
bit status ;did he listen?
|
||||
bpl ck30 ;yes...finish up
|
||||
;
|
||||
jmp error5 ;no...device not present
|
||||
|
||||
Reference in New Issue
Block a user