mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-22 16:04:18 +00:00
312 lines
3.6 KiB
ArmAsm
312 lines
3.6 KiB
ArmAsm
.globl _rdsec
|
|
.globl _swap
|
|
.globl _dirscan
|
|
.globl _openfile
|
|
.globl _blkindx
|
|
.text
|
|
_blkindx:
|
|
~~blkindx:
|
|
~i=R7
|
|
~blkshf=R6
|
|
~dparmp=R12
|
|
~fcbp=R13
|
|
link R14,#0
|
|
movem.l R5-R7/R12-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.l 8+_gbls,R12
|
|
move.b 2(R12),R6
|
|
ext.w R6
|
|
move.b 12(R13),R0
|
|
ext.w R0
|
|
move.b 4(R12),R1
|
|
ext.w R1
|
|
and R1,R0
|
|
move #7,R1
|
|
sub R6,R1
|
|
asl R1,R0
|
|
move R0,R7
|
|
move R7,R0
|
|
move.b 32(R13),R1
|
|
ext.w R1
|
|
and #255,R1
|
|
move R6,R2
|
|
asr R2,R1
|
|
add R1,R0
|
|
bra L1
|
|
L1:tst.l (sp)+
|
|
movem.l (sp)+,R6-R7/R12-R13
|
|
unlk R14
|
|
rts
|
|
.globl _blknum
|
|
.text
|
|
_blknum:
|
|
~~blknum:
|
|
~index=R7
|
|
~wrdfcb=14
|
|
~fcbp=R13
|
|
link R14,#0
|
|
movem.l R6-R7/R13-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move 12(R14),R7
|
|
tst 14(R14)
|
|
beq L3
|
|
move R7,R8
|
|
add.l R8,R8
|
|
move 16(R13,R8.l),(sp)
|
|
jsr _swap
|
|
bra L2
|
|
bra L4
|
|
L3:
|
|
move.b 16(R13,R7),R0
|
|
ext.w R0
|
|
and #255,R0
|
|
bra L2
|
|
L4:L2:tst.l (sp)+
|
|
movem.l (sp)+,R7-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.globl _do_io
|
|
.text
|
|
_do_io:
|
|
~~do_io:
|
|
~block=8
|
|
~dparmp=R13
|
|
~lsec=-4
|
|
~rcrd=11
|
|
link R14,#-4
|
|
movem.l R7-R7/R13-R13,-(sp)
|
|
move.l 8+_gbls,R13
|
|
clr.l R0
|
|
move 8(R14),R0
|
|
move.b 2(R13),R1
|
|
ext.w R1
|
|
ext.l R1
|
|
asl.l R1,R0
|
|
move.b 3(R13),R1
|
|
ext.w R1
|
|
move.b 11(R14),R2
|
|
ext.w R2
|
|
and R2,R1
|
|
ext.l R1
|
|
add.l R1,R0
|
|
move.l R0,-4(R14)
|
|
move.l 12+_gbls,(sp)
|
|
move.l -4(R14),-(sp)
|
|
jsr _rdsec
|
|
add #4,sp
|
|
bra L5
|
|
L5:tst.l (sp)+
|
|
movem.l (sp)+,R13-R13
|
|
unlk R14
|
|
rts
|
|
.globl _new_ext
|
|
.text
|
|
_new_ext:
|
|
~~new_ext:
|
|
~mod=R7
|
|
~ext=R6
|
|
~fcbp=R13
|
|
link R14,#0
|
|
movem.l R5-R7/R13-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.b 14(R13),R7
|
|
and.b #63,R7
|
|
move.b 12(R13),R6
|
|
add.b #1,R6
|
|
cmp.b #32,R6
|
|
blt L7
|
|
clr.b R6
|
|
add.b #1,R7
|
|
L7:
|
|
cmp.b #64,R7
|
|
blt L8
|
|
move #6,R0
|
|
bra L6
|
|
L8:
|
|
move.b R7,R0
|
|
ext.w R0
|
|
move.b 14(R13),R1
|
|
ext.w R1
|
|
and #63,R1
|
|
cmp R1,R0
|
|
bne L9
|
|
move.b R6,R0
|
|
ext.w R0
|
|
move.b 12(R13),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
|
|
and #31,R0
|
|
bne L10
|
|
move.b R6,12(R13)
|
|
clr R0
|
|
bra L6
|
|
L10:L9:
|
|
move.b R7,14(R13)
|
|
move.b R6,12(R13)
|
|
move.l R13,(sp)
|
|
move.l #_openfile,-(sp)
|
|
jsr _dirscan
|
|
add #4,sp
|
|
cmp #255,R0
|
|
blo L11
|
|
move #4,R0
|
|
bra L6
|
|
L11:
|
|
clr R0
|
|
bra L6
|
|
L6:tst.l (sp)+
|
|
movem.l (sp)+,R6-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.globl _calcext
|
|
.text
|
|
_calcext:
|
|
~~calcext:
|
|
~i=R7
|
|
~p=R12
|
|
~fcbp=R13
|
|
link R14,#0
|
|
movem.l R6-R7/R12-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move #15,R7
|
|
lea 32(R13),R12
|
|
L15:
|
|
tst.b -(R12)
|
|
bne L13
|
|
sub #1,R7
|
|
L14:
|
|
tst R7
|
|
bne L15
|
|
L13:
|
|
move.l 8+_gbls,R8
|
|
cmp #255,6(R8)
|
|
bls L16
|
|
lsr R7
|
|
L16:
|
|
clr.l R0
|
|
move #7,R0
|
|
move.l 8+_gbls,R9
|
|
move.b 2(R9),R1
|
|
ext.w R1
|
|
sub R1,R0
|
|
lsr R0,R7
|
|
move R7,R0
|
|
move.l 8+_gbls,R9
|
|
move.b 4(R9),R1
|
|
ext.w R1
|
|
not.b R1
|
|
move.b 12(R13),R2
|
|
ext.w R2
|
|
and R2,R1
|
|
and #31,R1
|
|
or R1,R0
|
|
bra L12
|
|
L12:tst.l (sp)+
|
|
movem.l (sp)+,R7-R7/R12-R13
|
|
unlk R14
|
|
rts
|
|
.globl _get_rc
|
|
.text
|
|
_get_rc:
|
|
~~get_rc:
|
|
~ext=R7
|
|
~fcbp=R13
|
|
link R14,#0
|
|
movem.l R6-R7/R13-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.l R13,(sp)
|
|
jsr _calcext
|
|
move R0,R7
|
|
move.b 12(R13),R0
|
|
ext.w R0
|
|
cmp R0,R7
|
|
bne L18
|
|
move.b 15(R13),R0
|
|
ext.w R0
|
|
and #255,R0
|
|
bra L17
|
|
bra L19
|
|
L18:
|
|
move.b 12(R13),R0
|
|
ext.w R0
|
|
cmp R0,R7
|
|
bls L20
|
|
move #128,R0
|
|
bra L17
|
|
bra L21
|
|
L20:
|
|
clr R0
|
|
bra L17
|
|
L21:L19:L17:tst.l (sp)+
|
|
movem.l (sp)+,R7-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.globl _seqread
|
|
.text
|
|
_seqread:
|
|
~~seqread:
|
|
~block=R7
|
|
~index=R6
|
|
~bigfile=R4
|
|
~fcbp=R13
|
|
~parm=R5
|
|
link R14,#0
|
|
movem.l R3-R7/R13-R13,-(sp)
|
|
move.l 8(R14),R13
|
|
move.l 8+_gbls,R8
|
|
move 6(R8),R4
|
|
and #-256,R4
|
|
cmp.b #128,32(R13)
|
|
bne L23
|
|
move.l R13,(sp)
|
|
jsr _new_ext
|
|
tst R0
|
|
beq L24
|
|
move #1,R0
|
|
bra L22
|
|
L24:
|
|
clr.b 32(R13)
|
|
L23:
|
|
move.l R13,(sp)
|
|
jsr _get_rc
|
|
move.b 32(R13),R1
|
|
ext.w R1
|
|
and #255,R1
|
|
cmp R1,R0
|
|
bhi L25
|
|
move #1,R0
|
|
bra L22
|
|
L25:
|
|
move.l R13,(sp)
|
|
jsr _blkindx
|
|
move R0,R6
|
|
move R4,(sp)
|
|
move R6,-(sp)
|
|
move.l R13,-(sp)
|
|
jsr _blknum
|
|
add #6,sp
|
|
move R0,R7
|
|
tst R7
|
|
bne L26
|
|
move #1,R0
|
|
bra L22
|
|
L26:
|
|
move.b 32(R13),R0
|
|
ext.w R0
|
|
move R0,(sp)
|
|
move R7,-(sp)
|
|
jsr _do_io
|
|
add #2,sp
|
|
add.b #1,32(R13)
|
|
bra L22
|
|
L22:tst.l (sp)+
|
|
movem.l (sp)+,R4-R7/R13-R13
|
|
unlk R14
|
|
rts
|
|
.data
|