# HG changeset patch # User boisy # Date 1050157832 0 # Node ID 86af8d633dcea20ea9e355c3c7761de4f93f35f6 # Parent c0426bcc75f38618b9da84b8043b6778078e62b0 Work on porting kbvdio continues diff -r c0426bcc75f3 -r 86af8d633dce level1/modules/kbvdio.asm --- a/level1/modules/kbvdio.asm Sat Apr 12 14:22:36 2003 +0000 +++ b/level1/modules/kbvdio.asm Sat Apr 12 14:30:32 2003 +0000 @@ -61,7 +61,7 @@ u0038 rmb 1 u0039 rmb 1 u003A rmb 1 -u003B rmb 2 +vhwaddr rmb 2 address of keyboard hardware u003D rmb 1 u003E rmb 1 u003F rmb 1 @@ -92,74 +92,77 @@ lbra SetStat lbra Term -Init lbsr L02BA - lbra L002D -L002D pshs cc - orcc #$10 - stu >D.KbdSta - ldd >D.IRQ - std >D.AltIRQ - leax >L00B0,pcr - stx >D.IRQ - ldx #$FF00 - stx D.KbdSta save our static mem + ldd >D.IRQ get current IRQ vector address + std >D.AltIRQ store in Alt. IRQ vector + leax >OurIRQ,pcr point to our IRQ address + stx >D.IRQ store in D.IRQ + ldx #$FF00 get address of PIA + stx D.AltIRQ - stx >D.IRQ - puls pc,cc +Term pshs cc save CC + orcc #IRQMask mask IRQs + ldx >D.AltIRQ get Alt. IRQ address + stx >D.IRQ and restore it to D.IRQ + puls pc,cc get CC and return L00A9 incb cmpb #$7F bls L00AF -L00AE clrb +GSOk clrb L00AF rts -L00B0 ldu >D.KbdSta - ldx D.SvcIRQ] + +* Driver's IRQ Routine +OurIRQ ldu >D.KbdSta get pointer to driver's statics + ldx D.SvcIRQ] else jump on L00BE lda $02,x lda #$FF sta $02,x @@ -214,11 +217,11 @@ bne L0132 L012E lda u0003,u bra L0136 -L0132 ldb #$01 - lda u0005,u +L0132 ldb #S$Wake + lda V.WAKE,u L0136 beq L013B - os9 F$Send -L013B clr u0005,u + os9 F$Send send signal to process +L013B clr V.WAKE,u bra L00DF L013F clra sta $3222 - neg $3D5F - bgt L02B6+1 - tst >$2F3F - incb -L027D tst }/?\... +L0280 fcb $00,$00,$00,$05,$03,$1B ,$30 Read leax $0100,x +L02C2 pshs u save static mem pointer + ldd #768 +L02C7 os9 F$SRqMem get 768 bytes + tfr u,d put pointer into D + tfr u,x and X + bita #$01 odd or even page? + beq L02D8 branch if even + leax >256,x else memory not on 512 byte boundary L02D6 bra L02DC -L02D8 leau >$0200,u -L02DC ldd #$0100 - os9 F$SRtMem - puls u - stx 512,u free last page +L02DC ldd #256 get page amount + os9 F$SRtMem and return page to system + puls u get static mem pointer + stx $0200,x + leax >512,x stx $FF22 anda #$07 @@ -466,6 +447,7 @@ bne L0332 clrb puls pc,x + Write ldb $C400 - cmpa $C400 - fcb $67 asr $00,x - fcb $00 - fcb $E2 sbcb $00,x - fcb $00 - fcb $4E N - stu >$C400 - subd #$0036 - neg <$00F2 - oim #$4A,$A6C8] - fcb $FF - fcb $A6 - fcb $C8 - bge L050E - eim #$C6,<$F6 - orcc #$01 - rts + +L04E0 fcb $00,$55,$AA,$FF,$A6,$C8,$2C,$26 .U*.&H,& +L04E8 fcb $05,$C6,$F6,$1A,$01,$39 + ldd $FF02 ldb >$FF00 diff -r c0426bcc75f3 -r 86af8d633dce level1/modules/makefile --- a/level1/modules/makefile Sat Apr 12 14:22:36 2003 +0000 +++ b/level1/modules/makefile Sat Apr 12 14:30:32 2003 +0000 @@ -19,8 +19,9 @@ ddd0_80d.dd d0_80d.dd d1_80d.dd d2_80d.dd \ h0_15.dd h1_15.dd h0_35.dd h1_35.dd \ m1.dd m2.dd nil.dd p.dd pipe.dd ssc.dd \ - term_t1.dd t1.dd t2.dd t3.dd term32.dd term80.dd -DESCS_D64 = p1_d64.dd term_d64.dd t1_d64.dd \ + term_t1.dd t1.dd t2.dd t3.dd term32.dd term80.dd \ + term_kbvdio.dd +DESCS_D64 = p1_d64.dd term_kbvdio.dd t1_d64.dd \ dd_d64.dd d0_d64.dd d1_d64.dd d2_d64.dd d3_d64.dd HELP = co32.hp co80.hp \ ddd0_35s.hp d0_35s.hp d1_35s.hp d2_35s.hp d3_35s.hp \