Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/utils/view/view_vef.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
***************************************************************************** * * * SUBS for vef picture format * * * * VEFshowpic -- Displays picture, using putline routine * * * ***************************************************************************** check macro pshs b,cc ldb #\1 os9 F$PErr puls b,cc endm ifp1 use os9defs.d endc psect view_vef_a,0,0,0,0,0 vsect dp linesize rmb 2 endofpic rmb 1 VEFtype rmb 1 numpics rmb 1 Total number of pictures to load. endsect SetVF: tst <format bne SetVF1 sta numpics Set total number of pictures. lda #VEFFormat sta <format SetVF1 rts VEFshowpic: clra VEFshow1 bsr showvef inca cmpa numpics bne VEFshow1 * Now, were we displaying multiple pix?? lda numpics cmpa #1 beq onepic lda <cyclestart Disable cycling sta <cycleend lda #$ff sta <flipping Enable flipping. ldd #2 std <fliprate onepic rts showvef pshs a,b,x,y,u bsr header Get header info lbsr setscreen Set up screen lbsr setpals Set up palettes lbsr setbuffer Set up Get/Put Buffer std linesize Store size of line in bytes. lda VEFtype cmpa #2 bne showvef00 ldd linesize Screen type 2 is simulated, so halve the linesize value lsra rorb std linesize showvef00 ldd <Skiplines Skip lines at top. beq skip01 skip00 lbsr getline subd #1 bne skip00 skip01 ldd #00 Now display 192 lines showpicloop lbsr getline lbsr putline addd #1 cmpd #192 bne showpicloop showpicclear lbsr getline Now read until end of picture (to prepare for next file). tst endofpic beq showpicclear puls a,b,x,y,u,pc * * read header info from file, and set window type information * vsect dp endoffile rmb 1 compression rmb 1 0= Normal, $80=Squashed count rmb 1 Counts number packets to decode linesleft rmb 1 Counts down lines in picture. endsect header pshs a,b,x,y,u clr endofpic ldb #200 stb linesleft leax altbuff,y read in type and palettes into altbuff pshs y ldy #18 lbsr I_Read lbcs _error puls y leax altbuff,y lda ,x+ This byte is the compression type: 0=none, $80=squashed. beq header10 cmpa #$80 Squashed format lbne E$Format header10 sta compression lda ,x+ cmpa #4 lbhi E$Format sta VEFtype tst <type bne headtype leau headtable,pcr lda a,u sta <type headtype leau palette,y ldb #16 headloop lda ,x+ sta ,u+ decb bne headloop bra headmisc headtable fcb 8,7,8,6,5 headmisc * Set some miscellaneous variables lda #8 Set first, last palette for animation sta <cyclestart lda #15 sta <cycleend ldd #5 Default animation delay std <cyclerate lda #0 No color rotation sta <extranum ldd <Skiplines cmpd #$ffff Is Skiplines still default? bne headskip No, don't change it. ldd #8 std <Skiplines Set it to 8. headskip puls a,b,x,y,u,pc * * Getline * getline pshs a,b,x,y,u * First, fill buffers with all zeros leau linebuff,y ldb #160 getline3 clr ,u+ decb bne getline3 * If at end of file, leave it that way tst endoffile bne getline1 * If at end of picture, leave it that way tst endofpic bne getline1 * Decrement lines left in pic, set endofpic if appropriate dec linesleft bne morelines com endofpic morelines * Test compression method tst compression bmi squash * Get an unsquashed line pshs y leax linebuff,y read in one line of screen ldy linesize lbsr I_Read puls y lbcs getline2 Error through EOF check. bra getline0 Now exit. * Get a squashed line squash leau linebuff,y ldb #2 stb count squash1 lbsr I_GetByte bcs getline2 tfr a,b clra leax altbuff,y Use AltBuff to store data to unsquash pshs y tfr d,y lbsr I_Read puls y lbcs getline2 ldd linesize lsra rorb Always decode half a line at a time. bsr unsquash dec count bne squash1 bra getline0 * Handle read error getline2 cmpb #E$EOF bne getline4 com endoffile bra getline1 * Finished reading line getline0 lda VEFtype cmpa #2 bne getline1 bsr expand bra getline1 * Handle bad errors getline4 lbra _error If not EOF, just exit with error. * Exit getline getline1 puls a,b,x,y,u,pc * * Expand a 160 pixel 16-color line to a 320 pixel 16-color line * expand pshs a,b,x,y,u leax linebuff,y leay exptable,pcr ldd linesize (Actually fits in just B) leax d,x X points to end of 160 pixel line leau d,x U points to end of 320 pixel line exploop lda ,-x anda #$0f lda a,y sta ,-u lda ,x lsra lsra lsra lsra lda a,y sta ,-u decb bne exploop puls a,b,x,y,u,pc exptable fcb $00,$11,$22,$33,$44,$55,$66,$77,$88,$99,$AA,$BB,$CC,$DD,$EE,$FF * * X points to data to unsquash, U points to destination buffer * unsquashed result will be exactly B bytes. * Exit: U points to end of unsquashed, all else unchanged. * vsect dp unsq_count rmb 1 endsect unsquash pshs a,b,x stb unsq_count unsq_loop ldb ,x+ beq unsq_end bpl gl_straight lda ,x+ * Deal with repeated byte gl_comp andb #$7f Strip off high bit gl_comp2 sta ,u+ Store a copy of this byte dec unsq_count beq unsq_end decb decrement repeat count bne gl_comp2 Not done, loop bra unsq_loop Done, get another control value from file. * Deal with straight section gl_straight lda ,x+ sta ,u+ store it dec unsq_count beq unsq_end decb count down bytes left bne gl_straight bra unsq_loop If done, get next section unsq_end puls a,b,x,pc endsect