mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
171 lines
2.0 KiB
ArmAsm
171 lines
2.0 KiB
ArmAsm
.globl _do_phio
|
|
.globl _swap
|
|
.globl _seldisk
|
|
.text
|
|
_seldisk:
|
|
~~seldisk:
|
|
~i=R6
|
|
~p=R13
|
|
~dsknum=R7
|
|
~selpkt=-18
|
|
link R14,#-18
|
|
movem.l R5-R7/R13-R13,-(sp)
|
|
move.b 9(R14),R7
|
|
move.b R7,R0
|
|
ext.w R0
|
|
and #255,R0
|
|
cmp #15,R0
|
|
ble L2
|
|
move #65535,R0
|
|
bra L1
|
|
L2:
|
|
clr.b -18(R14)
|
|
move.b R7,-15(R14)
|
|
clr.b -17(R14)
|
|
move.l R14,(sp)
|
|
add.l #-18,(sp)
|
|
jsr _do_phio
|
|
move.l -4(R14),_gbls
|
|
bne L3
|
|
move #65535,R0
|
|
bra L1
|
|
L3:
|
|
move.l _gbls,R8
|
|
move.l 10(R8),4+_gbls
|
|
move.l _gbls,R8
|
|
move.l 14(R8),8+_gbls
|
|
clr R0
|
|
bra L1
|
|
L1:tst.l (sp)+
|
|
movem.l (sp)+,R6-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.globl _move
|
|
.text
|
|
_move:
|
|
~~move:
|
|
~i=R7
|
|
~p1=R13
|
|
~p2=R12
|
|
link R14,#0
|
|
movem.l R6-R7/R12-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.l 12(R14),R12
|
|
move 16(R14),R7
|
|
L6:
|
|
move R7,R0
|
|
sub #1,R7
|
|
tst R0
|
|
beq L5
|
|
move.b (R13)+,(R12)+
|
|
bra L6
|
|
L5:L4:tst.l (sp)+
|
|
movem.l (sp)+,R7-R7/R12-R13
|
|
unlk R14
|
|
rts
|
|
.globl _match
|
|
.text
|
|
_match:
|
|
~~match:
|
|
~i=R7
|
|
~p1=R13
|
|
~p2=R12
|
|
~chk_ext=17
|
|
~temp=R6
|
|
link R14,#0
|
|
movem.l R5-R7/R12-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.l 12(R14),R12
|
|
move #12,R7
|
|
L10:
|
|
move.b (R13),R6
|
|
eor.b #63,R6
|
|
move.b (R13)+,R0
|
|
ext.w R0
|
|
move.b (R12)+,R1
|
|
ext.w R1
|
|
eor R1,R0
|
|
and #127,R0
|
|
beq L11
|
|
tst.b R6
|
|
beq L11
|
|
clr R0
|
|
bra L7
|
|
L11:
|
|
sub #1,R7
|
|
L9:
|
|
tst R7
|
|
bne L10
|
|
L8:
|
|
tst.b 17(R14)
|
|
beq L12
|
|
cmp.b #63,(R13)
|
|
beq L13
|
|
move.b (R13),R0
|
|
ext.w R0
|
|
move.b (R12),R1
|
|
ext.w R1
|
|
eor R1,R0
|
|
move.l 8+_gbls,R9
|
|
move.b 4(R9),R1
|
|
ext.w R1
|
|
not.b R1
|
|
and R1,R0
|
|
beq L13
|
|
clr R0
|
|
bra L7
|
|
L13:
|
|
add.l #2,R13
|
|
add.l #2,R12
|
|
move.b (R13),R0
|
|
ext.w R0
|
|
move.b (R12),R1
|
|
ext.w R1
|
|
eor R1,R0
|
|
and #63,R0
|
|
beq L14
|
|
clr R0
|
|
bra L7
|
|
L14:L12:
|
|
move #1,R0
|
|
bra L7
|
|
L7:tst.l (sp)+
|
|
movem.l (sp)+,R6-R7/R12-R13
|
|
unlk R14
|
|
rts
|
|
.globl _openfile
|
|
.text
|
|
_openfile:
|
|
~~openfile:
|
|
~fcb_ext=R7
|
|
~dirindx=16
|
|
~rtn=R6
|
|
~fcbp=R13
|
|
~dirp=12
|
|
link R14,#0
|
|
movem.l R5-R7/R13-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move #1,(sp)
|
|
move.l 12(R14),-(sp)
|
|
move.l R13,-(sp)
|
|
jsr _match
|
|
add #8,sp
|
|
move.b R0,R6
|
|
beq L16
|
|
move.b 12(R13),R7
|
|
move #32,(sp)
|
|
move.l R13,-(sp)
|
|
move.l 12(R14),-(sp)
|
|
jsr _move
|
|
add #8,sp
|
|
move.b R7,12(R13)
|
|
L16:
|
|
move.b R6,R0
|
|
ext.w R0
|
|
bra L15
|
|
L15:tst.l (sp)+
|
|
movem.l (sp)+,R6-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.data
|