.title CNV52B ; Konverterar databasen till version 5.2 ; Obs, innan detta program kan k|ras m}ste CNV52A k|ras. .inclu "b:global" APR1 = 1 APR2 = 2 APR3 = 3 APR4 = 4 APR5 = 5 .psect .globl KOMAVS .globl INLNK .globl EOKOM .word 0 FBA: .blkb 1000 .word 0 FBB: .blkb 1000 Text CnvTxt, <"CNV52B Ver 1.00 "> .even .inclu "b:komfil" ; KOM filedefinitions. INIT: .ttnch ; No Echo mov #^RCNV, @#firqb+fqnam1 mov #^R52B, @#firqb+fqnam1+2 .name ; Set work name clr @#Me mov #LinLen-2, @#MaxLin mov #-1, Line clr PTerm ; Default term-typ (dummy crt) clrb @#xrb+xrci .postn mov #Width,r0 clr (r0) ; ? movb @#xrb,(r0) decb (r0) movb @#firqb+fqjob, r0 asr r0 mov r0, @#Job write #CnvTxt ; Write a friendly phrase with version. errprt #0 write #CRLF mov #xSM+xELIN+xBL, @#MyFlags mov #UnProm, @#Stat clr @#KSW movb #UU.SYS,@#Firqb+fqfun clr @#firqb+4 .UUO mov @#firqb+26,@#PPN movb @#Firqb+5,@#TERM OPFIL: mov #EOFS,r2 ; Open files mov #EOFS-Files, r0 ; Number of files * 2 10$: mov #firqb+fqfun, r1 movb #opnfq, (r1)+ mov r0, (r1)+ ; Unit number * 2 mov KOMPPN, (r1)+ mov #^RKOM, (r1)+ mov -(r2), (r1)+ mov #^RDAT, (r1)+ mov #1+8.+128.+32768., firqb+fqmode mov KOMDEV, firqb+fqdev mov KOMDVN, firqb+fqdevn calfip jsr pc, @#error dec r0 sob r0, 10$ write #CRLF ; Attach to KOM overlay library. call clrfqb movb #ATRFQ, Firqb+fqfil mov KOMLIB, Firqb+12 mov KOMLIB+2, Firqb+14 mov #1, Firqb+22 ; Read Only. .plas ; Attach Resedent Library call Error mov Firqb+Fqppn, OLIde ; mov Firqb+Fqnam1, OLSiz call clrfqb movb #CRAFQ, Firqb+Fqfil movb #APR3, Firqb+7 mov #Firqb+12,r1 mov #128., (r1)+ mov OLIde, (r1)+ mov OvlTbl+SegB, (r1)+ mov OvlTbl+SegB+2, (r1)+ mov #200,(r1) ; ReadOnly, Mapping. .plas call Error mov firqb+fqppn, OWIde ; Window ID mov #SegB, curseg ; Current maped segment. ; Attach to KOM group-and command library. call clrfqb movb #ATRFQ, Firqb+fqfil mov KOMRES, Firqb+12 mov KOMRES+2, Firqb+14 mov #2, Firqb+22 .plas ; Attach Resedent Library call Error mov Firqb+Fqppn, LibIde mov Firqb+Fqnam1, LibSiz call clrfqb movb #CRAFQ, Firqb+Fqfil movb #APR4, Firqb+7 mov #Firqb+12,r1 ; There WAS a bug here! mov #128., (r1)+ mov LibIde, (r1)+ clr (r1)+ clr (r1)+ mov #202, (r1) ; Write access and Mapping .plas call Error mov firqb+fqppn, WinIde ; Window ID clr CurSek ; Current maped sektion. mov #100, ResLim bis #UseRes, KSW ; Now we uses a RESLIB ; for our commands. mov #2,r2 gos Get, <#1, r2, #FB1, #1, #Lock> ; Get INFO-block cmp #50., FB1+32 ; Right DATABASE Version beq 20$ iot 20$: mov FB1+30, r5 ; # of created groups. mov #FB1+110, r1 mov #10223., (r1)+ ; # of hash entrys mov #80., (r1)+ ; # of blocks in hashentrylist mov #17394., (r1)+ ; default flagword for users. mov #77, (r1)+ ; default netstatus. mov #6784., (r1)+ ; default "kuvertstatusord" gos put, <#1,, #Fb1> mov #stack, sp mov #ovlstk, ovlsp mov #1, r4 clr FB1-2 ; Buffert for file 1 clr FB2-2 ; file 2 clr FB3-2 ; file 1 clr FB4-2 ; file 4 clr FBA-2 ; file 1 clr FBB-2 GRPCNV: tst r5 beq 1000$ 10$: gos tryrec, <#4, r4, #FB4,> mov (r1)+, r0 beq 999$ bit #3, r0 ; Person or meeting? beq 999$ ; No! mov (r1)+, r2 tst (r1)+ movb (r1)+, r0 beq 20$ call PrintN call pcrlf 20$: gos tryrec, <#1, r2, #FB1,> mov r1, r3 add #142, r1 clr (r1)+ ; No dist.-list. clr (r1)+ clr (r1)+ cmp #3, (r3) ; person? bne 400$ ; No! mov #77, 124(r3) mov #6784., 126(r3) call ReMark 400$: gos put, <#1,, #Fb1> 999$: inc r4 sob r5, 10$ 1000$: jmp eop Proc ReMark Var Nr, word Var Prev1, word Var Cur1, word Var Lft1, word Var Nxt2, word Var Lft2, word begin push mov 74(r3), Nr(r5) beq 999$ mov 76(r3), r2 beq 999$ clr prev1(r5) clr cur1(r5) clr lft1(r5) 10$: gos tryrec, <#2, r2, #Fb2,> mov 2(r1), Nxt2(r5) add #10, r1 mov #6, lft2(r5) 40$: tst lft1(r5) bne 100$ 50$: push r1 tst cur1(r5) beq 60$ gos put, <#1,, #Fb3> 60$: mov cur1(r5), prev1(r5) mov #1, r0 mov #Fb3, r1 call spawn mov (r1), cur1(r5) mov #13, (r1)+ clr (r1)+ mov Prev1(r5), (r1)+ tst (r1)+ mov #30., Lft1(r5) mov r1, r4 90$: pop r1 100$: mov (r1)+, (r4)+ mov (r1)+, (r4)+ dec nr(r5) beq 200$ dec lft1(r5) dec lft2(r5) bne 40$ gos Dispos, <#2, r2, #Fb2> mov Nxt2(r5), r2 br 10$ 200$: mov cur1(r5), 100(r3) gos dispos, <#2, r2, #Fb2> 210$: mov prev1(r5), r2 beq 250$ gos PutGet, <#1, r2, #Fb3> mov 4(r1), prev1(r5) mov Cur1(r5), 2(r1) mov r2, cur1(r5) br 210$ 250$: gos put, <#1,, #Fb3> mov cur1(r5), 76(r3) 999$: pop ret eop: jmp $exit EOKOM: .End INIT