# HG changeset patch # User boisy # Date 1113355898 0 # Node ID 1b5700ad3ffa56c4bc3400e4e5dd48a3e6c13092 # Parent 78b6ac6bba2ccb9fa93c44f5cbbeb3edc76749fc Dragon changes by Phill diff -r 78b6ac6bba2c -r 1b5700ad3ffa level1/modules/clock_d64.asm --- a/level1/modules/clock_d64.asm Mon Apr 11 23:33:58 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -; -; Dragon 64 clock module, Disassembled Nov 2004, -; P.Harvey-Smith. -; - - nam Clock - ttl os9 system module - -* Disassembled 1900/00/00 00:12:38 by Disasm v1.5 (C) 1988 by RML - - ifp1 - use defsfile - endc -tylg set Systm+Objct -atrv set ReEnt+rev -rev set $01 - mod eom,name,tylg,atrv,start,size -u0000 rmb 0 -size equ . -name equ * - fcs /Clock/ - fcb $02 - -L0013 fcb F$Time - FDB GetTimeHandler-*-2 -; fcb $00 -; fcb $82 - fcb $80 ; Terminator - fcb $00 - -DaysInMonths - fcb $1F - fcb $1C - fcb $1F - fcb $1E - fcb $1F - fcb $1E - fcb $1F - fcb $1F - fcb $1E - fcb $1F - fcb $1E - fcb $1F -AltIRQ - CLRA - TFR A,DP - DEC AltIRQ,pcr - stx >D.AltIRQ - leay >L0013,pcr - os9 F$SSvc - puls pc,dp,cc - -GetTimeHandler - ldx $04,u - ldd $0100,x - bra L0068 -L0066 adda #$18 -L0068 stx L00AD,pcr - sty >D.IRQ - ldx #$FF00 - lda $03,x - ora #$01 - sta $03,x - inc >InitFlag,pcr - puls cc - lbsr L0475 - lbsr L02C3 - clrb -L009C puls pc,u,a -InitFlag fcb $00 -Term pshs cc - orcc #IntMasks - ldx >D.AltIRQ - stx >D.IRQ - puls cc - clrb - rts -L00AD ldu >D.KbdSta - ldx #$FF00 - lda $03,x - bmi L00BB - jmp [>D.SvcIRQ] -L00BB lda $02,x - lda >D.DskTmr - beq L00CB - deca - sta >D.DskTmr - bne L00CB - - IFNE DragonAlpha ; Turn off all drives - lbsr AlphaDskCtl - ELSE - sta >DskCtl - ENDC - -; sta >$FF48 -L00CB lbsr L04E5 - jmp [>D.AltIRQ] -L00D2 pshs x,b - lda u0004,u - sta u0005,u - ldx #$0000 - os9 F$Sleep - ldx InitFlag,pcr - bne L00F9 - lbsr Init - bcs L011C -L00F9 leax InitFlag,pcr - bne L012C - pshs a - lbsr Init - puls a - bcs L0139 -L012C ldb L066E,pcr -L0148 tst ,x - bne L0150 -L014C clr L066E,pcr - leax d,x - stx L0681,pcr - cmpb #$01 - beq L0148 - jmp [L06A0,pcr - lslb - rola - lslb - rola - leax d,x - ldb #$05 - lda $0080,y - lda #$18 - pshs a - inc $00E0,y - puls pc,b -L033E ldy $0100,y - lda #$10 - bsr L037C - puls u - dec $0080,y - bsr L0314 - dec $17F0,y - inc -$0100,y - lda #$F0 - bsr L037C - leay ,u - puls u - inc $0080,y - lda #$20 - pshs b - suba ,s+ - lsra - lbsr L0316 -L040D puls a - sta L0820,pcr NORMAL keys - lda b,x - tst L0886,pcr CONTROL keys - lda b,x - bra L0609 -L05FE tst L0853,pcr SHIFTED keys - lda b,x -L0609 cmpa #$1F SHIFTLOCK toggle key? - bne L0621 - com UPPER -L0621 leax ? - fcb $7C,$41,$42,$43 | A B C - fcb $44,$45,$46,$47 D E F G - fcb $48,$49,$4A,$4B H I J K - fcb $4C,$4D,$4E,$4F L M N O - fcb $50,$51,$52,$53 P Q R S - fcb $54,$55,$56,$57 T U V W - fcb $58,$59,$5A,$1C X Y Z fs - fcb $1A,$18,$19,$20 sub can em space - fcb $0D,$00,$03 ENTER CLEAR shft-BREAK - -* CONTROL keytable -L0886 fcb $1F,$7C,$00,$7E shift-toggle | nul ~ - fcb $00,$00,$00,$5E nul nul nul ^ - fcb $5B,$5D,$00,$00 [ ] nul nul - fcb $7B,$5F,$7D,$5C { _ } \ - fcb $00,$01,$02,$03 ^@ ^A ^B ^C - fcb $04,$05,$06,$07 ^D ^E ^F ^G - fcb $08,$09,$0A,$0B ^H ^I ^J ^K - fcb $0C,$0D,$0E,$0F ^L ^M ^N ^O - fcb $10,$11,$12,$13 ^P ^Q ^R ^S - fcb $14,$15,$16,$17 ^T ^U ^V ^W - fcb $18,$19,$1A,$13 ^X ^Y ^Z dc3 - fcb $12,$10,$11,$20 dc2 dle dc1 space - fcb $0D,$00,$1B ENTER CLEAR esc - - IFNE DragonAlpha -; Warning this version of AlphaDskCtl, does NOT convert DragonDos -; $FF48 codes to alpha ones, they must be in Alpha format. -; This is only used for timed turn off of drive motors. -; We do not need to preserve the ROM select bit as this code -; operates in RAM only mode. - -AlphaDskCtl - pshs a,b,cc - - pshs a - lda #AYIOREG ; AY-8912 IO register - sta PIA2DB ; Output to PIA - ldb #AYREGLatch ; Latch register to modify - stb PIA2DA - - CLR PIA2DA ; Idle AY - - lda ,s+ ; Fetch saved Drive Selects - sta PIA2DB ; output to PIA - ldb #AYWriteReg ; Write value to latched register - stb PIA2DA ; Set register - - clr PIA2DA ; Idle AY - - PULS A,B,CC - RTS - - ENDC - - emod -eom equ * - end diff -r 78b6ac6bba2c -r 1b5700ad3ffa level1/modules/kbvdio.asm --- a/level1/modules/kbvdio.asm Mon Apr 11 23:33:58 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1255 +0,0 @@ -******************************************************************** -* KBVDIO - keyboard/video driver -* -* $Id$ -* -* Edt/Rev YYYY/MM/DD Modified by -* Comment -* ------------------------------------------------------------------ -* ????/??/?? -* Original Dragon Data distribution version -* -* 2004/01/04 Rodney Hamilton -* Recoded anonymous fcb arrays, added some comments -* 2004/11/15 P.Harvey-Smith. -* Added code to turn off the drives on the Dragon Alpha. -* - - nam KBVDIO - ttl keyboard/video driver - -* Disassembled 02/04/21 22:37:57 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile.dragon - endc - -tylg set Drivr+Objct -atrv set ReEnt+rev -rev set $00 -edition set 4 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 2 -u0002 rmb 1 -u0003 rmb 1 -u0004 rmb 1 -u0005 rmb 4 -u0009 rmb 2 -u000B rmb 1 -u000C rmb 1 -u000D rmb 11 -u0018 rmb 1 -u0019 rmb 1 -u001A rmb 1 -u001B rmb 1 -u001C rmb 1 -u001D rmb 2 -u001F rmb 2 -u0021 rmb 1 -u0022 rmb 1 -u0023 rmb 1 -u0024 rmb 1 -u0025 rmb 1 -u0026 rmb 2 -u0028 rmb 1 -u0029 rmb 2 -u002B rmb 1 -u002C rmb 1 -u002D rmb 2 -u002F rmb 1 -u0030 rmb 1 -u0031 rmb 2 -u0033 rmb 1 -u0034 rmb 1 -u0035 rmb 1 -u0036 rmb 1 -u0037 rmb 1 -u0038 rmb 1 -u0039 rmb 1 -u003A rmb 1 -vhwaddr rmb 2 address of keyboard hardware -u003D rmb 1 SHIFTLOCK toggle -u003E rmb 1 -u003F rmb 1 -u0040 rmb 1 -u0041 rmb 1 -u0042 rmb 1 -u0043 rmb 1 -u0044 rmb 1 -u0045 rmb 1 SHIFT key flag -u0046 rmb 1 CONTROL key flag -u0047 rmb 1 -u0048 rmb 1 -u0049 rmb 1 -u004A rmb 1 -u004B rmb 10 -u0055 rmb 26 -u006F rmb 91 -size equ . - fcb $07 - -name fcs /KBVDIO/ - fcb edition - -start lbra Init - lbra Read - lbra Write - lbra GetStat - lbra SetStat - lbra Term - -Init lbsr AllocMem allocate video memory - lbra L002D unsure why this is here.. timing? -L002D pshs cc save CC - orcc #IRQMask mask IRQs - stu >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 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 -GSOk clrb -L00AF rts - -* 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 - lda ,x - coma - anda #$03 - bne L00D4 - clr $02,x - lda ,x - coma - anda #$7F - bne L00F1 -L00D4 clra - coma - sta D.DskTmr - beq L00ED - deca - sta >D.DskTmr - bne L00ED - - IFNE DragonAlpha ; Turn off all drives - lbsr AlphaDskCtl - ELSE - sta >DskCtl - ENDC - -; sta >$FF48 -L00ED jmp [>D.AltIRQ] -L00F1 bsr L013F - bmi L00DF - sta L023E,pcr - clra - lda d,x - puls x -L01AE rts - -* convert row number in B.reg from DRAGON to COCO order -L01AF pshs b - cmpb #$06 - beq L01BF - cmpb #$01 - bhi L01BD - addb #$04 - bra L01BF -L01BD subb #$02 -L01BF lslb multiply row * 8 - lslb - lslb - addb } -L027A fcb $2F,$3F,$5C / ? \ -L027D fcb $0D,$0D,$0D ENTER -L0280 fcb $00,$00,$00 CLEAR? -L0283 fcb $05,$03,$1B BREAK (ENQ|ETX|ESC) - -Read leax 256,x else memory not on 512 byte boundary -L02D6 bra L02DC -L02D8 leau >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 512,x - stx $FF22 - anda #$07 - ora ,s+ - sta >$FF22 - tstb - bne L0320 - stb >$FFC0 - stb >$FFC2 - stb >$FFC4 - lda $FFC0 - stb >$FFC3 - stb >$FFC5 - lda L04E0,pcr - lda a,x - sta L04E0,pcr - ldb a,x - bra L0625 - -* $13 - erase graphics -L0624 clrb -L0625 ldx $FF02 - ldb >$FF00 - ldy $04,x - bne L0878 - andb #$01 - bne L087C - bra L087D -L0878 andb #$02 - beq L087D -L087C clra -L087D sta $01,x - lda >$FF03 - ora #$08 - ldy $04,x - bne L088B - anda #$F7 -L088B sta >$FF03 - lda >$FF01 - anda #$F7 - bsr L08AA - std $04,x - lda >$FF01 - ora #$08 - bsr L08AA - pshs b,a - ldd #$003F - subd ,s++ - std $06,x - clrb - puls pc,y,cc -L08AA sta >$FF01 - clrb - bsr L08BA - bsr L08BA - bsr L08BA - bsr L08BA - lsrb - lsrb - clra - rts -L08BA pshs b - lda #$7F - tfr a,b -L08C0 lsrb - cmpb #$03 - bhi L08CC - lsra - lsra - tfr a,b - addb ,s+ - rts -L08CC addb #$02 - andb #$FC - pshs b - anda #$FC - sta >$FF20 - tst >$FF00 - bpl L08E0 - adda ,s+ - bra L08C0 -L08E0 suba ,s+ - bra L08C0 - - - - - IFNE DragonAlpha - -; Warning this version of AlphaDskCtl, does NOT convert DragonDos -; $FF48 codes to alpha ones, they must be in Alpha format. -; This is only used for timed turn off of drive motors. -; We do not need to preserve the ROM select bit as this code -; operates in RAM only mode. - -AlphaDskCtl - pshs a,b,cc - - pshs a - lda #AYIOREG ; AY-8912 IO register - sta PIA2DB ; Output to PIA - ldb #AYREGLatch ; Latch register to modify - stb PIA2DA - - CLR PIA2DA ; Idle AY - - lda ,s+ ; Fetch saved Drive Selects - sta PIA2DB ; output to PIA - ldb #AYWriteReg ; Write value to latched register - stb PIA2DA ; Set register - - clr PIA2DA ; Idle AY - - PULS A,B,CC - RTS - - ENDC - - emod -eom equ * - end - diff -r 78b6ac6bba2c -r 1b5700ad3ffa level1/modules/makefile.dragon --- a/level1/modules/makefile.dragon Mon Apr 11 23:33:58 2005 +0000 +++ b/level1/modules/makefile.dragon Wed Apr 13 01:31:38 2005 +0000 @@ -1,3 +1,7 @@ +# +#modules/makefile.dragon +# + include ../../rules.mak CLOCKELIM = -aRTCElim=1 @@ -23,7 +27,7 @@ CLOCKS = clock_60hz clock_50hz \ clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \ clock2_smart clock2_harris clock2_cloud9 clock2_soft \ - clock2_messemu clock2_jvemu clock_d64 + clock2_messemu clock2_jvemu RBF = rbf.mn \ ddisk.dr \ @@ -34,10 +38,9 @@ SCF = scf.mn \ sc6551.dr vrn.dr printer.dr sio.dr sspak.dr dgnio.dr \ co32.io co80.io co51.io\ - nil.dd p.dd pipe.dd ssp.dd kbvdio.dr akbvdio.dr \ - drvr51.dr adrvr51.dr \ + nil.dd p.dd pipe.dd ssp.dd \ term_sio.dt term_sc6551.dt t1.dd t2_sc6551.dd t3_sc6551.dt \ - term32.dt term80.dt term_d64.dt t1_d64.dd p1_d64.dd + term32.dt term80.dt t1_d64.dd p1_d64.dd PIPE = pipeman.mn \ piper.dr \ @@ -119,7 +122,7 @@ $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD80) -aDNum=0 d1_dalpha.dd: ddiskdesc.asm - $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD40) -aDNum=1 + $(AS) $< $(ASOUT)$@ $(AFLAGS) $(SSDD40) -aDNum=1 d2_dalpha.dd: ddiskdesc.asm $(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -aDNum=2 @@ -137,12 +140,6 @@ rel_dalpha: rel.asm $(AS) $(AFLAGS) $(ASOUT)$@ $< -aDragon64=0 -aDragonAlpha=1 -akbvdio.dr: kbvdio.asm - $(AS) $(AFLAGS) $(ASOUT)$@ $< -aDragon64=0 -aDragonAlpha=1 - -adrvr51.dr: drvr51.asm - $(AS) $(AFLAGS) $(ASOUT)$@ $< -aDragon64=0 -aDragonAlpha=1 - sysgo_dd: sysgo.asm $(AS) $(AFLAGS) $(ASOUT)$@ $< -aDD=1 diff -r 78b6ac6bba2c -r 1b5700ad3ffa level1/modules/term_d64.asm --- a/level1/modules/term_d64.asm Mon Apr 11 23:33:58 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ - nam TERM - ttl os9 device descriptor - -* Disassembled 1900/00/00 00:18:24 by Disasm v1.5 (C) 1988 by RML - - ifp1 -* use /dd/defs/os9defs - use defsfile - use scfdefs - endc -tylg set Devic+Objct -atrv set ReEnt+rev -rev set $01 - mod eom,name,tylg,atrv,mgrnam,drvnam - fcb $03 mode byte - fcb $FF extended controller address - fdb $C000 physical controller address - fcb initsize-*-1 initilization table size - fcb $00 device type:0=scf,1=rbf,2=pipe,3=scf - fcb $01 case:0=up&lower,1=upper only - fcb $01 backspace:0=bsp,1=bsp then sp & bsp - fcb $00 delete:0=bsp over line,1=return - fcb $01 echo:0=no echo - fcb $01 auto line feed:0=off - fcb $00 end of line null count - fcb $01 pause:0=no end of page pause - fcb $10 lines per page - fcb $08 backspace character - fcb $18 delete line character - fcb $0D end of record character - fcb $1B end of file character - fcb $04 reprint line character - fcb $01 duplicate last line character - fcb $17 pause character - fcb $03 interrupt character - fcb $05 quit character - fcb $08 backspace echo character - fcb $07 line overflow character (bell) - fcb $00 init value for dev ctl reg - fcb $00 baud rate - fdb name copy of descriptor name address - fcb $00 acia xon char - fcb $00 acia xoff char -initsize equ * -name equ * - fcs /TERM/ -mgrnam equ * - fcs /SCF/ -drvnam equ * - fcs /KBVDIO/ - emod -eom equ * - end