📄 alloc1.s
字号:
.globl plausible.globl lookchar.globl wc.globl seekchar.globl putchar.globl allocate.globl release.globl stats.globl w,r,a,l.globl bufchar.globl copy.globl getbuf.globl swap.globl fixct// routine to copy the contents of one string/ to another.// mov source,r0/ mov dest,r1/ jsr pc,copy/ mov r1,...// on return, r1 points to the new string and should/ be saved. r0 is preserved./copy: mov r0,-(sp) mov r2,-(sp) mov r3,-(sp) jsr pc,wc1: jsr pc,reset mov w(r0),r2 sub a(r0),r2 /W-A mov l(r1),r3 sub a(r1),r3 /L-A cmp r2,r3 ble 1f jsr pc,release mov r2,r0 jsr pc,allocate mov 4(sp),r0/1: mov a(r1),w(r1) /rewind w pointer mov a(r0),-(sp)/4: mov (sp),0f mov afi,r0 sys seek;0:.. ;0 /set input pointer cmp r2,$512. ble 2f mov $512.,r3 /# output this time mov r3,0f mov r3,3f add r3,(sp) sub r3,r2 /# left to output br 1f/2: mov r2,0f mov r2,3f mov r2,r3 clr r2/1: mov afi,r0 sys read;b1;0:.. bes bad cmp r0,r3 bne bad mov afout,r0 mov (r1),0f add r3,(r1) sys seek;0:.. ;0 sys write;b1;3:.. bes bad tst r2 bgt 4b tst (sp)+ mov 4(sp),r0 /restore r0// fix up read ptr of new string/1: mov r(r0),r2 sub a(r0),r2 add a(r1),r2 mov r2,r(r1)// restore and return/ mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r0 rts pc/bad: mov $1,r0 sys write;1f;2f-1f 41: <error on copy\n>2: .even//wc: mov r1,-(sp) mov r2,-(sp) mov r3,-(sp) clr r31: cmp r3,nbuf bge 1f mov r3,r2 asl r2 tst w1(r2) ble 2f mov r3,r1 ashc $9.,r1 bic $777,r1 add $b1,r1 jsr pc,clean2: inc r3 br 1b1: jsr pc,whead mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r1 rts pcswap: mov w(r1),-(sp) mov w(r0),w(r1) mov (sp),w(r0) mov r(r1),(sp) mov r(r0),r(r1) mov (sp),r(r0) mov a(r1),(sp) mov a(r0),a(r1) mov (sp),a(r0) mov l(r1),(sp) mov l(r0),l(r1) mov (sp)+,l(r0) rts pc////// mov position,r0/ mov ...,r1/ jsr pc,seekchar/seekchar: mov r1,-(sp) mov r0,-(sp)1: mov (sp),r0 add a(r1),r0 cmp r0,l(r1) bhi 3f mov r0,r(r1) cmp r0,w(r1) blo 1f mov r0,w(r1) br 1f3: mov (sp),r0 jsr pc,allocate mov 2(sp),r0 jsr pc,copy jsr pc,swap jsr pc,release mov 2(sp),r1 br 1b1: mov (sp)+,r0 mov (sp)+,r1 rts pc/reset: mov r3,-(sp) mov r2,-(sp) clr r31: cmp r3,nbuf bge 1f mov r3,r2 asl r2 mov $-1.,w1(r2) clr b1s(r2) clr b1e(r2) clr u1(r2) inc r3 br 1b1: clr flag mov (sp)+,r2 mov (sp)+,r3 rts pc/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -