; Interlinks a letter with a given group (person, meeting) ; Call: ; R0,R1 = Letternumber as a longword (R0 = High) ; R2 = Person number. ; ; No data is returned. No registers are destroyed. ; .inclu "b:global" sect code oPtLet: push mov r2, r0 mov #GrpLst, r1 call FindCm mov r0,r5 beq 999$ ; To bad, receiver is gone... sub #rStr, r5 ; Get address of group in core call MtxBgn gos getrec <#1, rArg(r5), #FB3,> ; Read group record from disk mov 34(r1), r4 ; Last MOTTAGET-record beq 40$ ; Nothing! => Creat a new at 40$ mov rHigh(r5), r3 ; Number of received texts beq 400$ clr r2 div #30., r2 tst r3 bne 400$ ; Create a new "MOTTAGET" 40$: mov #1, r0 mov #FB3, r1 call spawn ; Produce a new file 1 record mov (r1), r3 ; Fetch the record # to r3 mov #7, (r1)+ ; This is a type 7 ("MOTTAGET") record clr (r1)+ ; Pointer to next - None mov r4,(r1)+ ; Pointer to previous - Old last-pointr clr (r1)+ ; *** reserved *** mov 2(sp), (r1)+ ; mov (sp), (r1)+ tst r4 ; Any preavious record? beq 50$ ; No => Goto 50$ gos putget <#1, r4, #FB3> mov r3, 2(r1) 50$: gos putget <#1, rArg(r5), #FB3> mov r3, 34(r1) ; Pointer to last "MOTTAGET" tst r4 bne 500$ mov r3, 32(r1) ; Pionter to 1'st "MOTTAGET" cmp #4, (r1) ; Meeting? beq 500$ ; Yes => Goto 500$ mov r3, 104(r1) ; Letter pointer (ask Hybsch!) br 500$ 400$: ash #2, r3 gos TryRec <#1, r4, #FB3,> add r1, r3 add #10, r3 mov 2(sp), (r3)+ mov (sp), (r3) 500$: gos Put <#1,, #FB3> gos GetRec <#4, (r5), #FB3,> inc 4(r1) inc rHigh(r5) gos Put <#4,, #FB3> mov #1, r0 call release ; Just in case.... call MtxEnd ; Ok, we are ready! 999$: pop rts pc .end