Martin Krischik avatar

Ben Eater 6502 Kit — Day 17

krischik

Published: 25 Nov 2020 › Updated: 25 Nov 2020Ben Eater 6502 Kit — Day 17

Ben Eater 6502 Kit — Day 17

6.jpeg

Now we have some RAM we have stack and can use subroutines to make the program more compact. I already used macros and include files so I can just rewrite the macros and both programs, the one with repeated calls and the one with a loop, will benefit from just one change:

.scope      LCD

E       =       %10000000
RW      =       %01000000
RS      =       %00100000

.pushseg
.segment    "CODE"

;;
;   Send Data to LCD display
;
.proc     Control
    VIA_Out_B
    VIA_Out_A #0   ; Clear RS, RW, E bits
    VIA_Out_A #LCD::E   ; Set E bit to send instruction
    VIA_Out_A #0   ; Clear E bit
    RTS
.endproc

.macro     LCD_Control Instruction
    LDA  Instruction
    JSR  LCD::Control
.endmacro

;;
;   Send Data to LCD display
;
.proc     Data
    VIA_Out_B
    VIA_Out_A #LCD::RS  ; Set RS, Clear RW, E bits
    VIA_Out_A #(LCD::RS | LCD::E) ; Set E bit to send data
    VIA_Out_A #LCD::RS  ; Clear E bit
    RTS
.endproc

.macro     LCD_Data Character
    LDA  Character
    JSR  LCD::Data
.endmacro

.popseg
.endscope

Note how I keep the macros compatible so there are no changes needed to the actual programs. I also use some of the more advanced features of the CA65 assembler like procedures (.proc), modules (.scope) and segmented relocatable code (.segment). The result:

LoopProcedureSize
342 bytes
135 bytes
133 bytes
84 bytes

5.jpeg
Program running

If you wonder about the knife on many of the pictures: It's the SOG kilowatt. A wire stripping knife for electricians. The best I ever had. I also use it the gently pry the ROM gently from the breadboard.

But no matter how gentle I pry the ROM, it's already in a very sad state. To anyone doing the project i would suggest to get a high quality DIL socket to protect the ROM. have ordered one, as well as a few spare EEPROMs.



You find the source code for the macros on GitLab: 6502Tutorial — Kit/Library

Leave Ben Eater 6502 Kit — Day 17 to:

Written by

For each right there is an equal and opposite obligation. — me

Read more #vintage-computing posts


Best Posts From Martin Krischik

We have not curated any of krischik's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From Martin Krischik