.title change .includ 'b:global.mac' sect code ;++ ; ADDMEM adderar en person som medlemm i ett m|te. ; Argument: r0 => Logiskt person nummer. ; r1 => Fysiskt m|tes nummer. ; ; Return: S{tter carry:n om personen redan var medlemm. ; OBS, anv{nder FB3, FB4. ;-- oADDMM: push call MtxBgn gos getrec, <#1, r1, #FB4, #UnLock> mov r1,r4 mov 26(r4),r2 ; MEDLEMMAR n beq 40$ mov 24(r4),r5 ; Antal medlemmar clr fb3-2 10$: gos tryrec, <#1, r2, #FB3, #Lock> mov #61.,r3 mov 2(r1),r2 add #6,r1 20$: dec r5 blt 30$ cmp (r1)+,(sp) beq 27$ sob r3,20$ tst r5 bgt 10$ br 40$ 27$: mov #1,r0 call Releas jmp 377$ 30$: mov (sp),(r1) 35$: gos put <#1, r0, #FB3> br 150$ 40$: mov #1,r0 mov #FB3,r1 call spawn mov (r1),r3 mov #5,(r1)+ clr (r1)+ mov 30(r4),r2 mov r2,(r1)+ mov (sp),(r1) gos put <#1, r0, #FB3> mov r3,30(r4) tst r2 beq 50$ gos getrec <#1, r2, #FB3, #Lock> mov r3,2(r1) br 35$ 50$: mov r3,26(r4) 150$: cmp Me, (sp) bne 160$ dec mycinl br 165$ 160$: mov #LibInf, r1 call GetAdr inc 10(r1) ; Edit Number for Texts 165$: mov #GRPLST,r1 mov (sp),r0 call findcm mov rArg-rStr(r0),r5 gos tryrec <#1, r5, #FB3, #Lock> mov 24(r1),r3 clr r2 div #20.,r2 mov 30(r1),r2 mul #6,r3 bgt 170$ tst 24(r1) beq 170$ mov #1,r0 mov #FB3,r1 call spawn mov (r1),r3 mov #6,(r1)+ clr (r1)+ mov r2,(r1)+ clr (r1)+ mov 6(r4),(r1)+ clr (r1)+ clr (r1) gos PutGet, <#1, r2, #FB3> ; Put(r0) and get(r2) mov r3,2(r1) br 180$ 170$: gos tryrec, <#1, r2, #FB3, #Lock> add r3,r1 add #10,r1 mov 6(r4),(r1)+ clr (r1)+ clr (r1) clr r3 180$: gos PutGet, <#1, r5, #FB3> inc 24(r1) tst r3 beq 190$ mov r3,30(r1) 190$: mov #1,r2 mov 2(sp),r3 gos PutGet, inc 24(r1) mov 26(r4),26(r1) mov 30(r4),30(r1) gos put, clr r0 br 444$ 377$: mov #-1, r0 444$: call MtxEnd tst r0 beq 999$ sec 999$: pop rts pc ;++ ; SUBMEM subtraherar en medlem fr}n ett m|te ; Argument: r0 => Logiskt person nummer ; r1 => Fysiskt m|tes nummer ; ; Return: S{tter carry:n om personen ej var medlem. ; ; OBS, anv{nder FB3 samt TMP+20 ;-- oSUBMM: push call MtxBgn gos getrec, <#1, r1, #FB3, #Lock> mov 24(r1),r5 ; Antal medlemmar beq 999$ 10$: mov r5,r3 clr r2 dec r3 div #61.,r2 ; Antalet medlemmar i sista blk:t inc r3 mov 30(r1),r2 clr r4 ; Flagga clr tmp+20 20$: gos tryrec, <#1, r2, #FB3, #Lock> mov 4(r1),r2 add #6,r1 tst r4 bne 30$ mov r3,r4 asl r4 add r1,r4 mov -(r4),r4 cmp #1,r3 blt 30$ mov r2,tmp+20 30$: cmp (r1)+,(sp) beq 50$ dec r5 beq 40$ sob r3,30$ 35$: mov #61.,r3 br 20$ 40$: mov #1,r0 call releas br 999$ 50$: mov r4,-(r1) mov 2(sp),r2 gos PutGet, <#1, r2, #FB3> cmp (sp),10(r1) bne 60$ clr 10(r1) ; Organist|ren uttr{der 60$: clr r5 dec 24(r1) beq 70$ mov tmp+20,r5 beq 70$ mov 30(r1),r4 mov r5,30(r1) bne 80$ 70$: gos put, <#1, r0, #FB3> br 100$ 80$: gos PutGet, <#1, r5, #FB3> clr 2(r1) gos put, <#1, r0, #FB3> gos dispos, <#1, r4, #FB3> 100$: clr r0 br 1000$ 999$: mov #-1, r0 1000$: call MtxEnd tst r0 beq 2000$ sec 2000$: pop rts pc ;++ ; SUBPRS subtraherar ett m|te fr}n en person. ; Argument: r0 => Logiskt m|tes nummer ; r1 => Fysiskt person nummer ; ; Return: S{tter carry:n om personen ej var med i m|tet. ; ; OBS, anv{nder FB3, FB2 samt TMP+12,14,16,20 ;-- oSUBPR: push call MtxBgn gos getrec, <#1, r1, #FB3, #Lock> mov 24(r1),r5 ; Antal medlemsskap. beq 45$ 10$: mov r5,r3 clr r2 dec r3 div #20.,r2 ; Antalet medlemsskap i sista blk:t inc r3 clr tmp+20 20$: gos TryRec, <#1, 30(r1), #FB3, #Lock> mov 4(r1),r2 add #10,r1 push r3 clr r4 mul #6,r3 mov r3,r4 pop r3 add r1,r4 mov -(r4),tmp+16 mov -(r4),tmp+14 mov -(r4),tmp+12 cmp (r4), (sp) beq 25$ clr (r4)+ clr (r4)+ clr (r4)+ 25$: cmp #1,r3 blt 30$ mov r2,tmp+20 30$: cmp (r1)+,(sp) beq 50$ cmp (r1)+,(r1)+ dec r5 beq 40$ sob r3,30$ 35$: mov #FB3, r4 ; Flag gos TstRec, <#1, r2, r4> bcc 37$ clr r4 mov #1, r0 call ExLock gos GetRec, <#1, r2, #FB2,> 37$: mov 4(r1),r2 mov #20.,r3 add #10, r1 br 30$ 40$: mov #1,r0 call releas 45$: br 999$ 50$: mov tmp+14,(r1)+ mov (r1), tmp+14 mov tmp+16,(r1) mov tmp+12, -4(r1) mov 2(sp),r2 gos Put, <#1,, #FB3> tst r4 beq 60$ gos GetRec, <#1, r2, #FB2,> br 65$ 60$: gos PutGet, <#1, r2, #FB2> 65$: clr r5 dec 24(r1) beq 70$ mov tmp+20,r5 beq 70$ mov 30(r1),r4 mov r5,30(r1) bne 80$ 70$: gos put, <#1, r0, #FB2> br 100$ 80$: gos PutGet, <#1, r5, #FB2> clr 2(r1) gos put, <#1, r0, #FB2> gos dispos, <#1, r4, #FB2> 100$: mov tmp+14, r0 ; START-record. beq 110$ gos dispos, <#2, r0, #FB2> ; Dispos start record 110$: mov #1, r0 call Releas clr r0 br 1000$ 999$: mov #-1, r0 1000$: call MtxEnd tst r0 beq 2000$ sec 2000$: pop rts pc oCHANG: mov #2,r0 cmp r0,@#Level bhi 10$ call fixlst bcs 27$ mov found(r0),r1 call GetAdr br 20$ 10$: mov me,r0 mov #GRPLST,r1 gos findcm mov r0,r1 sub #rStr,r1 20$: cmp #4, rPri1(r1) bne 7$ jmp oTtChg ; Continue else where 7$: mov #PrsPro, r5 mov #6, r0 21$: mov (r1)+, (r5)+ sob r0, 21$ mov #PrsPro, r5 clr tmp ; flaggor gos getrec, <#1, rArg(r5), #FB2, #UnLock> mov r1,r4 bit #ADMPRV,KSW bne 29$ cmp Me,6(r4) bne 22$ bitb #xCHNA,37(r4) bne 29$ br 25$ 22$: cmp Me,10(r4) beq 29$ 25$: Write #DHIR 27$: jmp 999$ 29$: mov r5, r0 call CHGNAM bit #ABSPRV!ADMPRV, KSW bne 40$ cmp Me, 10(r4) bne 100$ 40$: call pcrlf Write #MaxTxt mov 152(r4), r1 beq 50$ clr r0 call deco16 br 60$ 50$: Write #UnLimi 60$: call pcrlf PARSER #MNALst , #377, #NyMax call pcrlf tst Level beq 100$ mov Found, r1 call GetAdr tst (r1) bne 70$ clr 152(r4) br 90$ 70$: clr r0 call gval mov r0,152(r4) 90$: bis #40,tmp 100$: call pcrlf cmp #3,(r4) ; Typ av objekt = Person beq 110$ bhi 105$ jmp 250$ ; M|te 105$: jmp 350$ ; N{tPerson 110$: mov #PRILST,r3 mov r3,r1 bit #ABSPRV,KSW bne 140$ cmp Me,10(r4) beq 120$ bit #ADMPRV,KSW bne 115$ jmp 200$ 115$: cmpb MyPriv,36(r4) bhi 120$ cmp Me,6(r4) beq 120$ jmp 377$ 120$: clr r0 bisb MyPriv,r0 gos findcm mov rNxt-rStr(r0),r3 bne 140$ jmp 200$ 140$: clr r0 bisb 36(r4),r0 gos findcm Write #GPR Write r0 call pcrlf PARSER r3 , #377, #NYP call pcrlf tst Level beq 160$ mov Found, r1 call GetAdr movb (r1),36(r4) bis #10001,tmp 160$: call pcrlf Write #Stato clr r1 bisb 37(r4),r1 clr r0 call deco16 call pcrlf PARSER #HETLST, #377, #NYSO call pcrlf tst Level beq 170$ clr r0 call Gval movb r0,37(r4) bis #1,tmp 170$: call pcrlf Write #NetStT mov 124(r4),r1 clr r0 call deco16 call pcrlf PARSER #HETLST, #377, #NYSO call pcrlf tst Level beq 200$ call Gval mov r0, 124(r4) bis #100,tmp 200$: mov #paswp3,r0 bit #10000, tmp ; Har statusbyten {ndrats? bne 210$ ; Ja! mov #paswp2,r0 ; L|senord m}ste vara sista fr}gan. 210$: gos AskPW, tstb tmpstr bne 220$ bit #10000, tmp beq 230$ Write #YouMst call pcrlf br 200$ 220$: bis #2, tmp 230$: jmp 377$ 250$: mov #xOPN,r2 ; M\TE Write #TYPt bit r2,16(r4) beq 260$ mov #OPN,r1 br 270$ 260$: mov #CLOt,r1 270$: call strout call pcrlf call 10000$ 280$: mov #xWP,r2 bit r2,16(r4) bne 290$ Write #EJt 290$: Write #SKRS call pcrlf call 10000$ Write #DsTx mov #LocTx, r1 mov #xExDs, r2 ; External distribution (by default)? bit r2, 16(r4) beq 295$ mov #ExtTx, r1 295$: call strout call pcrlf call 10000$ Write #ORGAN mov 10(r4),r0 bne 305$ Write #ING br 308$ 305$: call prtnam 308$: call pcrlf 310$: PARSER #Pers1, #1, #NYORG call pcrlf tst Level beq 377$ clr r0 call fixlst bcs 310$ mov Found(r0),r1 call GetAdr mov (r1), r0 mov r0,10(r4) mov rArg(r5),r1 call oAddmm bis #20,tmp br 377$ 350$: mov #xNCl, r2 ; M\TE Write #TYPt bit r2,16(r4) bne 360$ mov #OPN,r1 br 362$ 360$: mov #CLOt,r1 362$: call strout call pcrlf call 10000$ mov #xNWP,r2 bit r2,16(r4) bne 364$ Write #EJt 364$: Write #SKRS call pcrlf call 10000$ 377$: mov tmp, r3 beq 700$ call MtxBgn gos getrec, <#1, rArg(r5), #FB3, #Lock> bit #1,r3 beq 380$ mov 36(r4),36(r1) 380$: bit #2,r3 beq 400$ add #54,r1 bis #1, (r1)+ mov #CryBuf,r2 mov #CODLEN, r3 390$: movb (r2)+,(r1)+ sob r3,390$ br 699$ 400$: bit #10,r3 beq 410$ mov 16(r4),16(r1) 410$: bit #20,r3 beq 440$ mov 10(r4),10(r1) 440$: bit #40, r3 beq 460$ mov 152(r4), 152(r1) 460$: bit #100, r3 beq 699$ mov 124(r4), 124(r1) 699$: gos Put, <#1,, #FB3> mov #1,r0 call releas ; Remove explicit look call MtxEnd 700$: call pcrlf 999$: rts pc 10000$: PARSER #JANEJL, #377, #ChP call pcrlf tst Level beq 10010$ mov found, r1 call GetAdr tst (r1) beq 10010$ xor r2,16(r4) bis #10,tmp 10010$: call pcrlf rts pc ;+ ; CHGNAM {ndrar namnet p} en grupp/terminal ; Anrop: r0, pekare till listan i minnet. ;- CHGNAM: push mov r0,r5 mov (r5), r0 Write #Namnk call PrtNam call pcrlf mov #LSTGRP, r1 call GetAdr cmp #-1, 2(r1) bne 30$ Write #MAF2 br 100$ 30$: PARSER #Namlst, #377, #NYNAM call pcrlf tst Level beq 100$ 40$: mov strs,r3 mov strs+2,r2 sub r3,r2 dec r2 mov r2,r0 mov r3,r1 cmpb #4, rPri1(r5) bne 50$ cmp #15., r0 bhis 50$ Write #Nafl br 30$ 50$: call ambtst bcc 70$ cmp (r5), r0 beq 70$ Write #amb br 30$ 70$: call MtxBgn gos getrec, <#4, (r5), #FB1, #Lock> push r1 add #6, r1 movb r2,(r1)+ 80$: movb (r3)+,(r1)+ sob r2,80$ mov #GRPLST, r1 mov (r5), r0 call FindCm pop r1 cmpb 6(r1), (r0) bhi 84$ add #6, r1 clr r2 bisb (r1)+, r2 movb r2, (r0)+ 82$: movb (r1)+, (r0)+ sob r2, 82$ br 90$ 84$: sub #rStr, r0 clr rPri1(r0) ; Remove old list gos LnkGrp, <(r0), r1, #FB3> 90$: gos put <#4,,#FB1> call MtxEnd 100$: pop rts pc oTTCHG: mov r1, r3 mov (r3), r4 cmp #-1, r4 bne 5$ add #rStr, r1 call strout Write #CntChg br 999$ 5$: gos Getrec, <#4, r4, #FB2, #Unlock> mov r1, r5 bit #AdmPrv, KSW bne 10$ cmp Me, 2(r1) beq 10$ mov #4, r0 call Releas Write #DHIR br 999$ 10$: mov r3, r0 call CHGNAM call SETDEF call pcrlf call MtxBgn gos Getrec, <#4, r4, #FB3,> mov 4(r5), 4(r1) add #26, r1 add #26, r5 mov #25, r0 20$: mov (r5)+, (r1)+ sob r0, 20$ gos Put, <#4,,#FB3> call MtxEnd 999$: rts pc ; Str{ngar Text NYNAM, <"Nytt namn: "> Text MAXTXT, <"Max antal aktiva texter: "> Text NyMax, <"Nytt max "> Text GPR, <"Privilegier: "> Text NYP, <"Nya privilegier "> Text NetStT, <"N{tstatus: "> Text NYSO, <"Ny status "> Text NYORG, <"Ny organisat|r "> Text UnLimi, <"obegr{nsat"> Text DsTx, <"Distribution: "> Text LocTx, <"lokal"> Text ExtTx, <"extern"> Text MAF2, <"Minnet {r fullt varf|r namnet ej kan {ndras"> Text CntChg, <" kan inte {ndras."> Text YouMst, <"Om privilegerna {ndrats m}ste l|senordet anges"> .even .end