Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/utils/view/view_pals.a @ 3210:6353bb024571
Created makefile and defsfile for NoCan RAMMER module driver and descriptor
Updated rammer.asm in the NoCan driver folder to build the NoCan version of the Driver
Updated r0.asm file to create the 6MB version of the descriptor.
The makefile creates a disk image with two sets of the required drivers for
the 6309 and 6809's in their respective module folders.
/NITROS9/6309_L2/MODULES/RBF
for the 6309 files
and
/NITROS9/6809_L2/MODULES/RBF
for the 6809 files.
This will make it easier for doing a dsave from this disk image into a
normal distro disk image so people have these drivers ready for when
new memory upgrades allow compatible usage of the NoCan registers.
author | David Ladd <drencor-xeen@users.sourceforge.net> |
---|---|
date | Wed, 20 Dec 2017 15:15:49 -0600 |
parents | 37fd74e6fad8 |
children |
line wrap: on
line source
* * Palette operations: * * palconv: 16 3-byte palette specs (R, G, B for each color) * is converted into CoCo format palette info. * palscale: 16 3-byte palette specs are scaled so largest coordinate * is 255. * setpals: Set palettes from data in "palette" global buffer * docycle: Cycle palettes * dorotate: Rotate through one palette slot * cmpconv: Convert "palette" buffer from Composite color to RGB color * ifp1 use os9defs.d endc StdOut equ 1 psect view_pals_a,0,0,0,0,0 scaletable fcb $00,$ff,$80,$55 fcb $40,$33,$2b,$24 fcb $20,$1c,$1a,$17 fcb $15,$14,$12,$11 palscale: pshs a,b,x,y,u palscale1 bsr findmax First, rotate down so largest is <16 cmpa #15 bls palscale2 bsr divide bra palscale1 palscale2 leax scaletable,pcr Get multiplier for scaling. ldb a,x pshs b leax palette,y Now scale each 4-bit palette value to 8 bits. ldb #48 The chosen multiplier should make the highest pshs b palette value be 255 (or at least close). palscale3 ldb ,x lda 1,s mul cmpd #$100 Truncate to $ff. blo palscale4 ldb #$ff palscale4 stb ,x+ dec ,s bne palscale3 puls d Clean up stack. puls a,b,x,y,u,pc * Divide each palette coordinate by 2 divide pshs b,x leax palette,y ldb #48 divide1 lda ,x lsra sta ,x+ decb bne divide1 puls b,x,pc * Return largest palette coordinate in A. findmax pshs b,x leax palette,y ldb #48 clra findmax1 cmpa ,x+ bhs findmax2 lda -1,x findmax2 decb bne findmax1 puls b,x,pc palconv: pshs a,b,x,u,y leax palette,y leau pctable,pcr leay palette,y ldb #16 Number of bytes to deal with palconvloop clra bsr pcsub Add one color component into A. bsr pcsub bsr pcsub sta ,y+ decb bne palconvloop puls a,b,x,u,y,pc pctable fcb 0,1,8,9 pcsub pshs b pshs a clrb pshs b ldb ,x+ clra pcsloop cmpd #42 ble pcsend inc ,s subd #85 bra pcsloop pcsend puls b puls a lsla ora b,u puls b,pc * * Set up palette registers * setpals: pshs x leax palette,y bsr setpal puls x,pc vsect dp currot rmb 1 endsect vsect setpCom rmb 64 Space for 16 Set Palette commands. curpals rmb 16 endsect setpal pshs a,b,x,y,u leau curpals,y leay setpCom,y pshs y clrb setloop lda #$1b sta ,y+ Set palette command is $1b $31 <pal#> <value> lda #$31 sta ,y+ stb ,y+ Put palette number in. lda ,x+ Get palette value. sta ,u+ Copy it to curpals storage. sta ,y+ Put palette value in. incb cmpb #16 bne setloop puls x Pull address of command string. lda <outpath ldy #64 OS9 I$Write lbcs _error puls a,b,x,y,u,pc * * Rotate palletes down, from cyclestart to cycleend * docycle: pshs a,b,x leax curpals,y ldb <cycleend cmpb <cyclestart bls rollcycle Unreasonable limits? If so, end. leax b,x lda ,x pshs a rollloop lda ,-x sta 1,x decb cmpb <cyclestart bne rollloop puls a sta ,x leax curpals,y bsr setpal rollcycle puls a,b,x,pc vsect onepal fcb $1b,$31,0,0 endsect dorotate: pshs a,b,x,y,u leax onepal,y ldb <extranum If no extra pals to rotate, don't beq dorotend ldb currot Get current rotation value. incb cmpb <extranum Should we wrap? blo dorot clrb Yes, wrap to zero. dorot stb currot leau extrapals,y Get new palette value. lda b,u ldb <extraslot Set up palette command. stb 2,x Store palette number sta 3,x Store color leau curpals,y Store it into correct palette slot. sta b,u ldy #4 lda <outpath os9 I$Write lbcs _error dorotend puls a,b,x,y,u,pc cmpconv: pshs a,b,x,u leax palette,y leau cmptable,pcr ldb #16 cmploop lda ,x lda a,u sta ,x+ decb bne cmploop puls a,b,x,u,pc cmptable fcb 00,02,02,06,00,04,33,32 From Greg Law. fcb 32,45,05,09,13,08,01,00 fcb 07,16,18,21,20,34,38,36 fcb 37,44,40,42,11,15,10,27 fcb 56,23,19,49,48,55,38,39 fcb 37,46,47,41,11,25,24,26 fcb 58,63,50,51,62,52,53,60 fcb 60,46,61,61,57,59,58,63 endsect