ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;KCPSM3 Program - Real Time Clock with UART communication. ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Ken Chapman - Xilinx Ltd - October 2003 ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Port definitions ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT UART_status_port, 00 LOGFORMAT-CONSTANT UART_status_port, 00 INSTRUCTION-CONSTANT OPERAND1-UART_status_port OP1 VALUE-UART_status_port OPERAND2-00 OP2 VALUE-00 COMMENT-;UART status input ADDRESS-000 LABEL- FORMATTED-CONSTANT tx_half_full, 01 LOGFORMAT-CONSTANT tx_half_full, 01 INSTRUCTION-CONSTANT OPERAND1-tx_half_full OP1 VALUE-tx_half_full OPERAND2-01 OP2 VALUE-01 COMMENT-; Transmitter half full - bit0 ADDRESS-000 LABEL- FORMATTED-CONSTANT tx_full, 02 LOGFORMAT-CONSTANT tx_full, 02 INSTRUCTION-CONSTANT OPERAND1-tx_full OP1 VALUE-tx_full OPERAND2-02 OP2 VALUE-02 COMMENT-; FIFO full - bit1 ADDRESS-000 LABEL- FORMATTED-CONSTANT rx_half_full, 04 LOGFORMAT-CONSTANT rx_half_full, 04 INSTRUCTION-CONSTANT OPERAND1-rx_half_full OP1 VALUE-rx_half_full OPERAND2-04 OP2 VALUE-04 COMMENT-; Receiver half full - bit2 ADDRESS-000 LABEL- FORMATTED-CONSTANT rx_full, 08 LOGFORMAT-CONSTANT rx_full, 08 INSTRUCTION-CONSTANT OPERAND1-rx_full OP1 VALUE-rx_full OPERAND2-08 OP2 VALUE-08 COMMENT-; FIFO full - bit3 ADDRESS-000 LABEL- FORMATTED-CONSTANT rx_data_present, 10 LOGFORMAT-CONSTANT rx_data_present, 10 INSTRUCTION-CONSTANT OPERAND1-rx_data_present OP1 VALUE-rx_data_present OPERAND2-10 OP2 VALUE-10 COMMENT-; data present - bit4 ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT UART_read_port, 01 LOGFORMAT-CONSTANT UART_read_port, 01 INSTRUCTION-CONSTANT OPERAND1-UART_read_port OP1 VALUE-UART_read_port OPERAND2-01 OP2 VALUE-01 COMMENT-;UART Rx data input ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT UART_write_port, 01 LOGFORMAT-CONSTANT UART_write_port, 01 INSTRUCTION-CONSTANT OPERAND1-UART_write_port OP1 VALUE-UART_write_port OPERAND2-01 OP2 VALUE-01 COMMENT-;UART Tx data output ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_port, 00 LOGFORMAT-CONSTANT alarm_port, 00 INSTRUCTION-CONSTANT OPERAND1-alarm_port OP1 VALUE-alarm_port OPERAND2-00 OP2 VALUE-00 COMMENT-;Alarm output ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_control, 01 LOGFORMAT-CONSTANT alarm_control, 01 INSTRUCTION-CONSTANT OPERAND1-alarm_control OP1 VALUE-alarm_control OPERAND2-01 OP2 VALUE-01 COMMENT-; bit0 ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Special Register usage ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-NAMEREG sF, UART_data LOGFORMAT-NAMEREG sF, UART_data INSTRUCTION-NAMEREG OPERAND1-sF OP1 VALUE-sF OPERAND2-UART_data OP2 VALUE-UART_data COMMENT-;used to pass data to and from the UART ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-NAMEREG sE, store_pointer LOGFORMAT-NAMEREG sE, store_pointer INSTRUCTION-NAMEREG OPERAND1-sE OP1 VALUE-sE OPERAND2-store_pointer OP2 VALUE-store_pointer COMMENT-;used to pass location of data in scratch pad memory ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Two registers to form a 16-bit counter used to count ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;interrupt pulses generated at 1us intervals. ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-NAMEREG sD, int_counter_lsb LOGFORMAT-NAMEREG sD, int_counter_lsb INSTRUCTION-NAMEREG OPERAND1-sD OP1 VALUE-sD OPERAND2-int_counter_lsb OP2 VALUE-int_counter_lsb COMMENT-;lower 8-bits ADDRESS-000 LABEL- FORMATTED-NAMEREG sC, int_counter_msb LOGFORMAT-NAMEREG sC, int_counter_msb INSTRUCTION-NAMEREG OPERAND1-sC OP1 VALUE-sC OPERAND2-int_counter_msb OP2 VALUE-int_counter_msb COMMENT-;upper 8-bits ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Scratch Pad Memory Locations ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT us_time_stamp_lsb, 00 LOGFORMAT-CONSTANT us_time_stamp_lsb, 00 INSTRUCTION-CONSTANT OPERAND1-us_time_stamp_lsb OP1 VALUE-us_time_stamp_lsb OPERAND2-00 OP2 VALUE-00 COMMENT-;16-bit micro-second time stamp ADDRESS-000 LABEL- FORMATTED-CONSTANT us_time_stamp_msb, 01 LOGFORMAT-CONSTANT us_time_stamp_msb, 01 INSTRUCTION-CONSTANT OPERAND1-us_time_stamp_msb OP1 VALUE-us_time_stamp_msb OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT us_time_lsb, 02 LOGFORMAT-CONSTANT us_time_lsb, 02 INSTRUCTION-CONSTANT OPERAND1-us_time_lsb OP1 VALUE-us_time_lsb OPERAND2-02 OP2 VALUE-02 COMMENT-;16-bit micro-second real time value ADDRESS-000 LABEL- FORMATTED-CONSTANT us_time_msb, 03 LOGFORMAT-CONSTANT us_time_msb, 03 INSTRUCTION-CONSTANT OPERAND1-us_time_msb OP1 VALUE-us_time_msb OPERAND2-03 OP2 VALUE-03 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT ms_time_lsb, 04 LOGFORMAT-CONSTANT ms_time_lsb, 04 INSTRUCTION-CONSTANT OPERAND1-ms_time_lsb OP1 VALUE-ms_time_lsb OPERAND2-04 OP2 VALUE-04 COMMENT-;16-bit milli-second real time value ADDRESS-000 LABEL- FORMATTED-CONSTANT ms_time_msb, 05 LOGFORMAT-CONSTANT ms_time_msb, 05 INSTRUCTION-CONSTANT OPERAND1-ms_time_msb OP1 VALUE-ms_time_msb OPERAND2-05 OP2 VALUE-05 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT real_time_hours, 06 LOGFORMAT-CONSTANT real_time_hours, 06 INSTRUCTION-CONSTANT OPERAND1-real_time_hours OP1 VALUE-real_time_hours OPERAND2-06 OP2 VALUE-06 COMMENT-;Current clock time ADDRESS-000 LABEL- FORMATTED-CONSTANT real_time_minutes, 07 LOGFORMAT-CONSTANT real_time_minutes, 07 INSTRUCTION-CONSTANT OPERAND1-real_time_minutes OP1 VALUE-real_time_minutes OPERAND2-07 OP2 VALUE-07 COMMENT- ADDRESS-000 LABEL- FORMATTED-CONSTANT real_time_seconds, 08 LOGFORMAT-CONSTANT real_time_seconds, 08 INSTRUCTION-CONSTANT OPERAND1-real_time_seconds OP1 VALUE-real_time_seconds OPERAND2-08 OP2 VALUE-08 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_time_hours, 09 LOGFORMAT-CONSTANT alarm_time_hours, 09 INSTRUCTION-CONSTANT OPERAND1-alarm_time_hours OP1 VALUE-alarm_time_hours OPERAND2-09 OP2 VALUE-09 COMMENT-;Alarm time ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_time_minutes, 0A LOGFORMAT-CONSTANT alarm_time_minutes, 0A INSTRUCTION-CONSTANT OPERAND1-alarm_time_minutes OP1 VALUE-alarm_time_minutes OPERAND2-0A OP2 VALUE-0A COMMENT- ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_time_seconds, 0B LOGFORMAT-CONSTANT alarm_time_seconds, 0B INSTRUCTION-CONSTANT OPERAND1-alarm_time_seconds OP1 VALUE-alarm_time_seconds OPERAND2-0B OP2 VALUE-0B COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_status, 0C LOGFORMAT-CONSTANT alarm_status, 0C INSTRUCTION-CONSTANT OPERAND1-alarm_status OP1 VALUE-alarm_status OPERAND2-0C OP2 VALUE-0C COMMENT-;Alarm status ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_active, 01 LOGFORMAT-CONSTANT alarm_active, 01 INSTRUCTION-CONSTANT OPERAND1-alarm_active OP1 VALUE-alarm_active OPERAND2-01 OP2 VALUE-01 COMMENT-; bit0 - Alarm is active ADDRESS-000 LABEL- FORMATTED-CONSTANT alarm_armed, 02 LOGFORMAT-CONSTANT alarm_armed, 02 INSTRUCTION-CONSTANT OPERAND1-alarm_armed OP1 VALUE-alarm_armed OPERAND2-02 OP2 VALUE-02 COMMENT-; bit1 - Alarm is armed ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve0, 10 LOGFORMAT-CONSTANT time_preserve0, 10 INSTRUCTION-CONSTANT OPERAND1-time_preserve0 OP1 VALUE-time_preserve0 OPERAND2-10 OP2 VALUE-10 COMMENT-;storage for protection of registers ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve1, 11 LOGFORMAT-CONSTANT time_preserve1, 11 INSTRUCTION-CONSTANT OPERAND1-time_preserve1 OP1 VALUE-time_preserve1 OPERAND2-11 OP2 VALUE-11 COMMENT-;used by the real time clock routine. ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve2, 12 LOGFORMAT-CONSTANT time_preserve2, 12 INSTRUCTION-CONSTANT OPERAND1-time_preserve2 OP1 VALUE-time_preserve2 OPERAND2-12 OP2 VALUE-12 COMMENT- ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve3, 13 LOGFORMAT-CONSTANT time_preserve3, 13 INSTRUCTION-CONSTANT OPERAND1-time_preserve3 OP1 VALUE-time_preserve3 OPERAND2-13 OP2 VALUE-13 COMMENT- ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve4, 14 LOGFORMAT-CONSTANT time_preserve4, 14 INSTRUCTION-CONSTANT OPERAND1-time_preserve4 OP1 VALUE-time_preserve4 OPERAND2-14 OP2 VALUE-14 COMMENT- ADDRESS-000 LABEL- FORMATTED-CONSTANT time_preserve5, 15 LOGFORMAT-CONSTANT time_preserve5, 15 INSTRUCTION-CONSTANT OPERAND1-time_preserve5 OP1 VALUE-time_preserve5 OPERAND2-15 OP2 VALUE-15 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;UART character strings will be stored in scratch pad memory ending in carriage return. ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;A string can be up to 16 characters with the start location defined by this constant. ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED-CONSTANT string_start, 20 LOGFORMAT-CONSTANT string_start, 20 INSTRUCTION-CONSTANT OPERAND1-string_start OP1 VALUE-string_start OPERAND2-20 OP2 VALUE-20 COMMENT- ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Initialise the system ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-000 LABEL-cold_start FORMATTED-LOAD s0, 00 LOGFORMAT-LOAD s0, 00 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-00 OP2 VALUE-00 COMMENT-;clear all time values ADDRESS-001 LABEL- FORMATTED-STORE s0, us_time_stamp_lsb LOGFORMAT-STORE s0, us_time_stamp_lsb[00] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-us_time_stamp_lsb OP2 VALUE-00 COMMENT- ADDRESS-002 LABEL- FORMATTED-STORE s0, us_time_stamp_msb LOGFORMAT-STORE s0, us_time_stamp_msb[01] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-us_time_stamp_msb OP2 VALUE-01 COMMENT- ADDRESS-003 LABEL- FORMATTED-STORE s0, us_time_lsb LOGFORMAT-STORE s0, us_time_lsb[02] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-us_time_lsb OP2 VALUE-02 COMMENT- ADDRESS-004 LABEL- FORMATTED-STORE s0, us_time_msb LOGFORMAT-STORE s0, us_time_msb[03] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-us_time_msb OP2 VALUE-03 COMMENT- ADDRESS-005 LABEL- FORMATTED-STORE s0, ms_time_lsb LOGFORMAT-STORE s0, ms_time_lsb[04] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-ms_time_lsb OP2 VALUE-04 COMMENT- ADDRESS-006 LABEL- FORMATTED-STORE s0, ms_time_msb LOGFORMAT-STORE s0, ms_time_msb[05] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-ms_time_msb OP2 VALUE-05 COMMENT- ADDRESS-007 LABEL- FORMATTED-STORE s0, real_time_hours LOGFORMAT-STORE s0, real_time_hours[06] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT- ADDRESS-008 LABEL- FORMATTED-STORE s0, real_time_minutes LOGFORMAT-STORE s0, real_time_minutes[07] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT- ADDRESS-009 LABEL- FORMATTED-STORE s0, real_time_seconds LOGFORMAT-STORE s0, real_time_seconds[08] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT- ADDRESS-00A LABEL- FORMATTED-STORE s0, alarm_time_hours LOGFORMAT-STORE s0, alarm_time_hours[09] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_time_hours OP2 VALUE-09 COMMENT- ADDRESS-00B LABEL- FORMATTED-STORE s0, alarm_time_minutes LOGFORMAT-STORE s0, alarm_time_minutes[0A] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_time_minutes OP2 VALUE-0A COMMENT- ADDRESS-00C LABEL- FORMATTED-STORE s0, alarm_time_seconds LOGFORMAT-STORE s0, alarm_time_seconds[0B] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_time_seconds OP2 VALUE-0B COMMENT- ADDRESS-00D LABEL- FORMATTED-STORE s0, alarm_status LOGFORMAT-STORE s0, alarm_status[0C] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT-;clear and disable alarm ADDRESS-00E LABEL- FORMATTED-CALL alarm_drive LOGFORMAT-CALL alarm_drive[0A4] INSTRUCTION-CALL OPERAND1-alarm_drive OP1 VALUE-0A4 OPERAND2- OP2 VALUE- COMMENT-;turn off alarm control output port ADDRESS-00F LABEL- FORMATTED-LOAD int_counter_lsb, 00 LOGFORMAT-LOAD int_counter_lsb[sD], 00 INSTRUCTION-LOAD OPERAND1-int_counter_lsb OP1 VALUE-sD OPERAND2-00 OP2 VALUE-00 COMMENT-;clear 'us' interrupt counter ADDRESS-010 LABEL- FORMATTED-LOAD int_counter_msb, 00 LOGFORMAT-LOAD int_counter_msb[sC], 00 INSTRUCTION-LOAD OPERAND1-int_counter_msb OP1 VALUE-sC OPERAND2-00 OP2 VALUE-00 COMMENT- ADDRESS-011 LABEL- FORMATTED-ENABLE INTERRUPT LOGFORMAT-ENABLE INTERRUPT INSTRUCTION-ENABLE OPERAND1-INTERRUPT OP1 VALUE-INTERRUPT OPERAND2- OP2 VALUE- COMMENT-;enable the 1us interrupts ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Start of the main program loop. ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;A prompt is transmitted to the UART transmitter and then ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;a command can be entered and interpreted. ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-012 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-012 LABEL-prompt_input FORMATTED-CALL send_prompt LOGFORMAT-CALL send_prompt[115] INSTRUCTION-CALL OPERAND1-send_prompt OP1 VALUE-115 OPERAND2- OP2 VALUE- COMMENT-;Prompt 'KCPSM3>' ADDRESS-013 LABEL- FORMATTED-CALL receive_string LOGFORMAT-CALL receive_string[0C3] INSTRUCTION-CALL OPERAND1-receive_string OP1 VALUE-0C3 OPERAND2- OP2 VALUE- COMMENT-;obtain input string and maintain the time ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Parse the string and perform actions as required ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-014 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-014 LABEL- FORMATTED-LOAD s1, string_start LOGFORMAT-LOAD s1, string_start[20] INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-string_start OP2 VALUE-20 COMMENT- ADDRESS-015 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-016 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT-;carriage return does nothing ADDRESS-017 LABEL- FORMATTED-JUMP Z, prompt_input LOGFORMAT-JUMP Z, prompt_input[012] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-prompt_input OP2 VALUE-012 COMMENT- ADDRESS-018 LABEL- FORMATTED-COMPARE s0, character_T LOGFORMAT-COMPARE s0, character_T[54] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_T OP2 VALUE-54 COMMENT-;start of 'TIME' command? ADDRESS-019 LABEL- FORMATTED-JUMP Z, test_for_TIME LOGFORMAT-JUMP Z, test_for_TIME[01E] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-test_for_TIME OP2 VALUE-01E COMMENT- ADDRESS-01A LABEL- FORMATTED-COMPARE s0, character_A LOGFORMAT-COMPARE s0, character_A[41] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_A OP2 VALUE-41 COMMENT-;start of 'ALARM' command? ADDRESS-01B LABEL- FORMATTED-JUMP Z, test_for_ALARM LOGFORMAT-JUMP Z, test_for_ALARM[037] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-test_for_ALARM OP2 VALUE-037 COMMENT- ADDRESS-01C LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-01C LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;trap other command starts here ADDRESS-01C LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-01C LABEL-bad_input_command FORMATTED-CALL send_Syntax_Error LOGFORMAT-CALL send_Syntax_Error[0ED] INSTRUCTION-CALL OPERAND1-send_Syntax_Error OP1 VALUE-0ED OPERAND2- OP2 VALUE- COMMENT-;no valid command ADDRESS-01D LABEL- FORMATTED-JUMP Z, prompt_input LOGFORMAT-JUMP Z, prompt_input[012] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-prompt_input OP2 VALUE-012 COMMENT- ADDRESS-01E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-01E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-01E LABEL-test_for_TIME FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-01F LABEL- FORMATTED-COMPARE s0, character_I LOGFORMAT-COMPARE s0, character_I[49] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_I OP2 VALUE-49 COMMENT-;test for rest of 'TIME' ADDRESS-020 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-021 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-022 LABEL- FORMATTED-COMPARE s0, character_M LOGFORMAT-COMPARE s0, character_M[4D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_M OP2 VALUE-4D COMMENT- ADDRESS-023 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-024 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-025 LABEL- FORMATTED-COMPARE s0, character_E LOGFORMAT-COMPARE s0, character_E[45] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_E OP2 VALUE-45 COMMENT- ADDRESS-026 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-027 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;now have a valid TIME command to process ADDRESS-027 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-028 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT-;carriage return means display time ADDRESS-029 LABEL- FORMATTED-JUMP NZ, set_time_command LOGFORMAT-JUMP NZ, set_time_command[02C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-set_time_command OP2 VALUE-02C COMMENT- ADDRESS-02A LABEL- FORMATTED-CALL transmit_time LOGFORMAT-CALL transmit_time[0A8] INSTRUCTION-CALL OPERAND1-transmit_time OP1 VALUE-0A8 OPERAND2- OP2 VALUE- COMMENT-;transmit time to UART ADDRESS-02B LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-02C LABEL-set_time_command FORMATTED-COMPARE s0, character_space LOGFORMAT-COMPARE s0, character_space[20] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_space OP2 VALUE-20 COMMENT- ADDRESS-02D LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-02E LABEL- FORMATTED-CALL test_time_string LOGFORMAT-CALL test_time_string[06D] INSTRUCTION-CALL OPERAND1-test_time_string OP1 VALUE-06D OPERAND2- OP2 VALUE- COMMENT-;interpret 'hh:mm:ss' string ADDRESS-02F LABEL- FORMATTED-JUMP C, prompt_input LOGFORMAT-JUMP C, prompt_input[012] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-prompt_input OP2 VALUE-012 COMMENT-;test for invalid input ADDRESS-030 LABEL- FORMATTED-STORE s6, real_time_hours LOGFORMAT-STORE s6, real_time_hours[06] INSTRUCTION-STORE OPERAND1-s6 OP1 VALUE-s6 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT-;set new time into clock ADDRESS-031 LABEL- FORMATTED-STORE s5, real_time_minutes LOGFORMAT-STORE s5, real_time_minutes[07] INSTRUCTION-STORE OPERAND1-s5 OP1 VALUE-s5 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT- ADDRESS-032 LABEL- FORMATTED-STORE s4, real_time_seconds LOGFORMAT-STORE s4, real_time_seconds[08] INSTRUCTION-STORE OPERAND1-s4 OP1 VALUE-s4 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT- ADDRESS-033 LABEL- FORMATTED-STORE s0, ms_time_lsb LOGFORMAT-STORE s0, ms_time_lsb[04] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-ms_time_lsb OP2 VALUE-04 COMMENT-;clear 'ms' counter (s0=00) ADDRESS-034 LABEL- FORMATTED-STORE s0, ms_time_msb LOGFORMAT-STORE s0, ms_time_msb[05] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-ms_time_msb OP2 VALUE-05 COMMENT- ADDRESS-035 LABEL- FORMATTED-CALL transmit_time LOGFORMAT-CALL transmit_time[0A8] INSTRUCTION-CALL OPERAND1-transmit_time OP1 VALUE-0A8 OPERAND2- OP2 VALUE- COMMENT-;transmit new time to UART ADDRESS-036 LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-037 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-037 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-037 LABEL-test_for_ALARM FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-038 LABEL- FORMATTED-COMPARE s0, character_L LOGFORMAT-COMPARE s0, character_L[4C] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_L OP2 VALUE-4C COMMENT-;test for rest of 'ALARM' ADDRESS-039 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-03A LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-03B LABEL- FORMATTED-COMPARE s0, character_A LOGFORMAT-COMPARE s0, character_A[41] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_A OP2 VALUE-41 COMMENT- ADDRESS-03C LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-03D LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-03E LABEL- FORMATTED-COMPARE s0, character_R LOGFORMAT-COMPARE s0, character_R[52] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_R OP2 VALUE-52 COMMENT- ADDRESS-03F LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-040 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-041 LABEL- FORMATTED-COMPARE s0, character_M LOGFORMAT-COMPARE s0, character_M[4D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_M OP2 VALUE-4D COMMENT- ADDRESS-042 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-043 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;now have a valid ALARM command to process ADDRESS-043 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-044 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT-;carriage return means display alarm time ADDRESS-045 LABEL- FORMATTED-JUMP NZ, set_alarm_command LOGFORMAT-JUMP NZ, set_alarm_command[048] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-set_alarm_command OP2 VALUE-048 COMMENT- ADDRESS-046 LABEL- FORMATTED-CALL transmit_alarm_time LOGFORMAT-CALL transmit_alarm_time[0AC] INSTRUCTION-CALL OPERAND1-transmit_alarm_time OP1 VALUE-0AC OPERAND2- OP2 VALUE- COMMENT-;transmit time to UART ADDRESS-047 LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-048 LABEL-set_alarm_command FORMATTED-COMPARE s0, character_space LOGFORMAT-COMPARE s0, character_space[20] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_space OP2 VALUE-20 COMMENT-;test for ON or OFF command ADDRESS-049 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-04A LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-04B LABEL- FORMATTED-COMPARE s0, character_O LOGFORMAT-COMPARE s0, character_O[4F] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_O OP2 VALUE-4F COMMENT- ADDRESS-04C LABEL- FORMATTED-JUMP Z, set_alarm_on_off LOGFORMAT-JUMP Z, set_alarm_on_off[055] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-set_alarm_on_off OP2 VALUE-055 COMMENT- ADDRESS-04D LABEL- FORMATTED-SUB s1, 01 LOGFORMAT-SUB s1, 01 INSTRUCTION-SUB OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;move memory pointer back to first character of 'hh:mm:ss' string ADDRESS-04E LABEL- FORMATTED-CALL test_time_string LOGFORMAT-CALL test_time_string[06D] INSTRUCTION-CALL OPERAND1-test_time_string OP1 VALUE-06D OPERAND2- OP2 VALUE- COMMENT-;interpret 'hh:mm:ss' string ADDRESS-04F LABEL- FORMATTED-JUMP C, prompt_input LOGFORMAT-JUMP C, prompt_input[012] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-prompt_input OP2 VALUE-012 COMMENT-;test for invalid input ADDRESS-050 LABEL- FORMATTED-STORE s6, alarm_time_hours LOGFORMAT-STORE s6, alarm_time_hours[09] INSTRUCTION-STORE OPERAND1-s6 OP1 VALUE-s6 OPERAND2-alarm_time_hours OP2 VALUE-09 COMMENT-;set new time into clock ADDRESS-051 LABEL- FORMATTED-STORE s5, alarm_time_minutes LOGFORMAT-STORE s5, alarm_time_minutes[0A] INSTRUCTION-STORE OPERAND1-s5 OP1 VALUE-s5 OPERAND2-alarm_time_minutes OP2 VALUE-0A COMMENT- ADDRESS-052 LABEL- FORMATTED-STORE s4, alarm_time_seconds LOGFORMAT-STORE s4, alarm_time_seconds[0B] INSTRUCTION-STORE OPERAND1-s4 OP1 VALUE-s4 OPERAND2-alarm_time_seconds OP2 VALUE-0B COMMENT- ADDRESS-053 LABEL- FORMATTED-CALL transmit_alarm_time LOGFORMAT-CALL transmit_alarm_time[0AC] INSTRUCTION-CALL OPERAND1-transmit_alarm_time OP1 VALUE-0AC OPERAND2- OP2 VALUE- COMMENT-;transmit new alarm time and status ADDRESS-054 LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-055 LABEL-set_alarm_on_off FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-056 LABEL- FORMATTED-COMPARE s0, character_N LOGFORMAT-COMPARE s0, character_N[4E] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_N OP2 VALUE-4E COMMENT-;test for 'ON' ADDRESS-057 LABEL- FORMATTED-JUMP NZ, test_OFF LOGFORMAT-JUMP NZ, test_OFF[060] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-test_OFF OP2 VALUE-060 COMMENT- ADDRESS-058 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-059 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT- ADDRESS-05A LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-05B LABEL- FORMATTED-FETCH s0, alarm_status LOGFORMAT-FETCH s0, alarm_status[0C] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT-;turn alarm on ADDRESS-05C LABEL- FORMATTED-OR s0, alarm_armed LOGFORMAT-OR s0, alarm_armed[02] INSTRUCTION-OR OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_armed OP2 VALUE-02 COMMENT- ADDRESS-05D LABEL- FORMATTED-STORE s0, alarm_status LOGFORMAT-STORE s0, alarm_status[0C] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT- ADDRESS-05E LABEL- FORMATTED-CALL transmit_alarm_time LOGFORMAT-CALL transmit_alarm_time[0AC] INSTRUCTION-CALL OPERAND1-transmit_alarm_time OP1 VALUE-0AC OPERAND2- OP2 VALUE- COMMENT-;transmit alarm time and status ADDRESS-05F LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-060 LABEL-test_OFF FORMATTED-COMPARE s0, character_F LOGFORMAT-COMPARE s0, character_F[46] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_F OP2 VALUE-46 COMMENT-;test for for 'OFF' ADDRESS-061 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-062 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-063 LABEL- FORMATTED-COMPARE s0, character_F LOGFORMAT-COMPARE s0, character_F[46] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_F OP2 VALUE-46 COMMENT- ADDRESS-064 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-065 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-066 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT- ADDRESS-067 LABEL- FORMATTED-JUMP NZ, bad_input_command LOGFORMAT-JUMP NZ, bad_input_command[01C] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-bad_input_command OP2 VALUE-01C COMMENT- ADDRESS-068 LABEL- FORMATTED-LOAD s0, 00 LOGFORMAT-LOAD s0, 00 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-00 OP2 VALUE-00 COMMENT-;turn alarm off and stop an active alarm ADDRESS-069 LABEL- FORMATTED-STORE s0, alarm_status LOGFORMAT-STORE s0, alarm_status[0C] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT- ADDRESS-06A LABEL- FORMATTED-CALL alarm_drive LOGFORMAT-CALL alarm_drive[0A4] INSTRUCTION-CALL OPERAND1-alarm_drive OP1 VALUE-0A4 OPERAND2- OP2 VALUE- COMMENT-;turn off alarm ADDRESS-06B LABEL- FORMATTED-CALL transmit_alarm_time LOGFORMAT-CALL transmit_alarm_time[0AC] INSTRUCTION-CALL OPERAND1-transmit_alarm_time OP1 VALUE-0AC OPERAND2- OP2 VALUE- COMMENT-;transmit alarm time and status ADDRESS-06C LABEL- FORMATTED-JUMP prompt_input LOGFORMAT-JUMP prompt_input[012] INSTRUCTION-JUMP OPERAND1-prompt_input OP1 VALUE-012 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Read an 'hh:mm:ss' time string and provide new values. ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The string must be provided in successive scratch pad memory locations ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;with the s1 register containing the location of the first character. ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;A correct time specification will result in the return of new values ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;as follows:- ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; s6 = hours ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; s5 = minutes ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; s4 = seconds ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;If the syntax is incorrect or values are not in the correct ranges an ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;'Invalid Time' message will be transmitted and the CARRY flag will be set ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1, s6, s5 and s4 ADDRESS-06D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-06D LABEL-test_time_string FORMATTED-CALL 2char_to_value LOGFORMAT-CALL 2char_to_value[1EC] INSTRUCTION-CALL OPERAND1-2char_to_value OP1 VALUE-1EC OPERAND2- OP2 VALUE- COMMENT-;obtain hours value ADDRESS-06E LABEL- FORMATTED-JUMP C, invalid_time LOGFORMAT-JUMP C, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-invalid_time OP2 VALUE-08B COMMENT-;test for non-decimal characters ADDRESS-06F LABEL- FORMATTED-LOAD s6, s2 LOGFORMAT-LOAD s6, s2 INSTRUCTION-LOAD OPERAND1-s6 OP1 VALUE-s6 OPERAND2-s2 OP2 VALUE-s2 COMMENT-;remember hours ADDRESS-070 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment memory pointer past hours ADDRESS-071 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-072 LABEL- FORMATTED-COMPARE s0, character_colon LOGFORMAT-COMPARE s0, character_colon[3A] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_colon OP2 VALUE-3A COMMENT-;test for colon ADDRESS-073 LABEL- FORMATTED-JUMP NZ, invalid_time LOGFORMAT-JUMP NZ, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-074 LABEL- FORMATTED-CALL 2char_to_value LOGFORMAT-CALL 2char_to_value[1EC] INSTRUCTION-CALL OPERAND1-2char_to_value OP1 VALUE-1EC OPERAND2- OP2 VALUE- COMMENT-;obtain minutes value ADDRESS-075 LABEL- FORMATTED-JUMP C, invalid_time LOGFORMAT-JUMP C, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-invalid_time OP2 VALUE-08B COMMENT-;test for non-decimal characters ADDRESS-076 LABEL- FORMATTED-LOAD s5, s2 LOGFORMAT-LOAD s5, s2 INSTRUCTION-LOAD OPERAND1-s5 OP1 VALUE-s5 OPERAND2-s2 OP2 VALUE-s2 COMMENT-;remember minutes ADDRESS-077 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment memory pointer past minutes ADDRESS-078 LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-079 LABEL- FORMATTED-COMPARE s0, character_colon LOGFORMAT-COMPARE s0, character_colon[3A] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_colon OP2 VALUE-3A COMMENT-;test for colon ADDRESS-07A LABEL- FORMATTED-JUMP NZ, invalid_time LOGFORMAT-JUMP NZ, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-07B LABEL- FORMATTED-CALL 2char_to_value LOGFORMAT-CALL 2char_to_value[1EC] INSTRUCTION-CALL OPERAND1-2char_to_value OP1 VALUE-1EC OPERAND2- OP2 VALUE- COMMENT-;obtain seconds value ADDRESS-07C LABEL- FORMATTED-JUMP C, invalid_time LOGFORMAT-JUMP C, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-invalid_time OP2 VALUE-08B COMMENT-;test for non-decimal characters ADDRESS-07D LABEL- FORMATTED-LOAD s4, s2 LOGFORMAT-LOAD s4, s2 INSTRUCTION-LOAD OPERAND1-s4 OP1 VALUE-s4 OPERAND2-s2 OP2 VALUE-s2 COMMENT-;remember minutes ADDRESS-07E LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment memory pointer past seconds ADDRESS-07F LABEL- FORMATTED-CALL fetch_char_from_memory LOGFORMAT-CALL fetch_char_from_memory[091] INSTRUCTION-CALL OPERAND1-fetch_char_from_memory OP1 VALUE-091 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-080 LABEL- FORMATTED-COMPARE s0, character_CR LOGFORMAT-COMPARE s0, character_CR[0D] INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT-;finish with carriage return ADDRESS-081 LABEL- FORMATTED-JUMP NZ, invalid_time LOGFORMAT-JUMP NZ, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-082 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Have values for hh:mm:ss but need to test if each is valid range. ADDRESS-082 LABEL- FORMATTED-COMPARE s6, hours_in_a_day LOGFORMAT-COMPARE s6, hours_in_a_day[18] INSTRUCTION-COMPARE OPERAND1-s6 OP1 VALUE-s6 OPERAND2-hours_in_a_day OP2 VALUE-18 COMMENT- ADDRESS-083 LABEL- FORMATTED-JUMP NC, invalid_time LOGFORMAT-JUMP NC, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NC OP1 VALUE-NC OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-084 LABEL- FORMATTED-COMPARE s5, minutes_in_an_hour LOGFORMAT-COMPARE s5, minutes_in_an_hour[3C] INSTRUCTION-COMPARE OPERAND1-s5 OP1 VALUE-s5 OPERAND2-minutes_in_an_hour OP2 VALUE-3C COMMENT- ADDRESS-085 LABEL- FORMATTED-JUMP NC, invalid_time LOGFORMAT-JUMP NC, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NC OP1 VALUE-NC OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-086 LABEL- FORMATTED-COMPARE s4, seconds_in_a_minute LOGFORMAT-COMPARE s4, seconds_in_a_minute[3C] INSTRUCTION-COMPARE OPERAND1-s4 OP1 VALUE-s4 OPERAND2-seconds_in_a_minute OP2 VALUE-3C COMMENT- ADDRESS-087 LABEL- FORMATTED-JUMP NC, invalid_time LOGFORMAT-JUMP NC, invalid_time[08B] INSTRUCTION-JUMP OPERAND1-NC OP1 VALUE-NC OPERAND2-invalid_time OP2 VALUE-08B COMMENT- ADDRESS-088 LABEL- FORMATTED-LOAD s0, 00 LOGFORMAT-LOAD s0, 00 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-00 OP2 VALUE-00 COMMENT- ADDRESS-089 LABEL- FORMATTED-SR0 s0 LOGFORMAT-SR0 s0 INSTRUCTION-SR0 OPERAND1-s0 OP1 VALUE-s0 OPERAND2- OP2 VALUE- COMMENT-;reset CARRY flag (with s0=0) ADDRESS-08A LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;time string was OK ADDRESS-08B LABEL-invalid_time FORMATTED-CALL send_Invalid LOGFORMAT-CALL send_Invalid[125] INSTRUCTION-CALL OPERAND1-send_Invalid OP1 VALUE-125 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-08C LABEL- FORMATTED-CALL send_space LOGFORMAT-CALL send_space[0E7] INSTRUCTION-CALL OPERAND1-send_space OP1 VALUE-0E7 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-08D LABEL- FORMATTED-CALL send_Time LOGFORMAT-CALL send_Time[134] INSTRUCTION-CALL OPERAND1-send_Time OP1 VALUE-134 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-08E LABEL- FORMATTED-LOAD s0, 01 LOGFORMAT-LOAD s0, 01 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-08F LABEL- FORMATTED-SR0 s0 LOGFORMAT-SR0 s0 INSTRUCTION-SR0 OPERAND1-s0 OP1 VALUE-s0 OPERAND2- OP2 VALUE- COMMENT-;set CARRY flag ADDRESS-090 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;time string was bad ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Fetch character from memory, convert to upper case ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;and increment memory pointer. ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The memory pointer is provided in register s1. ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The character obtained is returned in register s0. ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0 and s1. ADDRESS-091 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-091 LABEL-fetch_char_from_memory FORMATTED-FETCH s0, (s1) LOGFORMAT-FETCH s0, (s1) INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s1) OP2 VALUE-(s1) COMMENT-;read character ADDRESS-092 LABEL- FORMATTED-CALL upper_case LOGFORMAT-CALL upper_case[1E2] INSTRUCTION-CALL OPERAND1-upper_case OP1 VALUE-1E2 OPERAND2- OP2 VALUE- COMMENT-;convert to upper case ADDRESS-093 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment memory pointer ADDRESS-094 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Read one character from the UART ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Character read will be returned in a register called 'UART_data' and will be ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;echoed to the UART transmitter. ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The routine first tests the receiver FIFO buffer to see if data is present. ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;If the FIFO is empty, the routine waits until there is a character to read. ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;As this could take any amount of time the wait loop includes a call to the ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;subroutine which updates the real time clock. ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0 and UART_data ADDRESS-095 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-095 LABEL-read_from_UART FORMATTED-INPUT s0, UART_status_port LOGFORMAT-INPUT s0, UART_status_port[00] INSTRUCTION-INPUT OPERAND1-s0 OP1 VALUE-s0 OPERAND2-UART_status_port OP2 VALUE-00 COMMENT-;test Rx_FIFO buffer ADDRESS-096 LABEL- FORMATTED-TEST s0, rx_data_present LOGFORMAT-TEST s0, rx_data_present[10] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-rx_data_present OP2 VALUE-10 COMMENT- ADDRESS-097 LABEL- FORMATTED-JUMP NZ, read_character LOGFORMAT-JUMP NZ, read_character[09A] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-read_character OP2 VALUE-09A COMMENT- ADDRESS-098 LABEL- FORMATTED-CALL update_time LOGFORMAT-CALL update_time[185] INSTRUCTION-CALL OPERAND1-update_time OP1 VALUE-185 OPERAND2- OP2 VALUE- COMMENT-;Perform useful operation whilst waiting ADDRESS-099 LABEL- FORMATTED-JUMP read_from_UART LOGFORMAT-JUMP read_from_UART[095] INSTRUCTION-JUMP OPERAND1-read_from_UART OP1 VALUE-095 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-09A LABEL-read_character FORMATTED-INPUT UART_data, UART_read_port LOGFORMAT-INPUT UART_data[sF], UART_read_port[01] INSTRUCTION-INPUT OPERAND1-UART_data OP1 VALUE-sF OPERAND2-UART_read_port OP2 VALUE-01 COMMENT-;read from FIFO ADDRESS-09B LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT-;echo received character ADDRESS-09C LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Transmit one character to the UART ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Character supplied in register called 'UART_data'. ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The routine first tests the transmit FIFO buffer to see if it is full. ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;If the FIFO is full, the routine waits until there is space which could ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;be as long as it takes to transmit one complete character. ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; Baud Rate Time per Character (10 bits) ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; 9600 1,024us ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; 19200 521us ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; 38400 260us ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; 57600 174us ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; 115200 87us ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Since this is a relatively long duration, the wait loop includes a ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;call to the subroutine which updates the real time clock. ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0 ADDRESS-09D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-09D LABEL-send_to_UART FORMATTED-INPUT s0, UART_status_port LOGFORMAT-INPUT s0, UART_status_port[00] INSTRUCTION-INPUT OPERAND1-s0 OP1 VALUE-s0 OPERAND2-UART_status_port OP2 VALUE-00 COMMENT-;test Tx_FIFO buffer ADDRESS-09E LABEL- FORMATTED-TEST s0, tx_full LOGFORMAT-TEST s0, tx_full[02] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-tx_full OP2 VALUE-02 COMMENT- ADDRESS-09F LABEL- FORMATTED-JUMP Z, UART_write LOGFORMAT-JUMP Z, UART_write[0A2] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-UART_write OP2 VALUE-0A2 COMMENT- ADDRESS-0A0 LABEL- FORMATTED-CALL update_time LOGFORMAT-CALL update_time[185] INSTRUCTION-CALL OPERAND1-update_time OP1 VALUE-185 OPERAND2- OP2 VALUE- COMMENT-;Perform useful operation whilst waiting ADDRESS-0A1 LABEL- FORMATTED-JUMP send_to_UART LOGFORMAT-JUMP send_to_UART[09D] INSTRUCTION-JUMP OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0A2 LABEL-UART_write FORMATTED-OUTPUT UART_data, UART_write_port LOGFORMAT-OUTPUT UART_data[sF], UART_write_port[01] INSTRUCTION-OUTPUT OPERAND1-UART_data OP1 VALUE-sF OPERAND2-UART_write_port OP2 VALUE-01 COMMENT- ADDRESS-0A3 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Alarm output ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Uses the alarm status scratch pad memory to set or reset the alarm ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;control bit on the alarm output port. ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0 ADDRESS-0A4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A4 LABEL-alarm_drive FORMATTED-FETCH s0, alarm_status LOGFORMAT-FETCH s0, alarm_status[0C] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT-;read status ADDRESS-0A5 LABEL- FORMATTED-AND s0, alarm_active LOGFORMAT-AND s0, alarm_active[01] INSTRUCTION-AND OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_active OP2 VALUE-01 COMMENT-;isolate bit0 ADDRESS-0A6 LABEL- FORMATTED-OUTPUT s0, alarm_port LOGFORMAT-OUTPUT s0, alarm_port[00] INSTRUCTION-OUTPUT OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_port OP2 VALUE-00 COMMENT- ADDRESS-0A7 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Transmit the time to the UART port in the format hh:mm:ss and end ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;with a carriage return. ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The time to converted must be stored in 3 scratch pad memory locations as ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;defined below. A register named 'store_pointer' must provide the address of ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;first location. ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; Address Data ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer ----> hours ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> minutes ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> seconds ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The routine first converts the time into an ASCII string stored in scratch ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;pad memory starting at a location specified by a constant named 'string_start'. ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The string will then be transmitted. ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1, s2, 'store_pointer' and 'UART_data'. ADDRESS-0A8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0A8 LABEL-transmit_time FORMATTED-LOAD store_pointer, real_time_hours LOGFORMAT-LOAD store_pointer[sE], real_time_hours[06] INSTRUCTION-LOAD OPERAND1-store_pointer OP1 VALUE-sE OPERAND2-real_time_hours OP2 VALUE-06 COMMENT-;locate current time in memory ADDRESS-0A9 LABEL- FORMATTED-CALL time_to_ASCII LOGFORMAT-CALL time_to_ASCII[160] INSTRUCTION-CALL OPERAND1-time_to_ASCII OP1 VALUE-160 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0AA LABEL- FORMATTED-CALL transmit_string LOGFORMAT-CALL transmit_string[0BC] INSTRUCTION-CALL OPERAND1-transmit_string OP1 VALUE-0BC OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0AB LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Transmit the alarm time and status to the UART port in the format hh:mm:ss and ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;ending with carriage return. ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The alarm time to converted must be stored in 3 scratch pad memory locations as ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;defined below. A register named 'store_pointer' must provide the address of ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;first location. ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; Address Data ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer ----> hours ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> minutes ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> seconds ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The routine first converts the time into an ASCII string stored in scratch ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;pad memory starting at a location specified by a constant named 'string_start'. ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The string will then be transmitted. ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1, s2, 'store_pointer' and 'UART_data'. ADDRESS-0AC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0AC LABEL-transmit_alarm_time FORMATTED-LOAD store_pointer, alarm_time_hours LOGFORMAT-LOAD store_pointer[sE], alarm_time_hours[09] INSTRUCTION-LOAD OPERAND1-store_pointer OP1 VALUE-sE OPERAND2-alarm_time_hours OP2 VALUE-09 COMMENT-;locate alarm time in memory ADDRESS-0AD LABEL- FORMATTED-CALL time_to_ASCII LOGFORMAT-CALL time_to_ASCII[160] INSTRUCTION-CALL OPERAND1-time_to_ASCII OP1 VALUE-160 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0AE LABEL- FORMATTED-CALL transmit_string LOGFORMAT-CALL transmit_string[0BC] INSTRUCTION-CALL OPERAND1-transmit_string OP1 VALUE-0BC OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0AF LABEL- FORMATTED-CALL send_Alarm LOGFORMAT-CALL send_Alarm[13D] INSTRUCTION-CALL OPERAND1-send_Alarm OP1 VALUE-13D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0B0 LABEL- FORMATTED-CALL send_space LOGFORMAT-CALL send_space[0E7] INSTRUCTION-CALL OPERAND1-send_space OP1 VALUE-0E7 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0B1 LABEL- FORMATTED-FETCH s0, alarm_status LOGFORMAT-FETCH s0, alarm_status[0C] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT-;read alarm status ADDRESS-0B2 LABEL- FORMATTED-TEST s0, alarm_active LOGFORMAT-TEST s0, alarm_active[01] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_active OP2 VALUE-01 COMMENT-;test for active ADDRESS-0B3 LABEL- FORMATTED-JUMP Z, test_armed LOGFORMAT-JUMP Z, test_armed[0B6] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-test_armed OP2 VALUE-0B6 COMMENT- ADDRESS-0B4 LABEL- FORMATTED-CALL send_Active LOGFORMAT-CALL send_Active[153] INSTRUCTION-CALL OPERAND1-send_Active OP1 VALUE-153 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0B5 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0B6 LABEL-test_armed FORMATTED-TEST s0, alarm_armed LOGFORMAT-TEST s0, alarm_armed[02] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_armed OP2 VALUE-02 COMMENT-;test for on ADDRESS-0B7 LABEL- FORMATTED-JUMP Z, alarm_is_off LOGFORMAT-JUMP Z, alarm_is_off[0BA] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-alarm_is_off OP2 VALUE-0BA COMMENT- ADDRESS-0B8 LABEL- FORMATTED-CALL send_ON LOGFORMAT-CALL send_ON[14E] INSTRUCTION-CALL OPERAND1-send_ON OP1 VALUE-14E OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0B9 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0BA LABEL-alarm_is_off FORMATTED-CALL send_OFF LOGFORMAT-CALL send_OFF[148] INSTRUCTION-CALL OPERAND1-send_OFF OP1 VALUE-148 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0BB LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Transmit ASCII string to UART ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;An ASCII string must be provided in scratch pad memory commencing at the ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;location specified by a constant named 'string_start'. The string must ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;end with a carriage return (0D). ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s1 and 'UART_data'. ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; s0 is then used in subroutine 'send_to_UART' ADDRESS-0BC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0BC LABEL-transmit_string FORMATTED-LOAD s1, string_start LOGFORMAT-LOAD s1, string_start[20] INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-string_start OP2 VALUE-20 COMMENT-;locate start of string ADDRESS-0BD LABEL-next_char_tx FORMATTED-FETCH UART_data, (s1) LOGFORMAT-FETCH UART_data[sF], (s1) INSTRUCTION-FETCH OPERAND1-UART_data OP1 VALUE-sF OPERAND2-(s1) OP2 VALUE-(s1) COMMENT-;read character from memory ADDRESS-0BE LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT-;transmit character ADDRESS-0BF LABEL- FORMATTED-COMPARE UART_data, character_CR LOGFORMAT-COMPARE UART_data[sF], character_CR[0D] INSTRUCTION-COMPARE OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_CR OP2 VALUE-0D COMMENT-;test for last character ADDRESS-0C0 LABEL- FORMATTED-RETURN Z LOGFORMAT-RETURN Z INSTRUCTION-RETURN OPERAND1-Z OP1 VALUE-Z OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0C1 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;move to next character ADDRESS-0C2 LABEL- FORMATTED-JUMP next_char_tx LOGFORMAT-JUMP next_char_tx[0BD] INSTRUCTION-JUMP OPERAND1-next_char_tx OP1 VALUE-0BD OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Receive ASCII string from UART ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;An ASCII string will be read from the UART and stored in scratch pad memory ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;commencing at the location specified by a constant named 'string_start'. ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The string will will have a maximum length of 16 characters including a ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;carriage return (0D) denoting the end of the string. ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;As each character is read, it is echoed to the UART transmitter. ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Some minor editing is supported using backspace (BS=08) which is used ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;to adjust what is stored in scratch pad memory and adjust the display ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;on the terminal screen using characters sent to the UART transmitter. ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;A test is made for the receiver FIFO becoming full. A full status is treated as ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;a potential error situation and will result in a 'Overflow Error' message being ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;transmitted to the UART, the receiver FIFO being purged of all data and an ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;empty string being stored (carriage return at first location). ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1, s2 and 'UART_data'. ADDRESS-0C3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0C3 LABEL-receive_string FORMATTED-LOAD s1, string_start LOGFORMAT-LOAD s1, string_start[20] INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-string_start OP2 VALUE-20 COMMENT-;locate start of string ADDRESS-0C4 LABEL- FORMATTED-LOAD s2, s1 LOGFORMAT-LOAD s2, s1 INSTRUCTION-LOAD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s1 OP2 VALUE-s1 COMMENT-;compute 16 character address ADDRESS-0C5 LABEL- FORMATTED-ADD s2, 10 LOGFORMAT-ADD s2, 10 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-10 OP2 VALUE-10 COMMENT- ADDRESS-0C6 LABEL-receive_full_test FORMATTED-INPUT s0, UART_status_port LOGFORMAT-INPUT s0, UART_status_port[00] INSTRUCTION-INPUT OPERAND1-s0 OP1 VALUE-s0 OPERAND2-UART_status_port OP2 VALUE-00 COMMENT-;test Rx_FIFO buffer for full ADDRESS-0C7 LABEL- FORMATTED-TEST s0, rx_full LOGFORMAT-TEST s0, rx_full[08] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-rx_full OP2 VALUE-08 COMMENT- ADDRESS-0C8 LABEL- FORMATTED-JUMP NZ, read_error LOGFORMAT-JUMP NZ, read_error[0DB] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-read_error OP2 VALUE-0DB COMMENT- ADDRESS-0C9 LABEL- FORMATTED-CALL read_from_UART LOGFORMAT-CALL read_from_UART[095] INSTRUCTION-CALL OPERAND1-read_from_UART OP1 VALUE-095 OPERAND2- OP2 VALUE- COMMENT-;obtain and echo character ADDRESS-0CA LABEL- FORMATTED-STORE UART_data, (s1) LOGFORMAT-STORE UART_data[sF], (s1) INSTRUCTION-STORE OPERAND1-UART_data OP1 VALUE-sF OPERAND2-(s1) OP2 VALUE-(s1) COMMENT-;write to memory ADDRESS-0CB LABEL- FORMATTED-COMPARE UART_data, character_CR LOGFORMAT-COMPARE UART_data[sF], character_CR[0D] INSTRUCTION-COMPARE OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_CR OP2 VALUE-0D COMMENT-;test for end of string ADDRESS-0CC LABEL- FORMATTED-RETURN Z LOGFORMAT-RETURN Z INSTRUCTION-RETURN OPERAND1-Z OP1 VALUE-Z OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0CD LABEL- FORMATTED-COMPARE UART_data, character_BS LOGFORMAT-COMPARE UART_data[sF], character_BS[08] INSTRUCTION-COMPARE OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_BS OP2 VALUE-08 COMMENT-;test for back space ADDRESS-0CE LABEL- FORMATTED-JUMP Z, BS_edit LOGFORMAT-JUMP Z, BS_edit[0D3] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-BS_edit OP2 VALUE-0D3 COMMENT- ADDRESS-0CF LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment memory pointer ADDRESS-0D0 LABEL- FORMATTED-COMPARE s1, s2 LOGFORMAT-COMPARE s1, s2 INSTRUCTION-COMPARE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-s2 OP2 VALUE-s2 COMMENT-;test for pointer exceeding 16 characters ADDRESS-0D1 LABEL- FORMATTED-JUMP NZ, receive_full_test LOGFORMAT-JUMP NZ, receive_full_test[0C6] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-receive_full_test OP2 VALUE-0C6 COMMENT-;next character ADDRESS-0D2 LABEL- FORMATTED-CALL send_backspace LOGFORMAT-CALL send_backspace[0EA] INSTRUCTION-CALL OPERAND1-send_backspace OP1 VALUE-0EA OPERAND2- OP2 VALUE- COMMENT-;hold end of string position on terminal display ADDRESS-0D3 LABEL-BS_edit FORMATTED-SUB s1, 01 LOGFORMAT-SUB s1, 01 INSTRUCTION-SUB OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;memory pointer back one ADDRESS-0D4 LABEL- FORMATTED-COMPARE s1, string_start LOGFORMAT-COMPARE s1, string_start[20] INSTRUCTION-COMPARE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-string_start OP2 VALUE-20 COMMENT-;test for under flow ADDRESS-0D5 LABEL- FORMATTED-JUMP C, string_start_again LOGFORMAT-JUMP C, string_start_again[0D9] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-string_start_again OP2 VALUE-0D9 COMMENT- ADDRESS-0D6 LABEL- FORMATTED-CALL send_space LOGFORMAT-CALL send_space[0E7] INSTRUCTION-CALL OPERAND1-send_space OP1 VALUE-0E7 OPERAND2- OP2 VALUE- COMMENT-;clear character at current position ADDRESS-0D7 LABEL- FORMATTED-CALL send_backspace LOGFORMAT-CALL send_backspace[0EA] INSTRUCTION-CALL OPERAND1-send_backspace OP1 VALUE-0EA OPERAND2- OP2 VALUE- COMMENT-;position cursor ADDRESS-0D8 LABEL- FORMATTED-JUMP receive_full_test LOGFORMAT-JUMP receive_full_test[0C6] INSTRUCTION-JUMP OPERAND1-receive_full_test OP1 VALUE-0C6 OPERAND2- OP2 VALUE- COMMENT-;next character ADDRESS-0D9 LABEL-string_start_again FORMATTED-CALL send_greater_than LOGFORMAT-CALL send_greater_than[122] INSTRUCTION-CALL OPERAND1-send_greater_than OP1 VALUE-122 OPERAND2- OP2 VALUE- COMMENT-;restore '>' at prompt ADDRESS-0DA LABEL- FORMATTED-JUMP receive_string LOGFORMAT-JUMP receive_string[0C3] INSTRUCTION-JUMP OPERAND1-receive_string OP1 VALUE-0C3 OPERAND2- OP2 VALUE- COMMENT-;begin again ADDRESS-0DB LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Receiver buffer overflow condition ADDRESS-0DB LABEL-read_error FORMATTED-CALL send_CR LOGFORMAT-CALL send_CR[0E4] INSTRUCTION-CALL OPERAND1-send_CR OP1 VALUE-0E4 OPERAND2- OP2 VALUE- COMMENT-;Transmit error message ADDRESS-0DC LABEL- FORMATTED-STORE UART_data, string_start LOGFORMAT-STORE UART_data[sF], string_start[20] INSTRUCTION-STORE OPERAND1-UART_data OP1 VALUE-sF OPERAND2-string_start OP2 VALUE-20 COMMENT-;empty string in memory (start with CR) ADDRESS-0DD LABEL- FORMATTED-CALL send_Overflow_Error LOGFORMAT-CALL send_Overflow_Error[0FA] INSTRUCTION-CALL OPERAND1-send_Overflow_Error OP1 VALUE-0FA OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0DE LABEL- FORMATTED-CALL send_CR LOGFORMAT-CALL send_CR[0E4] INSTRUCTION-CALL OPERAND1-send_CR OP1 VALUE-0E4 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0DF LABEL-clear_UART_Rx_loop FORMATTED-INPUT s0, UART_status_port LOGFORMAT-INPUT s0, UART_status_port[00] INSTRUCTION-INPUT OPERAND1-s0 OP1 VALUE-s0 OPERAND2-UART_status_port OP2 VALUE-00 COMMENT-;test Rx_FIFO buffer for data ADDRESS-0E0 LABEL- FORMATTED-TEST s0, rx_data_present LOGFORMAT-TEST s0, rx_data_present[10] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-rx_data_present OP2 VALUE-10 COMMENT- ADDRESS-0E1 LABEL- FORMATTED-RETURN Z LOGFORMAT-RETURN Z INSTRUCTION-RETURN OPERAND1-Z OP1 VALUE-Z OPERAND2- OP2 VALUE- COMMENT-;finish when buffer is empty ADDRESS-0E2 LABEL- FORMATTED-INPUT UART_data, UART_read_port LOGFORMAT-INPUT UART_data[sF], UART_read_port[01] INSTRUCTION-INPUT OPERAND1-UART_data OP1 VALUE-sF OPERAND2-UART_read_port OP2 VALUE-01 COMMENT-;read from FIFO and ignore ADDRESS-0E3 LABEL- FORMATTED-JUMP clear_UART_Rx_loop LOGFORMAT-JUMP clear_UART_Rx_loop[0DF] INSTRUCTION-JUMP OPERAND1-clear_UART_Rx_loop OP1 VALUE-0DF OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0E4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send Carriage Return to the UART ADDRESS-0E4 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E4 LABEL-send_CR FORMATTED-LOAD UART_data, character_CR LOGFORMAT-LOAD UART_data[sF], character_CR[0D] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_CR OP2 VALUE-0D COMMENT- ADDRESS-0E5 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0E6 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0E7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send a space to the UART ADDRESS-0E7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0E7 LABEL-send_space FORMATTED-LOAD UART_data, character_space LOGFORMAT-LOAD UART_data[sF], character_space[20] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_space OP2 VALUE-20 COMMENT- ADDRESS-0E8 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0E9 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0EA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0EA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0EA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send a back space to the UART ADDRESS-0EA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0EA LABEL-send_backspace FORMATTED-LOAD UART_data, character_BS LOGFORMAT-LOAD UART_data[sF], character_BS[08] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_BS OP2 VALUE-08 COMMENT- ADDRESS-0EB LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0EC LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0ED LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0ED LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Syntax Error' to the UART ADDRESS-0ED LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0ED LABEL-send_Syntax_Error FORMATTED-LOAD UART_data, character_S LOGFORMAT-LOAD UART_data[sF], character_S[53] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_S OP2 VALUE-53 COMMENT- ADDRESS-0EE LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0EF LABEL- FORMATTED-LOAD UART_data, character_y LOGFORMAT-LOAD UART_data[sF], character_y[79] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_y OP2 VALUE-79 COMMENT- ADDRESS-0F0 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0F1 LABEL- FORMATTED-LOAD UART_data, character_n LOGFORMAT-LOAD UART_data[sF], character_n[6E] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_n OP2 VALUE-6E COMMENT- ADDRESS-0F2 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0F3 LABEL- FORMATTED-LOAD UART_data, character_t LOGFORMAT-LOAD UART_data[sF], character_t[74] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_t OP2 VALUE-74 COMMENT- ADDRESS-0F4 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0F5 LABEL- FORMATTED-LOAD UART_data, character_a LOGFORMAT-LOAD UART_data[sF], character_a[61] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_a OP2 VALUE-61 COMMENT- ADDRESS-0F6 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0F7 LABEL- FORMATTED-LOAD UART_data, character_x LOGFORMAT-LOAD UART_data[sF], character_x[78] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_x OP2 VALUE-78 COMMENT- ADDRESS-0F8 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0F9 LABEL- FORMATTED-JUMP send_space_Error LOGFORMAT-JUMP send_space_Error[10A] INSTRUCTION-JUMP OPERAND1-send_space_Error OP1 VALUE-10A OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Overflow Error' to the UART ADDRESS-0FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-0FA LABEL-send_Overflow_Error FORMATTED-LOAD UART_data, character_O LOGFORMAT-LOAD UART_data[sF], character_O[4F] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_O OP2 VALUE-4F COMMENT- ADDRESS-0FB LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0FC LABEL- FORMATTED-LOAD UART_data, character_v LOGFORMAT-LOAD UART_data[sF], character_v[76] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_v OP2 VALUE-76 COMMENT- ADDRESS-0FD LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-0FE LABEL- FORMATTED-LOAD UART_data, character_e LOGFORMAT-LOAD UART_data[sF], character_e[65] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_e OP2 VALUE-65 COMMENT- ADDRESS-0FF LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-100 LABEL- FORMATTED-LOAD UART_data, character_r LOGFORMAT-LOAD UART_data[sF], character_r[72] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_r OP2 VALUE-72 COMMENT- ADDRESS-101 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-102 LABEL- FORMATTED-LOAD UART_data, character_f LOGFORMAT-LOAD UART_data[sF], character_f[66] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_f OP2 VALUE-66 COMMENT- ADDRESS-103 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-104 LABEL- FORMATTED-LOAD UART_data, character_l LOGFORMAT-LOAD UART_data[sF], character_l[6C] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_l OP2 VALUE-6C COMMENT- ADDRESS-105 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-106 LABEL- FORMATTED-LOAD UART_data, character_o LOGFORMAT-LOAD UART_data[sF], character_o[6F] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_o OP2 VALUE-6F COMMENT- ADDRESS-107 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-108 LABEL- FORMATTED-LOAD UART_data, character_w LOGFORMAT-LOAD UART_data[sF], character_w[77] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_w OP2 VALUE-77 COMMENT- ADDRESS-109 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-10A LABEL-send_space_Error FORMATTED-CALL send_space LOGFORMAT-CALL send_space[0E7] INSTRUCTION-CALL OPERAND1-send_space OP1 VALUE-0E7 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-10B LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-10B LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Error' to the UART ADDRESS-10B LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-10B LABEL-send_Error FORMATTED-LOAD UART_data, character_E LOGFORMAT-LOAD UART_data[sF], character_E[45] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_E OP2 VALUE-45 COMMENT- ADDRESS-10C LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-10D LABEL- FORMATTED-LOAD UART_data, character_r LOGFORMAT-LOAD UART_data[sF], character_r[72] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_r OP2 VALUE-72 COMMENT- ADDRESS-10E LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-10F LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-110 LABEL- FORMATTED-LOAD UART_data, character_o LOGFORMAT-LOAD UART_data[sF], character_o[6F] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_o OP2 VALUE-6F COMMENT- ADDRESS-111 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-112 LABEL- FORMATTED-LOAD UART_data, character_r LOGFORMAT-LOAD UART_data[sF], character_r[72] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_r OP2 VALUE-72 COMMENT- ADDRESS-113 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-114 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-115 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-115 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'KCPSM3>' prompt to the UART ADDRESS-115 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-115 LABEL-send_prompt FORMATTED-CALL send_CR LOGFORMAT-CALL send_CR[0E4] INSTRUCTION-CALL OPERAND1-send_CR OP1 VALUE-0E4 OPERAND2- OP2 VALUE- COMMENT-;start new line ADDRESS-116 LABEL- FORMATTED-LOAD UART_data, character_K LOGFORMAT-LOAD UART_data[sF], character_K[4B] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_K OP2 VALUE-4B COMMENT- ADDRESS-117 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-118 LABEL- FORMATTED-LOAD UART_data, character_C LOGFORMAT-LOAD UART_data[sF], character_C[43] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_C OP2 VALUE-43 COMMENT- ADDRESS-119 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-11A LABEL- FORMATTED-LOAD UART_data, character_P LOGFORMAT-LOAD UART_data[sF], character_P[50] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_P OP2 VALUE-50 COMMENT- ADDRESS-11B LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-11C LABEL- FORMATTED-LOAD UART_data, character_S LOGFORMAT-LOAD UART_data[sF], character_S[53] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_S OP2 VALUE-53 COMMENT- ADDRESS-11D LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-11E LABEL- FORMATTED-LOAD UART_data, character_M LOGFORMAT-LOAD UART_data[sF], character_M[4D] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_M OP2 VALUE-4D COMMENT- ADDRESS-11F LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-120 LABEL- FORMATTED-LOAD UART_data, character_3 LOGFORMAT-LOAD UART_data[sF], character_3[33] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_3 OP2 VALUE-33 COMMENT- ADDRESS-121 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-122 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-122 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send '>' character to the UART ADDRESS-122 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-122 LABEL-send_greater_than FORMATTED-LOAD UART_data, character_greater_than LOGFORMAT-LOAD UART_data[sF], character_greater_than[3E] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_greater_than OP2 VALUE-3E COMMENT- ADDRESS-123 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-124 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-125 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-125 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Invalid' string to the UART ADDRESS-125 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-125 LABEL-send_Invalid FORMATTED-LOAD UART_data, character_I LOGFORMAT-LOAD UART_data[sF], character_I[49] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_I OP2 VALUE-49 COMMENT- ADDRESS-126 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-127 LABEL- FORMATTED-LOAD UART_data, character_n LOGFORMAT-LOAD UART_data[sF], character_n[6E] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_n OP2 VALUE-6E COMMENT- ADDRESS-128 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-129 LABEL- FORMATTED-LOAD UART_data, character_v LOGFORMAT-LOAD UART_data[sF], character_v[76] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_v OP2 VALUE-76 COMMENT- ADDRESS-12A LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-12B LABEL- FORMATTED-LOAD UART_data, character_a LOGFORMAT-LOAD UART_data[sF], character_a[61] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_a OP2 VALUE-61 COMMENT- ADDRESS-12C LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-12D LABEL- FORMATTED-LOAD UART_data, character_l LOGFORMAT-LOAD UART_data[sF], character_l[6C] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_l OP2 VALUE-6C COMMENT- ADDRESS-12E LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-12F LABEL- FORMATTED-LOAD UART_data, character_i LOGFORMAT-LOAD UART_data[sF], character_i[69] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_i OP2 VALUE-69 COMMENT- ADDRESS-130 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-131 LABEL- FORMATTED-LOAD UART_data, character_d LOGFORMAT-LOAD UART_data[sF], character_d[64] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_d OP2 VALUE-64 COMMENT- ADDRESS-132 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-133 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-134 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-134 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Time' string to the UART ADDRESS-134 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-134 LABEL-send_Time FORMATTED-LOAD UART_data, character_T LOGFORMAT-LOAD UART_data[sF], character_T[54] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_T OP2 VALUE-54 COMMENT- ADDRESS-135 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-136 LABEL- FORMATTED-LOAD UART_data, character_i LOGFORMAT-LOAD UART_data[sF], character_i[69] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_i OP2 VALUE-69 COMMENT- ADDRESS-137 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-138 LABEL- FORMATTED-LOAD UART_data, character_m LOGFORMAT-LOAD UART_data[sF], character_m[6D] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_m OP2 VALUE-6D COMMENT- ADDRESS-139 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-13A LABEL- FORMATTED-LOAD UART_data, character_e LOGFORMAT-LOAD UART_data[sF], character_e[65] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_e OP2 VALUE-65 COMMENT- ADDRESS-13B LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-13C LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-13D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-13D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Alarm' string to the UART ADDRESS-13D LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-13D LABEL-send_Alarm FORMATTED-LOAD UART_data, character_A LOGFORMAT-LOAD UART_data[sF], character_A[41] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_A OP2 VALUE-41 COMMENT- ADDRESS-13E LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-13F LABEL- FORMATTED-LOAD UART_data, character_l LOGFORMAT-LOAD UART_data[sF], character_l[6C] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_l OP2 VALUE-6C COMMENT- ADDRESS-140 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-141 LABEL- FORMATTED-LOAD UART_data, character_a LOGFORMAT-LOAD UART_data[sF], character_a[61] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_a OP2 VALUE-61 COMMENT- ADDRESS-142 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-143 LABEL- FORMATTED-LOAD UART_data, character_r LOGFORMAT-LOAD UART_data[sF], character_r[72] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_r OP2 VALUE-72 COMMENT- ADDRESS-144 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-145 LABEL- FORMATTED-LOAD UART_data, character_m LOGFORMAT-LOAD UART_data[sF], character_m[6D] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_m OP2 VALUE-6D COMMENT- ADDRESS-146 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-147 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-148 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-148 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'OFF' string to the UART ADDRESS-148 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-148 LABEL-send_OFF FORMATTED-LOAD UART_data, character_O LOGFORMAT-LOAD UART_data[sF], character_O[4F] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_O OP2 VALUE-4F COMMENT- ADDRESS-149 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-14A LABEL- FORMATTED-LOAD UART_data, character_F LOGFORMAT-LOAD UART_data[sF], character_F[46] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_F OP2 VALUE-46 COMMENT- ADDRESS-14B LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-14C LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-14D LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-14E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-14E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'ON' string to the UART ADDRESS-14E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-14E LABEL-send_ON FORMATTED-LOAD UART_data, character_O LOGFORMAT-LOAD UART_data[sF], character_O[4F] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_O OP2 VALUE-4F COMMENT- ADDRESS-14F LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-150 LABEL- FORMATTED-LOAD UART_data, character_N LOGFORMAT-LOAD UART_data[sF], character_N[4E] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_N OP2 VALUE-4E COMMENT- ADDRESS-151 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-152 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-153 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-153 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Send 'Active' string to the UART ADDRESS-153 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-153 LABEL-send_Active FORMATTED-LOAD UART_data, character_A LOGFORMAT-LOAD UART_data[sF], character_A[41] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_A OP2 VALUE-41 COMMENT- ADDRESS-154 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-155 LABEL- FORMATTED-LOAD UART_data, character_c LOGFORMAT-LOAD UART_data[sF], character_c[63] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_c OP2 VALUE-63 COMMENT- ADDRESS-156 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-157 LABEL- FORMATTED-LOAD UART_data, character_t LOGFORMAT-LOAD UART_data[sF], character_t[74] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_t OP2 VALUE-74 COMMENT- ADDRESS-158 LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-159 LABEL- FORMATTED-LOAD UART_data, character_i LOGFORMAT-LOAD UART_data[sF], character_i[69] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_i OP2 VALUE-69 COMMENT- ADDRESS-15A LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-15B LABEL- FORMATTED-LOAD UART_data, character_v LOGFORMAT-LOAD UART_data[sF], character_v[76] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_v OP2 VALUE-76 COMMENT- ADDRESS-15C LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-15D LABEL- FORMATTED-LOAD UART_data, character_e LOGFORMAT-LOAD UART_data[sF], character_e[65] INSTRUCTION-LOAD OPERAND1-UART_data OP1 VALUE-sF OPERAND2-character_e OP2 VALUE-65 COMMENT- ADDRESS-15E LABEL- FORMATTED-CALL send_to_UART LOGFORMAT-CALL send_to_UART[09D] INSTRUCTION-CALL OPERAND1-send_to_UART OP1 VALUE-09D OPERAND2- OP2 VALUE- COMMENT- ADDRESS-15F LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Convert time to ASCII string in scratch pad memory. ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The time to converted must be stored in 3 scratch pad memory locations as ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;defined below. A register named 'store_pointer' must provide the address of ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;first location. ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; Address Data ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer ----> hours ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> minutes ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; store_pointer + 1 ----> seconds ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The resulting ASCII string will be stored in scratch pad memory starting at ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;a location specified by a constant named 'string_start'. The string will ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;take the format hh:mm:ss and end with a carriage return. ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1, s2 and 'store_pointer'. ADDRESS-160 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-160 LABEL-time_to_ASCII FORMATTED-LOAD s2, string_start LOGFORMAT-LOAD s2, string_start[20] INSTRUCTION-LOAD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-string_start OP2 VALUE-20 COMMENT-;location for string ADDRESS-161 LABEL- FORMATTED-FETCH s0, (store_pointer) LOGFORMAT-FETCH s0, (store_pointer)[(sE)] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(store_pointer) OP2 VALUE-(sE) COMMENT-;read hours value ADDRESS-162 LABEL- FORMATTED-CALL decimal_to_ASCII LOGFORMAT-CALL decimal_to_ASCII[17E] INSTRUCTION-CALL OPERAND1-decimal_to_ASCII OP1 VALUE-17E OPERAND2- OP2 VALUE- COMMENT-;convert to ASCII ADDRESS-163 LABEL- FORMATTED-STORE s1, (s2) LOGFORMAT-STORE s1, (s2) INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT-;write hours to string ADDRESS-164 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-165 LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-166 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-167 LABEL- FORMATTED-LOAD s0, character_colon LOGFORMAT-LOAD s0, character_colon[3A] INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_colon OP2 VALUE-3A COMMENT-;write ':' to string ADDRESS-168 LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-169 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-16A LABEL- FORMATTED-ADD store_pointer, 01 LOGFORMAT-ADD store_pointer[sE], 01 INSTRUCTION-ADD OPERAND1-store_pointer OP1 VALUE-sE OPERAND2-01 OP2 VALUE-01 COMMENT-;move to minutes ADDRESS-16B LABEL- FORMATTED-FETCH s0, (store_pointer) LOGFORMAT-FETCH s0, (store_pointer)[(sE)] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(store_pointer) OP2 VALUE-(sE) COMMENT-;read minutes value ADDRESS-16C LABEL- FORMATTED-CALL decimal_to_ASCII LOGFORMAT-CALL decimal_to_ASCII[17E] INSTRUCTION-CALL OPERAND1-decimal_to_ASCII OP1 VALUE-17E OPERAND2- OP2 VALUE- COMMENT-;convert to ASCII ADDRESS-16D LABEL- FORMATTED-STORE s1, (s2) LOGFORMAT-STORE s1, (s2) INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT-;write minutes to string ADDRESS-16E LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-16F LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-170 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-171 LABEL- FORMATTED-LOAD s0, character_colon LOGFORMAT-LOAD s0, character_colon[3A] INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_colon OP2 VALUE-3A COMMENT-;write ':' to string ADDRESS-172 LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-173 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-174 LABEL- FORMATTED-ADD store_pointer, 01 LOGFORMAT-ADD store_pointer[sE], 01 INSTRUCTION-ADD OPERAND1-store_pointer OP1 VALUE-sE OPERAND2-01 OP2 VALUE-01 COMMENT-;move to seconds ADDRESS-175 LABEL- FORMATTED-FETCH s0, (store_pointer) LOGFORMAT-FETCH s0, (store_pointer)[(sE)] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(store_pointer) OP2 VALUE-(sE) COMMENT-;read seconds value ADDRESS-176 LABEL- FORMATTED-CALL decimal_to_ASCII LOGFORMAT-CALL decimal_to_ASCII[17E] INSTRUCTION-CALL OPERAND1-decimal_to_ASCII OP1 VALUE-17E OPERAND2- OP2 VALUE- COMMENT-;convert to ASCII ADDRESS-177 LABEL- FORMATTED-STORE s1, (s2) LOGFORMAT-STORE s1, (s2) INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT-;write seconds to string ADDRESS-178 LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-179 LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-17A LABEL- FORMATTED-ADD s2, 01 LOGFORMAT-ADD s2, 01 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-01 OP2 VALUE-01 COMMENT- ADDRESS-17B LABEL- FORMATTED-LOAD s0, character_CR LOGFORMAT-LOAD s0, character_CR[0D] INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-character_CR OP2 VALUE-0D COMMENT-;finish string with carriage return ADDRESS-17C LABEL- FORMATTED-STORE s0, (s2) LOGFORMAT-STORE s0, (s2) INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s2) OP2 VALUE-(s2) COMMENT- ADDRESS-17D LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Convert value provided in register s0 into ASCII characters ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The value provided must in the range 0 to 99 and will be converted into ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;two ASCII characters. ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; The number of 'tens' will be representd by an ASCII character returned in register s1. ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; The number of 'units' will be representd by an ASCII character returned in register s0. ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The ASCII representations of '0' to '9' are 30 to 39 hexadecimal which is simply 30 hex added to ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;the actual decimal value. ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0 and s1. ADDRESS-17E LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-17E LABEL-decimal_to_ASCII FORMATTED-LOAD s1, 30 LOGFORMAT-LOAD s1, 30 INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-30 OP2 VALUE-30 COMMENT-;load 'tens' counter with ASCII for '0' ADDRESS-17F LABEL-test_for_ten FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment 'tens' value ADDRESS-180 LABEL- FORMATTED-SUB s0, 0A LOGFORMAT-SUB s0, 0A INSTRUCTION-SUB OPERAND1-s0 OP1 VALUE-s0 OPERAND2-0A OP2 VALUE-0A COMMENT-;try to subtract 10 from the supplied value ADDRESS-181 LABEL- FORMATTED-JUMP NC, test_for_ten LOGFORMAT-JUMP NC, test_for_ten[17F] INSTRUCTION-JUMP OPERAND1-NC OP1 VALUE-NC OPERAND2-test_for_ten OP2 VALUE-17F COMMENT-;repeat if subtraction was possible without underflow. ADDRESS-182 LABEL- FORMATTED-SUB s1, 01 LOGFORMAT-SUB s1, 01 INSTRUCTION-SUB OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;'tens' value one less ten due to underflow ADDRESS-183 LABEL- FORMATTED-ADD s0, 3A LOGFORMAT-ADD s0, 3A INSTRUCTION-ADD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-3A OP2 VALUE-3A COMMENT-;restore units value (the remainder) and convert to ASCII ADDRESS-184 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Real Time Clock ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Uses the 1us interrupt counter [int_counter_msb,int_counter_lsb] to determine how many ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;micro-seconds have elapsed since the last update. This allows for just over 65ms between ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;updates. Complete multiples of 1000us are used to update a 16-bit milli-second counter held ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;in scratch pad memory locations [ms_time_stamp_msb,ms_time_stamp_msb] which in turn ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;is used to update the real time hours, minutes and seconds clock held in scratch pad ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;memory locations 'real_time_hours', 'real_time_minutes' and 'real_time_seconds'. ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The routine uses default register names s0,s1,s2,s3,s4,s5. These are preserved in scratch pad ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;memory during the routine and restored before returning. ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Useful constants for real time clock operations ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL- FORMATTED-CONSTANT count_1000_lsb, E8 LOGFORMAT-CONSTANT count_1000_lsb, E8 INSTRUCTION-CONSTANT OPERAND1-count_1000_lsb OP1 VALUE-count_1000_lsb OPERAND2-E8 OP2 VALUE-E8 COMMENT-;lower 8-bits of 1000 count value ADDRESS-185 LABEL- FORMATTED-CONSTANT count_1000_msb, 03 LOGFORMAT-CONSTANT count_1000_msb, 03 INSTRUCTION-CONSTANT OPERAND1-count_1000_msb OP1 VALUE-count_1000_msb OPERAND2-03 OP2 VALUE-03 COMMENT-;upper 8-bits of 1000 count value ADDRESS-185 LABEL- FORMATTED-CONSTANT hours_in_a_day, 18 LOGFORMAT-CONSTANT hours_in_a_day, 18 INSTRUCTION-CONSTANT OPERAND1-hours_in_a_day OP1 VALUE-hours_in_a_day OPERAND2-18 OP2 VALUE-18 COMMENT-;24 hours in a day ADDRESS-185 LABEL- FORMATTED-CONSTANT minutes_in_an_hour, 3C LOGFORMAT-CONSTANT minutes_in_an_hour, 3C INSTRUCTION-CONSTANT OPERAND1-minutes_in_an_hour OP1 VALUE-minutes_in_an_hour OPERAND2-3C OP2 VALUE-3C COMMENT-;60 minutes in an hour ADDRESS-185 LABEL- FORMATTED-CONSTANT seconds_in_a_minute, 3C LOGFORMAT-CONSTANT seconds_in_a_minute, 3C INSTRUCTION-CONSTANT OPERAND1-seconds_in_a_minute OP1 VALUE-seconds_in_a_minute OPERAND2-3C OP2 VALUE-3C COMMENT-;60 seconds in a minute ADDRESS-185 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-185 LABEL-update_time FORMATTED-STORE s0, time_preserve0 LOGFORMAT-STORE s0, time_preserve0[10] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-time_preserve0 OP2 VALUE-10 COMMENT-;preserve contents of registers used during routine ADDRESS-186 LABEL- FORMATTED-STORE s1, time_preserve1 LOGFORMAT-STORE s1, time_preserve1[11] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-time_preserve1 OP2 VALUE-11 COMMENT- ADDRESS-187 LABEL- FORMATTED-STORE s2, time_preserve2 LOGFORMAT-STORE s2, time_preserve2[12] INSTRUCTION-STORE OPERAND1-s2 OP1 VALUE-s2 OPERAND2-time_preserve2 OP2 VALUE-12 COMMENT- ADDRESS-188 LABEL- FORMATTED-STORE s3, time_preserve3 LOGFORMAT-STORE s3, time_preserve3[13] INSTRUCTION-STORE OPERAND1-s3 OP1 VALUE-s3 OPERAND2-time_preserve3 OP2 VALUE-13 COMMENT- ADDRESS-189 LABEL- FORMATTED-STORE s4, time_preserve4 LOGFORMAT-STORE s4, time_preserve4[14] INSTRUCTION-STORE OPERAND1-s4 OP1 VALUE-s4 OPERAND2-time_preserve4 OP2 VALUE-14 COMMENT- ADDRESS-18A LABEL- FORMATTED-STORE s5, time_preserve5 LOGFORMAT-STORE s5, time_preserve5[15] INSTRUCTION-STORE OPERAND1-s5 OP1 VALUE-s5 OPERAND2-time_preserve5 OP2 VALUE-15 COMMENT- ADDRESS-18B LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-18B LABEL- FORMATTED-FETCH s2, us_time_stamp_lsb LOGFORMAT-FETCH s2, us_time_stamp_lsb[00] INSTRUCTION-FETCH OPERAND1-s2 OP1 VALUE-s2 OPERAND2-us_time_stamp_lsb OP2 VALUE-00 COMMENT-;read the previous 'us' time stamp into [s3,s2] ADDRESS-18C LABEL- FORMATTED-FETCH s3, us_time_stamp_msb LOGFORMAT-FETCH s3, us_time_stamp_msb[01] INSTRUCTION-FETCH OPERAND1-s3 OP1 VALUE-s3 OPERAND2-us_time_stamp_msb OP2 VALUE-01 COMMENT- ADDRESS-18D LABEL- FORMATTED-DISABLE INTERRUPT LOGFORMAT-DISABLE INTERRUPT INSTRUCTION-DISABLE OPERAND1-INTERRUPT OP1 VALUE-INTERRUPT OPERAND2- OP2 VALUE- COMMENT-;Read and store current 'us' time stamp provided by the interrupt ADDRESS-18E LABEL- FORMATTED-STORE int_counter_lsb, us_time_stamp_lsb LOGFORMAT-STORE int_counter_lsb[sD], us_time_stamp_lsb[00] INSTRUCTION-STORE OPERAND1-int_counter_lsb OP1 VALUE-sD OPERAND2-us_time_stamp_lsb OP2 VALUE-00 COMMENT-;counter. Interrupts are disabled to ensure that both bytes relate ADDRESS-18F LABEL- FORMATTED-STORE int_counter_msb, us_time_stamp_msb LOGFORMAT-STORE int_counter_msb[sC], us_time_stamp_msb[01] INSTRUCTION-STORE OPERAND1-int_counter_msb OP1 VALUE-sC OPERAND2-us_time_stamp_msb OP2 VALUE-01 COMMENT-;to the same count value. ADDRESS-190 LABEL- FORMATTED-ENABLE INTERRUPT LOGFORMAT-ENABLE INTERRUPT INSTRUCTION-ENABLE OPERAND1-INTERRUPT OP1 VALUE-INTERRUPT OPERAND2- OP2 VALUE- COMMENT- ADDRESS-191 LABEL- FORMATTED-FETCH s4, us_time_stamp_lsb LOGFORMAT-FETCH s4, us_time_stamp_lsb[00] INSTRUCTION-FETCH OPERAND1-s4 OP1 VALUE-s4 OPERAND2-us_time_stamp_lsb OP2 VALUE-00 COMMENT-;read the new 'us' time stamp in [s5,s4] ADDRESS-192 LABEL- FORMATTED-FETCH s5, us_time_stamp_msb LOGFORMAT-FETCH s5, us_time_stamp_msb[01] INSTRUCTION-FETCH OPERAND1-s5 OP1 VALUE-s5 OPERAND2-us_time_stamp_msb OP2 VALUE-01 COMMENT-; ADDRESS-193 LABEL- FORMATTED-SUB s4, s2 LOGFORMAT-SUB s4, s2 INSTRUCTION-SUB OPERAND1-s4 OP1 VALUE-s4 OPERAND2-s2 OP2 VALUE-s2 COMMENT-;calculate 'us' time difference [s5,s4] = [s5,s4] - [s3,s2] ADDRESS-194 LABEL- FORMATTED-SUBCY s5, s3 LOGFORMAT-SUBCY s5, s3 INSTRUCTION-SUBCY OPERAND1-s5 OP1 VALUE-s5 OPERAND2-s3 OP2 VALUE-s3 COMMENT-; (This works correctly even if counter has rolled over) ADDRESS-195 LABEL- FORMATTED-FETCH s2, us_time_lsb LOGFORMAT-FETCH s2, us_time_lsb[02] INSTRUCTION-FETCH OPERAND1-s2 OP1 VALUE-s2 OPERAND2-us_time_lsb OP2 VALUE-02 COMMENT-;read current 'us' time into [s3,s2] ADDRESS-196 LABEL- FORMATTED-FETCH s3, us_time_msb LOGFORMAT-FETCH s3, us_time_msb[03] INSTRUCTION-FETCH OPERAND1-s3 OP1 VALUE-s3 OPERAND2-us_time_msb OP2 VALUE-03 COMMENT- ADDRESS-197 LABEL- FORMATTED-ADD s2, s4 LOGFORMAT-ADD s2, s4 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s4 OP2 VALUE-s4 COMMENT-;add on the elapsed 'us' value [s3,s2] = [s3,s2] + [s5,s4] ADDRESS-198 LABEL- FORMATTED-ADDCY s3, s5 LOGFORMAT-ADDCY s3, s5 INSTRUCTION-ADDCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-s5 OP2 VALUE-s5 COMMENT- ADDRESS-199 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;determine how many 1000us (1ms) units there are (if any) in current 'us' time ADDRESS-199 LABEL- FORMATTED-LOAD s0, 00 LOGFORMAT-LOAD s0, 00 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-00 OP2 VALUE-00 COMMENT-;reset 'ms' counter ADDRESS-19A LABEL-test_1000us FORMATTED-SUB s2, count_1000_lsb LOGFORMAT-SUB s2, count_1000_lsb[E8] INSTRUCTION-SUB OPERAND1-s2 OP1 VALUE-s2 OPERAND2-count_1000_lsb OP2 VALUE-E8 COMMENT-;subtract 1000 from [s3,s2] ADDRESS-19B LABEL- FORMATTED-SUBCY s3, count_1000_msb LOGFORMAT-SUBCY s3, count_1000_msb[03] INSTRUCTION-SUBCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-count_1000_msb OP2 VALUE-03 COMMENT- ADDRESS-19C LABEL- FORMATTED-JUMP C, store_us_time LOGFORMAT-JUMP C, store_us_time[19F] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-store_us_time OP2 VALUE-19F COMMENT-;Carry indicates [s3,s2] was less than 1000us ADDRESS-19D LABEL- FORMATTED-ADD s0, 01 LOGFORMAT-ADD s0, 01 INSTRUCTION-ADD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment 'ms' elapsed because [s3,s2] was more or equal to 1000us ADDRESS-19E LABEL- FORMATTED-JUMP test_1000us LOGFORMAT-JUMP test_1000us[19A] INSTRUCTION-JUMP OPERAND1-test_1000us OP1 VALUE-19A OPERAND2- OP2 VALUE- COMMENT-;repeat to see if more than 1ms has elapsed ADDRESS-19F LABEL-store_us_time FORMATTED-ADD s2, count_1000_lsb LOGFORMAT-ADD s2, count_1000_lsb[E8] INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-count_1000_lsb OP2 VALUE-E8 COMMENT-;add 1000 to restore 'us' value ADDRESS-1A0 LABEL- FORMATTED-ADDCY s3, count_1000_msb LOGFORMAT-ADDCY s3, count_1000_msb[03] INSTRUCTION-ADDCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-count_1000_msb OP2 VALUE-03 COMMENT- ADDRESS-1A1 LABEL- FORMATTED-STORE s2, us_time_lsb LOGFORMAT-STORE s2, us_time_lsb[02] INSTRUCTION-STORE OPERAND1-s2 OP1 VALUE-s2 OPERAND2-us_time_lsb OP2 VALUE-02 COMMENT-;store the current value of 'us' ADDRESS-1A2 LABEL- FORMATTED-STORE s3, us_time_msb LOGFORMAT-STORE s3, us_time_msb[03] INSTRUCTION-STORE OPERAND1-s3 OP1 VALUE-s3 OPERAND2-us_time_msb OP2 VALUE-03 COMMENT- ADDRESS-1A3 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;s0 holds the number of 'ms' elapsed since last update (if any). ADDRESS-1A3 LABEL- FORMATTED-FETCH s2, ms_time_lsb LOGFORMAT-FETCH s2, ms_time_lsb[04] INSTRUCTION-FETCH OPERAND1-s2 OP1 VALUE-s2 OPERAND2-ms_time_lsb OP2 VALUE-04 COMMENT-;read current 'ms' time into [s3,s2] ADDRESS-1A4 LABEL- FORMATTED-FETCH s3, ms_time_msb LOGFORMAT-FETCH s3, ms_time_msb[05] INSTRUCTION-FETCH OPERAND1-s3 OP1 VALUE-s3 OPERAND2-ms_time_msb OP2 VALUE-05 COMMENT- ADDRESS-1A5 LABEL- FORMATTED-ADD s2, s0 LOGFORMAT-ADD s2, s0 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s0 OP2 VALUE-s0 COMMENT-;add on the elapsed 'ms' value [s3,s2] = [s3,s2] + s0 ADDRESS-1A6 LABEL- FORMATTED-ADDCY s3, 00 LOGFORMAT-ADDCY s3, 00 INSTRUCTION-ADDCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-00 OP2 VALUE-00 COMMENT- ADDRESS-1A7 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;determine if there are now more than 1000ms to form 1 second. ADDRESS-1A7 LABEL- FORMATTED-LOAD s0, 00 LOGFORMAT-LOAD s0, 00 INSTRUCTION-LOAD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-00 OP2 VALUE-00 COMMENT-;reset 'second' counter ADDRESS-1A8 LABEL- FORMATTED-SUB s2, count_1000_lsb LOGFORMAT-SUB s2, count_1000_lsb[E8] INSTRUCTION-SUB OPERAND1-s2 OP1 VALUE-s2 OPERAND2-count_1000_lsb OP2 VALUE-E8 COMMENT-;subtract 1000 from [s3,s2] ADDRESS-1A9 LABEL- FORMATTED-SUBCY s3, count_1000_msb LOGFORMAT-SUBCY s3, count_1000_msb[03] INSTRUCTION-SUBCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-count_1000_msb OP2 VALUE-03 COMMENT- ADDRESS-1AA LABEL- FORMATTED-JUMP C, restore_ms_time LOGFORMAT-JUMP C, restore_ms_time[1AD] INSTRUCTION-JUMP OPERAND1-C OP1 VALUE-C OPERAND2-restore_ms_time OP2 VALUE-1AD COMMENT-;Carry indicates [s3,s2] was less than 1000ms ADDRESS-1AB LABEL- FORMATTED-ADD s0, 01 LOGFORMAT-ADD s0, 01 INSTRUCTION-ADD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment 'second' elapsed because [s3,s2] was more or equal to 1000ms ADDRESS-1AC LABEL- FORMATTED-JUMP store_ms_time LOGFORMAT-JUMP store_ms_time[1AF] INSTRUCTION-JUMP OPERAND1-store_ms_time OP1 VALUE-1AF OPERAND2- OP2 VALUE- COMMENT-;new value of 'ms' is remainder of subtraction ADDRESS-1AD LABEL-restore_ms_time FORMATTED-ADD s2, count_1000_lsb LOGFORMAT-ADD s2, count_1000_lsb[E8] INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-count_1000_lsb OP2 VALUE-E8 COMMENT-;add 1000 to restore 'ms' value ADDRESS-1AE LABEL- FORMATTED-ADDCY s3, count_1000_msb LOGFORMAT-ADDCY s3, count_1000_msb[03] INSTRUCTION-ADDCY OPERAND1-s3 OP1 VALUE-s3 OPERAND2-count_1000_msb OP2 VALUE-03 COMMENT- ADDRESS-1AF LABEL-store_ms_time FORMATTED-STORE s2, ms_time_lsb LOGFORMAT-STORE s2, ms_time_lsb[04] INSTRUCTION-STORE OPERAND1-s2 OP1 VALUE-s2 OPERAND2-ms_time_lsb OP2 VALUE-04 COMMENT-;store the current value of 'ms' ADDRESS-1B0 LABEL- FORMATTED-STORE s3, ms_time_msb LOGFORMAT-STORE s3, ms_time_msb[05] INSTRUCTION-STORE OPERAND1-s3 OP1 VALUE-s3 OPERAND2-ms_time_msb OP2 VALUE-05 COMMENT- ADDRESS-1B1 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;s0 currently determines if one second needs to be added to the hh:mm:ss clock time ADDRESS-1B1 LABEL- FORMATTED-FETCH s1, real_time_seconds LOGFORMAT-FETCH s1, real_time_seconds[08] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT-;read seconds ADDRESS-1B2 LABEL- FORMATTED-ADD s1, s0 LOGFORMAT-ADD s1, s0 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-s0 OP2 VALUE-s0 COMMENT-;add one second if required by s0 ADDRESS-1B3 LABEL- FORMATTED-COMPARE s1, seconds_in_a_minute LOGFORMAT-COMPARE s1, seconds_in_a_minute[3C] INSTRUCTION-COMPARE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-seconds_in_a_minute OP2 VALUE-3C COMMENT-;test for 1 minute ADDRESS-1B4 LABEL- FORMATTED-JUMP Z, inc_minutes LOGFORMAT-JUMP Z, inc_minutes[1B7] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-inc_minutes OP2 VALUE-1B7 COMMENT- ADDRESS-1B5 LABEL- FORMATTED-STORE s1, real_time_seconds LOGFORMAT-STORE s1, real_time_seconds[08] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT-;store updated seconds ADDRESS-1B6 LABEL- FORMATTED-JUMP time_update_complete LOGFORMAT-JUMP time_update_complete[1C9] INSTRUCTION-JUMP OPERAND1-time_update_complete OP1 VALUE-1C9 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1B7 LABEL-inc_minutes FORMATTED-LOAD s1, 00 LOGFORMAT-LOAD s1, 00 INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-00 OP2 VALUE-00 COMMENT-;seconds become zero ADDRESS-1B8 LABEL- FORMATTED-STORE s1, real_time_seconds LOGFORMAT-STORE s1, real_time_seconds[08] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT- ADDRESS-1B9 LABEL- FORMATTED-FETCH s1, real_time_minutes LOGFORMAT-FETCH s1, real_time_minutes[07] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT-;read minutes ADDRESS-1BA LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment minutes ADDRESS-1BB LABEL- FORMATTED-COMPARE s1, minutes_in_an_hour LOGFORMAT-COMPARE s1, minutes_in_an_hour[3C] INSTRUCTION-COMPARE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-minutes_in_an_hour OP2 VALUE-3C COMMENT-;test for 1 hour ADDRESS-1BC LABEL- FORMATTED-JUMP Z, inc_hours LOGFORMAT-JUMP Z, inc_hours[1BF] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-inc_hours OP2 VALUE-1BF COMMENT- ADDRESS-1BD LABEL- FORMATTED-STORE s1, real_time_minutes LOGFORMAT-STORE s1, real_time_minutes[07] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT-;store updated minutes ADDRESS-1BE LABEL- FORMATTED-JUMP time_update_complete LOGFORMAT-JUMP time_update_complete[1C9] INSTRUCTION-JUMP OPERAND1-time_update_complete OP1 VALUE-1C9 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1BF LABEL-inc_hours FORMATTED-LOAD s1, 00 LOGFORMAT-LOAD s1, 00 INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-00 OP2 VALUE-00 COMMENT-;minutes become zero ADDRESS-1C0 LABEL- FORMATTED-STORE s1, real_time_minutes LOGFORMAT-STORE s1, real_time_minutes[07] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT- ADDRESS-1C1 LABEL- FORMATTED-FETCH s1, real_time_hours LOGFORMAT-FETCH s1, real_time_hours[06] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT-;read hours ADDRESS-1C2 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;increment hours ADDRESS-1C3 LABEL- FORMATTED-COMPARE s1, hours_in_a_day LOGFORMAT-COMPARE s1, hours_in_a_day[18] INSTRUCTION-COMPARE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-hours_in_a_day OP2 VALUE-18 COMMENT-;test for 24 hours ADDRESS-1C4 LABEL- FORMATTED-JUMP Z, reset_hours LOGFORMAT-JUMP Z, reset_hours[1C7] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-reset_hours OP2 VALUE-1C7 COMMENT- ADDRESS-1C5 LABEL- FORMATTED-STORE s1, real_time_hours LOGFORMAT-STORE s1, real_time_hours[06] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT-;store updated hours ADDRESS-1C6 LABEL- FORMATTED-JUMP time_update_complete LOGFORMAT-JUMP time_update_complete[1C9] INSTRUCTION-JUMP OPERAND1-time_update_complete OP1 VALUE-1C9 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1C7 LABEL-reset_hours FORMATTED-LOAD s1, 00 LOGFORMAT-LOAD s1, 00 INSTRUCTION-LOAD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-00 OP2 VALUE-00 COMMENT-;hours become zero ADDRESS-1C8 LABEL- FORMATTED-STORE s1, real_time_hours LOGFORMAT-STORE s1, real_time_hours[06] INSTRUCTION-STORE OPERAND1-s1 OP1 VALUE-s1 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT- ADDRESS-1C9 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1C9 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;With the time updated, there is then a test for time=alarm time ADDRESS-1C9 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1C9 LABEL-time_update_complete FORMATTED-FETCH s0, real_time_hours LOGFORMAT-FETCH s0, real_time_hours[06] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_hours OP2 VALUE-06 COMMENT- ADDRESS-1CA LABEL- FORMATTED-FETCH s1, alarm_time_hours LOGFORMAT-FETCH s1, alarm_time_hours[09] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-alarm_time_hours OP2 VALUE-09 COMMENT-;compare hours ADDRESS-1CB LABEL- FORMATTED-COMPARE s0, s1 LOGFORMAT-COMPARE s0, s1 INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-s1 OP2 VALUE-s1 COMMENT- ADDRESS-1CC LABEL- FORMATTED-JUMP NZ, finish_update LOGFORMAT-JUMP NZ, finish_update[1DB] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-finish_update OP2 VALUE-1DB COMMENT- ADDRESS-1CD LABEL- FORMATTED-FETCH s0, real_time_minutes LOGFORMAT-FETCH s0, real_time_minutes[07] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_minutes OP2 VALUE-07 COMMENT-;compare minutes ADDRESS-1CE LABEL- FORMATTED-FETCH s1, alarm_time_minutes LOGFORMAT-FETCH s1, alarm_time_minutes[0A] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-alarm_time_minutes OP2 VALUE-0A COMMENT- ADDRESS-1CF LABEL- FORMATTED-COMPARE s0, s1 LOGFORMAT-COMPARE s0, s1 INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-s1 OP2 VALUE-s1 COMMENT- ADDRESS-1D0 LABEL- FORMATTED-JUMP NZ, finish_update LOGFORMAT-JUMP NZ, finish_update[1DB] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-finish_update OP2 VALUE-1DB COMMENT- ADDRESS-1D1 LABEL- FORMATTED-FETCH s0, real_time_seconds LOGFORMAT-FETCH s0, real_time_seconds[08] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-real_time_seconds OP2 VALUE-08 COMMENT-;compare seconds ADDRESS-1D2 LABEL- FORMATTED-FETCH s1, alarm_time_seconds LOGFORMAT-FETCH s1, alarm_time_seconds[0B] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-alarm_time_seconds OP2 VALUE-0B COMMENT- ADDRESS-1D3 LABEL- FORMATTED-COMPARE s0, s1 LOGFORMAT-COMPARE s0, s1 INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-s1 OP2 VALUE-s1 COMMENT- ADDRESS-1D4 LABEL- FORMATTED-JUMP NZ, finish_update LOGFORMAT-JUMP NZ, finish_update[1DB] INSTRUCTION-JUMP OPERAND1-NZ OP1 VALUE-NZ OPERAND2-finish_update OP2 VALUE-1DB COMMENT- ADDRESS-1D5 LABEL- FORMATTED-FETCH s0, alarm_status LOGFORMAT-FETCH s0, alarm_status[0C] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT-;test if alarm is turned on ADDRESS-1D6 LABEL- FORMATTED-TEST s0, alarm_armed LOGFORMAT-TEST s0, alarm_armed[02] INSTRUCTION-TEST OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_armed OP2 VALUE-02 COMMENT- ADDRESS-1D7 LABEL- FORMATTED-JUMP Z, finish_update LOGFORMAT-JUMP Z, finish_update[1DB] INSTRUCTION-JUMP OPERAND1-Z OP1 VALUE-Z OPERAND2-finish_update OP2 VALUE-1DB COMMENT-;alarm was off ADDRESS-1D8 LABEL- FORMATTED-OR s0, alarm_active LOGFORMAT-OR s0, alarm_active[01] INSTRUCTION-OR OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_active OP2 VALUE-01 COMMENT-;activate alarm ADDRESS-1D9 LABEL- FORMATTED-STORE s0, alarm_status LOGFORMAT-STORE s0, alarm_status[0C] INSTRUCTION-STORE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-alarm_status OP2 VALUE-0C COMMENT- ADDRESS-1DA LABEL- FORMATTED-CALL alarm_drive LOGFORMAT-CALL alarm_drive[0A4] INSTRUCTION-CALL OPERAND1-alarm_drive OP1 VALUE-0A4 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1DB LABEL-finish_update FORMATTED-FETCH s0, time_preserve0 LOGFORMAT-FETCH s0, time_preserve0[10] INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-time_preserve0 OP2 VALUE-10 COMMENT-;restore the register contents ADDRESS-1DC LABEL- FORMATTED-FETCH s1, time_preserve1 LOGFORMAT-FETCH s1, time_preserve1[11] INSTRUCTION-FETCH OPERAND1-s1 OP1 VALUE-s1 OPERAND2-time_preserve1 OP2 VALUE-11 COMMENT- ADDRESS-1DD LABEL- FORMATTED-FETCH s2, time_preserve2 LOGFORMAT-FETCH s2, time_preserve2[12] INSTRUCTION-FETCH OPERAND1-s2 OP1 VALUE-s2 OPERAND2-time_preserve2 OP2 VALUE-12 COMMENT- ADDRESS-1DE LABEL- FORMATTED-FETCH s3, time_preserve3 LOGFORMAT-FETCH s3, time_preserve3[13] INSTRUCTION-FETCH OPERAND1-s3 OP1 VALUE-s3 OPERAND2-time_preserve3 OP2 VALUE-13 COMMENT- ADDRESS-1DF LABEL- FORMATTED-FETCH s4, time_preserve4 LOGFORMAT-FETCH s4, time_preserve4[14] INSTRUCTION-FETCH OPERAND1-s4 OP1 VALUE-s4 OPERAND2-time_preserve4 OP2 VALUE-14 COMMENT- ADDRESS-1E0 LABEL- FORMATTED-FETCH s5, time_preserve5 LOGFORMAT-FETCH s5, time_preserve5[15] INSTRUCTION-FETCH OPERAND1-s5 OP1 VALUE-s5 OPERAND2-time_preserve5 OP2 VALUE-15 COMMENT- ADDRESS-1E1 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Convert character to upper case ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The character supplied in register s0. ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;If the character is in the range 'a' to 'z', it is converted ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;to the equivalent upper case character in the range 'A' to 'Z'. ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;All other characters remain unchanged. ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0. ADDRESS-1E2 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E2 LABEL-upper_case FORMATTED-COMPARE s0, 61 LOGFORMAT-COMPARE s0, 61 INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-61 OP2 VALUE-61 COMMENT-;eliminate character codes below 'a' (61 hex) ADDRESS-1E3 LABEL- FORMATTED-RETURN C LOGFORMAT-RETURN C INSTRUCTION-RETURN OPERAND1-C OP1 VALUE-C OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1E4 LABEL- FORMATTED-COMPARE s0, 7B LOGFORMAT-COMPARE s0, 7B INSTRUCTION-COMPARE OPERAND1-s0 OP1 VALUE-s0 OPERAND2-7B OP2 VALUE-7B COMMENT-;eliminate character codes above 'z' (7A hex) ADDRESS-1E5 LABEL- FORMATTED-RETURN NC LOGFORMAT-RETURN NC INSTRUCTION-RETURN OPERAND1-NC OP1 VALUE-NC OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1E6 LABEL- FORMATTED-AND s0, DF LOGFORMAT-AND s0, DF INSTRUCTION-AND OPERAND1-s0 OP1 VALUE-s0 OPERAND2-DF OP2 VALUE-DF COMMENT-;mask bit5 to convert to upper case ADDRESS-1E7 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Convert character '0' to '9' to numerical value in range 0 to 9 ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The character supplied in register s0. If the character is in the ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;range '0' to '9', it is converted to the equivalent decimal value. ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Characters not in the range '0' to '9' are signified by the return ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;with the CARRY flag set. ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0. ADDRESS-1E8 LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1E8 LABEL-1char_to_value FORMATTED-ADD s0, C6 LOGFORMAT-ADD s0, C6 INSTRUCTION-ADD OPERAND1-s0 OP1 VALUE-s0 OPERAND2-C6 OP2 VALUE-C6 COMMENT-;reject character codes above '9' (39 hex) ADDRESS-1E9 LABEL- FORMATTED-RETURN C LOGFORMAT-RETURN C INSTRUCTION-RETURN OPERAND1-C OP1 VALUE-C OPERAND2- OP2 VALUE- COMMENT-;carry flag is set ADDRESS-1EA LABEL- FORMATTED-SUB s0, F6 LOGFORMAT-SUB s0, F6 INSTRUCTION-SUB OPERAND1-s0 OP1 VALUE-s0 OPERAND2-F6 OP2 VALUE-F6 COMMENT-;reject character codes below '0' (30 hex) ADDRESS-1EB LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;carry is set if value not in range ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Determine the numerical value of a two character decimal string held in ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;scratch pad memory such the result is in the range 0 to 99 (00 to 63 hex). ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The string must be stored as in two consecutive memory locations and the ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;location of the first (tens) character supplied in the s1 register. ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The result is provided in register s2. Strings not using characters in the ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;range '0' to '9' are signified by the return with the CARRY flag set. ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Registers used s0, s1 and s2. ADDRESS-1EC LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1EC LABEL-2char_to_value FORMATTED-FETCH s0, (s1) LOGFORMAT-FETCH s0, (s1) INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s1) OP2 VALUE-(s1) COMMENT-;read 'tens' character ADDRESS-1ED LABEL- FORMATTED-CALL 1char_to_value LOGFORMAT-CALL 1char_to_value[1E8] INSTRUCTION-CALL OPERAND1-1char_to_value OP1 VALUE-1E8 OPERAND2- OP2 VALUE- COMMENT-;convert to numerical value ADDRESS-1EE LABEL- FORMATTED-RETURN C LOGFORMAT-RETURN C INSTRUCTION-RETURN OPERAND1-C OP1 VALUE-C OPERAND2- OP2 VALUE- COMMENT-;bad character - CARRY set ADDRESS-1EF LABEL- FORMATTED-LOAD s2, s0 LOGFORMAT-LOAD s2, s0 INSTRUCTION-LOAD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s0 OP2 VALUE-s0 COMMENT- ADDRESS-1F0 LABEL- FORMATTED-SL0 s2 LOGFORMAT-SL0 s2 INSTRUCTION-SL0 OPERAND1-s2 OP1 VALUE-s2 OPERAND2- OP2 VALUE- COMMENT-;multiply 'tens' value by 10 (0A hex) ADDRESS-1F1 LABEL- FORMATTED-SL0 s2 LOGFORMAT-SL0 s2 INSTRUCTION-SL0 OPERAND1-s2 OP1 VALUE-s2 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1F2 LABEL- FORMATTED-ADD s2, s0 LOGFORMAT-ADD s2, s0 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s0 OP2 VALUE-s0 COMMENT- ADDRESS-1F3 LABEL- FORMATTED-SL0 s2 LOGFORMAT-SL0 s2 INSTRUCTION-SL0 OPERAND1-s2 OP1 VALUE-s2 OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1F4 LABEL- FORMATTED-ADD s1, 01 LOGFORMAT-ADD s1, 01 INSTRUCTION-ADD OPERAND1-s1 OP1 VALUE-s1 OPERAND2-01 OP2 VALUE-01 COMMENT-;read 'units' character ADDRESS-1F5 LABEL- FORMATTED-FETCH s0, (s1) LOGFORMAT-FETCH s0, (s1) INSTRUCTION-FETCH OPERAND1-s0 OP1 VALUE-s0 OPERAND2-(s1) OP2 VALUE-(s1) COMMENT- ADDRESS-1F6 LABEL- FORMATTED-CALL 1char_to_value LOGFORMAT-CALL 1char_to_value[1E8] INSTRUCTION-CALL OPERAND1-1char_to_value OP1 VALUE-1E8 OPERAND2- OP2 VALUE- COMMENT-;convert to numerical value ADDRESS-1F7 LABEL- FORMATTED-RETURN C LOGFORMAT-RETURN C INSTRUCTION-RETURN OPERAND1-C OP1 VALUE-C OPERAND2- OP2 VALUE- COMMENT-;bad character - CARRY set ADDRESS-1F8 LABEL- FORMATTED-ADD s2, s0 LOGFORMAT-ADD s2, s0 INSTRUCTION-ADD OPERAND1-s2 OP1 VALUE-s2 OPERAND2-s0 OP2 VALUE-s0 COMMENT-;add units to result and clear CARRY flag ADDRESS-1F9 LABEL- FORMATTED-RETURN LOGFORMAT-RETURN INSTRUCTION-RETURN OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT- ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Interrupt service routine (ISR) ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The interrupt is used to increment a 16-bit counter formed with two registers ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;called [int_counter_msb,int_counter_lsb]. This provides a count of the number ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;of micro-seconds elapsed. The counter is 'free running' in that it will count ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;up to 65,535 and then roll over to zero. The count value is then used in other ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;parts of the program as required and where it is less time critical. ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;The ISR only uses the specified counter registers ADDRESS-1FA LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FC LABEL- FORMATTED-ADDRESS 3FC LOGFORMAT-ADDRESS 3FC INSTRUCTION-ADDRESS OPERAND1-3FC OP1 VALUE-3FC OPERAND2- OP2 VALUE- COMMENT- ADDRESS-3FC LABEL-ISR FORMATTED-ADD int_counter_lsb, 01 LOGFORMAT-ADD int_counter_lsb[sD], 01 INSTRUCTION-ADD OPERAND1-int_counter_lsb OP1 VALUE-sD OPERAND2-01 OP2 VALUE-01 COMMENT-;add 1us to 16-bit counter ADDRESS-3FD LABEL- FORMATTED-ADDCY int_counter_msb, 00 LOGFORMAT-ADDCY int_counter_msb[sC], 00 INSTRUCTION-ADDCY OPERAND1-int_counter_msb OP1 VALUE-sC OPERAND2-00 OP2 VALUE-00 COMMENT- ADDRESS-3FE LABEL- FORMATTED-RETURNI ENABLE LOGFORMAT-RETURNI ENABLE INSTRUCTION-RETURNI OPERAND1-ENABLE OP1 VALUE-ENABLE OPERAND2- OP2 VALUE- COMMENT- ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Interrupt vector ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED-ADDRESS 3FF LOGFORMAT-ADDRESS 3FF INSTRUCTION-ADDRESS OPERAND1-3FF OP1 VALUE-3FF OPERAND2- OP2 VALUE- COMMENT- ADDRESS-3FF LABEL- FORMATTED-JUMP ISR LOGFORMAT-JUMP ISR[3FC] INSTRUCTION-JUMP OPERAND1-ISR OP1 VALUE-3FC OPERAND2- OP2 VALUE- COMMENT- ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;Useful constants ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;ASCII table ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-; ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_a, 61 LOGFORMAT-CONSTANT character_a, 61 INSTRUCTION-CONSTANT OPERAND1-character_a OP1 VALUE-character_a OPERAND2-61 OP2 VALUE-61 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_b, 62 LOGFORMAT-CONSTANT character_b, 62 INSTRUCTION-CONSTANT OPERAND1-character_b OP1 VALUE-character_b OPERAND2-62 OP2 VALUE-62 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_c, 63 LOGFORMAT-CONSTANT character_c, 63 INSTRUCTION-CONSTANT OPERAND1-character_c OP1 VALUE-character_c OPERAND2-63 OP2 VALUE-63 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_d, 64 LOGFORMAT-CONSTANT character_d, 64 INSTRUCTION-CONSTANT OPERAND1-character_d OP1 VALUE-character_d OPERAND2-64 OP2 VALUE-64 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_e, 65 LOGFORMAT-CONSTANT character_e, 65 INSTRUCTION-CONSTANT OPERAND1-character_e OP1 VALUE-character_e OPERAND2-65 OP2 VALUE-65 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_f, 66 LOGFORMAT-CONSTANT character_f, 66 INSTRUCTION-CONSTANT OPERAND1-character_f OP1 VALUE-character_f OPERAND2-66 OP2 VALUE-66 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_g, 67 LOGFORMAT-CONSTANT character_g, 67 INSTRUCTION-CONSTANT OPERAND1-character_g OP1 VALUE-character_g OPERAND2-67 OP2 VALUE-67 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_h, 68 LOGFORMAT-CONSTANT character_h, 68 INSTRUCTION-CONSTANT OPERAND1-character_h OP1 VALUE-character_h OPERAND2-68 OP2 VALUE-68 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_i, 69 LOGFORMAT-CONSTANT character_i, 69 INSTRUCTION-CONSTANT OPERAND1-character_i OP1 VALUE-character_i OPERAND2-69 OP2 VALUE-69 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_j, 6A LOGFORMAT-CONSTANT character_j, 6A INSTRUCTION-CONSTANT OPERAND1-character_j OP1 VALUE-character_j OPERAND2-6A OP2 VALUE-6A COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_k, 6B LOGFORMAT-CONSTANT character_k, 6B INSTRUCTION-CONSTANT OPERAND1-character_k OP1 VALUE-character_k OPERAND2-6B OP2 VALUE-6B COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_l, 6C LOGFORMAT-CONSTANT character_l, 6C INSTRUCTION-CONSTANT OPERAND1-character_l OP1 VALUE-character_l OPERAND2-6C OP2 VALUE-6C COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_m, 6D LOGFORMAT-CONSTANT character_m, 6D INSTRUCTION-CONSTANT OPERAND1-character_m OP1 VALUE-character_m OPERAND2-6D OP2 VALUE-6D COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_n, 6E LOGFORMAT-CONSTANT character_n, 6E INSTRUCTION-CONSTANT OPERAND1-character_n OP1 VALUE-character_n OPERAND2-6E OP2 VALUE-6E COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_o, 6F LOGFORMAT-CONSTANT character_o, 6F INSTRUCTION-CONSTANT OPERAND1-character_o OP1 VALUE-character_o OPERAND2-6F OP2 VALUE-6F COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_p, 70 LOGFORMAT-CONSTANT character_p, 70 INSTRUCTION-CONSTANT OPERAND1-character_p OP1 VALUE-character_p OPERAND2-70 OP2 VALUE-70 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_q, 71 LOGFORMAT-CONSTANT character_q, 71 INSTRUCTION-CONSTANT OPERAND1-character_q OP1 VALUE-character_q OPERAND2-71 OP2 VALUE-71 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_r, 72 LOGFORMAT-CONSTANT character_r, 72 INSTRUCTION-CONSTANT OPERAND1-character_r OP1 VALUE-character_r OPERAND2-72 OP2 VALUE-72 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_s, 73 LOGFORMAT-CONSTANT character_s, 73 INSTRUCTION-CONSTANT OPERAND1-character_s OP1 VALUE-character_s OPERAND2-73 OP2 VALUE-73 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_t, 74 LOGFORMAT-CONSTANT character_t, 74 INSTRUCTION-CONSTANT OPERAND1-character_t OP1 VALUE-character_t OPERAND2-74 OP2 VALUE-74 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_u, 75 LOGFORMAT-CONSTANT character_u, 75 INSTRUCTION-CONSTANT OPERAND1-character_u OP1 VALUE-character_u OPERAND2-75 OP2 VALUE-75 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_v, 76 LOGFORMAT-CONSTANT character_v, 76 INSTRUCTION-CONSTANT OPERAND1-character_v OP1 VALUE-character_v OPERAND2-76 OP2 VALUE-76 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_w, 77 LOGFORMAT-CONSTANT character_w, 77 INSTRUCTION-CONSTANT OPERAND1-character_w OP1 VALUE-character_w OPERAND2-77 OP2 VALUE-77 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_x, 78 LOGFORMAT-CONSTANT character_x, 78 INSTRUCTION-CONSTANT OPERAND1-character_x OP1 VALUE-character_x OPERAND2-78 OP2 VALUE-78 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_y, 79 LOGFORMAT-CONSTANT character_y, 79 INSTRUCTION-CONSTANT OPERAND1-character_y OP1 VALUE-character_y OPERAND2-79 OP2 VALUE-79 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_z, 7A LOGFORMAT-CONSTANT character_z, 7A INSTRUCTION-CONSTANT OPERAND1-character_z OP1 VALUE-character_z OPERAND2-7A OP2 VALUE-7A COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_A, 41 LOGFORMAT-CONSTANT character_A, 41 INSTRUCTION-CONSTANT OPERAND1-character_A OP1 VALUE-character_A OPERAND2-41 OP2 VALUE-41 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_B, 42 LOGFORMAT-CONSTANT character_B, 42 INSTRUCTION-CONSTANT OPERAND1-character_B OP1 VALUE-character_B OPERAND2-42 OP2 VALUE-42 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_C, 43 LOGFORMAT-CONSTANT character_C, 43 INSTRUCTION-CONSTANT OPERAND1-character_C OP1 VALUE-character_C OPERAND2-43 OP2 VALUE-43 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_D, 44 LOGFORMAT-CONSTANT character_D, 44 INSTRUCTION-CONSTANT OPERAND1-character_D OP1 VALUE-character_D OPERAND2-44 OP2 VALUE-44 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_E, 45 LOGFORMAT-CONSTANT character_E, 45 INSTRUCTION-CONSTANT OPERAND1-character_E OP1 VALUE-character_E OPERAND2-45 OP2 VALUE-45 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_F, 46 LOGFORMAT-CONSTANT character_F, 46 INSTRUCTION-CONSTANT OPERAND1-character_F OP1 VALUE-character_F OPERAND2-46 OP2 VALUE-46 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_G, 47 LOGFORMAT-CONSTANT character_G, 47 INSTRUCTION-CONSTANT OPERAND1-character_G OP1 VALUE-character_G OPERAND2-47 OP2 VALUE-47 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_H, 48 LOGFORMAT-CONSTANT character_H, 48 INSTRUCTION-CONSTANT OPERAND1-character_H OP1 VALUE-character_H OPERAND2-48 OP2 VALUE-48 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_I, 49 LOGFORMAT-CONSTANT character_I, 49 INSTRUCTION-CONSTANT OPERAND1-character_I OP1 VALUE-character_I OPERAND2-49 OP2 VALUE-49 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_J, 4A LOGFORMAT-CONSTANT character_J, 4A INSTRUCTION-CONSTANT OPERAND1-character_J OP1 VALUE-character_J OPERAND2-4A OP2 VALUE-4A COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_K, 4B LOGFORMAT-CONSTANT character_K, 4B INSTRUCTION-CONSTANT OPERAND1-character_K OP1 VALUE-character_K OPERAND2-4B OP2 VALUE-4B COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_L, 4C LOGFORMAT-CONSTANT character_L, 4C INSTRUCTION-CONSTANT OPERAND1-character_L OP1 VALUE-character_L OPERAND2-4C OP2 VALUE-4C COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_M, 4D LOGFORMAT-CONSTANT character_M, 4D INSTRUCTION-CONSTANT OPERAND1-character_M OP1 VALUE-character_M OPERAND2-4D OP2 VALUE-4D COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_N, 4E LOGFORMAT-CONSTANT character_N, 4E INSTRUCTION-CONSTANT OPERAND1-character_N OP1 VALUE-character_N OPERAND2-4E OP2 VALUE-4E COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_O, 4F LOGFORMAT-CONSTANT character_O, 4F INSTRUCTION-CONSTANT OPERAND1-character_O OP1 VALUE-character_O OPERAND2-4F OP2 VALUE-4F COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_P, 50 LOGFORMAT-CONSTANT character_P, 50 INSTRUCTION-CONSTANT OPERAND1-character_P OP1 VALUE-character_P OPERAND2-50 OP2 VALUE-50 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_Q, 51 LOGFORMAT-CONSTANT character_Q, 51 INSTRUCTION-CONSTANT OPERAND1-character_Q OP1 VALUE-character_Q OPERAND2-51 OP2 VALUE-51 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_R, 52 LOGFORMAT-CONSTANT character_R, 52 INSTRUCTION-CONSTANT OPERAND1-character_R OP1 VALUE-character_R OPERAND2-52 OP2 VALUE-52 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_S, 53 LOGFORMAT-CONSTANT character_S, 53 INSTRUCTION-CONSTANT OPERAND1-character_S OP1 VALUE-character_S OPERAND2-53 OP2 VALUE-53 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_T, 54 LOGFORMAT-CONSTANT character_T, 54 INSTRUCTION-CONSTANT OPERAND1-character_T OP1 VALUE-character_T OPERAND2-54 OP2 VALUE-54 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_U, 55 LOGFORMAT-CONSTANT character_U, 55 INSTRUCTION-CONSTANT OPERAND1-character_U OP1 VALUE-character_U OPERAND2-55 OP2 VALUE-55 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_V, 56 LOGFORMAT-CONSTANT character_V, 56 INSTRUCTION-CONSTANT OPERAND1-character_V OP1 VALUE-character_V OPERAND2-56 OP2 VALUE-56 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_W, 57 LOGFORMAT-CONSTANT character_W, 57 INSTRUCTION-CONSTANT OPERAND1-character_W OP1 VALUE-character_W OPERAND2-57 OP2 VALUE-57 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_X, 58 LOGFORMAT-CONSTANT character_X, 58 INSTRUCTION-CONSTANT OPERAND1-character_X OP1 VALUE-character_X OPERAND2-58 OP2 VALUE-58 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_Y, 59 LOGFORMAT-CONSTANT character_Y, 59 INSTRUCTION-CONSTANT OPERAND1-character_Y OP1 VALUE-character_Y OPERAND2-59 OP2 VALUE-59 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_Z, 5A LOGFORMAT-CONSTANT character_Z, 5A INSTRUCTION-CONSTANT OPERAND1-character_Z OP1 VALUE-character_Z OPERAND2-5A OP2 VALUE-5A COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_0, 30 LOGFORMAT-CONSTANT character_0, 30 INSTRUCTION-CONSTANT OPERAND1-character_0 OP1 VALUE-character_0 OPERAND2-30 OP2 VALUE-30 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_1, 31 LOGFORMAT-CONSTANT character_1, 31 INSTRUCTION-CONSTANT OPERAND1-character_1 OP1 VALUE-character_1 OPERAND2-31 OP2 VALUE-31 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_2, 32 LOGFORMAT-CONSTANT character_2, 32 INSTRUCTION-CONSTANT OPERAND1-character_2 OP1 VALUE-character_2 OPERAND2-32 OP2 VALUE-32 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_3, 33 LOGFORMAT-CONSTANT character_3, 33 INSTRUCTION-CONSTANT OPERAND1-character_3 OP1 VALUE-character_3 OPERAND2-33 OP2 VALUE-33 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_4, 34 LOGFORMAT-CONSTANT character_4, 34 INSTRUCTION-CONSTANT OPERAND1-character_4 OP1 VALUE-character_4 OPERAND2-34 OP2 VALUE-34 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_5, 35 LOGFORMAT-CONSTANT character_5, 35 INSTRUCTION-CONSTANT OPERAND1-character_5 OP1 VALUE-character_5 OPERAND2-35 OP2 VALUE-35 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_6, 36 LOGFORMAT-CONSTANT character_6, 36 INSTRUCTION-CONSTANT OPERAND1-character_6 OP1 VALUE-character_6 OPERAND2-36 OP2 VALUE-36 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_7, 37 LOGFORMAT-CONSTANT character_7, 37 INSTRUCTION-CONSTANT OPERAND1-character_7 OP1 VALUE-character_7 OPERAND2-37 OP2 VALUE-37 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_8, 38 LOGFORMAT-CONSTANT character_8, 38 INSTRUCTION-CONSTANT OPERAND1-character_8 OP1 VALUE-character_8 OPERAND2-38 OP2 VALUE-38 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_9, 39 LOGFORMAT-CONSTANT character_9, 39 INSTRUCTION-CONSTANT OPERAND1-character_9 OP1 VALUE-character_9 OPERAND2-39 OP2 VALUE-39 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_colon, 3A LOGFORMAT-CONSTANT character_colon, 3A INSTRUCTION-CONSTANT OPERAND1-character_colon OP1 VALUE-character_colon OPERAND2-3A OP2 VALUE-3A COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_semi_colon, 3B LOGFORMAT-CONSTANT character_semi_colon, 3B INSTRUCTION-CONSTANT OPERAND1-character_semi_colon OP1 VALUE-character_semi_colon OPERAND2-3B OP2 VALUE-3B COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_less_than, 3C LOGFORMAT-CONSTANT character_less_than, 3C INSTRUCTION-CONSTANT OPERAND1-character_less_than OP1 VALUE-character_less_than OPERAND2-3C OP2 VALUE-3C COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_greater_than, 3E LOGFORMAT-CONSTANT character_greater_than, 3E INSTRUCTION-CONSTANT OPERAND1-character_greater_than OP1 VALUE-character_greater_than OPERAND2-3E OP2 VALUE-3E COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_equals, 3D LOGFORMAT-CONSTANT character_equals, 3D INSTRUCTION-CONSTANT OPERAND1-character_equals OP1 VALUE-character_equals OPERAND2-3D OP2 VALUE-3D COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_space, 20 LOGFORMAT-CONSTANT character_space, 20 INSTRUCTION-CONSTANT OPERAND1-character_space OP1 VALUE-character_space OPERAND2-20 OP2 VALUE-20 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_CR, 0D LOGFORMAT-CONSTANT character_CR, 0D INSTRUCTION-CONSTANT OPERAND1-character_CR OP1 VALUE-character_CR OPERAND2-0D OP2 VALUE-0D COMMENT-;carriage return ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_question, 3F LOGFORMAT-CONSTANT character_question, 3F INSTRUCTION-CONSTANT OPERAND1-character_question OP1 VALUE-character_question OPERAND2-3F OP2 VALUE-3F COMMENT-;'?' ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_dollar, 24 LOGFORMAT-CONSTANT character_dollar, 24 INSTRUCTION-CONSTANT OPERAND1-character_dollar OP1 VALUE-character_dollar OPERAND2-24 OP2 VALUE-24 COMMENT- ADDRESS-3FF LABEL- FORMATTED-CONSTANT character_BS, 08 LOGFORMAT-CONSTANT character_BS, 08 INSTRUCTION-CONSTANT OPERAND1-character_BS OP1 VALUE-character_BS OPERAND2-08 OP2 VALUE-08 COMMENT-;Back Space command character ADDRESS-3FF LABEL- FORMATTED- LOGFORMAT- INSTRUCTION- OPERAND1- OP1 VALUE- OPERAND2- OP2 VALUE- COMMENT-;