Compare commits

..

No commits in common. "master" and "orcalib-220" have entirely different histories.

7 changed files with 113 additions and 179 deletions

View File

@ -1,10 +0,0 @@
filetype -p =.asm src; change -p =.asm asm65816
filetype -p =.macros src; change -p =.macros asm65816
filetype m16.int64 src; change m16.int64 exec
filetype smac src; change smac asm65816
filetype backup src; change backup exec
filetype make src; change make exec
filetype settypes src; change settypes exec
filetype LICENSE txt
filetype README.md txt
filetype obj:README.txt txt

View File

@ -107,8 +107,9 @@ lb2 asl A get the signal handler address
tay
lda >subABRT-2,X
bmi lb3 skip if it is SIG_DFL or SIG_IGN
xba set up the call address
sta >jsl+2
short M set up the call address
sta >jsl+3
long M
tya
sta >jsl+1
ph2 <sig call the user signal handler

100
stdio.asm
View File

@ -83,13 +83,16 @@ 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_err
jcs rts
ph4 <stream do any pending I/O
jsl fflush
sta err initialize err to fflush result
tax
jne rts
stz stdfile not a standard file
lda stream+2 bypass file disposal if the file is
@ -107,10 +110,11 @@ lb1 inc stdfile
cl0 lla p,stderr+4 find the file record that points to this
ldy #2 one
cl1 lda [p],Y
cl1 lda [p]
ora [p],Y
jeq rts
lda [p],Y
tax
ora [p]
jeq rts_err
lda [p]
cmp stream
bne cl2
@ -124,10 +128,46 @@ cl3 lda [stream] remove stream from the file list
sta [p]
lda [stream],Y
sta [p],Y
cl3a ldy #FILE_flag if the buffer was allocated by fopen then
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
lda [stream],Y
and #_IOMYBUF
beq cl3b
beq cl4
ldy #FILE_base+2 dispose of the file buffer
lda [stream],Y
pha
@ -136,47 +176,6 @@ cl3a 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
@ -190,10 +189,7 @@ cl6 lda [p],Y
dey
cpy #2
bne cl6
cl7 bra rts no error found
rts_err lda #EOF
sta err
cl7 stz err no error found
rts plb
creturn 2:err

View File

@ -1584,13 +1584,16 @@ 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

View File

