| Line | |
|---|
| 1 | ColorText: .dd $ffffff
|
|---|
| 2 | ColorBackground: .dd 0
|
|---|
| 3 |
|
|---|
| 4 | Rectangle: ; R0 - Color, R1 - X, R2 - Y, R3 - Width, R4 - Height
|
|---|
| 5 | PUSH R5 ; loop X
|
|---|
| 6 | PUSH R6 ; loop Y
|
|---|
| 7 | PUSH R7 ; color
|
|---|
| 8 | PUSH R8 ; X
|
|---|
| 9 | PUSH R9 ; Y
|
|---|
| 10 | COPY R7, R0
|
|---|
| 11 | COPY R8, R1
|
|---|
| 12 | COPY R9, R2
|
|---|
| 13 | COPY R6, R4
|
|---|
| 14 | PUSH R0
|
|---|
| 15 | PUSH R1
|
|---|
| 16 | RectangleStart:
|
|---|
| 17 | COPY R0, R8
|
|---|
| 18 | COPY R1, R9
|
|---|
| 19 | CALL SetPixelAddr
|
|---|
| 20 | COPY R5, R3
|
|---|
| 21 | RectangleLine:
|
|---|
| 22 | OUT (ScreenWriteData), R7
|
|---|
| 23 | DEC R5
|
|---|
| 24 | JPNZ R5, RectangleLine
|
|---|
| 25 | DEC R6
|
|---|
| 26 | INC R9
|
|---|
| 27 | JPNZ R6, RectangleStart
|
|---|
| 28 | POP R1
|
|---|
| 29 | POP R0
|
|---|
| 30 | POP R9
|
|---|
| 31 | POP R8
|
|---|
| 32 | POP R7
|
|---|
| 33 | POP R6
|
|---|
| 34 | POP R3
|
|---|
| 35 | RET
|
|---|
| 36 |
|
|---|
| 37 | SetPixelAddr: ; R0 - X, R1 - Y
|
|---|
| 38 | PUSH R2
|
|---|
| 39 | IN R2, (ScreenGetWidth)
|
|---|
| 40 | SHL R2, 2 ; multiply by 4
|
|---|
| 41 | SHL R0, 2 ; multiply by 4
|
|---|
| 42 | MUL R1, R2
|
|---|
| 43 | ADD R0, R1
|
|---|
| 44 | OUT (ScreenSetAddr), R0
|
|---|
| 45 | POP R2
|
|---|
| 46 | RET
|
|---|
| 47 |
|
|---|
| 48 | .const CharWidth 8
|
|---|
| 49 | .const CharHeight 8
|
|---|
| 50 |
|
|---|
| 51 | WriteChar: ; R0 - Character, R1 - X, R2 - Y
|
|---|
| 52 | PUSH R3 ; Address of character
|
|---|
| 53 | PUSH R4 ; Loop register Y
|
|---|
| 54 | PUSH R5 ; X
|
|---|
| 55 | PUSH R6 ; Y
|
|---|
| 56 | PUSH R7 ; value
|
|---|
| 57 | PUSH R8 ; screen width
|
|---|
| 58 | PUSH R9 ; Loop register X
|
|---|
| 59 | PUSH R10 ; Foreground color
|
|---|
| 60 | PUSH R11 ; Background color
|
|---|
| 61 | PUSH R12 ; temp value
|
|---|
| 62 | COPY R5, R1
|
|---|
| 63 | COPY R6, R2
|
|---|
| 64 | SET R3, Font8x8
|
|---|
| 65 | SHL R0, 3
|
|---|
| 66 | ADD R3, R0
|
|---|
| 67 | IN R8, (ScreenGetWidth)
|
|---|
| 68 | SET R4, CharHeight
|
|---|
| 69 | LDI R10, (ColorText)
|
|---|
| 70 | LDI R11, (ColorBackground)
|
|---|
| 71 | WriteCharLoopY:
|
|---|
| 72 | COPY R0, R5
|
|---|
| 73 | COPY R1, R6
|
|---|
| 74 | CALL SetPixelAddr
|
|---|
| 75 | LD R7, (R3)
|
|---|
| 76 | SET R9, CharWidth
|
|---|
| 77 | WriteCharLoopX:
|
|---|
| 78 | COPY R12, R7
|
|---|
| 79 | ANDI R12, 1
|
|---|
| 80 | JPZ R12, WriteCharNext
|
|---|
| 81 | OUT (ScreenWriteData), R10
|
|---|
| 82 | JP WriteCharNext2
|
|---|
| 83 | WriteCharNext:
|
|---|
| 84 | OUT (ScreenWriteData), R11
|
|---|
| 85 | WriteCharNext2:
|
|---|
| 86 | DEC R9
|
|---|
| 87 | SHR R7, 1
|
|---|
| 88 | JPNZ R9, WriteCharLoopX
|
|---|
| 89 | DEC R4
|
|---|
| 90 | INC R6
|
|---|
| 91 | INC R3
|
|---|
| 92 | JPNZ R4, WriteCharLoopY
|
|---|
| 93 | POP R12
|
|---|
| 94 | POP R11
|
|---|
| 95 | POP R10
|
|---|
| 96 | POP R9
|
|---|
| 97 | POP R8
|
|---|
| 98 | POP R7
|
|---|
| 99 | POP R6
|
|---|
| 100 | POP R5
|
|---|
| 101 | POP R4
|
|---|
| 102 | POP R3
|
|---|
| 103 | RET
|
|---|
| 104 |
|
|---|
| 105 | TextOut: ; R0 - Text address, R1 - X, R2 - Y
|
|---|
| 106 | PUSH R3 ; loop variable
|
|---|
| 107 | PUSH R4 ; character width
|
|---|
| 108 | PUSH R6 ; X
|
|---|
| 109 | PUSH R7 ; Y
|
|---|
| 110 | PUSH R1
|
|---|
| 111 | PUSH R2
|
|---|
| 112 | PUSH R0
|
|---|
| 113 | COPY R6, R1
|
|---|
| 114 | COPY R7, R2
|
|---|
| 115 | COPY R3, R0
|
|---|
| 116 | SET R4, CharWidth
|
|---|
| 117 | TextOutLoop:
|
|---|
| 118 | LD R0, (R3)
|
|---|
| 119 | ANDI R0, $ff
|
|---|
| 120 | JPZ R0, TextOutLoop2
|
|---|
| 121 | COPY R1, R6
|
|---|
| 122 | COPY R2, R7
|
|---|
| 123 | CALL WriteChar
|
|---|
| 124 | ADD R6, R4
|
|---|
| 125 | INC R3
|
|---|
| 126 | JP TextOutLoop
|
|---|
| 127 | TextOutLoop2:
|
|---|
| 128 | POP R0
|
|---|
| 129 | POP R2
|
|---|
| 130 | POP R1
|
|---|
| 131 | POP R7
|
|---|
| 132 | POP R6
|
|---|
| 133 | POP R4
|
|---|
| 134 | POP R3
|
|---|
| 135 | RET
|
|---|
| 136 |
|
|---|
| 137 | .include Font.asm
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.