Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Exercise on slide 10: June 2nd, 2000 exam
- org 400h
- device equ 0h ;Interrupts CPU every 10 ms, checks if devtemp > maxtemp
- ;If so, disables device interrupts and sets DMAC to send alarm message
- ;When transfer is over, enables device and interrupts CPU
- devtemp equ 1h ;Measures temperature
- dmac equ 2h ;DMAC
- video equ 3h ;Video output device, acquires alarm message
- buffer equ 0BBBBh ;Initial memory buffer, alarm starts here
- maxtemp equ 400 ;Maximum possible temperature in decimals of °C
- code
- jsr init
- main: jmp main ;Loops until interrupt
- halt
- init: start device ;Initializing routine
- start devtemp
- setim device
- seti
- ret
- driver 0, 700h
- push R0
- inb devtemp, R0
- cmpb maxtemp, R0 ;Checks if devtemp > maxtemp WARNING: SYNTAX TO BE CHECKED
- jn alert ;If so, sends alarm message to video
- pop R0
- rti
- alert: clrim device ;Disables device interrupts
- outl #512, WC ;Stars word counter at 512
- outl buffer, CAR ;Starts CAR at current memory buffer
- start dmac
- setim dmac ;Enables DMAC interrupt
- pop R0
- rti
- driver 2, 900h
- clrim dmac ;Disables DMAC interrupt
- start device
- setim device
- rti
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement