git-svn-id: http://moon:8086/svn/vhdl/trunk@1416 cc03376c-175c-47c8-b038-4cd826a8556b
5041 lines
96 KiB
Plaintext
5041 lines
96 KiB
Plaintext
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;KCPSM3 Program - Real Time Clock with UART communication.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Ken Chapman - Xilinx Ltd - October 2003
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Port definitions
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-UART_status_port
|
|
OPERAND2-00
|
|
COMMENT-;UART status input
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-tx_half_full
|
|
OPERAND2-01
|
|
COMMENT-; Transmitter half full - bit0
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-tx_full
|
|
OPERAND2-02
|
|
COMMENT-; FIFO full - bit1
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-rx_half_full
|
|
OPERAND2-04
|
|
COMMENT-; Receiver half full - bit2
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-rx_full
|
|
OPERAND2-08
|
|
COMMENT-; FIFO full - bit3
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-rx_data_present
|
|
OPERAND2-10
|
|
COMMENT-; data present - bit4
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-UART_read_port
|
|
OPERAND2-01
|
|
COMMENT-;UART Rx data input
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-UART_write_port
|
|
OPERAND2-01
|
|
COMMENT-;UART Tx data output
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_port
|
|
OPERAND2-00
|
|
COMMENT-;Alarm output
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_control
|
|
OPERAND2-01
|
|
COMMENT-; bit0
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Special Register usage
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-NAMEREG
|
|
OPERAND1-sF
|
|
OPERAND2-UART_data
|
|
COMMENT-;used to pass data to and from the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-NAMEREG
|
|
OPERAND1-sE
|
|
OPERAND2-store_pointer
|
|
COMMENT-;used to pass location of data in scratch pad memory
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Two registers to form a 16-bit counter used to count
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;interrupt pulses generated at 1us intervals.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-NAMEREG
|
|
OPERAND1-sD
|
|
OPERAND2-int_counter_lsb
|
|
COMMENT-;lower 8-bits
|
|
LABEL-
|
|
INSTRUCTION-NAMEREG
|
|
OPERAND1-sC
|
|
OPERAND2-int_counter_msb
|
|
COMMENT-;upper 8-bits
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Scratch Pad Memory Locations
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-us_time_stamp_lsb
|
|
OPERAND2-00
|
|
COMMENT-;16-bit micro-second time stamp
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-us_time_stamp_msb
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-us_time_lsb
|
|
OPERAND2-02
|
|
COMMENT-;16-bit micro-second real time value
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-us_time_msb
|
|
OPERAND2-03
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-ms_time_lsb
|
|
OPERAND2-04
|
|
COMMENT-;16-bit milli-second real time value
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-ms_time_msb
|
|
OPERAND2-05
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-real_time_hours
|
|
OPERAND2-06
|
|
COMMENT-;Current clock time
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-real_time_minutes
|
|
OPERAND2-07
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-real_time_seconds
|
|
OPERAND2-08
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_time_hours
|
|
OPERAND2-09
|
|
COMMENT-;Alarm time
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_time_minutes
|
|
OPERAND2-0A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_time_seconds
|
|
OPERAND2-0B
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_status
|
|
OPERAND2-0C
|
|
COMMENT-;Alarm status
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_active
|
|
OPERAND2-01
|
|
COMMENT-; bit0 - Alarm is active
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-alarm_armed
|
|
OPERAND2-02
|
|
COMMENT-; bit1 - Alarm is armed
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve0
|
|
OPERAND2-10
|
|
COMMENT-;storage for protection of registers
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve1
|
|
OPERAND2-11
|
|
COMMENT-;used by the real time clock routine.
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve2
|
|
OPERAND2-12
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve3
|
|
OPERAND2-13
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve4
|
|
OPERAND2-14
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-time_preserve5
|
|
OPERAND2-15
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;UART character strings will be stored in scratch pad memory ending in carriage return.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;A string can be up to 16 characters with the start location defined by this constant.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-string_start
|
|
OPERAND2-20
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Initialise the system
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-cold_start
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-00
|
|
COMMENT-;clear all time values
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-us_time_stamp_lsb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-us_time_stamp_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-us_time_lsb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-us_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-ms_time_lsb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-ms_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_time_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-;clear and disable alarm
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-alarm_drive
|
|
OPERAND2-
|
|
COMMENT-;turn off alarm control output port
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-int_counter_lsb
|
|
OPERAND2-00
|
|
COMMENT-;clear 'us' interrupt counter
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-int_counter_msb
|
|
OPERAND2-00
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ENABLE
|
|
OPERAND1-INTERRUPT
|
|
OPERAND2-
|
|
COMMENT-;enable the 1us interrupts
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Start of the main program loop.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;A prompt is transmitted to the UART transmitter and then
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;a command can be entered and interpreted.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-prompt_input
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_prompt
|
|
OPERAND2-
|
|
COMMENT-;Prompt 'KCPSM3>'
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-receive_string
|
|
OPERAND2-
|
|
COMMENT-;obtain input string and maintain the time
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Parse the string and perform actions as required
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-string_start
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-;carriage return does nothing
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-prompt_input
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_T
|
|
COMMENT-;start of 'TIME' command?
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-test_for_TIME
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_A
|
|
COMMENT-;start of 'ALARM' command?
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-test_for_ALARM
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;trap other command starts here
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-bad_input_command
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Syntax_Error
|
|
OPERAND2-
|
|
COMMENT-;no valid command
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-prompt_input
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-test_for_TIME
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_I
|
|
COMMENT-;test for rest of 'TIME'
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_M
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_E
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;now have a valid TIME command to process
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-;carriage return means display time
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-set_time_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_time
|
|
OPERAND2-
|
|
COMMENT-;transmit time to UART
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-set_time_command
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_space
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-test_time_string
|
|
OPERAND2-
|
|
COMMENT-;interpret 'hh:mm:ss' string
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-prompt_input
|
|
COMMENT-;test for invalid input
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s6
|
|
OPERAND2-real_time_hours
|
|
COMMENT-;set new time into clock
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s5
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s4
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-ms_time_lsb
|
|
COMMENT-;clear 'ms' counter (s0=00)
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-ms_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_time
|
|
OPERAND2-
|
|
COMMENT-;transmit new time to UART
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-test_for_ALARM
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_L
|
|
COMMENT-;test for rest of 'ALARM'
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_R
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_M
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;now have a valid ALARM command to process
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-;carriage return means display alarm time
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-set_alarm_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_alarm_time
|
|
OPERAND2-
|
|
COMMENT-;transmit time to UART
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-set_alarm_command
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_space
|
|
COMMENT-;test for ON or OFF command
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_O
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-set_alarm_on_off
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;move memory pointer back to first character of 'hh:mm:ss' string
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-test_time_string
|
|
OPERAND2-
|
|
COMMENT-;interpret 'hh:mm:ss' string
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-prompt_input
|
|
COMMENT-;test for invalid input
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s6
|
|
OPERAND2-alarm_time_hours
|
|
COMMENT-;set new time into clock
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s5
|
|
OPERAND2-alarm_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s4
|
|
OPERAND2-alarm_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_alarm_time
|
|
OPERAND2-
|
|
COMMENT-;transmit new alarm time and status
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-set_alarm_on_off
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_N
|
|
COMMENT-;test for 'ON'
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-test_OFF
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-;turn alarm on
|
|
LABEL-
|
|
INSTRUCTION-OR
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_armed
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_alarm_time
|
|
OPERAND2-
|
|
COMMENT-;transmit alarm time and status
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-test_OFF
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_F
|
|
COMMENT-;test for for 'OFF'
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_F
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-bad_input_command
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-00
|
|
COMMENT-;turn alarm off and stop an active alarm
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-alarm_drive
|
|
OPERAND2-
|
|
COMMENT-;turn off alarm
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_alarm_time
|
|
OPERAND2-
|
|
COMMENT-;transmit alarm time and status
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-prompt_input
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Read an 'hh:mm:ss' time string and provide new values.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The string must be provided in successive scratch pad memory locations
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;with the s1 register containing the location of the first character.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;A correct time specification will result in the return of new values
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;as follows:-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; s6 = hours
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; s5 = minutes
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; s4 = seconds
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;If the syntax is incorrect or values are not in the correct ranges an
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;'Invalid Time' message will be transmitted and the CARRY flag will be set
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1, s6, s5 and s4
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-test_time_string
|
|
INSTRUCTION-CALL
|
|
OPERAND1-2char_to_value
|
|
OPERAND2-
|
|
COMMENT-;obtain hours value
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-invalid_time
|
|
COMMENT-;test for non-decimal characters
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s6
|
|
OPERAND2-s2
|
|
COMMENT-;remember hours
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment memory pointer past hours
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_colon
|
|
COMMENT-;test for colon
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-2char_to_value
|
|
OPERAND2-
|
|
COMMENT-;obtain minutes value
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-invalid_time
|
|
COMMENT-;test for non-decimal characters
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s5
|
|
OPERAND2-s2
|
|
COMMENT-;remember minutes
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment memory pointer past minutes
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_colon
|
|
COMMENT-;test for colon
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-2char_to_value
|
|
OPERAND2-
|
|
COMMENT-;obtain seconds value
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-invalid_time
|
|
COMMENT-;test for non-decimal characters
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s4
|
|
OPERAND2-s2
|
|
COMMENT-;remember minutes
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment memory pointer past seconds
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-fetch_char_from_memory
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-;finish with carriage return
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Have values for hh:mm:ss but need to test if each is valid range.
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s6
|
|
OPERAND2-hours_in_a_day
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NC
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s5
|
|
OPERAND2-minutes_in_an_hour
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NC
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s4
|
|
OPERAND2-seconds_in_a_minute
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NC
|
|
OPERAND2-invalid_time
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-00
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-SR0
|
|
OPERAND1-s0
|
|
OPERAND2-
|
|
COMMENT-;reset CARRY flag (with s0=0)
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;time string was OK
|
|
LABEL-invalid_time
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Invalid
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_space
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Time
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-SR0
|
|
OPERAND1-s0
|
|
OPERAND2-
|
|
COMMENT-;set CARRY flag
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;time string was bad
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Fetch character from memory, convert to upper case
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;and increment memory pointer.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The memory pointer is provided in register s1.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The character obtained is returned in register s0.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0 and s1.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-fetch_char_from_memory
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(s1)
|
|
COMMENT-;read character
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-upper_case
|
|
OPERAND2-
|
|
COMMENT-;convert to upper case
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment memory pointer
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Read one character from the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Character read will be returned in a register called 'UART_data' and will be
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;echoed to the UART transmitter.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The routine first tests the receiver FIFO buffer to see if data is present.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;If the FIFO is empty, the routine waits until there is a character to read.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;As this could take any amount of time the wait loop includes a call to the
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;subroutine which updates the real time clock.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0 and UART_data
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-read_from_UART
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-s0
|
|
OPERAND2-UART_status_port
|
|
COMMENT-;test Rx_FIFO buffer
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-rx_data_present
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-read_character
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-update_time
|
|
OPERAND2-
|
|
COMMENT-;Perform useful operation whilst waiting
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-read_from_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-read_character
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-UART_data
|
|
OPERAND2-UART_read_port
|
|
COMMENT-;read from FIFO
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-;echo received character
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Transmit one character to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Character supplied in register called 'UART_data'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The routine first tests the transmit FIFO buffer to see if it is full.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;If the FIFO is full, the routine waits until there is space which could
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;be as long as it takes to transmit one complete character.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; Baud Rate Time per Character (10 bits)
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; 9600 1,024us
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; 19200 521us
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; 38400 260us
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; 57600 174us
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; 115200 87us
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Since this is a relatively long duration, the wait loop includes a
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;call to the subroutine which updates the real time clock.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_to_UART
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-s0
|
|
OPERAND2-UART_status_port
|
|
COMMENT-;test Tx_FIFO buffer
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-tx_full
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-UART_write
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-update_time
|
|
OPERAND2-
|
|
COMMENT-;Perform useful operation whilst waiting
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-UART_write
|
|
INSTRUCTION-OUTPUT
|
|
OPERAND1-UART_data
|
|
OPERAND2-UART_write_port
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Alarm output
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Uses the alarm status scratch pad memory to set or reset the alarm
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;control bit on the alarm output port.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-alarm_drive
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-;read status
|
|
LABEL-
|
|
INSTRUCTION-AND
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_active
|
|
COMMENT-;isolate bit0
|
|
LABEL-
|
|
INSTRUCTION-OUTPUT
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_port
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Transmit the time to the UART port in the format hh:mm:ss and end
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;with a carriage return.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The time to converted must be stored in 3 scratch pad memory locations as
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;defined below. A register named 'store_pointer' must provide the address of
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;first location.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; Address Data
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer ----> hours
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> minutes
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> seconds
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The routine first converts the time into an ASCII string stored in scratch
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;pad memory starting at a location specified by a constant named 'string_start'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The string will then be transmitted.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1, s2, 'store_pointer' and 'UART_data'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-transmit_time
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-store_pointer
|
|
OPERAND2-real_time_hours
|
|
COMMENT-;locate current time in memory
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-time_to_ASCII
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_string
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Transmit the alarm time and status to the UART port in the format hh:mm:ss and
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;ending with carriage return.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The alarm time to converted must be stored in 3 scratch pad memory locations as
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;defined below. A register named 'store_pointer' must provide the address of
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;first location.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; Address Data
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer ----> hours
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> minutes
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> seconds
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The routine first converts the time into an ASCII string stored in scratch
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;pad memory starting at a location specified by a constant named 'string_start'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The string will then be transmitted.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1, s2, 'store_pointer' and 'UART_data'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-transmit_alarm_time
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-store_pointer
|
|
OPERAND2-alarm_time_hours
|
|
COMMENT-;locate alarm time in memory
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-time_to_ASCII
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-transmit_string
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Alarm
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_space
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-;read alarm status
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_active
|
|
COMMENT-;test for active
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-test_armed
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Active
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-test_armed
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_armed
|
|
COMMENT-;test for on
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-alarm_is_off
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_ON
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-alarm_is_off
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_OFF
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Transmit ASCII string to UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;An ASCII string must be provided in scratch pad memory commencing at the
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;location specified by a constant named 'string_start'. The string must
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;end with a carriage return (0D).
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s1 and 'UART_data'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; s0 is then used in subroutine 'send_to_UART'
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-transmit_string
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-string_start
|
|
COMMENT-;locate start of string
|
|
LABEL-next_char_tx
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-UART_data
|
|
OPERAND2-(s1)
|
|
COMMENT-;read character from memory
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-;transmit character
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_CR
|
|
COMMENT-;test for last character
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-Z
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;move to next character
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-next_char_tx
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Receive ASCII string from UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;An ASCII string will be read from the UART and stored in scratch pad memory
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;commencing at the location specified by a constant named 'string_start'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The string will will have a maximum length of 16 characters including a
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;carriage return (0D) denoting the end of the string.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;As each character is read, it is echoed to the UART transmitter.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Some minor editing is supported using backspace (BS=08) which is used
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;to adjust what is stored in scratch pad memory and adjust the display
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;on the terminal screen using characters sent to the UART transmitter.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;A test is made for the receiver FIFO becoming full. A full status is treated as
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;a potential error situation and will result in a 'Overflow Error' message being
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;transmitted to the UART, the receiver FIFO being purged of all data and an
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;empty string being stored (carriage return at first location).
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1, s2 and 'UART_data'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-receive_string
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-string_start
|
|
COMMENT-;locate start of string
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s2
|
|
OPERAND2-s1
|
|
COMMENT-;compute 16 character address
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-10
|
|
COMMENT-
|
|
LABEL-receive_full_test
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-s0
|
|
OPERAND2-UART_status_port
|
|
COMMENT-;test Rx_FIFO buffer for full
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-rx_full
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-read_error
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-read_from_UART
|
|
OPERAND2-
|
|
COMMENT-;obtain and echo character
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-UART_data
|
|
OPERAND2-(s1)
|
|
COMMENT-;write to memory
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_CR
|
|
COMMENT-;test for end of string
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-Z
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_BS
|
|
COMMENT-;test for back space
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-BS_edit
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment memory pointer
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s1
|
|
OPERAND2-s2
|
|
COMMENT-;test for pointer exceeding 16 characters
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-receive_full_test
|
|
COMMENT-;next character
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_backspace
|
|
OPERAND2-
|
|
COMMENT-;hold end of string position on terminal display
|
|
LABEL-BS_edit
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;memory pointer back one
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s1
|
|
OPERAND2-string_start
|
|
COMMENT-;test for under flow
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-string_start_again
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_space
|
|
OPERAND2-
|
|
COMMENT-;clear character at current position
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_backspace
|
|
OPERAND2-
|
|
COMMENT-;position cursor
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-receive_full_test
|
|
OPERAND2-
|
|
COMMENT-;next character
|
|
LABEL-string_start_again
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_greater_than
|
|
OPERAND2-
|
|
COMMENT-;restore '>' at prompt
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-receive_string
|
|
OPERAND2-
|
|
COMMENT-;begin again
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Receiver buffer overflow condition
|
|
LABEL-read_error
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_CR
|
|
OPERAND2-
|
|
COMMENT-;Transmit error message
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-UART_data
|
|
OPERAND2-string_start
|
|
COMMENT-;empty string in memory (start with CR)
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_Overflow_Error
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_CR
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-clear_UART_Rx_loop
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-s0
|
|
OPERAND2-UART_status_port
|
|
COMMENT-;test Rx_FIFO buffer for data
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-rx_data_present
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-Z
|
|
OPERAND2-
|
|
COMMENT-;finish when buffer is empty
|
|
LABEL-
|
|
INSTRUCTION-INPUT
|
|
OPERAND1-UART_data
|
|
OPERAND2-UART_read_port
|
|
COMMENT-;read from FIFO and ignore
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-clear_UART_Rx_loop
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send Carriage Return to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_CR
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_CR
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send a space to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_space
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_space
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send a back space to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_backspace
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_BS
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Syntax Error' to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Syntax_Error
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_S
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_y
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_n
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_t
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_a
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_x
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-send_space_Error
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Overflow Error' to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Overflow_Error
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_O
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_v
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_e
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_r
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_f
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_l
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_o
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_w
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-send_space_Error
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_space
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Error' to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Error
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_E
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_r
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_o
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_r
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'KCPSM3>' prompt to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_prompt
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_CR
|
|
OPERAND2-
|
|
COMMENT-;start new line
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_K
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_C
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_P
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_S
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_M
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_3
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send '>' character to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_greater_than
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_greater_than
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Invalid' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Invalid
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_I
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_n
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_v
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_a
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_l
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_i
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_d
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Time' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Time
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_T
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_i
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_m
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_e
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Alarm' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Alarm
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_l
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_a
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_r
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_m
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'OFF' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_OFF
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_O
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_F
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'ON' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_ON
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_O
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_N
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Send 'Active' string to the UART
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-send_Active
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_c
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_t
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_i
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_v
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-UART_data
|
|
OPERAND2-character_e
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-send_to_UART
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Convert time to ASCII string in scratch pad memory.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The time to converted must be stored in 3 scratch pad memory locations as
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;defined below. A register named 'store_pointer' must provide the address of
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;first location.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; Address Data
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer ----> hours
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> minutes
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; store_pointer + 1 ----> seconds
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The resulting ASCII string will be stored in scratch pad memory starting at
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;a location specified by a constant named 'string_start'. The string will
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;take the format hh:mm:ss and end with a carriage return.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1, s2 and 'store_pointer'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-time_to_ASCII
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s2
|
|
OPERAND2-string_start
|
|
COMMENT-;location for string
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(store_pointer)
|
|
COMMENT-;read hours value
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-decimal_to_ASCII
|
|
OPERAND2-
|
|
COMMENT-;convert to ASCII
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-(s2)
|
|
COMMENT-;write hours to string
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-character_colon
|
|
COMMENT-;write ':' to string
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-store_pointer
|
|
OPERAND2-01
|
|
COMMENT-;move to minutes
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(store_pointer)
|
|
COMMENT-;read minutes value
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-decimal_to_ASCII
|
|
OPERAND2-
|
|
COMMENT-;convert to ASCII
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-(s2)
|
|
COMMENT-;write minutes to string
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-character_colon
|
|
COMMENT-;write ':' to string
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-store_pointer
|
|
OPERAND2-01
|
|
COMMENT-;move to seconds
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(store_pointer)
|
|
COMMENT-;read seconds value
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-decimal_to_ASCII
|
|
OPERAND2-
|
|
COMMENT-;convert to ASCII
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-(s2)
|
|
COMMENT-;write seconds to string
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-01
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-character_CR
|
|
COMMENT-;finish string with carriage return
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-(s2)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Convert value provided in register s0 into ASCII characters
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The value provided must in the range 0 to 99 and will be converted into
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;two ASCII characters.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; The number of 'tens' will be representd by an ASCII character returned in register s1.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-; The number of 'units' will be representd by an ASCII character returned in register s0.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The ASCII representations of '0' to '9' are 30 to 39 hexadecimal which is simply 30 hex added to
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;the actual decimal value.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0 and s1.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-decimal_to_ASCII
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-30
|
|
COMMENT-;load 'tens' counter with ASCII for '0'
|
|
LABEL-test_for_ten
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment 'tens' value
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s0
|
|
OPERAND2-0A
|
|
COMMENT-;try to subtract 10 from the supplied value
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NC
|
|
OPERAND2-test_for_ten
|
|
COMMENT-;repeat if subtraction was possible without underflow.
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;'tens' value one less ten due to underflow
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s0
|
|
OPERAND2-3A
|
|
COMMENT-;restore units value (the remainder) and convert to ASCII
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Real Time Clock
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Uses the 1us interrupt counter [int_counter_msb,int_counter_lsb] to determine how many
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;micro-seconds have elapsed since the last update. This allows for just over 65ms between
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;updates. Complete multiples of 1000us are used to update a 16-bit milli-second counter held
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;in scratch pad memory locations [ms_time_stamp_msb,ms_time_stamp_msb] which in turn
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;is used to update the real time hours, minutes and seconds clock held in scratch pad
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;memory locations 'real_time_hours', 'real_time_minutes' and 'real_time_seconds'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The routine uses default register names s0,s1,s2,s3,s4,s5. These are preserved in scratch pad
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;memory during the routine and restored before returning.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Useful constants for real time clock operations
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-count_1000_lsb
|
|
OPERAND2-E8
|
|
COMMENT-;lower 8-bits of 1000 count value
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-count_1000_msb
|
|
OPERAND2-03
|
|
COMMENT-;upper 8-bits of 1000 count value
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-hours_in_a_day
|
|
OPERAND2-18
|
|
COMMENT-;24 hours in a day
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-minutes_in_an_hour
|
|
OPERAND2-3C
|
|
COMMENT-;60 minutes in an hour
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-seconds_in_a_minute
|
|
OPERAND2-3C
|
|
COMMENT-;60 seconds in a minute
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-update_time
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-time_preserve0
|
|
COMMENT-;preserve contents of registers used during routine
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-time_preserve1
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s2
|
|
OPERAND2-time_preserve2
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s3
|
|
OPERAND2-time_preserve3
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s4
|
|
OPERAND2-time_preserve4
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s5
|
|
OPERAND2-time_preserve5
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s2
|
|
OPERAND2-us_time_stamp_lsb
|
|
COMMENT-;read the previous 'us' time stamp into [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s3
|
|
OPERAND2-us_time_stamp_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-DISABLE
|
|
OPERAND1-INTERRUPT
|
|
OPERAND2-
|
|
COMMENT-;Read and store current 'us' time stamp provided by the interrupt
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-int_counter_lsb
|
|
OPERAND2-us_time_stamp_lsb
|
|
COMMENT-;counter. Interrupts are disabled to ensure that both bytes relate
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-int_counter_msb
|
|
OPERAND2-us_time_stamp_msb
|
|
COMMENT-;to the same count value.
|
|
LABEL-
|
|
INSTRUCTION-ENABLE
|
|
OPERAND1-INTERRUPT
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s4
|
|
OPERAND2-us_time_stamp_lsb
|
|
COMMENT-;read the new 'us' time stamp in [s5,s4]
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s5
|
|
OPERAND2-us_time_stamp_msb
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s4
|
|
OPERAND2-s2
|
|
COMMENT-;calculate 'us' time difference [s5,s4] = [s5,s4] - [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-SUBCY
|
|
OPERAND1-s5
|
|
OPERAND2-s3
|
|
COMMENT-; (This works correctly even if counter has rolled over)
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s2
|
|
OPERAND2-us_time_lsb
|
|
COMMENT-;read current 'us' time into [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s3
|
|
OPERAND2-us_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-s4
|
|
COMMENT-;add on the elapsed 'us' value [s3,s2] = [s3,s2] + [s5,s4]
|
|
LABEL-
|
|
INSTRUCTION-ADDCY
|
|
OPERAND1-s3
|
|
OPERAND2-s5
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;determine how many 1000us (1ms) units there are (if any) in current 'us' time
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-00
|
|
COMMENT-;reset 'ms' counter
|
|
LABEL-test_1000us
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s2
|
|
OPERAND2-count_1000_lsb
|
|
COMMENT-;subtract 1000 from [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-SUBCY
|
|
OPERAND1-s3
|
|
OPERAND2-count_1000_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-store_us_time
|
|
COMMENT-;Carry indicates [s3,s2] was less than 1000us
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s0
|
|
OPERAND2-01
|
|
COMMENT-;increment 'ms' elapsed because [s3,s2] was more or equal to 1000us
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-test_1000us
|
|
OPERAND2-
|
|
COMMENT-;repeat to see if more than 1ms has elapsed
|
|
LABEL-store_us_time
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-count_1000_lsb
|
|
COMMENT-;add 1000 to restore 'us' value
|
|
LABEL-
|
|
INSTRUCTION-ADDCY
|
|
OPERAND1-s3
|
|
OPERAND2-count_1000_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s2
|
|
OPERAND2-us_time_lsb
|
|
COMMENT-;store the current value of 'us'
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s3
|
|
OPERAND2-us_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;s0 holds the number of 'ms' elapsed since last update (if any).
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s2
|
|
OPERAND2-ms_time_lsb
|
|
COMMENT-;read current 'ms' time into [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s3
|
|
OPERAND2-ms_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-s0
|
|
COMMENT-;add on the elapsed 'ms' value [s3,s2] = [s3,s2] + s0
|
|
LABEL-
|
|
INSTRUCTION-ADDCY
|
|
OPERAND1-s3
|
|
OPERAND2-00
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;determine if there are now more than 1000ms to form 1 second.
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s0
|
|
OPERAND2-00
|
|
COMMENT-;reset 'second' counter
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s2
|
|
OPERAND2-count_1000_lsb
|
|
COMMENT-;subtract 1000 from [s3,s2]
|
|
LABEL-
|
|
INSTRUCTION-SUBCY
|
|
OPERAND1-s3
|
|
OPERAND2-count_1000_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-C
|
|
OPERAND2-restore_ms_time
|
|
COMMENT-;Carry indicates [s3,s2] was less than 1000ms
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s0
|
|
OPERAND2-01
|
|
COMMENT-;increment 'second' elapsed because [s3,s2] was more or equal to 1000ms
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-store_ms_time
|
|
OPERAND2-
|
|
COMMENT-;new value of 'ms' is remainder of subtraction
|
|
LABEL-restore_ms_time
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-count_1000_lsb
|
|
COMMENT-;add 1000 to restore 'ms' value
|
|
LABEL-
|
|
INSTRUCTION-ADDCY
|
|
OPERAND1-s3
|
|
OPERAND2-count_1000_msb
|
|
COMMENT-
|
|
LABEL-store_ms_time
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s2
|
|
OPERAND2-ms_time_lsb
|
|
COMMENT-;store the current value of 'ms'
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s3
|
|
OPERAND2-ms_time_msb
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;s0 currently determines if one second needs to be added to the hh:mm:ss clock time
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-;read seconds
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-s0
|
|
COMMENT-;add one second if required by s0
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s1
|
|
OPERAND2-seconds_in_a_minute
|
|
COMMENT-;test for 1 minute
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-inc_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-;store updated seconds
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-time_update_complete
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-inc_minutes
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-00
|
|
COMMENT-;seconds become zero
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-;read minutes
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment minutes
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s1
|
|
OPERAND2-minutes_in_an_hour
|
|
COMMENT-;test for 1 hour
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-inc_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-;store updated minutes
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-time_update_complete
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-inc_hours
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-00
|
|
COMMENT-;minutes become zero
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_hours
|
|
COMMENT-;read hours
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;increment hours
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s1
|
|
OPERAND2-hours_in_a_day
|
|
COMMENT-;test for 24 hours
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-reset_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_hours
|
|
COMMENT-;store updated hours
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-time_update_complete
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-reset_hours
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s1
|
|
OPERAND2-00
|
|
COMMENT-;hours become zero
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s1
|
|
OPERAND2-real_time_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;With the time updated, there is then a test for time=alarm time
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-time_update_complete
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_hours
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-alarm_time_hours
|
|
COMMENT-;compare hours
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-s1
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-finish_update
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_minutes
|
|
COMMENT-;compare minutes
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-alarm_time_minutes
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-s1
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-finish_update
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-real_time_seconds
|
|
COMMENT-;compare seconds
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-alarm_time_seconds
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-s1
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-NZ
|
|
OPERAND2-finish_update
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-;test if alarm is turned on
|
|
LABEL-
|
|
INSTRUCTION-TEST
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_armed
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-Z
|
|
OPERAND2-finish_update
|
|
COMMENT-;alarm was off
|
|
LABEL-
|
|
INSTRUCTION-OR
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_active
|
|
COMMENT-;activate alarm
|
|
LABEL-
|
|
INSTRUCTION-STORE
|
|
OPERAND1-s0
|
|
OPERAND2-alarm_status
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-alarm_drive
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-finish_update
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-time_preserve0
|
|
COMMENT-;restore the register contents
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s1
|
|
OPERAND2-time_preserve1
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s2
|
|
OPERAND2-time_preserve2
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s3
|
|
OPERAND2-time_preserve3
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s4
|
|
OPERAND2-time_preserve4
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s5
|
|
OPERAND2-time_preserve5
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Convert character to upper case
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The character supplied in register s0.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;If the character is in the range 'a' to 'z', it is converted
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;to the equivalent upper case character in the range 'A' to 'Z'.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;All other characters remain unchanged.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-upper_case
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-61
|
|
COMMENT-;eliminate character codes below 'a' (61 hex)
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-C
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-COMPARE
|
|
OPERAND1-s0
|
|
OPERAND2-7B
|
|
COMMENT-;eliminate character codes above 'z' (7A hex)
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-NC
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-AND
|
|
OPERAND1-s0
|
|
OPERAND2-DF
|
|
COMMENT-;mask bit5 to convert to upper case
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Convert character '0' to '9' to numerical value in range 0 to 9
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The character supplied in register s0. If the character is in the
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;range '0' to '9', it is converted to the equivalent decimal value.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Characters not in the range '0' to '9' are signified by the return
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;with the CARRY flag set.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-1char_to_value
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s0
|
|
OPERAND2-C6
|
|
COMMENT-;reject character codes above '9' (39 hex)
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-C
|
|
OPERAND2-
|
|
COMMENT-;carry flag is set
|
|
LABEL-
|
|
INSTRUCTION-SUB
|
|
OPERAND1-s0
|
|
OPERAND2-F6
|
|
COMMENT-;reject character codes below '0' (30 hex)
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;carry is set if value not in range
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Determine the numerical value of a two character decimal string held in
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;scratch pad memory such the result is in the range 0 to 99 (00 to 63 hex).
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The string must be stored as in two consecutive memory locations and the
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;location of the first (tens) character supplied in the s1 register.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The result is provided in register s2. Strings not using characters in the
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;range '0' to '9' are signified by the return with the CARRY flag set.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Registers used s0, s1 and s2.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-2char_to_value
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(s1)
|
|
COMMENT-;read 'tens' character
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-1char_to_value
|
|
OPERAND2-
|
|
COMMENT-;convert to numerical value
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-C
|
|
OPERAND2-
|
|
COMMENT-;bad character - CARRY set
|
|
LABEL-
|
|
INSTRUCTION-LOAD
|
|
OPERAND1-s2
|
|
OPERAND2-s0
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-SL0
|
|
OPERAND1-s2
|
|
OPERAND2-
|
|
COMMENT-;multiply 'tens' value by 10 (0A hex)
|
|
LABEL-
|
|
INSTRUCTION-SL0
|
|
OPERAND1-s2
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-s0
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-SL0
|
|
OPERAND1-s2
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s1
|
|
OPERAND2-01
|
|
COMMENT-;read 'units' character
|
|
LABEL-
|
|
INSTRUCTION-FETCH
|
|
OPERAND1-s0
|
|
OPERAND2-(s1)
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CALL
|
|
OPERAND1-1char_to_value
|
|
OPERAND2-
|
|
COMMENT-;convert to numerical value
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-C
|
|
OPERAND2-
|
|
COMMENT-;bad character - CARRY set
|
|
LABEL-
|
|
INSTRUCTION-ADD
|
|
OPERAND1-s2
|
|
OPERAND2-s0
|
|
COMMENT-;add units to result and clear CARRY flag
|
|
LABEL-
|
|
INSTRUCTION-RETURN
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Interrupt service routine (ISR)
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The interrupt is used to increment a 16-bit counter formed with two registers
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;called [int_counter_msb,int_counter_lsb]. This provides a count of the number
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;of micro-seconds elapsed. The counter is 'free running' in that it will count
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;up to 65,535 and then roll over to zero. The count value is then used in other
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;parts of the program as required and where it is less time critical.
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;The ISR only uses the specified counter registers
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-ADDRESS
|
|
OPERAND1-3FC
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-ISR
|
|
INSTRUCTION-ADD
|
|
OPERAND1-int_counter_lsb
|
|
OPERAND2-01
|
|
COMMENT-;add 1us to 16-bit counter
|
|
LABEL-
|
|
INSTRUCTION-ADDCY
|
|
OPERAND1-int_counter_msb
|
|
OPERAND2-00
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-RETURNI
|
|
OPERAND1-ENABLE
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Interrupt vector
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-ADDRESS
|
|
OPERAND1-3FF
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-JUMP
|
|
OPERAND1-ISR
|
|
OPERAND2-
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;Useful constants
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;ASCII table
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_a
|
|
OPERAND2-61
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_b
|
|
OPERAND2-62
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_c
|
|
OPERAND2-63
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_d
|
|
OPERAND2-64
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_e
|
|
OPERAND2-65
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_f
|
|
OPERAND2-66
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_g
|
|
OPERAND2-67
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_h
|
|
OPERAND2-68
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_i
|
|
OPERAND2-69
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_j
|
|
OPERAND2-6A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_k
|
|
OPERAND2-6B
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_l
|
|
OPERAND2-6C
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_m
|
|
OPERAND2-6D
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_n
|
|
OPERAND2-6E
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_o
|
|
OPERAND2-6F
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_p
|
|
OPERAND2-70
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_q
|
|
OPERAND2-71
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_r
|
|
OPERAND2-72
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_s
|
|
OPERAND2-73
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_t
|
|
OPERAND2-74
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_u
|
|
OPERAND2-75
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_v
|
|
OPERAND2-76
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_w
|
|
OPERAND2-77
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_x
|
|
OPERAND2-78
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_y
|
|
OPERAND2-79
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_z
|
|
OPERAND2-7A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_A
|
|
OPERAND2-41
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_B
|
|
OPERAND2-42
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_C
|
|
OPERAND2-43
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_D
|
|
OPERAND2-44
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_E
|
|
OPERAND2-45
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_F
|
|
OPERAND2-46
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_G
|
|
OPERAND2-47
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_H
|
|
OPERAND2-48
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_I
|
|
OPERAND2-49
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_J
|
|
OPERAND2-4A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_K
|
|
OPERAND2-4B
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_L
|
|
OPERAND2-4C
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_M
|
|
OPERAND2-4D
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_N
|
|
OPERAND2-4E
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_O
|
|
OPERAND2-4F
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_P
|
|
OPERAND2-50
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_Q
|
|
OPERAND2-51
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_R
|
|
OPERAND2-52
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_S
|
|
OPERAND2-53
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_T
|
|
OPERAND2-54
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_U
|
|
OPERAND2-55
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_V
|
|
OPERAND2-56
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_W
|
|
OPERAND2-57
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_X
|
|
OPERAND2-58
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_Y
|
|
OPERAND2-59
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_Z
|
|
OPERAND2-5A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_0
|
|
OPERAND2-30
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_1
|
|
OPERAND2-31
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_2
|
|
OPERAND2-32
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_3
|
|
OPERAND2-33
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_4
|
|
OPERAND2-34
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_5
|
|
OPERAND2-35
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_6
|
|
OPERAND2-36
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_7
|
|
OPERAND2-37
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_8
|
|
OPERAND2-38
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_9
|
|
OPERAND2-39
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_colon
|
|
OPERAND2-3A
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_semi_colon
|
|
OPERAND2-3B
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_less_than
|
|
OPERAND2-3C
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_greater_than
|
|
OPERAND2-3E
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_equals
|
|
OPERAND2-3D
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_space
|
|
OPERAND2-20
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_CR
|
|
OPERAND2-0D
|
|
COMMENT-;carriage return
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_question
|
|
OPERAND2-3F
|
|
COMMENT-;'?'
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_dollar
|
|
OPERAND2-24
|
|
COMMENT-
|
|
LABEL-
|
|
INSTRUCTION-CONSTANT
|
|
OPERAND1-character_BS
|
|
OPERAND2-08
|
|
COMMENT-;Back Space command character
|
|
LABEL-
|
|
INSTRUCTION-
|
|
OPERAND1-
|
|
OPERAND2-
|
|
COMMENT-;
|