home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1995 January / amigagames-1995-01.iso / archive / spiele / publicdomain / sk003.dms / sk003.adf / src / tetrisprint.s < prev    next >
Text File  |  2001-01-01  |  9KB  |  269 lines

  1. ;-----------------------------------------------------------------------------
  2. ; Tetris © Copyright 1990 Software Alchemy All Rights Reserved, V0.1 28-Dec-89
  3. ;-----------------------------------------------------------------------------
  4.     include    'tetris.i'
  5.  
  6.  
  7. ;
  8. ;    Print Text, Access the ROMFont
  9. ;        A0 = Pointer to Text String (null terminated) + x,y pos
  10. ;        A1 = Screen
  11.  
  12.  
  13. PrintText
  14.     moveq    #0,d0
  15.     move.l    d0,d1
  16.     move.w    (a0)+,d0
  17.     move.w    (a0)+,d1
  18.  
  19.     mulu    #44*5,d1            ; Real Y Pos of Write
  20.     add.l    d1,a1                ; Delta Write
  21.     move.w    d0,d3                ; Save X
  22.     lsr.w    #3,d0                ; Get X Byte Position
  23.     add.w    d0,a1                ; A1 = Text Write Address
  24.     move.l    a1,a3                ; (save)
  25.     move.l    a1,d5                ; (save)
  26.  
  27.     and.w    #7,d3                ; D3 = Bit Shift
  28.     sub.w    #8,d3
  29.     neg.w    d3
  30.  
  31. 2$    moveq    #0,d0                ; Get char
  32.     move.b    (a0)+,d0
  33.     beq.s    Print900            ; EXIT
  34.  
  35.     cmp.b    #13,d0                ; RETURN
  36.     bne.s    3$
  37.     add.l    #9*44*5,d5
  38.     move.l    d5,a1                ; Next VLine
  39.     move.l    d5,a3
  40.     bra    2$
  41.  
  42. 3$    cmp.b    #$80,d0                ; COLORIZE
  43.     bcs.s    4$
  44.     and.b    #15,d0                ; (clean.l)
  45.     mulu    #44,d0
  46.     add.w    d0,a1
  47.     add.w    d0,a3
  48.     sub.w    #44*3,a1
  49.     sub.w    #44*3,a3
  50.     bra.s    2$
  51. 4$
  52.  
  53.     sub.w    #32,d0                ; Offset Properly
  54.     move.l    Characters(pc),a2        ; Source of Characters
  55.     add.w    d0,a2                ; Current Character to Dump
  56.                         ; Dump a Character
  57.     move.w    #7,d4                ; 8 Pixels Tall
  58. 1$
  59. ;    move.b    (a1),d0                ; D0 = Dest Read
  60. ;    lsl.w    #8,d0
  61. ;    move.b    1(a1),d0
  62. ;    moveq    #0,d1
  63.     move.b    (a2),d1                ; D1 = Character Read
  64. ;    lsl.w    d3,d1                ; D1 = Bit Shifted Char Read
  65. ;    eor.w    d1,d0                ; Dest + Character
  66.  move.b d1,d0                ;(no eor)
  67. ;    move.b    d0,1(a1)            ; Dest Write
  68. ;    lsr.w    #8,d0
  69.     move.b    d0,(a1)
  70.     add.w    #$c0,a2                ; Char Src + Modulo = Next VLine
  71.     add.w    #220,a1                ; Dest + Modulo = Next VLine
  72.     dbf    d4,1$
  73.     add.w    #1,a3                ; NeXT Horizontal Write Please
  74.     move.l    a3,a1                ; Reset Horizontal Pos
  75.     bra.s    2$                ; NeXT Letter Please!
  76. Print900:
  77.     rts
  78.  
  79.  
  80. ;
  81. ; D0 = Character
  82. ;
  83. PrintColumn
  84.  
  85. ;    moveq    #1,d2
  86. 8$    cmp.b    #$f8,$dff006
  87.     bne.s    8$
  88. 9$    cmp.b    #$fa,$dff006
  89.     bne.s    9$
  90.     movem.w    d0-d2,-(a7)            ; shift entire field over.
  91.     bsr    DrawScroller
  92.     movem.w    (a7)+,d0-d2
  93. ;    dbf    d2,8$
  94.  
  95.     bsr    DrawScrollClear
  96.                         ; D1 = Column #7-0
  97.                         ; D0 = Character
  98.     and.w    #$ff,d0
  99.     move.w    d0,d4
  100.     and.w    #7,d4
  101.     cmp.w    #7,d4                ; (isn't really an 8th color)
  102.     bne.s    7$
  103.     clr.w    d4
  104. 7$    lsl.w    #5,d4
  105.     move.l    Characters(pc),a0        ; Source of Characters
  106.     sub.w    #32,d0
  107.     add.w    d0,a0                ; Current Character to Dump
  108.     moveq    #7,d2
  109.     clr.b    d3
  110. 1$    move.b    (a0),d0
  111.  
  112.     btst    d1,d0
  113.     beq.s    5$
  114.  
  115.     movem.l    d0-d2/a0,-(a7)
  116.     tst.b    d3
  117.     bne.s    2$
  118.     moveq    #42,d1                ; Get Horiz
  119.     moveq    #26,d0
  120.     sub.w    d2,d0                ; Vert
  121.     moveq    #7,d2
  122.     or.w    d4,d2
  123.     bsr    DrawScrollBit
  124.     movem.l    (a7),d0-d2/a0
  125.  
  126. 2$    st    d3
  127.     moveq    #42,d1                ; Get Horiz
  128.     moveq    #27,d0
  129.     sub.w    d2,d0                ; Vert
  130.     moveq    #6,d2
  131.     or.w    d4,d2
  132.     bsr    DrawScrollBit
  133.     movem.l    (a7)+,d0-d2/a0
  134.     bra.s    6$
  135. 5$    clr.b    d3
  136. 6$    add.w    #$c0,a0                ; Next Down
  137.     dbf    d2,1$
  138.     rts                    ; A0 = Ptr to CharList
  139.  
  140. GetTopaz
  141.     move.l    4,a6
  142.     lea    GfxName(pc),a1
  143.     jsr    -408(a6)        ; OpenLibrary("graphics.library");
  144.     move.l    d0,a6
  145.  
  146.  move.l $94(a6),d0
  147.  
  148. ; Apparently there is a problem with OpenFont under 1.3 with a custom font, and a 68030
  149. ; so I changed to a direct scam off the graphics structure...which I can't
  150. ; test but I hope is a more robust solution.
  151.  
  152. ;    lea    TopazName(pc),a2
  153. ;    lea    TextAttr(pc),a0
  154. ;    move.l    a2,(A0)            ; OpenFont(TextAttr);
  155. ;    jsr    $ffb8(a6)
  156.  
  157.     move.l    d0,a1
  158.     lea    Characters(pc),a0
  159.     move.l    $22(a1),(a0)
  160.  rts
  161. ;    jmp    $ffb2(a6)        ; CloseFont (pass TextFont in A1);
  162.  
  163. TextAttr    dc.l    0        ; ta_Name.l
  164.         dc.w    8,0        ; ta_YSize.w, ta_Style.b, ta_Flags.b
  165.  
  166. TopazName    dc.b    'topaz.font',0
  167. GfxName        dc.b    'graphics.library',0
  168. Characters     dc.l    0
  169.  
  170. ScrollMessage
  171.  
  172.     dc.b    "Slick Cool Fun Games! its what everybody wants to write. " 
  173.     dc.b    "And now, Anselm Hook, Software Designer who has worked on "
  174.     dc.b    "projects like Datastorm, Vortex, Dragons Lair II, Hybris "
  175.     dc.b    "to name a few "
  176.     dc.b    "reveals the coding techniques behind todays hot products "
  177.     dc.b    "in 'Tetris.s' - a stunning compendium of programming "
  178.     dc.b    "tips and tricks that will leave you breathless. "
  179.  
  180.     dc.b    "                                           "
  181.  
  182.     dc.b    "Hey, whats' this? A Trashy ScrollText???       "
  183.     dc.b    "Well in that case....        I think I feel "
  184.     dc.b    "the need, the need for *greetings*!!! yay! "
  185.  
  186.     dc.b "HI Jenn3!, S0ren Gr0nbech, Randy Linden, Andreas Hommel, Julian Lefay, "
  187.     dc.b "Chris Chirogene, Jasper, Thanos, David3, Mark Vange and Fulvio Ciano. "
  188.     dc.b "(and Daniel Shields too). Andrea and Allison.  Martin Pederson, Torben Bakager, "
  189.     dc.b "Paul Lombardi.  Oh and Richard Smith, Nancy Picard and Diana...and Morro and Jenna. "
  190.     dc.b "And everyone at AMUC, FAUG, The Computer Shop of Calgary,  Armando Ruggeri. "
  191.     dc.b "And Chris Mate and Weaver.  And Stephen Vermulen, and Gary Rhyason. "
  192.     dc.b "Rich, I hear Discovery went belly up! Feel like working in Canada? "
  193.     dc.b "RED-SECTOR, I thought your vectorballs demo was incredible. "
  194.     dc.b "SPREADPOINT, vectorscrolltextwow! "
  195.     dc.b "DOC, Jasper ect I'd like to hear from you again. Hows the disk mag? I see you finally sold IMPLODER! "
  196.     dc.b "Leo Schwab, if you send me the source + graphics for marketroids "
  197.     dc.b "I'll turn it into a public domain game 50/50 Name credits. "
  198.     dc.b "PARANOMIA, Vortex wasn't protected you losers!  Woa, you're such piti"
  199.     dc.b "ful hackers you can barely crack unprotected software!!! "
  200.     dc.b "Wait till you come up against The BlackBox, children... "
  201.     dc.b "Hey Mr. Linden, you might find this useful for DL2: move.w #32,$dff1dc. "
  202.     dc.b "It basically speeds up a super-fat Amiga.  HAVE FUN WITH MY MONEY. "
  203.     dc.b "Hey S0ren, when are you going to visit Canada?  Call me. Jan 90 "
  204.     dc.b "P.S. My development system is a 68030!!! (2630) Na na na na bo bo... "
  205.     dc.b "My NeXT development system is just waiting for me to pay for it... "
  206.     dc.b "(You should just try the NeXT interface...I think I'll go write a "
  207.     dc.b "NeXT-Like Dock Application for the Amiga now,since this is all done;-) "
  208.     dc.b "  -> -> -> The End <- <- <-                             "
  209.     dc.b 0
  210.  
  211. ; end of tetrisprint.s
  212.  
  213.  
  214.  
  215. ; If after you look at this code, you think something like "Hmmm, I could
  216. ; write stuff pretty easily, but the Amiga isn't that big a seller.".
  217. ;
  218. ; My response is:
  219. ;
  220. ;     1) Somebody has to produce product such that the market
  221. ;        can get larger, and thus sustain more product.
  222. ;
  223. ;     2) Moreover the Amiga is incredibly powerful, sometimes I use
  224. ;        an IBM and I just can't believe how totally backwards those
  225. ;        systems are.  Its truly amazing that a machine as old as the
  226. ;        Amiga is still an order of magnitude superior to any other
  227. ;        micro on the market, with the possible exception of the NeXT by
  228. ;        Steve Jobs.
  229. ;
  230. ;     3) The Amiga simply outpowers the Macintosh, Atari XXt.  And
  231. ;        even the new 486 machines still have the cumbersome
  232. ;        non-multitasking "interface" (haha) which makes working with them
  233. ;        wretched, and with the Amiga sublime.
  234. ;
  235. ;     4)  The Amiga is *the* defacto development system, most Development
  236. ;         Groups realize this, for example an estimated %50 of Amiga Owners
  237. ;         are interested or have Assemblers.  You can develop on the Amiga for
  238. ;         other machines and have fun doing it.  Another example is I am
  239. ;      finishing an Atari game right now, guess which machine compiles it!
  240. ;
  241. ;     5)  While the headcount of Amiga Owners may be small, they are very
  242. ;      strong, that is users use it for work, are active in the public
  243. ;      eye, and *Very* vocal.  Its an extremely strong public platform
  244. ;         and I predict in the upcoming year that the number of installed
  245. ;         Amigas will explode, quadruple quintiple even more, barring any
  246. ;         kind of major recession or Acts-Of-Commodore.
  247. ;
  248. ;     6)  Fred Fish, at your fingertips you have a dazzling array of
  249. ;      public domain software.  Much of it in source code.
  250. ;
  251. ;     7)  I have for the first time started to see "definitive" software,
  252. ;      where the software is limited by only the developers imagination.
  253. ;      Caligari is a prime example, the developers here believe in an
  254. ;      almost CyberSpace ethic, an all encompassing real-time 3d interface
  255. ;      for operation on data.  (I expect to see the next workbench for the
  256. ;      Amiga to skip directly to 3d, from there its only a short step
  257. ;      and a few network connections to true anticipatory democracy!).
  258. ;
  259. ;  I do have complaints about the Amiga, such as the poor effort on
  260. ;  WorkBench (at least compared to the NeXT), the dearth of truly competent
  261. ;  software, the Company which "manages" it, and the price.
  262. ;  But I criticize the Amiga on a different level than the IBM-Clones the
  263. ;  Amiga needs work, primarily in software.  The Clones need to be shot.
  264. ;
  265. ;  P.S. You can try a NeXT at your local University.  I suggest that somebody
  266. ;  port some of their utilities over to the Amiga, or write a NeXT emulator.
  267. ;  I particularily like the Dock, as a tool-space versus the amigas workbench
  268. ;  which is primarily an information space.
  269.