'******************************* '* NTSC 256 x 192 x 8bpp-lut * '******************************* CON f_color = 3_579_545.0 'colorburst frequency f_scanline = f_color / 227.5 'scanline frequency f_pixel = f_scanline * 400.0 'pixel frequency for 400 pixels per scanline f_clock = 80_000_000.0 'clock frequency f_xfr = f_pixel / f_clock * float($7FFF_FFFF) f_csc = f_color / f_clock * float($7FFF_FFFF) * 2.0 s = 90 'scale DAC output (s = 0..128) r = s * 1000 / 1646 'precompensate for modulator expansion of 1.646 mody = ((+38*s/128) & $FF) << 24 + ((+75*s/128) & $FF) << 16 + ((+15*s/128) & $FF) << 8 + (110*s/128 & $FF) modi = ((+76*r/128) & $FF) << 24 + ((-35*r/128) & $FF) << 16 + ((-41*r/128) & $FF) << 8 + (100*s/128 & $FF) modq = ((+27*r/128) & $FF) << 24 + ((-67*r/128) & $FF) << 16 + ((+40*r/128) & $FF) << 8 + 128 DAT org ' ' ' Setup ' hubset #$1FF 'set clock to 80MHz and shift DACs down by one pin rdfast #0,##$1000-$400 'load .bmp palette into lut rep @.end,#$100 rflong y shl y,#8 wrlut y,x add x,#1 .end rdfast ##256*192/64,##$1000 'set rdfast to wrap on bitmap setxfrq ##round(f_xfr) 'set transfer frequency setcfrq ##round(f_csc) 'set colorspace converter frequency setcy ##mody 'set colorspace converter coefficients setci ##modi setcq ##modq setcmod #%10_1_0000 'set colorspace converter to FYC/FYC/FIQ/FYS mode (s-video) wrpin dacmode,#1 'enable dac mode in pin 1 (FIQ = chroma) wrpin dacmode,#0 'enable dac mode in pin 0 (FYS = luma) ' ' ' Field loop ' field mov x,#35 'top blanks call #blank mov x,#192 'set visible lines line call #hsync 'do horizontal sync xcont m_rf,#0 'visible line xcont m_av,#1 'after visible spacer djnz x,#line 'another line? mov x,#27 'bottom blanks call #blank mov x,#6 'high vertical syncs .vlow xcont m_hl,#2 xcont m_hh,#1 djnz x,#.vlow mov x,#6 'low vertical syncs .vhigh xcont m_ll,#2 xcont m_lh,#1 djnz x,#.vhigh mov x,#6 'high vertical syncs .vlow2 xcont m_hl,#2 xcont m_hh,#1 djnz x,#.vlow2 jmp #field 'loop ' ' ' Subroutines ' blank call #hsync 'blank lines xcont m_vi,#0 xcont m_av,#1 _ret_ djnz x,#blank hsync xcont m_sn,#2 'horizontal sync xcont m_bc,#1 xcont m_cb,c_cb _ret_ xcont m_ac,#1 ' ' ' Initialized data ' dacmode long %0000_0000_000_1010000000000_01_00000_0 m_sn long $CF000000+29 'sync m_bc long $CF000000+7 'before colorburst m_cb long $CF000000+18 'colorburst m_ac long $CF000000+40 'after colorburst m_vi long $CF000000+256 'visible m_av long $CF000000+50 'after visible (400 total) m_rf long $7F000000+256 'visible rflong 8bpp lut m_hl long $CF000000+15 'vertical sync high low m_hh long $CF000000+185 'vertical sync high high (200 total) m_ll long $CF000000+171 'vertical sync low low m_lh long $CF000000+29 'vertical sync low high (200 total) c_cb long $507000_01 'colorburst reference color x res 1 y res 1 ' ' ' Bitmap ' orgh $1000 - $436 'justify pixels at $1000, pallete at $1000-$400 file "bitmap.bmp"