From: ian Date: Mon, 2 May 2005 17:11:02 +0000 (+0000) Subject: harness A B C D E, H L Z X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=879e9cb80adc8bfec397a9505fe6d2602fcb299b;p=trains.git harness A B C D E, H L Z --- diff --git a/iwjpictest/harness.asm b/iwjpictest/harness.asm index 1d0bf6c..da865b1 100644 --- a/iwjpictest/harness.asm +++ b/iwjpictest/harness.asm @@ -27,6 +27,12 @@ ; @ confirm addresses and bitmask print R, ",", S, "&", B ; ~ confirm flags and high nybble print "`", F, "'", T ; +; predefined addresses and operations +; A B C D E set setting address to PORTx S := 0xf80-0xf84 +; H L Z set TRIS and LAT rel.to PORT modify *(S+0x09), *(S+0x92) +; according to B according to B, and print op +; NB address addition no carry +; ; byte operations ; SPC read and display print *R ; RET, NL set whole byte printset "S", (*S := E) @@ -115,14 +121,20 @@ command_loop check_last set 0 checkequal macro value, label + local check_ifnot add_lw check_last-value - bra_z label + bra_nz check_ifnot + bra label +check_ifnot check_last set value endm checkatleast macro minvalue, label ; if it takes, W gets char-minvalue add_lw check_last-minvalue - bra_nn label + local check_ifnot + bra_n check_ifnot + bra label +check_ifnot check_last set minvalue endm @@ -148,11 +160,19 @@ check_last set minvalue checkequal '-', command_bitwise_and_not checkequal '^', command_bitwise_xor + ; TRIS/LAT operations + checkequal 'H', command_trislat_h + checkequal 'L', command_trislat_l + checkequal 'Z', command_trislat_z + + checkatleast 'E'+1, command_ifnot_portaddr + checkatleast 'A', command_portaddr +command_ifnot_portaddr + checkatleast 'f'+1, command_wrong checkatleast 'a', command_letterhexdigit checkatleast '9'+1, command_wrong checkatleast '0', command_digit - command_wrong mov_lw '?' rcall serial_write_char @@ -215,6 +235,64 @@ command_address_confirm rcall confirm_bitmask bra command_endswitch +command_portaddr + add_lw PORTA + mov_wf s + set_f sh + mov_fw original_op + rcall serial_write_char + bra command_address_confirm + +;-------------------- +; trislat commands + +command_trislat_h + rcall trislat_setup_indf2_lat + ior_wff INDF2 +command_trislat_nz + rcall trislat_setup_indf2_tris + com_w + and_wff INDF2 +command_trislat_echo + mov_fw original_op + rcall serial_write_char + bra command_endswitch + +command_trislat_z + rcall trislat_setup_indf2_tris + ior_wff INDF2 + bra command_trislat_echo + +command_trislat_l + rcall trislat_setup_indf2_lat + com_w + and_wff INDF2 + bra command_trislat_nz + +;---------- +trislat_setup_indf2_lat +; W undefined B +; INDF2* undefined relevant LAT + mov_lw 0x09 + bra trislat_setup_indf2_any + +;---------- +trislat_setup_indf2_tris +; W undefined B +; INDF2* undefined relevant TRIS + mov_lw 0x12 + bra trislat_setup_indf2_any + +;---------- +trislat_setup_indf2_any +; W REG-PORT B +; INDF2* undefined relevant REG + add_wfw s + mov_wf FSR2L + set_f FSR2H + mov_fw b + return + ;---------- confirm_address ; prints R, ",", S