@ -244,8 +244,8 @@ lb3 lda [p1],Y scan until the end of memory is reached
dex
bne lb3
; ldx #0
bra lb5 memory matches
ldx #0 memory matches
bra lb5
lb4 blt less memory differs - set the result
ldx #1
@ -253,9 +253,9 @@ lb4 blt less memory differs - set the result
less ldx #-1
lb5 lda rtl remove the parameters from the stack
lb5 long M
lda rtl remove the parameters from the stack
sta len+1
long M
lda rtl+1
sta len+2
pld
@ -303,8 +303,8 @@ rtl equ 1 return address
short M move 1 byte now
lda [p2]
sta [p1]
dec len
long M
dec len
inc4 p1
inc4 p2
lb1 anop endif
@ -436,11 +436,11 @@ lb10 lda [p2],Y
dex
bne lb9
lb11 ply get the original source pointer
lb11 long M
ply get the original source pointer
plx
lda rtl remove the parameters from the stack
sta len+1
long M
lda rtl+1
sta len+2
pld
@ -482,19 +482,19 @@ rtl equ 1 return address
ph4 <p save the pointer
short I,M
ldx val form a 2 byte value
stx val+1
short M
lda val form a 2 byte value
sta val+1
lda len if there are an odd # of bytes then
lsr A
bcc lb1
txa set 1 byte now
lda val set 1 byte now
sta [p]
long M
dec len
long I,M
inc4 p
lb1 long I,M endif
lb1 long M endif
lda val set len bytes
ldx len+2 set full banks
@ -616,9 +616,7 @@ lb2 long M
clc
adc s1
sta s1
bcc lb2a
inc s1+2
lb2a short M copy characters 'til the null is found
short M copy characters 'til the null is found
ldy #0
lb3 lda [s2],Y
sta [s1],Y
@ -629,9 +627,9 @@ lb3 lda [s2],Y
inc s2+2
bra lb3
lb4 lda rtl return to the caller
lb4 long M return to the caller
lda rtl
sta s2+1
long M
lda rtl+1
sta s2+2
ldx rval+2
@ -751,9 +749,9 @@ less ldx #-1 It wasn't, so *s1 < *s2
lb3 blt less the strings differ - set the result
ldx #1
lb4 lda rtl remove the parameters from the stack
lb4 long M
lda rtl remove the parameters from the stack
sta s2+1
long M
lda rtl+1
sta s2+2
pld
@ -830,9 +828,9 @@ lb1 lda [s2],Y
inc s2+2
bra lb1
lb2 lda rtl return to the caller
lb2 long M return to the caller
lda rtl
sta s2+1
long M
lda rtl+1
sta s2+2
ldx rval+2
@ -958,12 +956,9 @@ str equ 4 pointer to the string
tcd
ldy #0 advance s1 to point to the terminating
tyx null
ldx #0 null
short M
lb1 lda [str],Y
beq lb2
iny
lda [str],Y
beq lb2
iny
bne lb1
@ -971,10 +966,10 @@ lb1 lda [str],Y
inc str+2
bra lb1
lb2 pld remove str from the stack
lda 3,S
sta 7,S
long M
lb2 long M
pld remove str from the stack
lda 2,S
sta 6,S
pla
sta 3,S
pla
@ -1018,35 +1013,27 @@ lb2 long M
clc
adc s1
sta s1
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
short M copy characters 'til the null is found
ldy #0
ldx n
beq lb4
bmi lb4
lb3 lda [s2],Y
sta [s1],Y
beq lb5
iny
bne lb3a
inc s1+2
inc s2+2
lb3a dex
bne lb3
ldx n+2
beq lb4
iny
dex
stx n+2
ldx #0
bne lb3
lda n+2
beq lb4
dec n+2
bra lb3
lb4 lda #0 write the terminating null
sta [s1],Y
lb5 long M return to the caller
long M return to the caller
lb6 creturn 4:rval
creturn 4:rval
end
****************************************************************
@ -1073,6 +1060,7 @@ 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
@ -1084,11 +1072,9 @@ lb1 lda [s1],Y
bne lb3
dex
bne lb1a
ldx n+2
lda n+2
beq equal
dex
stx n+2
ldx #0
dec n+2
lb1a iny
bne lb1
inc s1+2
@ -1203,19 +1189,20 @@ lb1 lda [s],Y
short M
bra lb1
lb2 ldx #0 no match found -> return NULL
lb2 long I,M no match found -> return NULL
ldx #0
txy
long I,M
bra lb4
lb3 long I,M increment s by Y and load the value
tya
and #$00FF
clc
adc s
tay
ldx s+2
bcc lb4
inx
lda s+2
adc #0
tax
lb4 lda rtl+1 remove the parameters
sta set+2
@ -1265,10 +1252,10 @@ lb1 lda [str],Y
lb2 ldy #-1 no match found -> return -1
lb3 pld remove parameters from the stack
lda 3,S
sta 9,S
long M
lb3 long M
pld remove parameters from the stack
lda 2,S
sta 8,S
pla
sta 5,S
pla
@ -1376,10 +1363,10 @@ lb2 cmp #0
iny
bpl lb1
lb3 pld remove parameters from the stack
lda 3,S
sta 9,S
long M
lb3 long M
pld remove parameters from the stack
lda 2,S
sta 8,S
pla
sta 5,S
pla

View File

@ -206,44 +206,6 @@ yPos ds 2
xPos ds 2
end
****************************************************************
*
* ReadMouse2 - return mouse statistics
*
* Outputs:
* Returns a pointer to a record with the following
* structure:
*
* typedef struct MouseRec {
* char mouseMode;
* char mouseStatus;
* int yPos;
* int xPos;
* }
*
****************************************************************
*
ReadMouse2 start
pha
pha
pha
_ReadMouse2
sta >~TOOLERROR
pl2 >mouseMode
pl2 >yPos
pl2 >xPos
lda #mouseMode
ldx #^mouseMode
rtl
mouseMode ds 1
mouseStatus ds 1
yPos ds 2
xPos ds 2
end
****************************************************************
*
* ReadTimeHex - returns the time in hex format

View File

@ -384,8 +384,3 @@
&lab ldx #$1F23
jsl $E10000
MEND
MACRO
&lab _ReadMouse2
&lab ldx #$3303
jsl $E10000
MEND