Compare commits
10 Commits
ce87c0e008
...
0e519e1e58
Author | SHA1 | Date |
---|---|---|
Stephen Heumann | 0e519e1e58 | |
Stephen Heumann | 49ffb1065b | |
Stephen Heumann | 9181b0bd73 | |
Stephen Heumann | 7384c82667 | |
Stephen Heumann | 16c7952648 | |
Stephen Heumann | 9d42552756 | |
Stephen Heumann | bbfad1e299 | |
Stephen Heumann | f1582be5a2 | |
Stephen Heumann | b60c307ee6 | |
Stephen Heumann | bf3a4d7ceb |
100
stdio.asm
100
stdio.asm
|
@ -83,16 +83,13 @@ stdfile equ 7 is this a standard file?
|
|||
phk
|
||||
plb
|
||||
|
||||
lda #EOF assume we will get an error
|
||||
sta err
|
||||
ph4 <stream verify that stream exists
|
||||
jsl ~VerifyStream
|
||||
jcs rts
|
||||
jcs rts_err
|
||||
|
||||
ph4 <stream do any pending I/O
|
||||
jsl fflush
|
||||
tax
|
||||
jne rts
|
||||
sta err initialize err to fflush result
|
||||
|
||||
stz stdfile not a standard file
|
||||
lda stream+2 bypass file disposal if the file is
|
||||
|
@ -110,11 +107,10 @@ lb1 inc stdfile
|
|||
|
||||
cl0 lla p,stderr+4 find the file record that points to this
|
||||
ldy #2 one
|
||||
cl1 lda [p]
|
||||
ora [p],Y
|
||||
jeq rts
|
||||
lda [p],Y
|
||||
cl1 lda [p],Y
|
||||
tax
|
||||
ora [p]
|
||||
jeq rts_err
|
||||
lda [p]
|
||||
cmp stream
|
||||
bne cl2
|
||||
|
@ -128,46 +124,10 @@ cl3 lda [stream] remove stream from the file list
|
|||
sta [p]
|
||||
lda [stream],Y
|
||||
sta [p],Y
|
||||
cl3a ldy #FILE_flag if the file was opened by tmpfile then
|
||||
lda [stream],Y
|
||||
and #_IOTEMPFILE
|
||||
beq cl3d
|
||||
ph4 #nameBuffSize p = malloc(nameBuffSize)
|
||||
jsl malloc grPathname = p
|
||||
sta p dsPathname = p+2
|
||||
stx p+2
|
||||
sta grPathname
|
||||
stx grPathname+2
|
||||
clc
|
||||
adc #2
|
||||
bcc cl3b
|
||||
inx
|
||||
cl3b sta dsPathname
|
||||
stx dsPathname+2
|
||||
lda #nameBuffSize p->size = nameBuffSize
|
||||
sta [p]
|
||||
ldy #FILE_file clRefnum = grRefnum = stream->_file
|
||||
lda [stream],Y
|
||||
beq cl3e
|
||||
sta grRefnum
|
||||
GetRefInfoGS gr GetRefInfoGS(gr)
|
||||
bcs cl3c
|
||||
lda grRefnum OSClose(cl)
|
||||
sta clRefNum
|
||||
OSClose cl
|
||||
DestroyGS ds DestroyGS(ds)
|
||||
cl3c ph4 <p free(p)
|
||||
jsl free
|
||||
bra cl3e else
|
||||
cl3d ldy #FILE_file close the file
|
||||
lda [stream],Y
|
||||
beq cl3e
|
||||
sta clRefNum
|
||||
OSClose cl
|
||||
cl3e ldy #FILE_flag if the buffer was allocated by fopen then
|
||||
cl3a ldy #FILE_flag if the buffer was allocated by fopen then
|
||||
lda [stream],Y
|
||||
and #_IOMYBUF
|
||||
beq cl4
|
||||
beq cl3b
|
||||
ldy #FILE_base+2 dispose of the file buffer
|
||||
lda [stream],Y
|
||||
pha
|
||||
|
@ -176,6 +136,47 @@ cl3e ldy #FILE_flag if the buffer was allocated by fopen the
|
|||
lda [stream],Y
|
||||
pha
|
||||
jsl free
|
||||
cl3b ldy #FILE_flag if the file was opened by tmpfile then
|
||||
lda [stream],Y
|
||||
and #_IOTEMPFILE
|
||||
beq cl3f
|
||||
ph4 #nameBuffSize p = malloc(nameBuffSize)
|
||||
jsl malloc
|
||||
sta p
|
||||
stx p+2
|
||||
ora p+2 if p == NULL then
|
||||
bne cl3c
|
||||
lda #EOF flag error
|
||||
sta err
|
||||
bra cl3f just close the file
|
||||
cl3c lda p
|
||||
sta grPathname grPathname = p
|
||||
stx grPathname+2
|
||||
clc dsPathname = p+2
|
||||
adc #2
|
||||
bcc cl3d
|
||||
inx
|
||||
cl3d sta dsPathname
|
||||
stx dsPathname+2
|
||||
lda #nameBuffSize p->size = nameBuffSize
|
||||
sta [p]
|
||||
ldy #FILE_file clRefnum = grRefnum = stream->_file
|
||||
lda [stream],Y
|
||||
beq cl4
|
||||
sta grRefnum
|
||||
sta clRefNum
|
||||
GetRefInfoGS gr GetRefInfoGS(gr)
|
||||
bcs cl3e
|
||||
OSClose cl OSClose(cl)
|
||||
DestroyGS ds DestroyGS(ds)
|
||||
cl3e ph4 <p free(p)
|
||||
jsl free
|
||||
bra cl4 else
|
||||
cl3f ldy #FILE_file close the file
|
||||
lda [stream],Y
|
||||
beq cl4
|
||||
sta clRefNum
|
||||
OSClose cl
|
||||
cl4 lda stdfile if this is not a standard file then
|
||||
bne cl5
|
||||
ph4 <stream dispose of the file buffer
|
||||
|
@ -189,7 +190,10 @@ cl6 lda [p],Y
|
|||
dey
|
||||
cpy #2
|
||||
bne cl6
|
||||
cl7 stz err no error found
|
||||
cl7 bra rts no error found
|
||||
|
||||
rts_err lda #EOF
|
||||
sta err
|
||||
rts plb
|
||||
creturn 2:err
|
||||
|
||||
|
|
15
stdlib.asm
15
stdlib.asm
|
@ -1584,16 +1584,13 @@ cn3 cmp base branch if the digit is too big
|
|||
cn3a clc add in the new digit
|
||||
adc val
|
||||
sta val
|
||||
lda val+2
|
||||
adc #0
|
||||
sta val+2
|
||||
lda val+4
|
||||
adc #0
|
||||
sta val+4
|
||||
lda val+6
|
||||
adc #0
|
||||
sta val+6
|
||||
bcc cn4
|
||||
inc val+2
|
||||
bne cn4
|
||||
inc val+4
|
||||
bne cn4
|
||||
inc val+6
|
||||
bne cn4
|
||||
stz rangeOK
|
||||
cn4 inc4 str next char
|
||||
bra cn1
|
||||
|
|
68
string.asm
68
string.asm
|
@ -244,8 +244,8 @@ lb3 lda [p1],Y scan until the end of memory is reached
|
|||
dex
|
||||
bne lb3
|
||||
|
||||
ldx #0 memory matches
|
||||
bra lb5
|
||||
; ldx #0
|
||||
bra lb5 memory matches
|
||||
|
||||
lb4 blt less memory differs - set the result
|
||||
ldx #1
|
||||
|
@ -303,8 +303,8 @@ rtl equ 1 return address
|
|||
short M move 1 byte now
|
||||
lda [p2]
|
||||
sta [p1]
|
||||
long M
|
||||
dec len
|
||||
long M
|
||||
inc4 p1
|
||||
inc4 p2
|
||||
lb1 anop endif
|
||||
|
@ -482,19 +482,19 @@ rtl equ 1 return address
|
|||
|
||||
ph4 <p save the pointer
|
||||
|
||||
short M
|
||||
lda val form a 2 byte value
|
||||
sta val+1
|
||||
short I,M
|
||||
ldx val form a 2 byte value
|
||||
stx val+1
|
||||
|
||||
lda len if there are an odd # of bytes then
|
||||
lsr A
|
||||
bcc lb1
|
||||
lda val set 1 byte now
|
||||
txa set 1 byte now
|
||||
sta [p]
|
||||
long M
|
||||
dec len
|
||||
long I,M
|
||||
inc4 p
|
||||
lb1 long M endif
|
||||
lb1 long I,M endif
|
||||
|
||||
lda val set len bytes
|
||||
ldx len+2 set full banks
|
||||
|
@ -616,7 +616,9 @@ lb2 long M
|
|||
clc
|
||||
adc s1
|
||||
sta s1
|
||||
short M copy characters 'til the null is found
|
||||
bcc lb2a
|
||||
inc s1+2
|
||||
lb2a short M copy characters 'til the null is found
|
||||
ldy #0
|
||||
lb3 lda [s2],Y
|
||||
sta [s1],Y
|
||||
|
@ -956,9 +958,12 @@ str equ 4 pointer to the string
|
|||
tcd
|
||||
|
||||
ldy #0 advance s1 to point to the terminating
|
||||
ldx #0 null
|
||||
tyx null
|
||||
short M
|
||||
lb1 lda [str],Y
|
||||
beq lb2
|
||||
iny
|
||||
lda [str],Y
|
||||
beq lb2
|
||||
iny
|
||||
bne lb1
|
||||
|
@ -1013,27 +1018,35 @@ lb2 long M
|
|||
clc
|
||||
adc s1
|
||||
sta s1
|
||||
short M copy characters 'til the null is found
|
||||
bcc lb2a
|
||||
inc s1+2
|
||||
lb2a ldx n copy characters 'til the null is found
|
||||
bne lb2b
|
||||
lda n+2
|
||||
beq lb6
|
||||
lb2b short M
|
||||
ldy #0
|
||||
ldx n
|
||||
beq lb4
|
||||
bmi lb4
|
||||
lb3 lda [s2],Y
|
||||
sta [s1],Y
|
||||
beq lb4
|
||||
beq lb5
|
||||
iny
|
||||
dex
|
||||
bne lb3a
|
||||
inc s1+2
|
||||
inc s2+2
|
||||
lb3a dex
|
||||
bne lb3
|
||||
lda n+2
|
||||
ldx n+2
|
||||
beq lb4
|
||||
dec n+2
|
||||
dex
|
||||
stx n+2
|
||||
ldx #0
|
||||
bra lb3
|
||||
|
||||
lb4 lda #0 write the terminating null
|
||||
sta [s1],Y
|
||||
long M return to the caller
|
||||
lb5 long M return to the caller
|
||||
|
||||
creturn 4:rval
|
||||
lb6 creturn 4:rval
|
||||
end
|
||||
|
||||
****************************************************************
|
||||
|
@ -1060,7 +1073,6 @@ flag equ 1 return flag
|
|||
|
||||
ldy #0 scan until the end of string is reached
|
||||
ldx n+2 or a difference is found
|
||||
bmi equal
|
||||
bne lb0
|
||||
ldx n
|
||||
beq equal
|
||||
|
@ -1072,9 +1084,11 @@ lb1 lda [s1],Y
|
|||
bne lb3
|
||||
dex
|
||||
bne lb1a
|
||||
lda n+2
|
||||
ldx n+2
|
||||
beq equal
|
||||
dec n+2
|
||||
dex
|
||||
stx n+2
|
||||
ldx #0
|
||||
lb1a iny
|
||||
bne lb1
|
||||
inc s1+2
|
||||
|
@ -1200,9 +1214,9 @@ lb3 long I,M increment s by Y and load the value
|
|||
clc
|
||||
adc s
|
||||
tay
|
||||
lda s+2
|
||||
adc #0
|
||||
tax
|
||||
ldx s+2
|
||||
bcc lb4
|
||||
inx
|
||||
|
||||
lb4 lda rtl+1 remove the parameters
|
||||
sta set+2
|
||||
|
|
Loading…
Reference in New Issue