User Tools

Site Tools


spo600:6502_assembly_language_lab

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
spo600:6502_assembly_language_lab [2024/09/10 15:25] – [In-Class Lab: Mob Programming] chrisspo600:6502_assembly_language_lab [2025/01/10 21:22] (current) – [Calculating Performance] chris
Line 16: Line 16:
       *  [[https://docs.google.com/spreadsheets/d/1a1-ZZ1opY8xcuUHNxj3YW75dxOPynSuP2-QGSvZGzYY/edit?usp=sharing|Spreadsheet of bitmapped display memory locations]]       *  [[https://docs.google.com/spreadsheets/d/1a1-ZZ1opY8xcuUHNxj3YW75dxOPynSuP2-QGSvZGzYY/edit?usp=sharing|Spreadsheet of bitmapped display memory locations]]
   * Video   * Video
-    * [[https://web.microsoftstream.com/video/ed7aedf1-fe6f-4b72-bbf1-c9b4e6e80af9|Calculating 6502 Program Execution Time]] (18 minutes)+    * [[https://seneca-my.sharepoint.com/:v:/g/personal/chris_tyler_senecapolytechnic_ca/EUYMUBIw9plDjsggZBZUDCQB5AttK-CDKtAIIHbIIxQbAQ?nav=eyJwbGF5YmFja09wdGlvbnMiOnsic3RhcnRUaW1lSW5TZWNvbmRzIjozOTcxLjI2NSwidGltZXN0YW1wZWRMaW5rUmVmZXJyZXJJbmZvIjp7InNjZW5hcmlvIjoiQ2hhcHRlclNoYXJlIiwiYWRkaXRpb25hbEluZm8iOnsiaXNTaGFyZWRDaGFwdGVyQXV0byI6ZmFsc2V9fX0sInJlZmVycmFsSW5mbyI6eyJyZWZlcnJhbEFwcCI6IlN0cmVhbVdlYkFwcCIsInJlZmVycmFsVmlldyI6IlNoYXJlQ2hhcHRlckxpbmsiLCJyZWZlcnJhbEFwcFBsYXRmb3JtIjoiV2ViIiwicmVmZXJyYWxNb2RlIjoidmlldyJ9fQ&e=9QFWMI|Calculating 6502 Program Execution Time]] 
 =====  Lab 1  ===== =====  Lab 1  =====
- 
- 
-==== In-Class Lab: Mob Programming ==== 
- 
-//Mob Programming// is an extended form of [[https://en.wikipedia.org/wiki/Pair_programming|Pair Programming.]] 
- 
-Follow these steps: 
-  - You will be assigned to a Zoom breakout group.  
-  - Within the group, select someone to be the initial "Driver" - the person who will be typing. 
-  - Within the group, select someone who is not driving to be the "Presenter" - the person that will present your group's results to the class. 
-  - Decide on how you're going to share the code between members of your group. This might be as simple as pasting it into the Zoom chat (Caution! - it will disa), or you could use a Pastebin, e-mail attachment, or Git repository, or any other scheme that everyone agrees upon. 
-  - Have the Driver share their screen with the group. 
-  - Collaborate with the Driver using audio and/or video. In Pair or Mob Programming, most of the coding suggestions come from those observing the Driver, not the Driver themselves. 
-  - Feel free to switch the driver periodically as you see fit. 
-  - Perform the lab as outlined below. 
  
 ====  Setup  ==== ====  Setup  ====
Line 58: Line 44:
    
  
-3. Test the code by pressing the Assemble button, then the Run button. If the there are any errors assembling (compiling) the code, they will appear in the message area at the bottom of the page. Make sure the code is running correctly and that you understands how it works. Don't be afraid to experiment!+3. Test the code by pressing the ''Assemble'' button, then the ''Run'' button. If the there are any errors assembling (compiling) the code, they will appear in the message area at the bottom of the page. Make sure the code is running correctly and that you understands how it works. Don't be afraid to experiment!
  
 ====  Calculating Performance  ==== ====  Calculating Performance  ====
Line 64: Line 50:
 **This is the key part of the lab.** **This is the key part of the lab.**
  
-4. **Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed. This is a very important part of this labDouble-check your work carefully!**+4. Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed. 
 + 
 +Tip: The most common problem with performance analysis is the incorrect calculation of the number of times each instruction will executeCheck that part of your work carefully.
  
 5. Also calculate the total memory usage for the program code plus any pointers or variables.  5. Also calculate the total memory usage for the program code plus any pointers or variables. 
  
-Refer to the video on [[https://web.microsoftstream.com/video/ed7aedf1-fe6f-4b72-bbf1-c9b4e6e80af9|Calculating 6502 Program Execution Time]] for instructions on how to do this. Note that the example in the video is colouring only 1/4 of the bitmapped display, not the entire bitmapped screen - your result will be longer and different+Refer to the video on [[https://seneca-my.sharepoint.com/:v:/g/personal/chris_tyler_senecapolytechnic_ca/EUYMUBIw9plDjsggZBZUDCQB5AttK-CDKtAIIHbIIxQbAQ?nav=eyJwbGF5YmFja09wdGlvbnMiOnsic3RhcnRUaW1lSW5TZWNvbmRzIjozOTcxLjI2NSwidGltZXN0YW1wZWRMaW5rUmVmZXJyZXJJbmZvIjp7InNjZW5hcmlvIjoiQ2hhcHRlclNoYXJlIiwiYWRkaXRpb25hbEluZm8iOnsiaXNTaGFyZWRDaGFwdGVyQXV0byI6ZmFsc2V9fX0sInJlZmVycmFsSW5mbyI6eyJyZWZlcnJhbEFwcCI6IlN0cmVhbVdlYkFwcCIsInJlZmVycmFsVmlldyI6IlNoYXJlQ2hhcHRlckxpbmsiLCJyZWZlcnJhbEFwcFBsYXRmb3JtIjoiV2ViIiwicmVmZXJyYWxNb2RlIjoidmlldyJ9fQ&e=9QFWMI|Calculating 6502 Program Execution Time]] for instructions on how to do this. Note that the example in the video is colouring only 1/4 of the bitmapped display, not the entire bitmapped screen - your result will be longer and different.
- +
-Tip: The most common problem with performance analysis is the incorrect calculation of the number of times each instruction will execute. Check that part of your work carefully.+
  
 6. **Find one or more ways to decrease the time taken to fill the screen with a solid colour. Calculate the execution time of the fastest version of this program that you can create. Challenge: the fastest version is nearly twice as fast as the original version shown above!** 6. **Find one or more ways to decrease the time taken to fill the screen with a solid colour. Calculate the execution time of the fastest version of this program that you can create. Challenge: the fastest version is nearly twice as fast as the original version shown above!**
  
 ====  Modifying the Code  ==== ====  Modifying the Code  ====
 +
 7. Change the code to fill the display with light blue instead of yellow. (Tip: you can find the colour codes on the [[6502 Emulator]] page). 7. Change the code to fill the display with light blue instead of yellow. (Tip: you can find the colour codes on the [[6502 Emulator]] page).
  
 8. Change the code to fill the display with a different colour on each page (each "page" will be one-quarter of the bitmapped display). 8. Change the code to fill the display with a different colour on each page (each "page" will be one-quarter of the bitmapped display).
  
----- +9. Make each pixel a random colour. (Hint: use the psudo-random number generator mentioned on the [[6502 Emulator]] page).
-**========== This is the end of the in-class portion of the lab==========** +
-Continue the remaining portion of the lab on your own. +
-----+
  
-====  Experiments (Optional, Recommended)  ====+====  Experiments  ====
  
 Go back to the bitmap code above, and try these experiments: Go back to the bitmap code above, and try these experiments:
Line 96: Line 80:
   -  The original code includes one ''iny'' instruction. Test with one to five consecutive ''iny'' instructions. Describe and explain the effect in each case. **Note:** it is helpful to place the Speed slider is on its lowest setting (left) for these experiments.   -  The original code includes one ''iny'' instruction. Test with one to five consecutive ''iny'' instructions. Describe and explain the effect in each case. **Note:** it is helpful to place the Speed slider is on its lowest setting (left) for these experiments.
   -  Revert to the original code.   -  Revert to the original code.
-  -  Make each pixel a random colour. (Hint: use the psudo-random number generator mentioned on the [[6502 Emulator]] page).+
  
 ====  Challenges (Optional, Recommended)  ==== ====  Challenges (Optional, Recommended)  ====
Line 112: Line 96:
   -  An introduction, so that someone who happens across your blog will understand the context of what you're writing about.   -  An introduction, so that someone who happens across your blog will understand the context of what you're writing about.
   -  The results from the //Calculating Performance// and //Modifying Code// portions of the lab, including the code, a description of how the code works, and the results produced.   -  The results from the //Calculating Performance// and //Modifying Code// portions of the lab, including the code, a description of how the code works, and the results produced.
 +  - Any significant code in a form that allows it to be tested.
 +    - In the case of this lab, this is the version of the software that you've modified to improve performance.
 +    - This code should be either (a) directly included in the blog in a form where it can be easily cut-and-pasted into the emulator for testing, or (b) in a repository so it can be easily cut-and-pasted or downloaded for testing. (Recommendation: test it!)
   -  The results of the Optional sections, if you performed them, and your explaination for each observed result.   -  The results of the Optional sections, if you performed them, and your explaination for each observed result.
   -  Your experiences with this lab -- your impressions of Assembly Language, what you learned, and your reflections on the process.   -  Your experiences with this lab -- your impressions of Assembly Language, what you learned, and your reflections on the process.
spo600/6502_assembly_language_lab.1725981908.txt.gz · Last modified: 2024/09/10 15:25 by chris

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki