Code:
DEFINT A-ZDECLARE SUB modex ()DECLARE SUB page (active, visual)DECLARE SUB pixel (x, y, c)modexpage 0, 0COLOR 12OUT &H3C4, &H2OUT &H3C5, &HFFFOR i! = 0 TO 2 * 3.1415926# STEP .01 pixel 160 + COS(i!) * 100, 120 + SIN(i!) * 100, 50 + INT(i!)NEXTSLEEPSYSTEMSUB modex SCREEN 13 OUT &H3C4, &H4: OUT &H3C5, &H6: OUT &H3C4, &H0 OUT &H3C5, &H1: OUT &H3C2, &HE3: OUT &H3C4, &H0 OUT &H3C5, &H3: OUT &H3D4, &H11: x = INP(&H3D5) AND &H7F OUT &H3D5, x: OUT &H3D4, &H6: OUT &H3D5, &HD OUT &H3D4, &H7: OUT &H3D5, &H3E: OUT &H3D4, &H9 OUT &H3D5, &H41: OUT &H3D4, &H10: OUT &H3D5, &HEA OUT &H3D4, &H11: OUT &H3D5, &HAC: OUT &H3D4, &H12 OUT &H3D5, &HDF: OUT &H3D4, &H14: OUT &H3D5, &H0 OUT &H3D4, &H15: OUT &H3D5, &HE7: OUT &H3D4, &H16 OUT &H3D5, &H6: OUT &H3D4, &H17: OUT &H3D5, &HE3END SUBSUB page (active, visual) OUT &H3D4, &HC OUT &H3D5, &H4B * visual OUT &H3D4, &HD OUT &H3D5, 0 DEF SEG = &HA000 + &H4B0 * activeEND SUBSUB pixel (x, y, c) OUT &H3C4, &H2 OUT &H3C5, 2 ^ (x AND 3) POKE x \ 4 + y * 80, cEND SUB
Code:
DEFINT A-ZDECLARE SUB modex ()modexOUT &H3C4, &H2OUT &H3C5, &HFFFOR i = 383 TO 550 k& = (i - 383) * 320& DEF SEG = &HFFA6 x = PEEK(14 + i) DEF SEG = &HA000 FOR j = 0 TO 16 d = ((x AND (2 ^ (16 - j))) <> 0) * -14 POKE k& + j, d POKE k& + j + 79.99999999999998, d POKE k& + j + 160&, d POKE k& + j + 240&, d NEXTNEXTj = 1i = 0DO i = i + 80 * j j = j XOR 2 * ((i = 32000) XOR (i = 0)) OUT &H3D4, &HC OUT &H3D5, i \ 256 OUT &H3D4, &HD OUT &H3D5, i WAIT &H3DA, 8 WAIT &H3DA, 8, 8LOOP UNTIL INP(&H60) = 1SYSTEMDEFSNG A-ZSUB modex SCREEN 13 OUT &H3C4, &H4: OUT &H3C5, &H6: OUT &H3C4, &H0 OUT &H3C5, &H1: OUT &H3C2, &HE3: OUT &H3C4, &H0 OUT &H3C5, &H3: OUT &H3D4, &H11: x = INP(&H3D5) AND &H7F OUT &H3D5, x: OUT &H3D4, &H6: OUT &H3D5, &HD OUT &H3D4, &H7: OUT &H3D5, &H3E: OUT &H3D4, &H9 OUT &H3D5, &H41: OUT &H3D4, &H10: OUT &H3D5, &HEA OUT &H3D4, &H11: OUT &H3D5, &HAC: OUT &H3D4, &H12 OUT &H3D5, &HDF: OUT &H3D4, &H14: OUT &H3D5, &H0 OUT &H3D4, &H15: OUT &H3D5, &HE7: OUT &H3D4, &H16 OUT &H3D5, &H6: OUT &H3D4, &H17: OUT &H3D5, &HE3END SUB
Code:
DEFINT A-ZDECLARE SUB modex ()DIM yy AS LONGDIM a(10) AS LONGa(0) = &H8BE58955a(1) = &H33CD0C46a(2) = &H890A768Ba(3) = &H8768B1Ca(4) = &H768B0C89a(5) = &H5D148906a(6) = &H8CADIM r AS STRING * 1, g AS STRING * 1, b AS STRING * 1DIM s AS LONGSCREEN 0'PRINT "Enter filename of 8bit bmp less then 512x495 in size"'LINE INPUT f$modexOUT &H3D4, &H13OUT &H3D5, 64DEF SEG = &HA000f$ = "city7.bmp"k = 1OPEN f$ FOR BINARY AS #1GET #1, 1, xGET #1, 29, yIF x <> &H4D42 AND y <> 8 THEN SYSTEMGET #1, 19, xGET #1, 23, y'GET #1, 35, sizeGET #1, 54, bOUT &H3C8, 0FOR i = 0 TO 255 GET #1, , b GET #1, , g GET #1, , r OUT &H3C9, ASC(r) \ 4 OUT &H3C9, ASC(g) \ 4 OUT &H3C9, ASC(b) \ 4 GET #1, , bNEXTIF x MOD 4 THEN z$ = SPACE$(4 - (x MOD 4))OUT &H3C4, &H2FOR i = 0 TO y - 1 yy = (y - i - 1) * 128& FOR j = 0 TO x - 1 GET #1, , b k = k * 2 MOD 15 OUT &H3C5, k POKE j \ 4 + yy, ASC(b) NEXT GET #1, , z$_MOUSEX = 0y = 0DEF SEG = VARSEG(a(0))CALL absolute(BYVAL 0, mb, mx, my, VARPTR(a(0)))DO CALL absolute(BYVAL 3, mb, mx, my, VARPTR(a(0))) IF mb = 1 THEN ox = mx + x oy = my + y DO CALL absolute(BYVAL 3, mb, mx, my, VARPTR(a(0))) x = ox - mx y = oy - my IF x < 1 THEN x = 0 IF y < 1 THEN y = 0 IF x > 384 THEN x = 384 IF y > 250 THEN y = 250 s = y * 128& + x \ 8 OUT &H3D4, &HC OUT &H3D5, s \ 256 OUT &H3D4, &HD OUT &H3D5, s i = INP(&H3DA) OUT &H3C0, &H33 OUT &H3C0, (x AND &HFFFE) MOD 8 LOOP WHILE mb = 1 END IFLOOP UNTIL INP(&H60) = 1OUT &H3D4, &H13OUT &H3D5, 40SCREEN 0SYSTEMSUB modexSCREEN 13OUT &H3C4, &H4: OUT &H3C5, &H6: OUT &H3C4, &H0OUT &H3C5, &H1: OUT &H3C2, &HE3: OUT &H3C4, &H0OUT &H3C5, &H3: OUT &H3D4, &H11: x = INP(&H3D5) AND &H7FOUT &H3D5, x: OUT &H3D4, &H6: OUT &H3D5, &HDOUT &H3D4, &H7: OUT &H3D5, &H3E: OUT &H3D4, &H9OUT &H3D5, &H41: OUT &H3D4, &H10: OUT &H3D5, &HEAOUT &H3D4, &H11: OUT &H3D5, &HAC: OUT &H3D4, &H12OUT &H3D5, &HDF: OUT &H3D4, &H14: OUT &H3D5, &H0OUT &H3D4, &H15: OUT &H3D5, &HE7: OUT &H3D4, &H16OUT &H3D5, &H6: OUT &H3D4, &H17: OUT &H3D5, &HE3END SUB
Statistics: Posted by Guest — Mon Apr 04, 2011 4:10 pm
Code:
DECLARE SUB ModeX () 'DECLARE SUB OutPort (PortAddr&, vh%, vl%) 'DECLARE SUB Standard () 'DECLARE SUB SetVOffset (Offset&) ''SCREEN 13: DEF SEG = &HA000: CALL ModeX''FOR count% = 0 TO 63'redval& = count%'greenval& = 256 * count%'blueval& = 65536 * count%'rgbval& = blueval& + greenval& + redval&'PALETTE count%, redval&'PALETTE count% + 64, greenval& 'PALETTE count% + 128, blueval& 'PALETTE count% + 192, rgbval& 'NEXT count%''FOR Offset& = 0 TO 15999'rgbbase% = Offset& MOD 64'POKE Offset&, rgbbase%'POKE Offset& + 16000, rgbbase% + 64 'POKE Offset& + 32000, rgbbase% + 128'POKE Offset& + 48000, rgbbase% + 192'NEXT Offset&''Offset& = 0: OffsetInc% = 80: Frame% = 0''DO'Offset& = Offset& + OffsetInc%'CALL SetVOffset(Offset&): WAIT &H3DA, 8'Frame% = Frame% + 1'IF Frame% = 99 THEN OffsetInc% = 81'IF Frame% = 199 THEN OffsetInc% = 79'IF Frame% = 299 THEN OffsetInc% = 80'IF Frame% = 499 THEN OffsetInc% = -80'IF Frame% = 599 THEN OffsetInc% = -79'IF Frame% = 699 THEN OffsetInc% = -81'IF Frame% = 799 THEN OffsetInc% = -80'IF Frame% = 899 THEN 'CLS : PALETTE'CALL SetVOffset(0): CALL Standard'END'END IF'FOR delay% = 1 TO 10: NEXT delay%'LOOP''' Regarding the example code... Change the delay% value to'accommodate your CPU's speed. The TIMER function is'relatively inaccurate when dealing with fractions of a'second, and I had insufficient space to include my own timer'routine.'' If you have any questions, feel free to ask.'Happy coding! Jason Plackey'''SUB ModeX 'CALL OutPort(&H3C4, 6, 4): CLS 'CALL OutPort(&H3D4, 227, 23)'CALL OutPort(&H3D4, 0, 20)'CALL OutPort(&H3C4, 15, 2)'END SUB''SUB OutPort (PortAddr&, vh%, vl%) 'OUT PortAddr&, vl%: OUT PortAddr& + 1, vh%'END SUB''SUB SetVOffset (Offset&) 'V& = Offset&'CALL OutPort(&H3D4, V& \ 256, 12)'CALL OutPort(&H3D4, V& AND 255, 13)'END SUB''SUB Standard 'CALL OutPort(&H3C4, 14, 4)'CALL OutPort(&H3D4, 163, &H17)'CALL OutPort(&H3D4, 64, &H14)'CALL OutPort(&H3C4, 15, &H2)'END SUB'
Hope this helps with modex. Statistics: Posted by TRANERAECK — Mon Apr 04, 2011 1:48 pm