Advertisement
yugorin

Stabilny raster !!! 6502

Sep 28th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. :BasicUpstart2(main)
  2.  
  3. //----------------------------------------------------------
  4. // Code for creating the breakpoint file sent to Vice.
  5. //----------------------------------------------------------
  6. .var _useBinFolderForBreakpoints = cmdLineVars.get("usebin") == "true"
  7. .var _createDebugFiles = cmdLineVars.get("afo") == "true"
  8. .print "File creation " + [_createDebugFiles
  9.     ? "enabled (creating breakpoint file)"
  10.     : "disabled (no breakpoint file created)"]
  11. .var brkFile
  12. .if(_createDebugFiles) {
  13.     .if(_useBinFolderForBreakpoints)
  14.         .eval brkFile = createFile("bin/breakpoints.txt")
  15.     else
  16.         .eval brkFile = createFile("breakpoints.txt")
  17. }
  18. .macro break() {
  19. .if(_createDebugFiles) {
  20.     .eval brkFile.writeln("break " + toHexString(*))
  21.     }
  22. }
  23. //------------------------------------------------------
  24. main:
  25. :ClearScreen($0400,32)
  26.  
  27.  
  28.     sei
  29.     lda #<irq
  30.     sta $0314
  31.     lda #>irq
  32.     sta $0315
  33.     lda #$7f
  34.     sta $dc0d
  35.     sta $dd0d
  36.     lda $dc0d
  37.     lda $dd0d
  38.     lda #$01
  39.     sta $d01a
  40.     lda #$3e
  41.     sta $d012
  42.     lda $d011
  43.     and #$7f
  44.     sta $d011
  45.     lda #$ff
  46.     sta $d019              
  47.     cli
  48.  
  49.  
  50.    irq:
  51.             lda #$40
  52. loop:      
  53.             cmp $d012
  54.             bne loop
  55. :pause #54             
  56.             lda #WHITE
  57.             sta $d020
  58.             sta $d021
  59.  
  60.  
  61.             lda #$41
  62. loop2:      cmp $d012
  63.             bne loop2
  64. :pause #48
  65.             lda #WHITE
  66.             sta $d020
  67.             sta $d021
  68.  
  69.             lda #$42
  70.  loop3:     cmp $d012
  71.             bne loop3
  72. :pause #44
  73.             lda #WHITE
  74.             sta $d020
  75.             sta $d021
  76.  
  77.             lda #$43
  78. loop4:      cmp $d012
  79.             bne loop4
  80. :pause #44
  81.             lda #WHITE
  82.             sta $d020
  83.             sta $d021
  84.  
  85.  
  86.             lda #$44
  87. loop5:      cmp $d012
  88.             bne loop5
  89. //:pause #44
  90.             lda #WHITE
  91.             sta $d020
  92.             sta $d021
  93.  
  94.  
  95.  
  96.             lda #$45
  97. loop6:      cmp $d012
  98.             bne loop6
  99. //:pause #44
  100.             lda #WHITE
  101.             sta $d020
  102.             sta $d021
  103.  
  104.  
  105.  
  106.             lda #$46
  107. loop7:      cmp $d012
  108.             bne loop7
  109. //:pause #44
  110.             lda #WHITE
  111.             sta $d020
  112.             sta $d021
  113.  
  114.  
  115.  
  116.             lda #$47
  117. loop8:      cmp $d012
  118.             bne loop8
  119. //:pause #44
  120.             lda #WHITE
  121.             sta $d020
  122.             sta $d021
  123.  
  124.  
  125.  
  126.  
  127.             lda #$48
  128. loop9:      cmp $d012
  129.             bne loop9
  130. //:pause #44
  131.             lda #WHITE
  132.             sta $d020
  133.             sta $d021
  134.  
  135.  
  136.  
  137.             lda #$49
  138. loop10:     cmp $d012
  139.             bne loop10
  140. //:pause #44
  141.             lda #WHITE
  142.             sta $d020
  143.             sta $d021
  144.  
  145.  
  146.  
  147.             lda #$4a
  148. loop11:     cmp $d012
  149.             bne loop11
  150. //:pause #44
  151.             lda #WHITE
  152.             sta $d020
  153.             sta $d021
  154.  
  155.  
  156.  
  157.  
  158.             lda #$4b
  159. loop12:     cmp $d012
  160.             bne loop12
  161. :pause #54
  162.             lda #WHITE
  163.  
  164.             sta $d020
  165.             sta $d021
  166.  
  167.  
  168.             lda #$4c
  169. loop13: cmp $d012
  170.             bne loop13
  171.  
  172.             lda #BLACK
  173.  
  174.             sta $d020
  175.             sta $d021
  176.  
  177.  
  178.             jmp $ea31
  179.  
  180.  
  181.  
  182.  
  183. .macro ClearScreen(screen, clearByte) {
  184.     lda #clearByte
  185.     ldx #0
  186. !loop:
  187.     sta screen, x
  188.     sta screen + $100, x
  189.     sta screen + $200, x
  190.     sta screen + $300, x
  191.     inx
  192.     bne !loop-
  193. }
  194.  
  195. .pseudocommand pause cycles {
  196.     :ensureImmediateArgument(cycles)
  197.     .var x = floor(cycles.getValue())
  198.     .if (x<2) .error "Cant make a pause on " + x + " cycles"
  199.  
  200.     // Take care of odd cyclecount 
  201.     .if ([x&1]==1) {
  202.         bit $00
  203.         .eval x=x-3
  204.     }  
  205.    
  206.     // Take care of the rest
  207.     .if (x>0)
  208.         :nop #x/2
  209. }
  210.  
  211.  
  212. //---------------------------------
  213. // repetition commands
  214. //---------------------------------
  215. .macro ensureImmediateArgument(arg) {
  216.     .if (arg.getType()!=AT_IMMEDIATE)   .error "The argument must be immediate!"
  217. }
  218. .pseudocommand asl x {
  219.     :ensureImmediateArgument(x)
  220.     .for (var i=0; i<x.getValue(); i++) asl
  221. }
  222. .pseudocommand lsr x {
  223.     :ensureImmediateArgument(x)
  224.     .for (var i=0; i<x.getValue(); i++) lsr
  225. }
  226. .pseudocommand rol x {
  227.     :ensureImmediateArgument(x)
  228.     .for (var i=0; i<x.getValue(); i++) rol
  229. }
  230. .pseudocommand ror x {
  231.     :ensureImmediateArgument(x)
  232.     .for (var i=0; i<x.getValue(); i++) ror
  233. }
  234.  
  235. .pseudocommand pla x {
  236.     :ensureImmediateArgument(x)
  237.     .for (var i=0; i<x.getValue(); i++) pla
  238. }
  239.  
  240. .pseudocommand nop x {
  241.     :ensureImmediateArgument(x)
  242.     .for (var i=0; i<x.getValue(); i++) nop
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement