.title MEMHDL .includ 'b:global' sect code RAHDL: cmp #3, Level bhi 999$ mov #4, r0 call FixLst bcs 999$ mov Found(r0), r1 call GetAdr mov #PrsPro, r5 mov #6, r0 10$: mov (r1)+, (r5)+ sob r0, 10$ mov #PrsPro, r5 bit #ADMPRV, KSW bne 50$ cmp Me,(r5) beq 50$ gos getrec, <#1, rArg(r5), #FB1, #Unlock> cmp Me,10(r1) beq 50$ Write #DHIR br 999$ 50$: tst (pc)+ 999$: sec rts pc oADDM: call rahdl bcs e312 mov #1,r3 mov #G60,r4 cmp r3,rPri1(r5) bne e162 inc r3 mov #G104,r4 call CCOff E162: PARSER #Meet1, r3, r4 call PCR2LF tst level beq e306 clr r0 call fixlst bcs e162 mov Found(r0),r1 call GetAdr cmp #1,r3 beq e254 mov rArg(r1),r2 bit #ADMPRV,KSW bne 10$ gos getrec, <#1, r2, #FB1, #Unlock> bit #xOPN,16(r1) bne 10$ cmp Me,10(r1) beq 10$ Write #DHIR br e162 10$: mov r2,r1 mov (r5),r0 br e262 e254: mov (r1),r0 mov rArg(r5),r1 e262: call addmem bcc e162 call prtnam Write #G130 br e162 e306: call ccon e312: rts pc oSUBM: call rahdl bcs e540 mov #G226,r4 mov #1,r3 cmp r3,rPri1(r5) bne e360 inc r3 mov #G256,r4 call CCOff e360: PARSER #Meet1, r3, r4 call PCR2LF tst level beq e534 clr r0 call fixlst bcs e360 mov Found(r0), r1 call GetAdr mov r1,r2 cmp #1,r3 beq e452 mov rArg(r2),r1 mov (r5),r0 br e460 e452: mov rArg(r5),r1 mov (r2),r0 mov CurSek, LstAdr e460: call submem bcc e502 call prtnam Write #G376 e502: mov LstAdr, r1 call GetAdr ; Restore Sektion cmp #1,r3 beq e520 mov rArg(r5),r1 mov (r2),r0 br e526 e520: mov (r5),r0 mov rArg(r2),r1 e526: call subprs br e360 e534: call ccon e540: rts pc oLEAVP: mov #2,r0 cmp level,r0 blt e566 e554: call fixlst mov Found(r0),r1 call GetAdr mov r1, r5 br e632 e566: mov Thsgr,r1 bne e612 mov #G330,Pprom call $RePa bcs e726 br e554 e612: mov r1,r0 mov #GRPLST,r1 call findcm mov r0,r5 sub #rStr,r5 e632: push CurSek mov (r5),r0 cmp Thsgr,r0 bne e650 clr r1 call GoToIt e650: cmp r0, CurGrp bne 10$ clr CurGrp 10$: call CCOff mov MyRec,r1 call subprs bcc e706 Write #G372 Write #G376 e706: pop r1 call PopSek ; Restor sektion mov Me,r0 mov rArg(r5),r1 call submem call ccon e726: rts pc REHDL: cmp #3, level blos 20$ mov oldl, r0 bne 30$ 10$: jmp 99$ 20$: mov #4, r0 call FixTxt mov #FB1+2, r3 mov r0, (r3) mov r1, -(r3) mov r3, r0 mov r0, r1 ; Use FB1 call cnvlet bcs 10$ 30$: mov r0,r5 gos GetRec, <#2, r5, #FB1, #Unlock> mov r1, r3 ; Useed by SUBR mov #23, r4 ; Parser priority (Used by ADDR) bit #xEXIN, 14(r1) beq 40$ bic #10, r4 40$: bit #ADMPRV, KSW bne 50$ cmp Me, 12(r1) beq 50$ cmp Me, 16(r1) beq 50$ Write #DHIR br 99$ 50$: tst (pc)+ 99$: sec rts pc oSUBR: call rehdl bcs 999$ bit #xMulR, 14(r3) ; Multi receiver? bne 10$ Write #HIFM br 999$ 10$: PARSER #Meet1, #3, #G226 call pcr2lf tst Level beq 999$ mov Found, r1 call GetAdr mov (r1), r4 ; Group to br removed mov r5, r2 20$: cmp 16(r3), r4 beq 50$ mov 34(r3), r2 cmp r2, r5 ; Is the circle completed? beq 30$ gos TryRec, <#2, r2, #FB1, #Unlock> mov r1, r3 br 20$ 30$: mov r4, r0 call prtnam Write #AIM br 10$ 50$: mov 34(r3), r5 mov r2, r1 call ExtTxt ; Remove receivers text-nod gos GetRec, <#2, r5, #FB1, #Unlock> mov r5, oldl mov r1, r3 bit #xMulR, 14(r1) bne 10$ 999$: rts pc oADDR: call rehdl bcs 999$ mov 12(r3), tmp mov 20(r3), tmp+2 mov 22(r3), tmp+4 mov 34(r3), tmp+6 mov #DstBuf, r1 clr (r1)+ mov r1, EoDPos 10$: PARSER #AdRLst, #-1, #AdT call pcr2lf tst level beq 100$ mov Found, r1 call GetAdr call @(r1) br 10$ 100$: tst DstBuf bne 110$ call pcrlf br 999$ 110$: mov 2(r3), OrgTxt mov 4(r3), Orgtxt+2 mov 14(r3), r2 ; Status word for our TEXT bis #xMulR, r2 bic #xEXT!xEXIN!xKOM, r2 call CCoff mov tmp+6, r4 bne 120$ mov r5, r4 br 200$ 120$: call MtxBgn gos getrec, <#2, r4, #Fb2,> clr 36(r1) ; Cut our MultiReceiverChain open. gos Put, <#2,, #Fb2> call MtxEnd 200$: gos SendIt, 999$: call CCOn e1230: rts pc oAdRec: jmp KOMNYI .rem & ;+ ; AddRec adderar en motatagare till en text. ; Anrop: r0, Mottagare. ; r1, Fysiskt text nummer (record i fil 2) ; r2, Internet addres i minnet. ;- oAdRec: push ; R1 seams to be record number mov r0, r4 ; Save r0 for later use mov r1, r5 ; r5 is phys. text mov r2, tmp+10 mov r1, r2 call MtxBgn gos getrec <#2, r2, #FB2,> ; Get first record in possible chain bit #xMulr, 14(r1) ; Multiple receivers? bne 100$ ; if so - skip to 100$ tst tmp+10 bne 200$ cmp r4, 16(r1) ; Already receiver? bne 200$ ; No - goto 200$ jmp 999$ ; here if multiple receivers 100$: tst tmp+10 bne 110$ cmp 16(r1), r4 ; Already receiver? bne 110$ jmp 999$ 110$: mov 34(r1), r2 ; Obtain next-pointer cmp r2, r5 ; Done a complete turn? beq 200$ gos tryrec <#2, r2, #FB2,> br 100$ ; Try next ; Now r1 points to an implicitly locked text record, r2 is record # 200$: mov #2, r0 ; Channel == 2 call releas ; Release it mov r1, r3 mov 20(r3), r0 ; Position in file 3 mov 22(r3), r1 ; " " gos MakLet, <12(r3),r4,,,tmp+10,> ;Now TMP+16 is the physical text # mov r1, TMP ; The logical text number mov r0, TMP+2 ; gos getrec <#2, r2, #FB1,> bit #xMulR, 14(r1) ; Multiple receivers? bne 300$ ; If yes - goto 300$ ; First multi-receiver record bis #xMulR, 14(r1) mov TMP+16, 34(r1) ; Next multiple rec. TEXT mov TMP+16, 36(r1) gos put <#2,,#FB1> ; Save made changes mov r1, r3 mov r2, r4 br 320$ ; Yet another multi-receiver record... 300$: mov 34(r1), r4 ; Get old NEXT ptr mov TMP+16, 34(r1) ; Next multiple rec. TEXT ; mov TMP+16, 36(r1) gos putget <#2,r4,#FB1> ; Save made changes ; mov 36(r1), r5 ; Get old PREVIOUS ptr mov TMP+16, 36(r1) ; Previous multiple rec. TEXT gos put <#2,,#FB1> mov r1, r3 320$: gos GetRec, <#2, TMP+16, #FB2,> tst tmp+10 bne 335$ bit #xEXT, 14(r3) beq 330$ bit #xEXIN, 14(r3) beq 335$ 330$: mov 06(r3), 06(r1) ; Date and Time mov 10(r3), 10(r1) mov 14(r3), 14(r1) br 340$ 335$: mov 14(r3), r0 bic #xEXT!xEXIN, r0 bis r0, 14(r1) ; Status word 340$: mov r4, 34(r1) ; Next TEXT (multirec) mov r2, 36(r1) ; Previous TEXT gos put, <#2,,#FB2> 350$: mov 16(r1), r2 ; Get receiver # from the TEXT record mov TMP, r1 mov TMP+2, r0 call putlet 400$: pop rts pc 999$: mov #2, r0 call releas ; Release all blocks in file 2 call MtxEnd mov r4, r0 call prtnam ; Printit Write #AAR ; print a message br 400$ ; & Text AAR, <" {r redan mottagare"> Text G60, <"Vem vill du ADDERA"> Text AdT, <"Addera"> Text G104, <"Vad vill du ADDERA"> Text G130, <" {r redan medlem i detta m|te"> Text G226, <"Vem vill du SUBTRAHERA"> Text G256, <"Vad vill du SUBTRAHERA"> Text G330, <"Fr}n vilket m|te vill du UTTR[DA"> Text G372, <"Du"> Text G376, <" {r inte medlem i detta m|te"> Text HIFM, <"Texten har inte flera mottagare"> Text AIM, <" {r inte mottagra till denna text."> .even .end