52 lines
597 B
ArmAsm
52 lines
597 B
ArmAsm
/
|
|
/
|
|
|
|
/ openr, openw--
|
|
/
|
|
/ call open(r|w) (string, iunit)
|
|
/ or,
|
|
/ call open(r|w) (argno, iunit)
|
|
/ where argno is an argument number (0 is command name)
|
|
|
|
.globl openr.
|
|
.globl openw.
|
|
|
|
.globl utable
|
|
.globl btable
|
|
.globl ftable
|
|
.globl getbuf
|
|
.globl fopen
|
|
.globl fcreat
|
|
|
|
openr.: temp
|
|
.+2
|
|
mov pc,-(sp)
|
|
br 1f
|
|
|
|
openw.: temp
|
|
.+2
|
|
clr -(sp)
|
|
1:
|
|
mov 4(r3),r1
|
|
mov 2(r1),r1
|
|
jsr r5,chkunit
|
|
tstb utable(r1)
|
|
beq 1f
|
|
jsr r5,rerr; 101.
|
|
sys exit
|
|
1:
|
|
jsr r5,getbuf
|
|
mov 2(r3),r0
|
|
mov 2(r0),r0
|
|
cmp r0,$32.
|
|
bhi 1f
|
|
cmp r0,*argp
|
|
bhi err
|
|
asl r0
|
|
add argp,r0
|
|
br 2f
|
|
1:
|
|
tst (sp)+
|
|
beq 1f
|
|
movb $1,utable(r1)
|