Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/subrtns/cpu.asm @ 3204:64ad5cd0b912
Added some HD6309 optimizations to level1's covdg.asm file.
Optimization 1) added TFM clear screen
Optimization 2) added TFM scroll screen
One of the optimizations was copied over from the level2's covdg.asm file.
author | David Ladd <drencor-xeen@users.sourceforge.net> |
---|---|
date | Fri, 28 Jul 2017 15:42:20 -0500 |
parents | 900ceed1880a |
children |
line wrap: on
line source
******************************************************************** * CPU - CPU Determiner Subroutine Module * * $Id$ * * Basic09 subroutine module to determine the CPU type of the computer * Test via: * * PROGRAM CPU * DIM CPUType,Mode:integer * RUN CPU(Type,Mode) * PRINT "CPU type:";CPUType * IF Mode=0 THEN * PRINT "6809 Emulation mode" * ELSE * PRINT "6309 Native mode" * ENDIF * END * * returns: CPUType: 6809 or 6309 (decimal integer) * Mode: 0=emulation mode, 1=native mode * * Ed. Comments Who YY/MM/DD * ------------------------------------------------------------------ * 1 Created ADK ??/??/?? nam CPU ttl CPU Determiner Subroutine Module ifp1 use defsfile endc rev set 1 first revision tylg set Sbrtn+Objct atrv set ReEnt+Rev edition set 1 org 0 rmb 2 return address PCount rmb 2 number of parameters Param1 rmb 2 1st param address Length1 rmb 2 size Param2 rmb 2 Length2 rmb 2 Size equ . mod eom,name,tylg,atrv,start,size name fcs /CPU/ fcb edition Start ldd PCount,s get parameter count cmpd #2 2 parameters? bne p.error no, error out. ldd Length1,s get size of the first parameter cmpd #2 integer variable? bne p.error no, error out. ldd Length2,s cmpd #2 integer variable? bne p.error no, error out. * do a 6309/6809 test ldd #$FFFF make sure it's non-zero * clrd executes as a pseudo-NOP ($10), and a CLRA fdb $104F tstb bne is.6809 ldd #6309 it's a 6309 bra save.1 is.6809 ldd #6809 it's a 6809 save.1 ldx Param1,s where to put the CPU type std ,x save the integer CPU type * if it's a 6809, we don't need to do the next part, as we KNOW it's * running in 6809 emulation mode! * this is harder.... are we in native mode? pshs cc,dp,x,y,u save all registers but D * pshsw a NOP on a 6809 fdb $1038 leay native,pc native mode PC leax emulate,pc emulation mode PC pshs x,y save them pshs cc,d,dp,x,y,u and the rest of the registers, too. orcc #Entire set the entire bit in CC rti emulate leas 2,s emulation mode: kill native mode PC clrb we're in emulation mode fcb $8C skip 2 bytes native ldb #1 in native mode puls u restore W from off-stack * tfr u,w a PULSW does an 'RTS' on a 6809 fdb $1F36 puls cc,dp,x,y,u restore all of our other registers clra now d=0: emulation, 1: native ldx Param2,s where to put the data std ,x save native/emulation mode flag clrb no errors rts p.error comb set the carry ldb #$38 Basic09 parameter error rts emod eom equ * end