From a90fc36217a862bc6ce18dc6d09fda727fd2470c Mon Sep 17 00:00:00 2001 From: lampmerchant <66847847+lampmerchant@users.noreply.github.com> Date: Thu, 9 Feb 2023 10:14:48 -0700 Subject: [PATCH] 20230209 --- firmware/one-chip.asm | 583 +++++------------------------------------- 1 file changed, 69 insertions(+), 514 deletions(-) diff --git a/firmware/one-chip.asm b/firmware/one-chip.asm index 67a7b8a..6fdd9fa 100644 --- a/firmware/one-chip.asm +++ b/firmware/one-chip.asm @@ -40,6 +40,7 @@ list P=PIC12F1840, F=INHX32, ST=OFF, MM=OFF, R=DEC, X=ON #include P12F1840.inc + errorlevel -302 ;Suppress "register not in bank 0" messages __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF ;_FOSC_INTOSC Internal oscillator, I/O on RA5 ;_WDTE_OFF Watchdog timer disabled @@ -73,6 +74,7 @@ DNOP macro ;;; Constants ;;; +;FLAGS: LR_FRM equ 7 ;Set when received frame registers have changed CTS_PLS equ 6 ;Set when a CTS frame should trigger a send from queue @@ -81,7 +83,7 @@ CTS_PLS equ 6 ;Set when a CTS frame should trigger a send from queue cblock 0x70 ;Bank-common registers - FLAGS + FLAGS ;You've got to have flags LR_BUF ;Receiver buffer LR_STATE ;Receiver state pointer UR_LEN ;Current length of UART receiver queue @@ -207,7 +209,7 @@ Init movlw B'11110000' movwf OSCCON - banksel IOCAN ;RA4 sets IOCAN[IOCAF3] on pos/neg edge + banksel IOCAN ;RA3 sets IOCAN[IOCAF3] on pos/neg edge movlw B'00001000' movwf IOCAN movwf IOCAP @@ -1372,522 +1374,75 @@ SendDoUartCts org 0x700 CrcLut1 - retlw 0x00 - retlw 0x89 - retlw 0x12 - retlw 0x9B - retlw 0x24 - retlw 0xAD - retlw 0x36 - retlw 0xBF - retlw 0x48 - retlw 0xC1 - retlw 0x5A - retlw 0xD3 - retlw 0x6C - retlw 0xE5 - retlw 0x7E - retlw 0xF7 - retlw 0x81 - retlw 0x08 - retlw 0x93 - retlw 0x1A - retlw 0xA5 - retlw 0x2C - retlw 0xB7 - retlw 0x3E - retlw 0xC9 - retlw 0x40 - retlw 0xDB - retlw 0x52 - retlw 0xED - retlw 0x64 - retlw 0xFF - retlw 0x76 - retlw 0x02 - retlw 0x8B - retlw 0x10 - retlw 0x99 - retlw 0x26 - retlw 0xAF - retlw 0x34 - retlw 0xBD - retlw 0x4A - retlw 0xC3 - retlw 0x58 - retlw 0xD1 - retlw 0x6E - retlw 0xE7 - retlw 0x7C - retlw 0xF5 - retlw 0x83 - retlw 0x0A - retlw 0x91 - retlw 0x18 - retlw 0xA7 - retlw 0x2E - retlw 0xB5 - retlw 0x3C - retlw 0xCB - retlw 0x42 - retlw 0xD9 - retlw 0x50 - retlw 0xEF - retlw 0x66 - retlw 0xFD - retlw 0x74 - retlw 0x04 - retlw 0x8D - retlw 0x16 - retlw 0x9F - retlw 0x20 - retlw 0xA9 - retlw 0x32 - retlw 0xBB - retlw 0x4C - retlw 0xC5 - retlw 0x5E - retlw 0xD7 - retlw 0x68 - retlw 0xE1 - retlw 0x7A - retlw 0xF3 - retlw 0x85 - retlw 0x0C - retlw 0x97 - retlw 0x1E - retlw 0xA1 - retlw 0x28 - retlw 0xB3 - retlw 0x3A - retlw 0xCD - retlw 0x44 - retlw 0xDF - retlw 0x56 - retlw 0xE9 - retlw 0x60 - retlw 0xFB - retlw 0x72 - retlw 0x06 - retlw 0x8F - retlw 0x14 - retlw 0x9D - retlw 0x22 - retlw 0xAB - retlw 0x30 - retlw 0xB9 - retlw 0x4E - retlw 0xC7 - retlw 0x5C - retlw 0xD5 - retlw 0x6A - retlw 0xE3 - retlw 0x78 - retlw 0xF1 - retlw 0x87 - retlw 0x0E - retlw 0x95 - retlw 0x1C - retlw 0xA3 - retlw 0x2A - retlw 0xB1 - retlw 0x38 - retlw 0xCF - retlw 0x46 - retlw 0xDD - retlw 0x54 - retlw 0xEB - retlw 0x62 - retlw 0xF9 - retlw 0x70 - retlw 0x08 - retlw 0x81 - retlw 0x1A - retlw 0x93 - retlw 0x2C - retlw 0xA5 - retlw 0x3E - retlw 0xB7 - retlw 0x40 - retlw 0xC9 - retlw 0x52 - retlw 0xDB - retlw 0x64 - retlw 0xED - retlw 0x76 - retlw 0xFF - retlw 0x89 - retlw 0x00 - retlw 0x9B - retlw 0x12 - retlw 0xAD - retlw 0x24 - retlw 0xBF - retlw 0x36 - retlw 0xC1 - retlw 0x48 - retlw 0xD3 - retlw 0x5A - retlw 0xE5 - retlw 0x6C - retlw 0xF7 - retlw 0x7E - retlw 0x0A - retlw 0x83 - retlw 0x18 - retlw 0x91 - retlw 0x2E - retlw 0xA7 - retlw 0x3C - retlw 0xB5 - retlw 0x42 - retlw 0xCB - retlw 0x50 - retlw 0xD9 - retlw 0x66 - retlw 0xEF - retlw 0x74 - retlw 0xFD - retlw 0x8B - retlw 0x02 - retlw 0x99 - retlw 0x10 - retlw 0xAF - retlw 0x26 - retlw 0xBD - retlw 0x34 - retlw 0xC3 - retlw 0x4A - retlw 0xD1 - retlw 0x58 - retlw 0xE7 - retlw 0x6E - retlw 0xF5 - retlw 0x7C - retlw 0x0C - retlw 0x85 - retlw 0x1E - retlw 0x97 - retlw 0x28 - retlw 0xA1 - retlw 0x3A - retlw 0xB3 - retlw 0x44 - retlw 0xCD - retlw 0x56 - retlw 0xDF - retlw 0x60 - retlw 0xE9 - retlw 0x72 - retlw 0xFB - retlw 0x8D - retlw 0x04 - retlw 0x9F - retlw 0x16 - retlw 0xA9 - retlw 0x20 - retlw 0xBB - retlw 0x32 - retlw 0xC5 - retlw 0x4C - retlw 0xD7 - retlw 0x5E - retlw 0xE1 - retlw 0x68 - retlw 0xF3 - retlw 0x7A - retlw 0x0E - retlw 0x87 - retlw 0x1C - retlw 0x95 - retlw 0x2A - retlw 0xA3 - retlw 0x38 - retlw 0xB1 - retlw 0x46 - retlw 0xCF - retlw 0x54 - retlw 0xDD - retlw 0x62 - retlw 0xEB - retlw 0x70 - retlw 0xF9 - retlw 0x8F - retlw 0x06 - retlw 0x9D - retlw 0x14 - retlw 0xAB - retlw 0x22 - retlw 0xB9 - retlw 0x30 - retlw 0xC7 - retlw 0x4E - retlw 0xD5 - retlw 0x5C - retlw 0xE3 - retlw 0x6A - retlw 0xF1 - retlw 0x78 + dt 0x00,0x89,0x12,0x9B,0x24,0xAD,0x36,0xBF + dt 0x48,0xC1,0x5A,0xD3,0x6C,0xE5,0x7E,0xF7 + dt 0x81,0x08,0x93,0x1A,0xA5,0x2C,0xB7,0x3E + dt 0xC9,0x40,0xDB,0x52,0xED,0x64,0xFF,0x76 + dt 0x02,0x8B,0x10,0x99,0x26,0xAF,0x34,0xBD + dt 0x4A,0xC3,0x58,0xD1,0x6E,0xE7,0x7C,0xF5 + dt 0x83,0x0A,0x91,0x18,0xA7,0x2E,0xB5,0x3C + dt 0xCB,0x42,0xD9,0x50,0xEF,0x66,0xFD,0x74 + dt 0x04,0x8D,0x16,0x9F,0x20,0xA9,0x32,0xBB + dt 0x4C,0xC5,0x5E,0xD7,0x68,0xE1,0x7A,0xF3 + dt 0x85,0x0C,0x97,0x1E,0xA1,0x28,0xB3,0x3A + dt 0xCD,0x44,0xDF,0x56,0xE9,0x60,0xFB,0x72 + dt 0x06,0x8F,0x14,0x9D,0x22,0xAB,0x30,0xB9 + dt 0x4E,0xC7,0x5C,0xD5,0x6A,0xE3,0x78,0xF1 + dt 0x87,0x0E,0x95,0x1C,0xA3,0x2A,0xB1,0x38 + dt 0xCF,0x46,0xDD,0x54,0xEB,0x62,0xF9,0x70 + dt 0x08,0x81,0x1A,0x93,0x2C,0xA5,0x3E,0xB7 + dt 0x40,0xC9,0x52,0xDB,0x64,0xED,0x76,0xFF + dt 0x89,0x00,0x9B,0x12,0xAD,0x24,0xBF,0x36 + dt 0xC1,0x48,0xD3,0x5A,0xE5,0x6C,0xF7,0x7E + dt 0x0A,0x83,0x18,0x91,0x2E,0xA7,0x3C,0xB5 + dt 0x42,0xCB,0x50,0xD9,0x66,0xEF,0x74,0xFD + dt 0x8B,0x02,0x99,0x10,0xAF,0x26,0xBD,0x34 + dt 0xC3,0x4A,0xD1,0x58,0xE7,0x6E,0xF5,0x7C + dt 0x0C,0x85,0x1E,0x97,0x28,0xA1,0x3A,0xB3 + dt 0x44,0xCD,0x56,0xDF,0x60,0xE9,0x72,0xFB + dt 0x8D,0x04,0x9F,0x16,0xA9,0x20,0xBB,0x32 + dt 0xC5,0x4C,0xD7,0x5E,0xE1,0x68,0xF3,0x7A + dt 0x0E,0x87,0x1C,0x95,0x2A,0xA3,0x38,0xB1 + dt 0x46,0xCF,0x54,0xDD,0x62,0xEB,0x70,0xF9 + dt 0x8F,0x06,0x9D,0x14,0xAB,0x22,0xB9,0x30 + dt 0xC7,0x4E,0xD5,0x5C,0xE3,0x6A,0xF1,0x78 + org 0x800 CrcLut2 - retlw 0x00 - retlw 0x11 - retlw 0x23 - retlw 0x32 - retlw 0x46 - retlw 0x57 - retlw 0x65 - retlw 0x74 - retlw 0x8C - retlw 0x9D - retlw 0xAF - retlw 0xBE - retlw 0xCA - retlw 0xDB - retlw 0xE9 - retlw 0xF8 - retlw 0x10 - retlw 0x01 - retlw 0x33 - retlw 0x22 - retlw 0x56 - retlw 0x47 - retlw 0x75 - retlw 0x64 - retlw 0x9C - retlw 0x8D - retlw 0xBF - retlw 0xAE - retlw 0xDA - retlw 0xCB - retlw 0xF9 - retlw 0xE8 - retlw 0x21 - retlw 0x30 - retlw 0x02 - retlw 0x13 - retlw 0x67 - retlw 0x76 - retlw 0x44 - retlw 0x55 - retlw 0xAD - retlw 0xBC - retlw 0x8E - retlw 0x9F - retlw 0xEB - retlw 0xFA - retlw 0xC8 - retlw 0xD9 - retlw 0x31 - retlw 0x20 - retlw 0x12 - retlw 0x03 - retlw 0x77 - retlw 0x66 - retlw 0x54 - retlw 0x45 - retlw 0xBD - retlw 0xAC - retlw 0x9E - retlw 0x8F - retlw 0xFB - retlw 0xEA - retlw 0xD8 - retlw 0xC9 - retlw 0x42 - retlw 0x53 - retlw 0x61 - retlw 0x70 - retlw 0x04 - retlw 0x15 - retlw 0x27 - retlw 0x36 - retlw 0xCE - retlw 0xDF - retlw 0xED - retlw 0xFC - retlw 0x88 - retlw 0x99 - retlw 0xAB - retlw 0xBA - retlw 0x52 - retlw 0x43 - retlw 0x71 - retlw 0x60 - retlw 0x14 - retlw 0x05 - retlw 0x37 - retlw 0x26 - retlw 0xDE - retlw 0xCF - retlw 0xFD - retlw 0xEC - retlw 0x98 - retlw 0x89 - retlw 0xBB - retlw 0xAA - retlw 0x63 - retlw 0x72 - retlw 0x40 - retlw 0x51 - retlw 0x25 - retlw 0x34 - retlw 0x06 - retlw 0x17 - retlw 0xEF - retlw 0xFE - retlw 0xCC - retlw 0xDD - retlw 0xA9 - retlw 0xB8 - retlw 0x8A - retlw 0x9B - retlw 0x73 - retlw 0x62 - retlw 0x50 - retlw 0x41 - retlw 0x35 - retlw 0x24 - retlw 0x16 - retlw 0x07 - retlw 0xFF - retlw 0xEE - retlw 0xDC - retlw 0xCD - retlw 0xB9 - retlw 0xA8 - retlw 0x9A - retlw 0x8B - retlw 0x84 - retlw 0x95 - retlw 0xA7 - retlw 0xB6 - retlw 0xC2 - retlw 0xD3 - retlw 0xE1 - retlw 0xF0 - retlw 0x08 - retlw 0x19 - retlw 0x2B - retlw 0x3A - retlw 0x4E - retlw 0x5F - retlw 0x6D - retlw 0x7C - retlw 0x94 - retlw 0x85 - retlw 0xB7 - retlw 0xA6 - retlw 0xD2 - retlw 0xC3 - retlw 0xF1 - retlw 0xE0 - retlw 0x18 - retlw 0x09 - retlw 0x3B - retlw 0x2A - retlw 0x5E - retlw 0x4F - retlw 0x7D - retlw 0x6C - retlw 0xA5 - retlw 0xB4 - retlw 0x86 - retlw 0x97 - retlw 0xE3 - retlw 0xF2 - retlw 0xC0 - retlw 0xD1 - retlw 0x29 - retlw 0x38 - retlw 0x0A - retlw 0x1B - retlw 0x6F - retlw 0x7E - retlw 0x4C - retlw 0x5D - retlw 0xB5 - retlw 0xA4 - retlw 0x96 - retlw 0x87 - retlw 0xF3 - retlw 0xE2 - retlw 0xD0 - retlw 0xC1 - retlw 0x39 - retlw 0x28 - retlw 0x1A - retlw 0x0B - retlw 0x7F - retlw 0x6E - retlw 0x5C - retlw 0x4D - retlw 0xC6 - retlw 0xD7 - retlw 0xE5 - retlw 0xF4 - retlw 0x80 - retlw 0x91 - retlw 0xA3 - retlw 0xB2 - retlw 0x4A - retlw 0x5B - retlw 0x69 - retlw 0x78 - retlw 0x0C - retlw 0x1D - retlw 0x2F - retlw 0x3E - retlw 0xD6 - retlw 0xC7 - retlw 0xF5 - retlw 0xE4 - retlw 0x90 - retlw 0x81 - retlw 0xB3 - retlw 0xA2 - retlw 0x5A - retlw 0x4B - retlw 0x79 - retlw 0x68 - retlw 0x1C - retlw 0x0D - retlw 0x3F - retlw 0x2E - retlw 0xE7 - retlw 0xF6 - retlw 0xC4 - retlw 0xD5 - retlw 0xA1 - retlw 0xB0 - retlw 0x82 - retlw 0x93 - retlw 0x6B - retlw 0x7A - retlw 0x48 - retlw 0x59 - retlw 0x2D - retlw 0x3C - retlw 0x0E - retlw 0x1F - retlw 0xF7 - retlw 0xE6 - retlw 0xD4 - retlw 0xC5 - retlw 0xB1 - retlw 0xA0 - retlw 0x92 - retlw 0x83 - retlw 0x7B - retlw 0x6A - retlw 0x58 - retlw 0x49 - retlw 0x3D - retlw 0x2C - retlw 0x1E - retlw 0x0F + dt 0x00,0x11,0x23,0x32,0x46,0x57,0x65,0x74 + dt 0x8C,0x9D,0xAF,0xBE,0xCA,0xDB,0xE9,0xF8 + dt 0x10,0x01,0x33,0x22,0x56,0x47,0x75,0x64 + dt 0x9C,0x8D,0xBF,0xAE,0xDA,0xCB,0xF9,0xE8 + dt 0x21,0x30,0x02,0x13,0x67,0x76,0x44,0x55 + dt 0xAD,0xBC,0x8E,0x9F,0xEB,0xFA,0xC8,0xD9 + dt 0x31,0x20,0x12,0x03,0x77,0x66,0x54,0x45 + dt 0xBD,0xAC,0x9E,0x8F,0xFB,0xEA,0xD8,0xC9 + dt 0x42,0x53,0x61,0x70,0x04,0x15,0x27,0x36 + dt 0xCE,0xDF,0xED,0xFC,0x88,0x99,0xAB,0xBA + dt 0x52,0x43,0x71,0x60,0x14,0x05,0x37,0x26 + dt 0xDE,0xCF,0xFD,0xEC,0x98,0x89,0xBB,0xAA + dt 0x63,0x72,0x40,0x51,0x25,0x34,0x06,0x17 + dt 0xEF,0xFE,0xCC,0xDD,0xA9,0xB8,0x8A,0x9B + dt 0x73,0x62,0x50,0x41,0x35,0x24,0x16,0x07 + dt 0xFF,0xEE,0xDC,0xCD,0xB9,0xA8,0x9A,0x8B + dt 0x84,0x95,0xA7,0xB6,0xC2,0xD3,0xE1,0xF0 + dt 0x08,0x19,0x2B,0x3A,0x4E,0x5F,0x6D,0x7C + dt 0x94,0x85,0xB7,0xA6,0xD2,0xC3,0xF1,0xE0 + dt 0x18,0x09,0x3B,0x2A,0x5E,0x4F,0x7D,0x6C + dt 0xA5,0xB4,0x86,0x97,0xE3,0xF2,0xC0,0xD1 + dt 0x29,0x38,0x0A,0x1B,0x6F,0x7E,0x4C,0x5D + dt 0xB5,0xA4,0x96,0x87,0xF3,0xE2,0xD0,0xC1 + dt 0x39,0x28,0x1A,0x0B,0x7F,0x6E,0x5C,0x4D + dt 0xC6,0xD7,0xE5,0xF4,0x80,0x91,0xA3,0xB2 + dt 0x4A,0x5B,0x69,0x78,0x0C,0x1D,0x2F,0x3E + dt 0xD6,0xC7,0xF5,0xE4,0x90,0x81,0xB3,0xA2 + dt 0x5A,0x4B,0x79,0x68,0x1C,0x0D,0x3F,0x2E + dt 0xE7,0xF6,0xC4,0xD5,0xA1,0xB0,0x82,0x93 + dt 0x6B,0x7A,0x48,0x59,0x2D,0x3C,0x0E,0x1F + dt 0xF7,0xE6,0xD4,0xC5,0xB1,0xA0,0x92,0x83 + dt 0x7B,0x6A,0x58,0x49,0x3D,0x2C,0x1E,0x0F ;;; LocalTalk Receiver Code ;;;