.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 TEXT CNVT, <"Databasen konverterad till Ver 3.2"> .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 OPFILE: 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 #32., FB1+32 ; Version number. clr FB1+42 mov FB1+30, r4 ; Number of groups. gos Put, <#1, r2, #FB1> clr r1 INLNK: mov r4,r3 beq 50$ 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 tstb 4(r0) bne 22$ bpt br 45$ 22$: push clr tmp tst (r0)+ bne 24$ dec tmp ; Utpl}nad 24$: tst (r0)+ mov r0,r1 call strout mov r0, r3 clr r2 bisb (r0)+, r2 cmp #StrMax, r2 bhis 30$ mov #StrMax, r2 30$: add r2, r0 mov r0, r1 inc r1 inc r1 40$: movb -(r0), -(r1) sob r2, 40$ movb -(r0), -(r1) tst tmp beq 42$ Write #UTp br 44$ 42$: mov r1, r2 gos GetRec, <#1, -(r0), #FB1,> mov 176(r1), -(r2) clr 176(r1) cmp #3, (r1) bne 44$ bis #xFil, 16(r1) 44$: call pcrlf gos Put, <#1,, #FB1> pop 45$: add #64.,r0 dec r3 bne 20$ gos put, <#4, r2, #FB2> inc r2 br INLNK 50$: mov #9., r2 mov #4*10., r3 60$: gos getrec, <#1, r2, #FB2, #Lock> mov #1,(r1) gos put, <#1,,#FB2> gos Dispos, <#1, r2, #FB2> inc r2 sob r3, 60$ call pcr2lf Write #CnvT clr Job jmp $EXIT ; Exit (And set proper CORE) .End INIT