Kernel + real-time OS semantics
Pat Ford
pat at istop.com
Wed Sep 5 16:05:48 GMT 2001
Why don't we first settle on a disassembler that takes an .inc file (
any suggestions??) and make a team effort? Who is interested??
"Malcolm Robb, LC 0112G" wrote:
>
> What a great idea P4.inc would be. I'd also suggest including/using the
> variable and table names used in TurboP4.pdf too. That way anyone who knew
> how to understand one hac would be able to understand most others.
>
> I have ....
>
> LFFF0: dw $B000 ; SWI instruction
> LFFF2: dw $B34A ; ALDL interrupt vector & periodic timer
> LFFF4: dw $B59D ; External Interrupt Vector
> LFFF6: dw $B006 ; Illegal Instruction Interrupt Vector
> LFFF8: dw $B00A ; Bus Reset Vector (read or write 0x6000-0x6FFF)
> LFFFA: dw $B00E ; Watchdog Vector
> LFFFC: dw $B012 ; Clock Fail Vector
> LFFFE: dw $B016 ; Reset Vector
>
> Different assembler/disassembler I suppose. The irq1 vector is at $FFF2,
> called TMRVCT
TiMeR VeCtor the disassembler I use only takes 6 char for labels, thats
why I didn't do turboP4.pdf labels
>in your nmenoics, and it is shared with the ALDL receive &
> transmit interrupts. The first thing the interrupt service routine does (in
> my code) is test some bits in a status register to ascertain what the cause
> of the interrupt is - ALDL RX, ALDL TX or Heartbeat Timer as follows
>
> ;**********************************************************************
> ;
> ; ALDL interrupt & periodic timer vector routine
> ;
> LB34A: bset NVRAMWD0, #NVRAMWD0_PEI
>
> ldX #IOREG4000
> brset ALDL_REG,X,#ALDL_EXTIRQ,PERIODIC_IRQ
>
> brclr SCI_CTRL,X,#SCI_RDRF, LB360 ; if SCI_RDRF enabled
> brclr ALDL_REG,X,#ALDL_RDRF,LB37E ; and ALDL_RDRF occurred
> call ALDL_RX ; then next ALDL Rx'ed
> reti
> ;
> LB360: brclr SCI_CTRL,X,#SCI_TDRE, LB36C ; if SCI_TDRE enabled
> brclr ALDL_REG,X,#ALDL_TDRE,LB37E ; and ALDL_TDRE occurred
> call ALDL_TX ; then Tx next ALDL byte
> reti
> ;
> LB36C: brclr SCI_CTRL,X,#SCI_TC, LB37E ; if SCI_TC enabled
> brclr ALDL_REG,X,#ALDL_TC,LB37E ; and SCI_TC occurred
> ; then SCI Tx complete occurred
> ldaA #$27
> staA SCI_CTRL,X ; 0x27 = enable SCI_RDRF & SCI_EXTIRQ & SCI_RE & SCI_RWU
>
> bclr ALDLMW,#ALDLMW_TX ; Flag ALDL inactive
> bclr IOPORTA,X,#SPI_ALDLTX ; Disable the ALDL Tx Output Buffer
>
> LB37E: reti
> ;
> ;**********************************************************************
>
> The jump table isn't at a fixed location for all code masks, so you'll need
> to specify which mask you're using to locate it. The table is buried within
> the main processor code. In my code ($B0 mask) it's at $D658
>
> Hope this helps
> Push AF, Ret ;-)
> Malcolm
>
> -----Original Message-----
> From: Pat Ford [SMTP:pat at istop.com]
> Sent: Wednesday, September 05, 2001 2:46 PM
> To: gmecm at diy-efi.org
> Subject: Re: Kernel + real-time OS semantics
>
> where is the jump table? (on which mask??) which vector holds the address
> of irq1 ( the timer irq)
> does anyone have a list of what all the interrupt vectors are?
> i.e. this is what I have worked with
> FFF0 SWIVCT: .word SWIVCT
> FFF2 TMRVCT: .word TMRVCT
> FFF4 EXTVCT: .word EXTVCT
> FFF6 ILL_OP: .word SWIVCT
> FFF8 BUSVCT: .word BUSVCT
> FFFA COPVCT: .word BUSVCT
> FFFC CLKVCT: .word BUSVCT
> FFFE RSTVCT: .word BUSVCT
>
> does it look correct?
> what I think would be great is to pull together info and make a P4.inc
> file that has the defines for registers, int vectors .... That would
> help the disassemblies. I'll start trying to put one together today, if
> no one else wants to
>
> ----------------------------------------------------------------------------
> To unsubscribe from gmecm, send "unsubscribe gmecm" (without the quotes)
> in the body of a message (not the subject) to majordomo at lists.diy-efi.org
----------------------------------------------------------------------------
To unsubscribe from gmecm, send "unsubscribe gmecm" (without the quotes)
in the body of a message (not the subject) to majordomo at lists.diy-efi.org
More information about the Gmecm
mailing list