Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Screen: (00, 00) -> (1F, 09)
- #
- # Directions:
- # 00 - up
- # 20 - down
- # 40 - left
- # 60 - right
- # 80 - left up
- # A0 - right up
- # C0 - left down
- # E0 - left up
- #
- lxi d,0F04 # Paint
- lxi h,0800 # Screen start
- addr: 1010
- # Main {{{
- # Draw
- call 1420
- # Check
- call 1100
- cc 1050
- call 1150
- cc 1050
- # Clear and calculate
- call 1400
- addr: 1030
- call 1200
- # Repeat
- jmp 1010
- #}}}
- addr: 1050
- # Request direction {{{
- # Save last coords
- mov b,d
- mov c,e
- # Get direction
- addr: 1060
- mov d,b
- mov e,c
- in 08
- # Write directon
- sta 1031
- sta 1071
- # Refresh coords and check
- addr: 1070
- call 1200
- call 1100
- jc 1060
- call 1150
- jc 1060
- # Revert back coords
- mov d,b
- mov e,c
- ret
- # }}}
- addr: 1100
- # Check X bounds @ D {{{
- # End of screen
- mvi a,1F
- stc
- cmc
- cmp d
- jz 1120
- jc 1120
- # Start of screen
- mvi a,00
- stc
- cmc
- cmp d
- jz 1120
- stc
- cmc
- ret
- # Set overflow flag
- addr: 1120
- stc
- ret
- # }}}
- addr: 1150
- # Check Y bounds @ E {{{
- # End of screen
- mvi a,09
- stc
- cmc
- cmp e
- jz 1170
- jc 1170
- # Start of screen
- mvi a,00
- stc
- cmc
- cmp e
- jz 1170
- stc
- cmc
- ret
- # Set overflow flag
- addr: 1170
- stc
- ret
- # }}}
- # Directions
- addr: 1200
- # Up {{{
- dcr e
- ret
- # }}}
- addr: 1220
- # Down {{{
- inr e
- ret
- # }}}
- addr: 1240
- # Left {{{
- dcr d
- ret
- # }}}
- addr: 1260
- # Right {{{
- inr d
- ret
- # }}}
- addr: 1280
- # Left Up {{{
- dcr d
- dcr e
- ret
- # }}}
- addr: 12A0
- # Right Up {{{
- inr d
- dcr e
- ret
- # }}}
- addr: 12C0
- # Left Down{{{
- dcr d
- inr e
- ret
- # }}}
- addr: 12E0
- # Right Down {{{
- inr d
- inr e
- ret
- # }}}
- addr: 12FF
- # Stop {{{
- hlt
- # }}}
- # Helpers
- addr: 1400
- # Clean pixel @ DE {{{
- push h
- push d
- lxi h,0800
- call 1440
- dad d
- mvi m,00
- inx h
- mvi m,00
- pop d
- pop h
- ret
- # }}}
- addr: 1420
- # Fill pixel @ DE {{{
- push h
- push d
- lxi h,0800
- call 1440
- dad d
- mvi m,00
- inx h
- mvi m,40
- pop d
- pop h
- ret
- # }}}
- addr: 1440
- # Transform coordinates @ DE{{{
- # Mult D x 2
- mov a,d
- stc
- cmc
- ral
- mov d,a
- # Mult E x 2
- mov a,e
- stc
- cmc
- ral
- mov e,a
- # Prepare mult D x 10
- push b
- push h
- push d
- lxi b,0009
- mov e,d
- mvi d,00
- mvi h,00
- mov l,e
- # Start mult D x 10 in cycle
- addr: 1460
- dcr c
- jm 1470
- dad d
- jmp 1460
- # End of mult D x 10
- addr: 1470
- pop d
- mvi d,00
- dad d
- mov d,h
- mov e,l
- pop h
- pop b
- ret
- # }}}
Add Comment
Please, Sign In to add comment