.title KOM ; Initierings rutiner till KOM .inclu "b:global" .psect .inclu "b:komfil" ; KOM filedefinitions. KOMAVS: .byte 10$-KOMAVS-1 .ascii "KOM {r f|r tillf{llet avst{ngt."<15><12> 10$: .even KOMAVA: .byte 10$-KOMAVA-1 .ascii "(Databasen {r st{ngd)"<15><12><12> 10$: .even PRSNUM: .byte 10$-PRSNUM-1 .ascii "Vad heter du" 10$: .even INIT: .ttnch ; No Echo mov #^RKOM, @#firqb+fqnam1 mov #^R..., @#firqb+fqnam1+2 .name ; Set work name clr @#Me mov #LinLen-2, @#MaxLin clr @#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 #welKOM ; 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 SCRINI: ; Determin terminal type movb @#407, r2 ; get kb-no mov r2, @#TERM movb firqb+fqjob, r1 ; Try to open a terminal file asr r1 ; of format TERM??.TMP, where clr r0 ; ?? is job-number ex. 06 or 45 div #10., r0 add #'0, r0 add #'0, r1 mov #FB1, r2 mov #"TE, (r2)+ mov #"RM, (r2)+ movb r0, (r2)+ movb r1, (r2)+ mov #".T, (r2)+ mov #"MP, (r2)+ call clrfqb call clrxrb mov #10., (r1) mov (r1)+, (r1)+ mov #FB1, (r1)+ .fss movb #opnfq, firqb+fqfun movb #2*2, firqb+fqfil calfip ; Try to open file tstb firqb ; Error? bne 10$ ; Yes, try (254,1)TTY.SYS call clrxrb mov #8., (r1)+ tst (r1)+ mov #FB1, (r1)+ movb #2*2, (r1)+ .read ; Read first 8 bytes from file! tstb firqb beq 1112$ call clrfqb movb #2*2, firqb+fqfil calfip br 10$ 1112$: mov #FB1, r2 br 19$ 10$: mov TERM, r2 bic #^c77, r2 asl r2 asl r2 asl r2 add #FB1, r2 ; make it pointer for first block of tty.sys clrb (r2) ; default noting now jsr pc, @#clrfqb mov #405, r0 ; open (254,1)tty.sys on channel 2 movb #2, (r0)+ mov #2*2, (r0)+ mov #254.*256.+1., (r0)+ mov (pc)+, (r0)+ .rad50 /TTY/ tst (r0)+ mov (pc)+, (r0)+ .rad50 /SYS/ calfip ; don't mind about failures right now jsr pc, @#clrxrb mov #1000, (r1)+ ; get first (second) block of (254,1)tty.sys tst (r1)+ mov #FB1, (r1)+ mov #2*2, (r1)+ cmp TERM, #64. blo 300$ mov #2, (r1) 300$: .read ; don't mind about failures right now 19$: jsr pc, clrfqb movb #2*2, @#406 ; close the file calfip ; don't mind about failures right now mov r2, r0 clr r1 clrb 7(r2) ; set up a safety catch (just in case...) 20$: bitb #157, (r2)+ ; anything (but space or null) ? beq 30$ ; no, end here inc r1 ; yes, count it br 20$ 30$: tst r1 ; got any string ? beq OPNFIL ; No! Whatt: mov #TtyTyp, r4 10$: mov r0, r2 mov (r4)+, r3 beq OPNFIL mov #8., r1 20$: cmpb (r2)+, (r4)+ bne 400$ tstb (r2) beq 500$ sob r1, 20$ br 500$ 400$: dec r1 410$: tstb (r4)+ sob r1, 410$ br 10$ 500$: mov r3, pterm 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, #UnLock> ; Get INFO-block bit #1,@#FB1+34 beq 50$ cmp PPN,@#FB1+6 beq 40$ Write #KOMAVS jmp $exit 40$: write #komava 50$: mov #FB1+16,r1 mov (r1)+,@#Systm ; Systemmedelande (LONG) mov (r1)+,@#systm+2 mov (r1)+,@#CurInl ; Antal skapade texter (LONG) mov (r1)+,@#CurInl+2 tst (r1)+ mov (r1)+,r4 ; Number of groups. mov r4,@#LGroup mov (r1)+,@#EditNr ; Editerings Nummer. mov FB1+42,@#TextNr mov #GRPLST,@#Freep ; Start addres of grouplist clr @#LFreep ; Previous linked group. mov #INLNK-100,@#Free clr r1 ; Number of linked groups. INLNK: mov r4,r3 beq 50$ cmp #10*11,r3 ; Maximum number of groups bhis 10$ ; to be read. mov #10*11,r3 10$: mov r3,r5 dec r5 ash #-3,r5 ; Number of blocks left to get inc r5 mov #stkend,r0 gos Get, <#4, r2, r0, r5, #Unlock> add r5,r2 20$: inc r1 dec r4 tst (r0) beq 30$ jsr pc,maklst 30$: add #64.,r0 sob r3,20$ br inlnk 50$: mov #airfop,stat mov #1,Me 60$: parser #grplst,#377,#PRSNUM Write #CR2LF tst level bne 65$ clr me jmp $EXIT 65$: mov @List,r1 mov (r1),Me mov rArg(r1),MyRec gos getrec, <#1, MyRec, #FB1, #Unlock> mov 6(r1), me mov 16(r1), myflag ; mov 26(r1), myinlp mov 36(r1), mypriv mov 102(r1), myread mov 104(r1), mypoin mov 176(r1), myhigh ; HIGH. mov #377, prspri cmpb #xAdm, mypriv clr thisgp clr thisg clr thisl clr oldl clr UNREL clr myclet clr mycinl clr curjoi dec curjoi bis #ADMPRV+ABSPRV,KSW mov @#Freep,r2 ; Highest used address. mov #Mainlp,(sp) jmp @#SETCOR ; Continue in KOMRTS ! .End INIT