IDA1>CHM̻R-z߫Qo{ӈ B-tree v 1.6 (C) Pol 1990    T  thU(       vj^VC   tF_SK D< 5 . '         xaU NF ?7"     x qi b [O H A9 2 + $                th` Y R K D =5 . '                 {o h\ U N G @ 9 2 + $               ~ wkY;/'          yqi bVNF:2 + $          } vnf^ W P I B ; 4, %         }pd\ U N G?7/ ( !        ~rj c \T M F ?7 0 ) "    yqiVK?7 0$             w p\P IA9-!          y r k dTH A :2"         w ph aY R K D =-!          x q i a Z S L D = 6 / (              | u m e ^ W P H @ 8 (         N var_56_ptr'.*VDN DMM_Nines<~RH>5-UD> TDN DMM_Mode5m)SDNReceive_statusi_L?"&bZRD7N Flag_byte_51QDjPDN Buffer_00ODN Buffer_01~<ZNDN Buffer_02MD{N Buffer_03/-xsi|[>%LD:N Buffer_04uO1KD!N Buffer_05g2"83rvU:8JDNMonitor_ActivevlIDRNT_int?bGDNT_int_Counter=:m`ED6NNVM_Chk_Status[WM@DD!CD~BDADdIN Tick_counterD@AJS0 = Tick couter suspendNTC_running_flag|x?D>D3PC(ZRG?=D0cE error counterN FL2E_Errors0DNLast_Transmitted/DSE->FL error counterN E2FL_Errors.D=,D +D~Nvar_2AlECA{ *D$)D ;/(D'D1-&&Dzb[xl`L%DN Monitor_ModepI7 ~vh^N$DDzu"DSP5!D[ D S ReservedS RAM ControlSTransmit DataNP_SCI_TransmitND=S Receive DataNP_SCI_Receive285D+S$Transmit/Receive Control and StatusN P_SCI_Ctrlrm GDsSRate and Mode ControlN P_SCI_RateDiS"Input Capture register (low byte)N P_ICR_lowS#Input Capture register (high byte) N P_ICR_high S#Output Compare register (low byte)S$Output Compare register (high byte)N P_OCR_high DSCounter (low byte) NP_Counter_lowSCounter (high byte)NP_Counter_high DSTimer Control and StatusN P_Timer_CtrlD D DS I/O Port 2NP2DS I/O Port 1NP1JiQ:>.)D^S#I/O Port 2 direction (1=out, 0=in)N P2_directionDxB; Base Address: 0000h Range: 0000h - 10000h Loaded length: 10000h; Format : Binary fileo; File Name : D:\.Work\\\\ Solartron 7081\Firmware\1986\86float.binS#I/O Port 1 direction (1=out, 0=in)N P1_direction$J5S9 .DVNODEN $ MAX LINK       pd\TH A5 ."            {s l e ^V OG;3 ,           ume ^ W P I B: 3+ $    zn g ` YQE=5 . '               z sk d ]QIA :%xbV OG?7+#            ~vnWKC < 5 .&             znfZ SG @8 1) "       ~g[S L E= 6 / (     |gI<( ynbUM9,yn g `S 1 )    S K?3'  q    sA5    ZOC7)   B   u @ 8,      G ?   | A 9 . "        { s g Y 8           w k d M B ; / #    MG; reset the free running counter to 0xFFF8 with an MSB only write (seeG; Call Sync_Chk_Front to sync to a rising or falling edge on P16, thenS; ddddXNMains_FrequencyXxxxxXxxx~xxd;4; Write 0x15 to P2 direction (all bits are output).; Initialise P2 direction.vS; sd;N; Write 0x0A (=00001010b) to UART control (Transmit and receive enable bits).qS;dclS diXegXaexiaxgd;5; with E=1.2288Mhz that gives 300baud or 76.8k baud.F; E/4096 divider, if bit 7 clear set internal clock and E/16 divider.Q; Set rate - read data from port 1, if bit 7 (P17) set select internal clock and; Initialise serial port:;^SN; ---------------------------------------------------------------------------dcYS Vd;.; Write 0x30 (= Bits 4&5 output, rest input).; Initialise P1 directionTS;RdI;/; RAM test done - carry on with initialisationPS; Nx=Fx@x=XN; 4; scratch - maybe the RAM will be better next time?F; the complement of A. If the values don't match then start over fromF; with B. A counts down from 0xFF, B counts up from 0 so B always hasH; each byte read value & compare with A, then flip the bits and compareG; Now verify we can read back the value that was written earlier. For;S; 9x55X9X(*; E.g byte at #$20 contains 0x20 & so on.I; For each RAM location from #$20 to #$FF store the address at the byte.; 0S; Verify RAM. .x+d(x0'S All zero?%x"S'Have we decremented past start of ROM?X%S End of ROM;"; loop back to reset & try again.N; match write computed checksum byte to checksum addr for analyser tell, thenR; checksum (at #$E000), total should be zero. If OK carry on, if checksum doesn'tO; Verify ROM checksum - compute 2's complement sum of all ROM bytes, including;SN; ---------------------------------------------------------------------------dbdad`;.; Not clear what rest of initialisation does. S; dd;0; are for, as these locations are not reserved.9; It isn't clear from the datasheet what these registers;; Set bytes 4 and 5 to 0xffS;F@X.S(; Set stack to top of first page of RAMNResetS"ROM Zero CheckSum correction byteN ROM_CRC_AddD+NNVM_Page_A400DDNNVM_Page_A000$DDENFRSSLDlNOUT_TCcDYNOUT_ACbDNOUT_HIaDNOUT_LO~`DNGLUG_LO@DNGLUG_HI_RESET?DSTick counter (byte)NTick_counter_3DSTick counter (byte)NTick_counter_2/DNUser_Sample_DelaygD\TLBD.NIntegration_Done[IZD2DSTick counter (word)NTick_counter_w?+D4UD*<DVgDNState_MachineRJG&MDeZ DNBuffer_qByte_Ptr D_oWa DD~DgM}DS NBuffer_qByte_3yDS NBuffer_qByte_2uDS NBuffer_qByte_1qDS NBuffer_qByte_0mD\olDkN DMM_Range\Xy}ud#kD8jDS"OUT AC-" shadow storeNOUT_AC_shadow~]@iDS"OUT HI-" shadow storeNOUT_HI_shadow=/ zQ8-'hDS"OUT LO-" shadow storeNOUT_LO_shadowxW<|)#gD5 fD^eD dDN Transmit_Ptr~}wrfdU:\WbDK^D]Di[DcZDBN Transmit_Bufy7gHYD:m .XDk[K ;a   af'1/.@HC%.@ ..@HCurrent\ToolBars\View#.@HCurrent\ToolBars\Windows\Left+.@ .BS!C#A'{(B# D '{&#dS&,J'S$$ +$qG 5%##W$$?##cH$A]' b)D?%% @?'B@&CIC0C`ab:b$ cI Ber'B!91.@HDefault\ToolBars\Debugger commands\DockedTo Debugger .BG  .CG/.NChk_DMM_Mode_Range .x.DN Hex View-A .CG.-N$ hidden_areas sarray .d .ExK .?X.BNTransmit_Char .rXo .SG; reset the free running counter to 0xFFF8 with an MSB only write (see.VN var_56_ptrmbE:.#  } vk_WK: wl`;0$|pd X L @ 4 (   ymaVJ>2&u ncWB7+sg[H=1% wk_SF:.# s laUI=1% =xX;xP9X17xX5xP3X-1x9-x3)dS'xGdk#Xx` Xx#dkx x#dx?d2XNDMM_Range_Checkd3 ddyS dxMdgdgd=dd}XN RATIO_HI_offd3dduS dxMdgdgd=dd~d}XN RATIO_HI_onXd3Xxd3xdlddqS dxMdhSConnect to InpAmpd=ddPXNInput_RLD5_OnddmXS d3Xxd3xdlXxd3xdQdTXI~di|dLzdhxdgdJvXnsd;d:ipXenxvxM_YkXSixpexpad_xk]di[dLYxkWdgUdJSxkQdhOdKMdKX+IxFxMDd@di>dL2& uj c \ UM>3 , %  |pdXL@4(wk_SH<0$ ~rfZOC7+           x l ` T I  =  1  %            z n b [ T M F ? 8 ,              p e Y M A 6         BNTransmit_CharAX3d=STransmit Datad8S Receive DatadX%5S Receive DataxA3X02X)0x3d+S Receive Data)x2%x5!xd!XxxXN Receive_CharXxBxB xBXxd(d(XXxx1d%d*d*SNVM mode address correctiond(d%xd$xd&Xd(d&d&xd,xxx{xxxxxd$XxBxLd+xLd*d*X5X3x/d(d(xBxBxpd%xBXXxxd%Xz|Xszxuxsx|d$pXld*ixBexIbd%_xB[d%xLXXSUXLSxXNxLxUd$IXed*EX9Cd*Ad*;d(9xE7d$5x3x1d&d(/X-d&&d&$d) d)xBx xx x d$X Sp X Sp X SSet Carry flagd&x d,x xd(x d,x x xXXxxBxS4 = end of text stringX{NTransmit_TextxxBSEcho of the inputxXNReceive_Char_Echoxx{d+d*XXXxd*xXxd+d*XXd+XxXxd,d*d%d*d%XxxxXxxxXd,~d+d*9X{N Receive_Hexxd%uxBpxBd%7lXiXeexi[cXS`d%]xB[xcUxBSxcd%X5XLN Transmit_Hex;KXJX1Gx3DX@@xD=d,;xK9x{7xl5xL3XG1xJ/X,x(X#%x1#x( d,xKx{xlxLxX,d*d* d*d*x/d$xKxKxXdIxdX S"BYEEE!!" MessageNaByeeeDAxXxBXxxxXxxXxxxxXxxXSMonitor: Exit ?xx xXSMonitor: Print block of memoryxd$xXSMonitor: RAM/ROM Modexd$xSMonitor: NVM ModexxBxBS!Transmit Monitor prompt (! or ")d$xBxBX~d${xd^ xS"DIS EM FLOAT" messagevdIXlsNMonitor_EnterN aDisEmFloatDx^A]XU[dDWdDUx]RxxOXIMdDIxOFxCxdDX@NNVM_Chk_Pages;x8x7X.4x,.x7,X4'dVdX$S !dCdCdDx@x$XX dCdC xxXXdVxdVXxxXdVXXxxdS xXxxxdS xdCdCdDx@X{xdYxdZdCxad5d8dXS NTransmit_Msg_A5N Message_A5DxXxXxxxx~dCx{XXwNX2ABX$.sNAB2XD    a C %      q S 5    - ,g +I *+ )  ( ' & % $w #Y "; !      i K -      y [ =       k M /      { ] ??.-,+*)('&%$#"!      GCAS!C#A'{(B# D '{&#dS&,J'S$$ +$qG 5%##W$$?##cH$A]' b)D?%% @?'B@&CIC0C`ab:b$ cI Ber'B!  N IDA View-A?}O@ .BG  ~rf _SG; 4 - ~rg [ O C 7+  x qZA :/${ tiY4) rE 3    ~rg[OC7+     uiZJ:#p]QE9%    s laN G<( !    |h aV? 8-          ~ waU?3 , %~rVK?k`T2'wk`<0$    zcXA5)  uj^RF:." }qeY RG;0$ uA&        | u m a V 4 )            z o = 2 +              } q e Y M A 6 *              { o c W K ? 3 (      ExKCd=xPAS&branch if integration is not finished?dG=dEdE:X18dJ3dJ1x:/dL-dL&X+SGLUGs summingd=$(X &x+$x( x(x+d=dfXx+d=dfXdT dT Xxd~d~x d}Xxd4dxdXxxxXS'Overrange, underrange, overflow checksdcXS xdkS xS%branch if not AC or AC_TEST selecteddiXxdgS xSbranch if DMM_Range<>6dkX`XxXXxSbranch if not carrySshift [c]<3dUxSno action if flag=0d4d?Sd=GLUG counterNIRQ_InterruptXXdX]xXdxd4XdxXdXxdxd3dNdLdXpxodO~dN{dMxdLudKdJrS???pxoXmdEjdPgd}dxbdG`dE_S IRQ enable]xdZXNXxVd4RdPS Change to 9xZNS Jump if <>8dXkJNUpdate_State_8_9C-IXGdCxIAd:d9?X3=dh9x?5dS3x?1SRLD2 state test (Test10)dh/XxI-X"d+SRestart Tick_counter_w&dx-"SSkip if <10 msdx/XxIXdSRestart Tick_counter_wddh SRLD7 switch (protection relay)dhxSSkip if <10 msdSif =5xXxIXdSRestart Tick_counter_wddhSRLD5 input relaydhxSSkip if <30 msdSif =4xS Jump if <>4dXtNUpdate_State_4_7S DS DS DS DAd SD=?d SC=?d S B=True Ohmsd S A=3+filtd S 9=1+filtd S 8=Referenced S 7=TestACd S6=TestKd S 5=Test10d S4=Test0d S 3=VAC+VDCd S2=OhmsSVDC+VACd S1=VACSVACd  S0=VDCNTable_offsetsDrd:d:Sa:b=a*bSa=[x+1]d7S b=DMM_Ninesd:Sb=0Sa=bSa:b=a*bSa=[x]d7Stemp DMM_NinesdU~S b=DMM_Nines}Sx+=b|Sb*=2{Sb--ydkwSx=[x]vSx+=buSb*=2 (b=DMM Mode)do_XSS rNSample_Delay_SetkaqXUoxrdSmXekxqid:gdexmd<cX[axq_xr[xcdWXOUxqSxrOxWd}kFXJMNSample_Delay_Select S#DMM_Range limit : OUT_Lookup indexNDMM_Modes_Table5D SOUT [LO, HI, AC]NOUT_Lookup_TableDXSexcept AutoRange modedkxdkSCheck DMM_Range limit (a)Sx+=bd STable2 addressS-a=DMM_Range limit, b=OUT_Lookup_Table offsetSx+=bSb=2b (arithmetic shift left)dSS b=offsetd5X STable1 addressNOUT_Lookup_AddrXgdkXdkXdkXdkxXxdkxxXxdkxxdLXyx}dkyxudksdLqXkkxqdLiXbgxddkbxiX `NDMM_Range_DecVN_XE\dZd==XX7Vx_TdRd=;PX5Nx_Ldd=GX'Ex_Bd .?d=z s laUG1%  {ocWK?3'wk_SG;/$   | u n g\PD8, {ncWK?3'  xm f^ WL@4(   vjK?4 ( nbWK?-"  yhV7    t h\PD8,    ~rf^SG;/# sg `XPD0%   { tld ]UJ>2&   wk_SG;/#}qXM A 5) }^RF-" oc4(  ti ] Q2&          e Z N B 6 *              x l ` T H < 1 %             ~ s g V K @ 4 - &            ddSTick counter (word)d S =999.8 usd xdNTimer_interruptdNxXdNX\N uDelay_20xdNXVN uDelay_ACxdNBXEN uDelay_16DxdNX?N uDelay_6C1x.ddXXxdbxd5d/dSTransmit Datadb~X,x.aN|XAzd"d"uXkrddmXekxuidRexmXWcSEOS (End of String)ax|_dR[d WxcSd!d!HPX7Nx|LdRHxPCX;Ax|?dR;xC9SEOS (End of String)7xP5d!d2S Receive Datad/X(|.X$,x~(x/&X$x."dRd XXxxS$Receive Data Register (RDR) is fullx&S5Overrun Error bit (byte receiving while RDR is full) d SSCI Interrupts disableddNSCI_Interruptxd/dXSTransmit DataXxSEOS (End of String)xd!Xd1Xd4Xxxd0d5d6dRxXxd/dSTransmit Datad dSReceive Interrupt enabledd"d!dS Receive DatadS Receive Dataxd.dRxXxdRxxdRxdXdXxd1dSTransmit Interrupt enableddbXd6d5HsDXNTransmit_String}dbzxkwdbrdbpd8d8kXzid5dbRXfN Copy_Src2PtrddbaX5^de\dkXdkdUXQSXMQxUMxSdJXFFxJd~DX@@xDdT>X;=X7;x>7x=df.5X4X,1d5x5.X ,x4d*X&(X"&x*d$S "x(dx.dedkx.d~x.dT x.df XrxdYxx5xad5Xd8dXuS NTransmit_Msg_A2SEOS (End of String)SMessageN Message_A2DXxd5Xxxd8PXNComplement_SrcdbXN Encode_PtrdXxdYS SEOS (End of String)x d5d^S d]dJd]xxfxd5XFdX|xdYyS uSEOS (End of String)rx pd5id[gdJcd[UdbRxfPxNd5LXBxHXDxFX@DxHBxL@xF N$ segsSXJGMach EDV Dienstleistungen, Jan Mach, 1 user, adv, 11/2007 N$ user1 N $ idpflagsN$ ignore microN$ vmm functionsN $ importsN $ fixupsN $ patchesN $ nmSerNAN $ nmSerEAV_D:\.Work\\\\ Solartron 7081\Firmware\1986\86float.binAIDA6303Mot  ( ag@3FP@@5.2]s [gn꨻~EK(F(BG_cdecl=__cdecl;_pascal=__pascal;_huge=__huge;_near=__near;_far=__far;__inline=;_inline=;inline=;CM_WINNT;MPR50;_INTEGRAL_MAX_BITS=64;_MSC_VER=1400;_CHAR_UNSIGNED=1;_M_IX86=300;__MT__=1;__TLS__=1;_Windows=1;__WIN32__=1;_WIN32_WINNT=0x0500;WINVER=0x0500;_WIN32=1;OLEDBVER=0x0250;SECURITY_WIN32;WIN32_SUPPORT;DBNTWIN32;W32SUT_32;A4/Program Files/Microsoft Visual Studio/VC98/includeS Binary fileN Root NodeHNavBand.BytesPerUnit$N A` *)SRESET interruptSdummy <- TRAPS"dummy <- SWI (Software) interruptSIRQ interruptS-dummy <- ICF (Timer Input Capture) interruptS%TOC (Timer Output Compare) interruptS(dummy <- TOF (Timer Overflow) interruptSSCI interruptNaVafBsw13Fe8411AS XdAXd@xdAxSRETURN if [3F]==0d?STick counter suspend flagdSTick counter (byte)d .STick counter (byte)     j L .      z \ >    ~ } | { z yl xN w0 v u t s r q| p^ o@ n" m l k j i hn gP f2 e d c b a `~ _` ^B ]$ \ [ Z Y X Wp VR U4 T S R Q P O Nb MD L& K J I H G Fr ET D6 C B A @ ? > =d <F ;( :  9 8 7 6 5t 4V 38 2 1 0 / . - ,f +H ** )  ( ' & % $v #X ": !      h J ,      x Z <       j L .      z \ >  ^ 7  t M & c <  yR+hA~W0 mF\5"GCF .CA .CA .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG  .CG  .CG  .CG  .CG  .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG .CG  .CG! .CG" .CG# .CG$ .CG% .CG& .CG' .CG( .CG) .CG* .CG+ .CG, .CG- .CG. .CG/ .CG0CF~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGEDBA@?>=<;:987654321[ : 9 8 7a 6C 5% 4 3 2 1 0 /q .S -5 , + * ) ( ' &c %E $' #  " !   s U 7       e G )       u W 9       g I +      v X :       h J ,      x Z <&    N Hex View-AGDA$8D@ D@DD#8g)|9` #cc  !r'B BeIc $:b:ba`CC0CI&B@'@? %%D?)' b%'Dk"|"")W%C#D %%%%%%%       y x w + * ) ( yxw+*)( `_\W HF9-# K 1!     $8R&?F '&sEb(r'9b%~G$H?H@ ' ':`CCg*)'D%C@ %C&E7D$@ %%%G%%S&':`6&`&c '' ''''IE&=$$9G+b&o&e&JC'O5w5("^S, ') Dh%j +|$B't9!%ZFM%r$%"(%  "7=$, ""c  !r'B BeIc $:b:ba`CC0CI&B@'@? %%D?)' b%'Dk"|NIDA View-A.next      .CG xdX9)yj\B-! |m\I:* xhY?2q_ U K A 7 -  h D    z j\N ? 3#?3  qR>'      } o bL =(       x m ] R B / "          ~ m ` Q @ -         o [ G 7 -        z e Q          w k [ M B 8 . $     vcL; & Oet_Mainsxmit_SCIE56_ptrV77366var_2A*AC6C120 uDelay_16D .anonymous_0Nstruct_0MVafBsw13Fe8411 DisEmFloat^aByeeeX2ABwser_Sample_Delay8_9J4_7_0_3 Update_StateeTexttringrc8Size5Ptrb532A1,sg_90zMessageHHexLCharB ransmit_BufY oo many linesselectnt_array mer_interruptw3_2 ick_counter@1he decision made by IDA was wrong and rolled back est_Zero_on# able_offsets_CounterE_intGmed_byteKlo_byteL.hi_byteJstructITC_running_flag? ync_Chk_Front)ructuresF tate_Machinetr_SelectM ample_Delay: M_Chk_Mode8 SCI_Interruptoot NodesetstatusRHex{_Echo eceive_Char OM_CRC_Addn TIO_HI_offRAM> arsing_7F Timer_CtrlTransmiteceiveRateSCI_CtrlOCR_high lowICR_high low _Counter_high _direction2 _directionP1TCcTablepply ookup_Addr_shadowgLO`_shadowhHIa_shadowiOUT_ACbWriteb1Page0 Sum_Chk_Byte_Byte_NextRead400 Page_A000Nibble1 Flash_2PagesStatusD NVM_Chk_Pages@Mode$Enters onitor_ActiveIParsing7532A1( essage_90w s_FrequencyMainTLast_Transmitted/Needed4tegration_Done put_RLD5_Onndirect execution flow RQ_Interrupt.nextC IDA View-AB.nextE Hex View-ADLO@ GLUG_HI_RESET? lag_byte_51Q-ailed to trace the value of the stack pointerRSSc>AIR collision: the function with the given name already exists! FL2E_Errors0xecution flows beyond limits ncode_Ptr E2FL_Errors.5ecision to convert to instruction/data is made by IDAUMP_NVMDec`_CheckRangekNinesUs_Table5DMM_ModeS py_Src2Ptrf omplement_Srck_DMM_Mode_Range32heckSum references (hint: redo analisys)!offset base (hint: delete offset)name (hint: use manual arg)comment (hint: delete comment)Afind alternative string for an operand (hint: delete alt. string)Can't disassemblePtr3y2u1qqByte_0m5J4K3L2M1N Buffer_00O'ttention! Probably erroneous situation.3k2grray_1c-lready data or code (hint: make 'unexplored')AB2Xs xref windowsG vmm functionsser1 ui dialogs status?tructs( sarray+ ourcefiles*ignature names& sarray segs  sarrays registry@patches original user<ullsubs$NnmSerEAmc68xx= oader nameAlibfuncs'mports gnore microidpflags  sarray- hidden_areas, sarray#s"uncords%xups sarray fileregionsums) entry pointsauto type callees/MARKS readyHN$ Auto.S NNstruct_0.anonymous_0N struct_0MMN LNTC_struct.lo_byteKNTC_struct.med_byteJNTC_struct.hi_byteN TC_structMJKLID@HN $ Auto readyGN$ xref windowsSFN StructuresSNHex View-A.nextEA .DS2]O           rW @{qV   %%%%%t%f'T G'5'&'' '')))))))u+c@$+$******,*w*e*S*D*7*+** , '''''') g[%I%:%-%!%%'!*****o*a,O;'++''''''})kWB!4$      #)#q#d#X#H#:+       (((((y(kS)D/4) )')) )pcWG9'$* $$$$$rdU!F!7!*!!!&&&&&&"|"m"`"T"D"6.######rtfZK</#      *z*k*^*R*B*4'      ~ pX*I*:*-*!** 1 1 1 1 1 1 ! "y (g "X "K "? "/ "!   %       ! ! !s !g !W !I = .        %     u h Y J = 1 !  aL= 3     { ] ? !    f?yN'zY2 nO$xL)/.@HDefault\ToolBars\Debugger commands\Hei/.@HDefault\ToolBars\Debugger commanHeightWidt@HC#@HCurrent\To#@HCurrent\To!@HCurrent\ @HCurrent$@HCurrent\Too"@HCurrent\ToolBars\Ut@HC@HCurrent\To@HCurrent\To@HCurrent\@HCurrent @HCurrent\Too@HCurrent\ToolBar@HC!@HCurr#@HCurrent\ToolBars\!@HCurrent\To@HCurrent\@HCurrent"@HCurrent\Too @HCurrent\ToolBars@HC!@HCurrent\To!@HCurrent\To@HCurrent\@HCurrent"@HCurrent\Too @HCurrent\ToolBars\Windows\Width{;A @HDefault\HeightWidth{VisibleTopLeftHeightDockedindows\WidthVisibleTopLeftjHeightTo DebuggerDockedWatches\WidthEVisibleTopLeft HeightDockedViews\WidthEVisibleTopLeft5HeightDocked Utilities\WidthRVisibleTopLeft HeightTo DebuggerDockedTracing\WidthVisibleTopLeft HeightTo StructuresDocked\Width.VisibleTop7Left HeightDockedtructures - Enumerations\Width.VisibleTopLeftHeightDockedignatures - Types\WidthEVisibleTopLeftHeightDockedgments\WidthVisibleTopLeftHeightDockedSearch\Width+VisibleTopLeftlHeightgDockedverview navigator\WidthVisibleTop7LeftHeightDocked Operands\WidthsVisibleTopLeftwHeightDockedLists\WidthPVisibleTopLeftFHeightDockedJumps\   GxBAAN$ loader nameN $ registryWidthEVisibleTopLeftHHeightDocked Hide/Unhide\WidthsVisibleTop7LeftHeightDockeds\WidthVisibleTopLeft]HeightDockedview\WidthVisibleTopeLeftHHeightDockedGraph overview\WidthEVisibleTopLeftWHeightDocked unctions\Width.VisibleTopLeft HeightDockedFiles\WidthVisibleTopLeft HeightToEnumsDocked numerations\WidthVisibleTop7LeftFHeightDockedEdition\WidthVisibleTopLeft2HeightDockedsktop\WidthVisibleTopLeftTo DebuggerDockedDebugger commands\Width.VisibleTop7LeftlHeightDockedross references\Width\VisibleTop7LeftHeightDocked Comments\WidthVisibleTopLeftwHeightTo DebuggerDocked Breakpoints\Width.VisibleTopLeftHeightDocked Analysis\ ToolBars\ToolBarWidth ScreenHeight PanelHeight\ ndowStateWidth VisibleTopLeftHeight FormStyle Main window\ CommandLine Main Windows\TopkLeftSave database\ialog Windows\ ndowStateWidthVisibleTopLeftHeight FormStyle ructures\ StackPointer OpcodeBytes ndowStateWidth6VisibleTopLeftHeight FormStyleNames\nstructionsIndention ndowStateWidthVisibleTopLeft}HeightC FormStylemports\ ndowStateWidthVisibleTopLeftHeight GraphView FormStyle ArrowsWidthK IDA View-A\ ndowStateWidthVisibleTopLeftHeight| FormStyle Hex View-A\ OpcodeBytes LinePrefixesGraphInstructionsIndention ndowStateWidthzVisibleTopLeftCHeight| FormStyle Functions\ ndowStateWidthVisibleTopLeftHeight FormStylexports\ ndowStateWidthVisibleTopLeftHeightW FormStyleEnums\Database Windows\div10090 90ST?N$ ui dialogs statusV>NRAM=N $ mc68xxSuu^`/$tz2V2}hJsҎ zOYʗ46*  xl[<%vk_SG<0$ qR;0%    xph aYQ J?3'vj^RF:." ~sgZNB6* yaV OG?4 (    | ui]QQoxrldIidTX=bN NVM_Write_d7\xYxVxTxbQdJdExBx?x=xb:d5dd7%(X1NNVM_Flash_Nibble.dV*dV(x1&d6$xsxwd6x1dV8XNNVM_Flash_2PagesXxd1xxxdVdS xXxXxd1d xxxdRXxXd1Xxxxd"d"Xd"xd"Xd"dVd%Xbd6XxdIdddd6uNYBX$N NVM_ReadxS"XNNVM_Read_Nextxxad5}d8dwXS zNTransmit_Msg_90ySEOS (End of String)N Message_90wDzsxqd5mdXjxdYgS cSEOS (End of String)axQ^d5\dbWdbUd8Sxd8QXaOd5KdbdYXS HNTransmit_MessageDxBdZ?x:dY8dj5xa3d5/d8d(XS ,NTransmit_Msg_A1+SEOS (End of String)N Message_A1(D,"xxRFXNNVM_Sum_Chk_BytexxXOXNNVM_Sum_Page1 xxX CXNNVM_Sum_Page0XxzxdJxdRxHXdJd8X .XE  wl`T-"`P  G     `    +   #           @ 8     ~ v 7 /4 E     L 7 /   ymaUI=0$       B / '    vjSH=,1+%*) ('&%$#"! }qeYMA5)     ui]QE9-!         |pdXL@4( wkZO H@8 1 *" } vk_ XL@4(   th\PE9-"  vk_SG;/$  xmaVJ> 7,     |qfZNB6* / ;; B to Port 2.L; write to the UART. B will have 4, 0 or 5 (<54Hz, 54-228Hz, >228Hz), writeL; and 0x03 for anything higher. OR A with ASCII '0' to make a character and;); Will destroy contents of both A and B.; ; returning.K; Read the value on P16 (Port 1 bit 6), then loop until it changes before.;; Sync_Chk_Front: SubroutineSN; ===========================================================================;)NSync_Chk_FrontN Set_MainsS3Set output lines on P2 to indicate mains frequencyJ; By the time we get here A has 0x01 for <54Hz mains, 0x02 for 54Hz-228Hz;N; ---------------------------------------------------------------------------;9; and to send 0x33 on the serial port to the earthy side;; P22 == ~60Hz line = 1; P20 == 400Hz line = 1;A; It must be 400Hz mains, prepare to set frequency output ports:S;SNo, must be 400Hz then;9; and to send 0x32 on the serial port to the earthy side;; P22 == ~60Hz line = 0; P20 == 400Hz line = 0;@; It must be 60Hz mains, prepare to set frequency output ports:S;<; Assume 50Hz mains, prepare to set frequency output ports:S Is the mains less than 54.59Hz?S;;9; and to send 0x31 on the serial port to the earthy side;; P22 == ~60Hz line = 1; P20 == 400Hz line = 0;SNo, then it can't be 50HzN; ---------------------------------------------------------------------------SLess than 228Hz;<; greater than this, then 60Hz is assumed, otherwise 400Hz.I; value checked is 0x1507 (which corresponds to 228Hz). If the count isK; assumes that any count greater than or equal to this is 50Hz. The next J; The code actually checks for 0x57ed (which corresponds to 54.59Hz), and;8; cycles or 0x5000, and 400Hz is 3072 cycles or 0x0c00.L; Given a clock of 1.2288MHz, 50Hz is 24576 cycles or 0x6000, 60Hz is 20480;xdjxdRx,XdjxxxXxdjxxxdjXXN DUMP_NVMxd1d XX XdTd~dd4d1XxXxdXddXxXddxdxxxXxcX_xXzd?|Xtzxxd?tx|rXmdloXgmxrkdlgxocx_xdNZXVx'XX#VxZSdQXJdcXCLS JxQdcES CxL>d/x5-dU+x5'xX#xXdNXxXxdSxx Xx Xx d2dkXx d2xx x d&XHS x|jX?N CheckSum2xXXN CheckSumxd"X=N CheckSum3Xxd5dXXXxd xd"d!dRxd1XVxX;d1d X@xse[XKd1d Xxx{xd1xd$Xxxd1dd'|d<zd&xxvd$uXjsxqd1lxsjxuhd$gX`exbx`xg^d$]XP[xXxVxTd1Px]Nd$MXFKxHxFxMDd$@x=x;xdRXW7NMessage_Parsing4x.d.X4dX$xxX~NNVM_Read_Next_BytexTdIdd" dd d d?dUdedkdidhdgd@xEdXXxxXxxd x)SMAINS frequency measurementx)d x); !; - i.e one full cycle of mains. .SJ; datasheet) and call Sync_Chk_Front twice more to time two further edges               ~ wo h aVF W 9 1    ]      ;0$     | p dXL@4( }qeZNB6$k`T$     o]RF:."      {ocWK? 8-!   y r kcWK?3'yWL@! bWK@4( wkTI=1% peYF;#     }qfZ S LA5) wk_; ; Preserves A & B.;E; to the transmit data register, finally restore B before returning.L; becomes '1' indicating that we can write a byte, then write the byte in AF; Stash B at #$0037, loop until the transmit data register empty bit SN; ===========================================================================; !; Transmit serial character in A;; SUBROUTINE: xmit_SCI:;dGdUd XMS N Tint_selectdNdLdJdEddXxXxdGxdXxXxxxXxxxXxxxdxXyNUpdate_State_0_3dbSOUT AC-didaSOUT HI-dhd`~SOUT LO-dgw|XnxXryS Call if <4wx|xtS Call if >=4rxypXinx|xJkS Call if >=8ixpdXveN Update_Statead3_ddm\S dZS?dVS?dURSRestore DMM_NinesPd6MxxMJXDdUHS If DMM_Nines<6 then DMM_Nines=6DxJd6@STemporarily store DMM_Nines>dUXxS Jump if lessS%Auto-Zero interval (15 min. default)d@xSJump if Tick Counter stoppedd?xSJump if DMM_Nines<6dUxS Jump if =3xd>dX{N Parsing_7FXxd8dS xd_X;NTransmit_Msg_A3N Message_A3DxTy~Xpx{Xtyx~vxetx{rXkpx~mxokxrgdexWbdR_x]xWZdRx7eWX]~XTNMainQd7dNSTransmit DataLxGdGXLd7XEN xmit_SCIx i_up]U .BX  Va4! }]]]]]I] II]]]]  @``@ UU]U]UUUUUU]U`UUUUUUUUUUUUUUUUU]]]UU0 U0 U0 U0 UU]UU]]QQUUUQQQQ]_@  '@  '@I`@a  @ibO'@@ @&M'@  η@ @ @L&_'J @&c@&o@\J@&'@I'@0Q@c  @'+@ @  Q@c@'@   '@@  @*@@+ Η@  @*@@+ @`W@?  @?@c  @@0't  om /@W  +'@@ @+'@@ Ʒ@@  @0E@  @Ig@h@ii@ke@U@? @   @  @$"@d I ~ T WXXXX9w  @@@@'9WR@&q  &d@$& WL$& @1Y GL$& =L$& s@1 /L$&&<'XGV@1 L$& @1 { @ @1 @ @191' R !@ $ "M*  @X@5  9WP $ "9OW@@&@M9W@@9ΗPP&@+@"M&@2  k2 ~  @+@ "S ~  N@@+3@"/@#U#@>U@?  @&Q@c  @ ΗP@c@Ɨ@0   YޗN@+ @"@'@l  l @'@? ?  0@+@"& @'d d  @1 4 @~ T 9@ @1 W j >W&@j  @K&@jT}R&"j@&@  Η@ߗ8@@JU} R &zJ.{9WPO@&9WPOv@  &9WmXXXXf@9Q WPP(8@5 a jY@X  Z9WPPYb@5ޗ858b@bz5.@@Q@ Y X@ 5  9Q WPPw8@5 a 9W9W6@0  @0@@} I &ė@69ܗ%X@  V@'"ޗ"@+0"ޗ"@"@'@F Ɨ@1  ֗R'' @ @1    @@6DDDDQ@V2@@$@@&@1  9WV6V@  M6VV9W7@?  @#    @?@@      79W@@@0  }I&97W689@ ': { %5@ &1},',&&(&'0}$'%(@**% 1 @ޗ(( @  B @ B@? B 9W'9@ '@@&@'  @ _    @  _9Ww7  @ '79W@ 7 }R&  }R&@& o  @&e   QW@i%Q@8  9W} > &@'U@%}?'@@ %  > @'d@M&@2%  d @B ?@& d@4 1@&? )@&d@%@"@ @&d    d9WPS@&@ @9Wg@?@g@  =EJLNU6@$@UM  6U@@Q@m 3 9W@% J  @%   g`ha  ib9WN@& @&   @&   ֗@&@ G ̗@EJLN9WPP U@X:@G9WS@'@ 'k@#@kQ @ & k@'@Q  Q 9]0 @`@ W  @J@K@Lh@'h@K@@hJgLi@M 5@Kh&Jg&Li& @' @' M : ; ܗJghLiTQ'@3 l'@3 Ɨ@3ΗQ@ m 9WPP  =@h M @Q@ql'@3 @39WP}~  =g@@g M @Q@u@39WP} = g@gM@Q@ y @39W2'*' +| k `k@'S@'@ &@& @&  =   = @ Ɨ@= Ɨ@=9WP&zk IL+CsM@Lk@&@k 1ޗL@  "'@&@k  @"@&@k @  "zkz k zkz k 9_PP 5 SX:@Q@:k%kJ@=:9L]iJ0iPIpiJiIiII0IPpIID iB i0A PiJp iI iIiII0PIpIIiI0i P ipIqIII0IPIpIIII0PIp] @`0?BEH K@Z`W}'@  @&@  <': ֗S9WPPX:@kZX:U7@=_:7@=::9]P  P  P P P P P P P P P P P P  @ `    @`  @`(X @`W@&@  +h@h@@ L@&@  +h@h@@ 0@&@  + @@ h@& S@&@hޗ:+@9W@& @ @4 Q}&IEG+8 } PE%tJv K vLv M vNv O ޗL@N@3&@  4&  9O?674'U@&32XI$@@XI$@67 32;֗k@&Q@g ֗i@'Q@ k ΗP@c@$@% $֗' @ 4 ֗}'~~ Ɨ@TTחf=  f =' @$@% =37LL$J@  JޗEEG& ='@ 4 ֗=' @@%@ 4 ~U w]4 w]J {@&  S@&\ K֗S@& @ΗP@ m 8@}Q&} l 'ʗ@חJ7} Q '}R&Q@ q 8@}l'@חJv} l '}R&Nd@  9P5Q@m8  Q@Zb f ^@^Q@ X @@Q@X  Y@5 @ A B 9ΗP u 8@J}R& @ y 8@J9ΗPP Y bU@" :9P5zfbd@f@f@d@f@d@[@J[@ \ @5 @@Q@ Y X9P5Df]@J]Q@ ^ @5l@@Q@Y  X9Wbd@f@f@f@f@d@f@f@f@d@f@f@d@f@d@9W8@@'@@ cc5@&cc9Y WPP  8ƗP5a@ Z 7@X  Y9}f&} T &}~&ke&  +Q@ Ɨ@@ї'| 5 9֗f'@  O֗T'@֗~'@+@ Ɨ@@חk@ke9ΗP X bWb<5ޗ8@8b@bZ&8b9W56Η@Xb  @1@'Y  @K$TR'@&R C@&) R |.    !@ $ "@    / @&R65| 0   4 19}!&@ @  / G  @  @@'@'@ @ @R ŗ@&@ &P;  !&@&@R 9@@&@R ,|!!@ # @ @R @&@R   @ޗ"@" ޗb@ / z5'b@ @  ;;WN@ WN@ m  WN@ WN@  &N9;;G@@'$  @  |  |?' A@  $|@ݗA;0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@  0 P `p @      0 P `p @      0 P `p @      0 P `p @      0 P `p @     0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@  0 P `p @     !0!P!`p!@! !!!"0"P"`p"@" """#0#P#`p#@# ###$0$P$`p$@$ $$$%0%P%`p%@% %%%&0&P&`p&@& &&&'0'P'`p'@' '''(0(P(`p(@( ((()0)P)`p)@) )))*0*P*`p*@* ***+0+P+`p+@+ +++,0,P,`p,@, ,,,-0-P-`p-@- ---.0.P.`p.@. .../0/P/`p/@/ ///000P0`p0@0 000101P1`p1@1 111202P2`p2@2 222303P3`p3@3 333404P4`p4@4 444505P5`p5@5 555606P6`p6@6 666707P7`p7@7 777808P8`p8@8 888909P9`p9@9 999:0:P:`p:@: :::;0;P;`p;@; ;;;<0<P<`p<@< <<<=0=P=`p=@= ===>0>P>`p>@> >>>?0?P?`p?@? ???@0@P@`p@@@ @@@A0APA`pA@A AAAB0BPB`pB@B BBBC0CPC`pC@C CCCD0DPD`pD@D DDDE0EPE`pE@E EEEF0FPF`pF@F FFFG0GPG`pG@G GGGH0HPH`pH@H HHHI0IPI`pI@I IIIJ0JPJ`pJ@J JJJK0KPK`pK@K KKKL0LPL`pL@L LLLM0MPM`pM@M MMMN0NPN`pN@N NNNO0OPO`pO@O OOOP0PPP`pP@P PPPQ0QPQ`pQ@Q QQQR0RPR`pR@R RRRS0SPS`pS@S SSST0TPT`pT@T TTTU0UPU`pU@U UUUV0VPV`pV@V VVVW0WPW`pW@W WWWX0XPX`pX@X XXXY0YPY`pY@Y YYYZ0ZPZ`pZ@Z ZZZ[0[P[`p[@[ [[[\0\P\`p\@\ \\\]0]P]`p]@] ]]]^0^P^`p^@^ ^^^_0_P_`p_@_ __~_~`~0`~P``~p`@~` ~`~`}`}a}0a}Pa`}pa@}a }a}a|a|b|0b|Pb`|pb@|b |b|b{b{c{0c{Pc`{pc@{c {c{czczdz0dzPd`zpd@zd zdzdydyey0eyPe`ype@ye yeyexexfx0fxPf`xpf@xf xfxfwfwgw0gwPg`wpg@wg wgwgvgvhv0hvPh`vph@vh vhvhuhuiu0iuPi`upi@ui uiuititjt0jtPj`tpj@tj tjtjsjsks0ksPk`spk@sk skskrkrlr0lrPl`rpl@rl rlrlqlqmq0mqPm`qpm@qm qmqmpmpnp0npPn`ppn@pn pnpnonooo0ooPo`opo@oo oooononpn0pnPp`npp@np npnpmpmqm0qmPq`mpq@mq mqmqlqlrl0rlPr`lpr@lr lrlrkrksk0skPs`kps@ks ksksjsjtj0tjPt`jpt@jt jtjtitiui0uiPu`ipu@iu iuiuhuhvh0vhPv`hpv@hv hvhvgvgwg0wgPw`gpw@gw gwgwfwfxf0xfPx`fpx@fx fxfxexeye0yePy`epy@ey eyeydydzd0zdPz`dpz@dz dzdzczc{c0{cP{`cp{@c{ c{c{b{b|b0|bP|`bp|@b| b|b|a|a}a0}aP}`ap}@a} a}a}`}`~`0~`P~``p~@`~ `~`~_~__0_P`_p@_ __^^^0^P`^p@^ ^^Ѐ]]]0]P`]p@] ]]Ё\\\0\P`\p@\ \\Ђ[[[0[P`[p@[ [[ЃZZZ0ZP`Zp@Z ZZЄYYY0YP`Yp@Y YYЅXXX0XP`Xp@X XXІWWW0WP`Wp@W WWЇVVV0VP`Vp@V VVЈUUU0UP`Up@U UUЉTTT0TP`Tp@T TTЊSSS0SP`Sp@S SSЋRRR0RP`Rp@R RRЌQQQ0QP`Qp@Q QQЍPPP0PP`Pp@P PPЎOOO0OP`Op@O OOЏNNN0NP`Np@N NNАMMM0MP`Mp@M MMБLLL0LP`Lp@L LLВKKK0KP`Kp@K KKГJJJ0JP`Jp@J JJДIII0IP`Ip@I IIЕHHH0HP`Hp@H HHЖGGG0GP`Gp@G GGЗFFF0FP`Fp@F FFИEEE0EP`Ep@E EEЙDDD0DP`Dp@D DDКCCC0CP`Cp@C CCЛBBB0BP`Bp@B BBМAAA0AP`Ap@A AAН@@@0@P`@p@@ @@О???0?P`?p@? ??П>>>0>P`>p@> >>Р===0=P`=p@= ==С<<<0<P`<p@< <<Т;;;0;P`;p@; ;;У:::0:P`:p@: ::Ф99909P`9p@9 99Х88808P`8p@8 88Ц77707P`7p@7 77Ч66606P`6p@6 66Ш55505P`5p@5 55Щ44404P`4p@4 44Ъ33303P`3p@3 33Ы22202P`2p@2 22Ь11101P`1p@1 11Э00000P`0p@0 00Ю///0/P`/p@/ //Я...0.P`.p@. ..а---0-P`-p@- --б,,,0,P`,p@, ,,в+++0+P`+p@+ ++г***0*P`*p@* **д)))0)P`)p@) ))е(((0(P`(p@( ((ж'''0'P`'p@' ''з&&&0&P`&p@& &&и%%%0%P`%p@% %%й$$$0$P`$p@$ $$к###0#P`#p@# ##л"""0"P`"p@" ""м!!!0!P`!p@! !!н   0 P` p@   о0P`p@ п0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@    0 P` p@      0 P` p@      0 P` p@      0 P` p@      0 P` p@   0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ 0P`p@ VPAF@ 0B SPW p13 Fe 84 `11@ 00 7P        @Va4  $*./045678:?@DEGIJKLMNOQRSUVYbghikmquy?@`abcc)7(,Hwz1bsw@^sL{BET#e `5MrJcgkfIDATILLocal type definitionsZTC_struct 222hi_byte med_bytelo_bytestruct_0 2 anonymous_0