.title ERASE .inclu 'b:global.mac' sect CODE oErSec: mov #2,r0 mov #VVDR,PProm 10$: call $RePa bcs 999$ call FixTxt bcc 30$ 20$: Write #NoText br 999$ 30$: mov r0,FB1+2 mov #FB1,r0 mov r1,(r0) mov r0,r1 call CnvLet bcs 999$ mov r0,r5 bit #ADMPRV,KSW bne 100$ gos GetRec, <#2, r5, #FB1, #Unlock> tst 32(r1) bne 70$ cmp Me,12(r1) beq 100$ bit #1,14(r1) bne 70$ cmp Me,16(r1) beq 100$ 70$: Write #DHIR br 999$ 100$: mov r5,r1 call oErase 999$: rts pc ;+ ; EXTTXT tar bort ett inl{gg utan att radera i fil 3. ; I |vrigt identisk med ERASE nedan. ;- oExTxt: mov #-1, Tmp br DoDel ;+ ; ERASE tar bort ett inl{gg. Inl{gget skrivs |ver fysiskt. ; Om inl{gget ing}r i ett kommentar-tr{d l{nkas detta om. ; Anrop: r1 => Fysiskt inl{ggsnummer. ; F|rst|r FB2, FB3 & FB4 ;- oErase: clr Tmp DoDel: push mov r1,r4 call MtxBgn call CCOff gos get, <#1, #2, #FB2, #1,> ; Trying to avoid deadlock... mov #1, r0 call Exlock gos GetRec, <#2, r4, #FB3,> mov r1, r5 cmp (r1)+, #1 beq 2$ call MtxEnd mov #2, r0 call Releas mov #1, r0 call Releas Write #TAPAE jmp 100$ 2$: gos FysLin, <,r1,#FB4> ; "Nollst{ll" fil 5. gos Dispos, <#2, r4, #FB4> mov 16(r5), r0 ; Mottagaren mov #GrpLst, r1 call FindCm tst r0 beq 20$ gos GetRec, <#1, rArg-rStr(r0), #FB4,> dec 154(r1) ; Antal aktiva inl{gg/brev gos put, <#1,,#FB4> 20$: mov r4,r0 mov r5,r1 call oDeTxt mov #FB2, r1 dec 26(r1) ; Antal aktiva inl{ggs-cluster gos put, <#1,,r1> ; Save INFO mov #1, r0 mov #2, r1 call UnlBlk call MtxEnd 100$: call CCOn pop rts pc ; + ; DELTXT g|r allt som erase g|r utom att ta bort sj{lva textnoden i fil 2 ; och minska antalet aktiva inl{gg i INFO. ; Anrop: r0 => Fyskiskt inl{ggs nummer. ; r1 => Pekare till textnoden i fil 2 ; Tmp = 0 => radera i fil 3. ; Tmp = -1 => radera inte i fil 3. ; F|rst|r FB4. ; - oDETXT: push call oUnCom bcs 10$ tst tmp bne 10$ call DoEra 10$: pop rts pc ; + ; UnCom utf|r allt som DELTXT g|r utan det att den inte raderar i fil 3 ; Anrop: Som DELTXT ; F|rst|r samtliga register och FB4 ; - oUnCom: mov r0,r4 mov r1,r5 clr FB4-2 mov 32(r5),r2 beq 6$ 4$: call TPG ; Test put get bic #2,14(r1) add #24,r1 clr (r1)+ mov (r1),r2 clr (r1)+ clr (r1)+ tst r2 bne 4$ 6$: mov 30(r5),r2 beq 8$ call TPG cmp r4,26(r1) beq 10$ 8$: mov 24(r5),r2 beq 12$ call TPG mov 26(r5),32(r1) beq 16$ br 12$ 10$: mov 26(r5),26(r1) bne 12$ clr 30(r1) 12$: mov 26(r5),r2 beq 16$ call TPG mov 30(r5),30(r1) 16$: mov FB4-2,r2 beq 18$ gos Put, <#2,r2,#FB4> 18$: bit #1,14(r5) beq 200$ mov 34(r5),r2 mov 36(r5),r3 60$: gos GetRec, <#2, r2, #FB4,> cmp r2, r3 beq 80$ mov r3, 36(r1) gos PutGet, <#2, r3, #FB4> mov r2, 34(r1) br 90$ 80$: clr 34(r1) clr 36(r1) bic #1, 14(r1) 90$: gos Put, <#2,, #FB4> sec br 999$ 200$: clc 999$: rts pc ;+ ; Special rutin. B|r endast kallas p} fr}n DELTXT efter det att UnCom ; har utf|rts. ;- DOERA: mov #FB4, r1 mov r1, r0 mov 20(r5), r2 gos Get, <#3, r2, r1, #1,> add 22(r5), r1 cmp #-1, (r1)+ beq 15$ 10$: Write #FeTF jmp 999$ 15$: gos GetWrd, <#FB4> cmp #1, r0 bne 10$ clr -2(r1) gos GetWrd, <#FB4> mov r0, r3 clr -2(r1) mov #FB4+1000,r4 sub r1, r4 bgt 30$ 20$: call NxtBlk 30$: clr r0 bisb (r1), r0 inc r0 40$: clrb (r1)+ dec r4 bgt 50$ call NxtBlk 50$: sob r0, 40$ sob r3, 30$ mov #FB4, r0 999$: gos put, <#3, r2, r0> rts pc NxtBlk: mov #FB4, r1 gos put, <#3, r2, r1> inc r2 gos Get, <#3, r2, r1, #1,> mov #1000, r4 rts pc TPG: tst FB4-2 beq 10$ gos PutGet, <#2, r2, #FB4> rts pc 10$: gos TryRec, <#2, r2, #FB4,> rts pc Text VVDR, <"Vad vill du RADERA"> Text TAPAE, <"Texten har (troligen) just raderats"> Text FeTF, <"%Felaktigt textformat."> .even .end