📄 telecrd1.lst
字号:
0043 1508 0096 bsf EECON1,WREN ; EEPROM Write Enable
0044 138B 0097 bcf INTCON,GIE ; Disable all interupts
0045 3055 0098 movlw 055 ; Magic Number #1 for EEPROM Write
0046 0089 0099 movwf EECON2 ; Store in EECON2
0047 30AA 0100 movlw 0aa ; Magic Number #2 for EEPROM Write
0048 0089 0101 movwf EECON2 ; Store in EECON2
0049 1488 0102 bsf EECON1,WR ; Execute EEPROM Write
004A 178B 0103 bsf INTCON,GIE ; Enable all interupts again!
004B 1283 0104 bcf STATUS,RP0 ; Access register bank 0
004C 2835 0105 goto MAIN ; Program main loop!
0106
004D 188B 0107 INTMAIN btfsc INTCON,INTF ; Check for INT Interupt
004E 2852 0108 goto INTMAIN2 ; If set, jump to INTMAIN2
004F 3010 0109 movlw B'00010000' ; Enable INT Interupt
0050 008B 0110 movwf INTCON ; Store in INTCON
0051 0008 0111 return
0112
0052 0113 INTMAIN2
0052 1283 0114 bcf STATUS,RP0 ; Access register bank 0
0053 1405 0115 bsf PORTA,CRD_DTA ; Set Data Output High
0054 1886 0116 btfsc PORTB,CRD_RST ; Check if reset is low
0055 2862 0117 goto NO_RST ; If not, skip reset sequence
0056 0801 0118 movfw RTCC ; Get RTCC Value
0057 009F 0119 movwf TEMP4 ; Store in TEMP4
0058 0181 0120 clrf RTCC ; Clear RTCC
0059 3055 0121 movlw 055 ; Subtract $55 from TEMP4
005A 021F 0122 subwf TEMP4,0 ; Subtract with $55 to check for reset
005B 1D03 2860 0123 bnz NO_RST2 ; If not zero, jump to NO_RST
005D 3002 0124 movlw 02 ; Unused one has $02 in FUSCNT
005E 0098 0125 movwf FUSCNT ; Store full value in FUSCNT
005F 141B 0126 bsf EE_FLAG,LSB ; Set EEPROM Write Flag
0060 108B 0127 NO_RST2 bcf INTCON,INTF ; Clear INT Interupt Flag
0061 0008 0128 return ; Mission Accomplished, return to sender
0129
0062 0801 0130 NO_RST movfw RTCC ; Get RTCC Value
0063 0099 0131 movwf BITCNT ; Copy it to BITCNT
0064 009C 0132 movwf TEMP1 ; Copy it to TEMP1
MPASM 01.02 Released TELECRD1.ASM 9-16-1994 10:19:21 PAGE 6
ISO 7816 Synchronous Memory Card Emulator
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0065 009D 0133 movwf TEMP2 ; Copy it to TEMP2
0066 3060 0134 movlw 060 ; Load W with $60
0067 021C 0135 subwf TEMP1,0 ; Subtract $60 from TEMP1
0068 1903 2881 0136 bz CREDIT ; If it is equal to $60
006A 1803 2881 0137 bc CREDIT ; or greater, then skip to units area
006C 0C9D 0138 rrf TEMP2 ; Rotate TEMP2 one step right
006D 0C9D 0139 rrf TEMP2 ; Rotate TEMP2 one step right
006E 0C9D 0140 rrf TEMP2 ; Rotate TEMP2 one step right
006F 300F 0141 movlw 0f ; Load W with $f
0070 059D 0142 andwf TEMP2,1 ; And TEMP2 with W register
0071 081D 0143 movfw TEMP2 ; Load W with TEMP2
0072 3E0C 0144 addlw 0c ; Add W with $0c
0073 0084 0145 movwf FSR ; Store data address in FSR
0074 0800 0146 movfw INDIR ; Get databyte pointed at by FSR
0075 009E 0147 movwf TEMP3 ; Store it in TEMP3
0076 3007 0148 movlw 07 ; Load W with $07
0077 059C 0149 andwf TEMP1,1 ; And TEMP1 with $07
0078 1903 287D 0150 bz NO_ROT ; If result is zero, skip shift loop
007A 0D9E 0151 ROTLOOP rlf TEMP3 ; Shift TEMP3 one step left
007B 0B9C 0152 decfsz TEMP1,1 ; Decrement TEMP1 until zero
007C 287A 0153 goto ROTLOOP ; If not zero, repeat until it is!
007D 1F9E 0154 NO_ROT btfss TEMP3,MSB ; Check if MSB of TEMP3 is set
007E 1005 0155 bcf PORTA,CRD_DTA ; Clear Data Output
007F 108B 0156 bcf INTCON,INTF ; Clear INT Interupt Flag
0080 0008 0157 return ; Mission Accomplished, return to sender
0158
0081 1F86 0159 CREDIT btfss PORTB,CRD_WE ; Check if Card Write Enable is High
0082 2889 0160 goto NO_WRT ; Abort write operation if not...
0083 1C86 0161 btfss PORTB,CRD_RST ; Check if Card Reset is High
0084 2889 0162 goto NO_WRT ; Abort write operation if not...
0085 0A98 0163 incf FUSCNT ; Increase used-up units counter
0086 141B 0164 bsf EE_FLAG,LSB ; Set EEPROM Write-Flag
0087 108B 0165 bcf INTCON,INTF ; Clear INT Interupt Flag
0088 0008 0166 return ; Mission Accomplished, return to sender
0167
0089 3060 0168 NO_WRT movlw 060 ; Load W with $60
008A 0299 0169 subwf BITCNT,1 ; Subtract $60 from BITCNT
008B 0818 0170 movfw FUSCNT ; Load W with FUSCNT
008C 0299 0171 subwf BITCNT,1 ; Subtract FUSCNT from BITCNT
008D 1C03 2890 0172 bnc FUSED ; If result is negative, unit is fused
008F 1005 0173 bcf PORTA,CRD_DTA ; Clear Data Output
0090 108B 0174 FUSED bcf INTCON,INTF ; Clear INT Interupt Flag
0091 0008 0175 return ; Mission Accomplished, return to sender
0176
0092 0782 0177 CARDID addwf PCL ; Card ID Data!!!
0093 3481 0178 retlw 0x081
0094 3442 0179 retlw 0x042
0095 3400 0180 retlw 0x000
0096 3411 0181 retlw 0x011
0097 3422 0182 retlw 0x022
0098 3433 0183 retlw 0x033
0099 3444 0184 retlw 0x044
009A 3455 0185 retlw 0x055
MPASM 01.02 Released TELECRD1.ASM 9-16-1994 10:19:21 PAGE 7
ISO 7816 Synchronous Memory Card Emulator
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
009B 3466 0186 retlw 0x066
009C 3477 0187 retlw 0x077
009D 3411 0188 retlw 0x011
009E 3484 0189 retlw 0x084
0190
0191 END
0192
MPASM 01.02 Released TELECRD1.ASM 9-16-1994 10:19:21 PAGE 8
ISO 7816 Synchronous Memory Card Emulator
SYMBOL TABLE
LABEL VALUE
ADCON0 0008
ADCON1 0008
ADCS0 0006
ADCS1 0007
ADGO 0002
ADIE 0006
ADIF 0001
ADON 0000
ADRES 0009
BITCNT 0019
C 0000
CARDID 0092
CARRY 0000
CHS0 0003
CHS1 0004
CRD_CLK 0000
CRD_DTA 0000
CRD_ID 000C
CRD_RST 0001
CRD_WE 0007
CREDIT 0081
DC 0001
DCARRY 0001
EEADR 0009
EECON1 0008
EECON2 0009
EECOPY 0028
EEDATA 0008
EEIE 0006
EEIF 0004
EE_FLAG 001B
FALSE 0000
FSR 0004
FUSCNT 0018
FUSED 0090
GIE 0007
INDIR 0000
INIT 0010
INTCON 000B
INTE 0004
INTEDG 0006
INTF 0001
INTMAIN 004D
INTMAIN2 0052
INTVEC 0004
IRP 0007
LOOPCNT 001A
LSB 0000
MAIN 0035
MSB 0007
NO 0000
NO_ROT 007D MPASM 01.02 Released TELECRD1.ASM 9-16-1994 10:19:21 PAGE 9
ISO 7816 Synchronous Memory Card Emulator
SYMBOL TABLE - Continued
LABEL VALUE
NO_RST 0062
NO_RST2 0060
NO_WRT 0089
OPTION 0001
PCFG0 0000
PCFG1 0001
PCL 0002
PCLATH 000A
PD 0003
PIC54 01FF
PIC55 01FF
PIC56 03FF
PIC57 07FF
PIC71 0000
PIC84 0000
PORTA 0005
PORTB 0006
PORTC 0007
PS0 0000
PS1 0001
PS2 0002
PSA 0003
P_DOWN 0003
RBIE 0003
RBIF 0000
RBPU 0007
RD 0000
ROTLOOP 007A
RP0 0005
RP1 0006
RTCC 0001
RTE 0004
RTIE 0005
RTIF 0002
RTS 0005
STATUS 0003
TEMP1 001C
TEMP2 001D
TEMP3 001E
TEMP4 001F
TEMP_S 002F
TEMP_W 002E
TO 0004
TRISA 0005
TRISB 0006
TRISC 0007
TRUE 0001
T_OUT 0004
WR 0001
WREN 0002
WRERR 0003
YES 0001 MPASM 01.02 Released TELECRD1.ASM 9-16-1994 10:19:21 PAGE 10
ISO 7816 Synchronous Memory Card Emulator
SYMBOL TABLE - Continued
LABEL VALUE
Z 0002
Z_BIT 0002
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X---XXXXXXXXX--- XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX- ---------------- ----------------
00C0 : ---------------- ---------------- ---------------- ----------------
2000 : XXXX---X-------- ---------------- ---------------- ----------------
2040 : ---------------- ---------------- ---------------- ----------------
All other memory blocks unused.
Errors : 0
Warnings : 5
Messages : 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -