Posts

Showing posts from January, 2020

Lab 3 Progress

Over the last two weeks, I have been collaborating with my peers for lab 3. I have chosen the two-digit decimal display as my lab, I believe this task to be just enough of a challenge to push my understanding of the assembly language. So far, I have familiarized myself with the DCB opcode, as well as reading from a set of DCB and printing to the screen. Currently my lab 3 prototype declares a zero and a one, and can display either. I have also began to work with keyboard input, reading a keypress, comparing against a hex value, and executing an instruction based on that keypress. I believe that these two things are the backbone of this task for lab 3. The final unknown for lab 3 is a bug that occurs in my current code. When I draw my initial value (00) on the bitmap, the second 0 (the rightmost digit) prints a 1 directly below it. I believe this happens because my iterator for the amount of rows printed for the second digit does not know when to terminate, and continues printing ev

Lab 2

Lab 2 - 16/01/20 For this lab, we were given code that we looked at in class and asked to modify and report on the results. The code we were given iterates using a column index, increments through memory, and fills the bitmap with pixels. 6/7 - Adding TYA after :loop The TYA opcode takes the value of the Y register and places it in the A register. Since the A register is used to determine what color to set the pixel we are currently drawing, this will cause vertical stripes of different colors to be drawn. What is interesting is that the top left (0,0 coordinate) pixel does not conform to the vertical stripes. This is because that pixel is the only case where the A register is loaded outside of the TYA opcode, at the start of the program we load the A register with #$07, which causes the first pixel to be drawn yellow. 8/9 - Adding LSR after TYA The LSR opcode stands for Logical Shift Right. As the name describes, this shifts all bits one position to the right. Adding this opco

Lab 2 Preparation

Hi all, I unfortunately missed the SPO600 class on Monday this week. From the description of this class given to me by other students, it seems that what we covered the previous Friday was extended upon. As well, looking at the requirements for lab 2, it seems this class was highly relevant. Because of this, I will have to catch up. I recognize a few things. For one, the code we looked at last Friday is the code we are working with for lab two. As well, the TYA command we are told to enter transfers the Y register to the accumulator. The result from adding the TYA command should be vertical stripes, just like we saw last Friday. I am enjoying working with the 6502 emulator so far. Assembly is confusing, but the operations themselves are easy to parse since they are so simple. I look forward to the remainder of lab 2. Final thing, I have managed to get my hands on an Assembly and Microprocessors textbook (found in the depths of my basement). While the resources in this book are

Lab 1

Lab 1 - 09/01/20 For this lab, we were instructed to look at two open-source projects with separate licenses, research their code contribution process ("patching") and observe one complete iteration of this process. I felt that for this lab, it would be beneficial to select open source projects that I have used in the past, or projects that are still receiving updates. I hope that choosing projects this way allows me to provide the reader with a deeper understanding of what goes on behind the scenes. 1 - Bukkit ( https://github.com/Bukkit/Bukkit ) Bukkit is an open-source modification API for the Java game Minecraft that allows developers to extend the functionality of their multiplayer server. I can understand the immediate skepticism some may have when they read this, perhaps discrediting this project because it is directed towards a video game. Allow me to convince you that Bukkit deserves a spot on this list. Licensed under the GNU GPLv3, Bukkit's first public
Hello all. I'm Ben. This is my blog for SPO600, where I will be posting content relevant to the course. I have experience with many high level programming languages (ex. C, C++, Java, Perl, Python) and web languages (ex. NodeJS, PHP, learning asp.NET), but I have never worked with a low level language such as Assembly. The main reason I enrolled in SPO600 this semester was because of the 'optimization' portion of the course. I know I am capable of programming, but I am not sure if I am programming well. I hope to learn how to program well, to use less CPU cycles, less memory, re-use variables, and improve the quality of my code. I look forward to the rest of the semester in SPO600.