| Category | Points | Min | Max |
Main
- Invokes other procedures as needed
- Replaces MainLIB
| | 0 | 5 |
InstTime
- Installs MyTimeInt on IRQ0
- Preserves old vector
| | 0 | 2 |
MyTimeInt
- Efficiently recalculates acceleration, velocity, and postion
for both X and Y coordinates.
- Updates time
- Reduces amount of fuel
- Provides no thrust when fuel is empty
- Checks for boundry conditions in position (lander cannot leave screen)
| | 0 | 10 |
DeInstTime
- Restores original IRQ0
- Returns to a stable DOS shell
| | 0 | 1 |
InstKey
- Installs MyKeyInt on IRQ1
- Preserves old vector
| | 0 | 2 |
MyKeyInt
- Tracks Left, Right, Up, Down, and Escape buttons
- Allows multiple thrusters to operate simultaneously
- Verify robustness to crashing if other keys are pressed
| | 0 | 10 |
DeInstKey
- Restores original IRQ1
- Returns to a stable DOS shell (check keyboard)
| | 0 | 1 |
DrawScreen
- Displays static Text and gauges
(Artistic liberties encouraged)
- Contains modular subroutines which avoid code duplication
| | 0 | 8 |
ReDrawScreen
- Updates numerical guages values (altitude, velocity, and position)
- Updates graphical gauge indicators
- Redraws lunar landing module
| | 0 | 7 |
FinalScreen
- Determines damage to lunar lander due to landing
- Reports Fuel Usage
- Reports Flight Time (in seconds)
| | 0 | 4 |
| Functionality SubTotal
| | 0 | 50 |
Modularity (* percentage of code written)
- Lacks appropriate use of additional subroutines to avoid code
duplication.
- Violates specifications for given subroutines
| | -5 | 0 |
Technique & Style (* percentage of code written)
- Compact and Efficient code
- Extraneous use of code, registers and/or variables: -3
| | -5 | 0 |
Comments (* percentage of code written)
- Clear and precise comments: +5
- Sports Announcer-type comments: -1
- Sparse and/or unclear comments: -3
| | -5 | 0 |
Penalty/Bonus
Before Tue 4/8: +1 pt/day
Deadline after Tue 4/8: -5 pts/day
| | -50 | 5 |
AutoSolve (Bonus)
- Automatically lands from anywhere on the screen
with no damage to lunar lander.
(Edit initial values in MP4.ASM variable section or use mouse)
- Test Cases (record fuel usage to land from each position)
- X=0, V_x=18, Y=60*324, V_y=0 (original postion) :
- X=324*20, V_x=18, Y=60*324, V_y=0 :
- X=324*40, V_x=-18, Y=30*324, V_y=18 :
- Total Fuel Usage (1+2+3) :
| | 0 | 5 |
| Total | | 0 | 55 |