.title CNVDBS ; Converterar till KOM Ver 3.2's DATABAS format. .inclu "b:global" .psect UTP: .byte 10$-UTP-1 .ascii " Utpl}nad" 10$: .even CNVTXT: .byte 10$-CNVTXT-1 .ascii "CNVDBS Ver 1.00 " 10$: .even .inclu "b:komfil" ; KOM filedefinitions. INIT: .ttnch ; No Echo mov #^RKOM, @#firqb+fqnam1 mov #^R..., @#firqb+fqnam1+2 .name ; Set work name clr @#Me mov #LinLen-2, @#MaxLin mov #-1, @#Line clr PTerm ; Default term-typ (dumy 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+xACR+xELIN+xBL, @#MyFlags mov #UnProm, @#Stat clr @#KSW movb #UU.SYS,@#Firqb+fqfun clr @#firqb+4 .UUO mov @#firqb+26,@#PPN OPNFIL: 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+128.+32768., firqb+fqmode mov KOMDEV, firqb+fqdev mov KOMDVN, firqb+fqdevn calfip jsr pc, @#error dec r0 sob r0, 10$ write #CRLF mov #2,r2 gos Get, <#1, r2, #FB1, #1, #Lock> ; Get INFO-block mov #xDBVer, FB1+32 ; Version number. clr FB1+42 mov FB1+30, r4 ; Number of groups. clr FB1+22 clr FB1+24 clr FB1+26 clr FB1+16 clr FB1+20 clr FB1+36 clr FB1+40 gos Put, <#1, r2, #FB1> clr r1 INLNK: mov r4,r3 bne 5$ jmp 50$ 5$: cmp #10, r3 ; Maximum number of groups bhis 10$ ; to be read. mov #10, r3 10$: mov #FB2,r0 gos Get, <#4, r2, r0, #1, #Unlock> 20$: inc r1 dec r4 cmp #4, (r0) bne 22$ 21$: jmp 45$ 22$: push mov r0, r1 add #6, r1 call strout clr tmp+2 clr tmp+4 tst (r0)+ bne 30$ Write #UTp br 44$ 30$: mov (r0)+,r2 clr (r0) ; HIGH gos GetRec, <#1, r2, #FB1,> clr 20(r1) clr 22(r1) mov 32(r1), tmp+2 ; mottaget clr 32(r1) clr 34(r1) cmp #3, (r1) bne 44$ clr 102(r1) clr 104(r1) clr 106(r1) clr 110(r1) clr 74(r1) mov 76(r1), tmp+4 ; Markerade clr 76(r1) clr 100(r1) mov 26(r1),r2 beq 44$ 32$: gos PutGet, <#1, r2, #FB1> mov 2(r1), r2 add #10, r1 mov #20., r3 35$: tst (r1)+ clr (r1)+ tst (r1)+ sob r3,35$ tst r2 bne 32$ 44$: mov tmp+2,r2 beq 440$ gos PutGet, <#1, r2, #FB1> 400$: mov 2(r1), r3 gos Dispos, <#1, r2, #FB1> mov r3, r2 beq 441$ gos GetRec, <#1, r2, #FB1,> br 400$ 440$: gos Put, <#1,, #FB1> mov tmp+4, r3 500$: mov r3, r2 beq 441$ gos GetRec, <#2, r2, #FB1,> mov 2(r1), r3 gos Dispos, <#2, r2, #FB1> br 500$ 441$: call pcrlf pop 45$: add #64.,r0 dec r3 beq 47$ jmp 20$ 47$: Gos put, <#4, r2, #FB2> inc r2 jmp INLNK 50$: jmp $EXIT ; Exit (And set proper CORE) .End INIT