From e2524e7feb91945eaef236f3dacf1a318ab77737 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 17 Sep 2014 17:31:40 -0700 Subject: [PATCH] Beta Simulators (PDQ-3 and SAGE) from Holger Veit --- .gitattributes | 1 + PDQ-3/hdt/CPU_C5.bin | Bin 0 -> 1024 bytes PDQ-3/master.imd | Bin 0 -> 513766 bytes PDQ-3/names.sim | 174 ++ PDQ-3/opcode.dbg | 232 ++ PDQ-3/pdq3_cpu.c | 1733 +++++++++++++ PDQ-3/pdq3_debug.c | 441 ++++ PDQ-3/pdq3_defs.h | 415 +++ PDQ-3/pdq3_fdc.c | 1176 +++++++++ PDQ-3/pdq3_mem.c | 355 +++ PDQ-3/pdq3_stddev.c | 641 +++++ PDQ-3/pdq3_sys.c | 621 +++++ PDQ-3/run.cmd | 2 + PDQ-3/testhdt.sim | 125 + README.md | 4 + SAGE/FILES/68k-s133.sim | 31 + SAGE/FILES/68k-sii.sim | 31 + SAGE/FILES/68k-v204.sim | 31 + SAGE/FILES/68k-v22.sim | 31 + SAGE/FILES/68k-v23.sim | 31 + SAGE/FILES/68k.sim | 45 + SAGE/FILES/68kdbg.sim | 71 + SAGE/FILES/bin2sage.c.txt | 95 + SAGE/FILES/cpm.sim | 17 + SAGE/FILES/cpm11a.imd | Bin 0 -> 658833 bytes SAGE/FILES/cpm68k.imd | Bin 0 -> 658767 bytes SAGE/FILES/cpm68k12.imd | Bin 0 -> 658767 bytes SAGE/FILES/eprom2bin.c.txt | 61 + SAGE/FILES/read_ucsd.c.txt | 105 + SAGE/FILES/readcpm.c.txt | 138 + SAGE/FILES/s133.hex | 258 ++ SAGE/FILES/sage-ii.hex | 258 ++ SAGE/FILES/sii.hex | 514 ++++ SAGE/FILES/sim2bin.c.txt | 29 + SAGE/FILES/system.imd | Bin 0 -> 658774 bytes SAGE/FILES/ucsd.sim | 15 + SAGE/FILES/v2-04.hex | 514 ++++ SAGE/FILES/v2-2.hex | 514 ++++ SAGE/FILES/v2-3.hex | 514 ++++ SAGE/chip_defs.h | 435 ++++ SAGE/i8251.c | 145 ++ SAGE/i8253.c | 143 ++ SAGE/i8255.c | 106 + SAGE/i8259.c | 244 ++ SAGE/i8272.c | 1058 ++++++++ SAGE/m68k_cpu.c | 3352 ++++++++++++++++++++++++ SAGE/m68k_cpu.h | 252 ++ SAGE/m68k_mem.c | 425 ++++ SAGE/m68k_parse.tab.c | 3786 ++++++++++++++++++++++++++++ SAGE/m68k_parse.tab.h | 360 +++ SAGE/m68k_parse.y.txt | 667 +++++ SAGE/m68k_scp.c | 307 +++ SAGE/m68k_sys.c | 999 ++++++++ SAGE/readme-sage.txt | 91 + SAGE/sage_aux.c | 62 + SAGE/sage_cons.c | 464 ++++ SAGE/sage_cpu.c | 195 ++ SAGE/sage_defs.h | 152 ++ SAGE/sage_fd.c | 139 + SAGE/sage_hd.c | 84 + SAGE/sage_ieee.c | 62 + SAGE/sage_lp.c | 247 ++ SAGE/sage_stddev.c | 633 +++++ SAGE/sage_sys.c | 71 + Visual Studio Projects/PDQ3.vcproj | 322 +++ Visual Studio Projects/SAGE.vcproj | 376 +++ Visual Studio Projects/Simh.sln | 12 + alpha/alpha_defs.h | 6 +- makefile | 26 +- 69 files changed, 24440 insertions(+), 4 deletions(-) create mode 100644 PDQ-3/hdt/CPU_C5.bin create mode 100644 PDQ-3/master.imd create mode 100644 PDQ-3/names.sim create mode 100644 PDQ-3/opcode.dbg create mode 100644 PDQ-3/pdq3_cpu.c create mode 100644 PDQ-3/pdq3_debug.c create mode 100644 PDQ-3/pdq3_defs.h create mode 100644 PDQ-3/pdq3_fdc.c create mode 100644 PDQ-3/pdq3_mem.c create mode 100644 PDQ-3/pdq3_stddev.c create mode 100644 PDQ-3/pdq3_sys.c create mode 100644 PDQ-3/run.cmd create mode 100644 PDQ-3/testhdt.sim create mode 100644 SAGE/FILES/68k-s133.sim create mode 100644 SAGE/FILES/68k-sii.sim create mode 100644 SAGE/FILES/68k-v204.sim create mode 100644 SAGE/FILES/68k-v22.sim create mode 100644 SAGE/FILES/68k-v23.sim create mode 100644 SAGE/FILES/68k.sim create mode 100644 SAGE/FILES/68kdbg.sim create mode 100644 SAGE/FILES/bin2sage.c.txt create mode 100644 SAGE/FILES/cpm.sim create mode 100644 SAGE/FILES/cpm11a.imd create mode 100644 SAGE/FILES/cpm68k.imd create mode 100644 SAGE/FILES/cpm68k12.imd create mode 100644 SAGE/FILES/eprom2bin.c.txt create mode 100644 SAGE/FILES/read_ucsd.c.txt create mode 100644 SAGE/FILES/readcpm.c.txt create mode 100644 SAGE/FILES/s133.hex create mode 100644 SAGE/FILES/sage-ii.hex create mode 100644 SAGE/FILES/sii.hex create mode 100644 SAGE/FILES/sim2bin.c.txt create mode 100644 SAGE/FILES/system.imd create mode 100644 SAGE/FILES/ucsd.sim create mode 100644 SAGE/FILES/v2-04.hex create mode 100644 SAGE/FILES/v2-2.hex create mode 100644 SAGE/FILES/v2-3.hex create mode 100644 SAGE/chip_defs.h create mode 100644 SAGE/i8251.c create mode 100644 SAGE/i8253.c create mode 100644 SAGE/i8255.c create mode 100644 SAGE/i8259.c create mode 100644 SAGE/i8272.c create mode 100644 SAGE/m68k_cpu.c create mode 100644 SAGE/m68k_cpu.h create mode 100644 SAGE/m68k_mem.c create mode 100644 SAGE/m68k_parse.tab.c create mode 100644 SAGE/m68k_parse.tab.h create mode 100644 SAGE/m68k_parse.y.txt create mode 100644 SAGE/m68k_scp.c create mode 100644 SAGE/m68k_sys.c create mode 100644 SAGE/readme-sage.txt create mode 100644 SAGE/sage_aux.c create mode 100644 SAGE/sage_cons.c create mode 100644 SAGE/sage_cpu.c create mode 100644 SAGE/sage_defs.h create mode 100644 SAGE/sage_fd.c create mode 100644 SAGE/sage_hd.c create mode 100644 SAGE/sage_ieee.c create mode 100644 SAGE/sage_lp.c create mode 100644 SAGE/sage_stddev.c create mode 100644 SAGE/sage_sys.c create mode 100644 Visual Studio Projects/PDQ3.vcproj create mode 100644 Visual Studio Projects/SAGE.vcproj diff --git a/.gitattributes b/.gitattributes index d4de2ec5..4755f2db 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,6 +4,7 @@ *.vcproj binary *.exe binary *.bin binary +*.imd binary *.rim binary sim_rev.h export-subst diff --git a/PDQ-3/hdt/CPU_C5.bin b/PDQ-3/hdt/CPU_C5.bin new file mode 100644 index 0000000000000000000000000000000000000000..b590d5034c5ca3dbcb5edae89c68d55690a6bf8d GIT binary patch literal 1024 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 F{4eR1Ux@$! literal 0 HcmV?d00001 diff --git a/PDQ-3/names.sim b/PDQ-3/names.sim new file mode 100644 index 00000000..6f075c69 --- /dev/null +++ b/PDQ-3/names.sim @@ -0,0 +1,174 @@ +name CSP:proc53 initdriver +name CSP:proc52 ExtractSegno +name CSP:proc51 getsib +name CSP:proc50 myselfer +name CSP:proc49 S_IOR_Set +name CSP:proc48 S_Read_Seg +name CSP:proc47 S_Chuck_G_Dir +name CSP:proc46 S_Finish_CU +name CSP:proc45 S_Execute_CU +name CSP:proc44 S_Geq_U +name CSP:proc43 S_Blow_Up +name CSP:proc42 S_Bump_Heap +name CSP:proc41 S_R_Mem_Avail +name CSP:proc40 S_Mem_Avail +name CSP:proc39 S_Halt +name CSP:proc38 S_Unit_Clear +name CSP:proc37 S_Unit_Wait +name CSP:proc36 S_Pwr_of_Ten +name CSP:proc35 S_Unit_Busy +name CSP:proc34 S_Io_Result +name CSP:proc33 S_Release +name CSP:proc32 S_Mark +name CSP:proc31 X_Sqrt +name CSP:proc30 X_Exp +name CSP:proc29 X_Ln +name CSP:proc28 S_Unload_Seg +name CSP:proc27 S_Load_Seg +name CSP:proc26 S_Unit_Status +name CSP:proc25 X_Sin +name CSP:proc24 S_Blk_Exit +name CSP:proc23 S_Attach +name CSP:proc22 S_Rel_Seg +name CSP:proc21 S_Get_Seg +name CSP:proc20 S_Stop_P +name CSP:proc19 S_Start_P +name CSP:proc18 S_Check +name CSP:proc17 S_Assign +name CSP:proc16 S_Geq_S +name CSP:proc15 S_Leq_S +name CSP:proc14 S_Equ_S +name CSP:proc13 S_New +name CSP:proc12 S_IO_Check +name CSP:proc11 S_Scan +name CSP:proc10 S_Fill_Char +name CSP:proc9 S_Time +name CSP:proc8 S_Tree_Search +name CSP:proc17 S_Id_Search +name CSP:proc6 S_Unit_Write +name CSP:proc5 S_Unit_Read +name CSP:proc4 S_Exit +name CSP:proc3 S_Move_Right +name CSP:proc2 S_Move_Left +name CSP:proc1 csp_initunit +name GOTOXYU:proc1 gotoxyu_initunit +name GOTOXYU:proc2 Z19_XY +name PASCALIO:proc1 pascalio_initunit +name PASCALIO:proc2 F_Read_Real +name PASCALIO:proc3 F_Write_Real +name PASCALIO:proc4 F_Seek +name LONGINT:proc1 longint_initunit +name LONGINT:proc2 F_Read_Dec +name LONGINT:proc3 F_Write_Dec +name LONGINT:proc4 Decops +name TRANSCEN:proc1 transcen_initunit +name TRANSCEN:proc2 S_Sin +name TRANSCEN:proc3 S_Cos +name TRANSCEN:proc4 S_Log10 +name TRANSCEN:proc5 S_Arctan +name TRANSCEN:proc6 S_Ln +name TRANSCEN:proc7 S_Exp +name TRANSCEN:proc8 S_Sqrt +name HEAPOPS:proc1 heapops_initunit +name HEAPOPS:proc2 H_Mark +name HEAPOPS:proc3 H_Release +name HEAPOPS:proc4 H_New +name HEAPOPS:proc5 H_Dispose +name HEAPOPS:proc6 H_Mem_Lock +name HEAPOPS:proc7 H_Mem_Swap +name HEAPOPS:proc8 H_Var_New +name HEAPOPS:proc9 H_Var_Dispose +name HEAPOPS:proc10 H_Var_Avail +name HEAPOPS:proc11 H_Unlock_Seg +name HEAPOPS:proc12 H_Clean_Up +name EXCEPTIO:proc1 exceptio_initunit +name EXCEPTIO:proc2 Handle_Exception +name EXCEPTIN:proc1 exceptin_initunit +name EXCEPTIN:proc2 Ex_Stats +name HALTUNIT:proc1 haltunit_initunit +name HALTUNIT:proc2 Do_Halt +name CLOCKDRI:proc1 clockdri_initunit +name CLOCKDRI:proc2 Clk_Init +name CLOCKDRI:proc3 Clk_Read +name CLOCKDRI:proc4 Clk_Write +name CLOCKDRI:proc5 Clk_Clear +name CLOCKDRI:proc6 Clk_Power +name CLOCKDRI:proc7 Clk_Status +name CLOCKDRI:proc8 Clk_Term +name DTCDRIVE:proc1 dtcdrive_initunit +name DTCDRIVE:proc2 Dtc_Init +name DTCDRIVE:proc3 Dtc_Read +name DTCDRIVE:proc4 Dtc_Write +name DTCDRIVE:proc5 Dtc_Clear +name DTCDRIVE:proc6 Dtc_Power +name DTCDRIVE:proc7 Dtc_Status +name DTCDRIVE:proc8 Dtc_Term +name DZ11DRIV:proc1 dz11driv_initunit +name DZ11DRIV:proc2 DZ_Init +name DZ11DRIV:proc3 DZ_Read +name DZ11DRIV:proc4 DZ_Write +name DZ11DRIV:proc5 DZ_Clear +name DZ11DRIV:proc6 DZ_Power +name DZ11DRIV:proc7 DZ_Status +name DZ11DRIV:proc8 DZ_Term +name FLOPPYDR:proc1 floppydr_initunit +name FLOPPYDR:proc2 Fl_Init +name FLOPPYDR:proc3 Fl_Read +name FLOPPYDR:proc4 Fl_Write +name FLOPPYDR:proc5 Fl_Clear +name FLOPPYDR:proc6 Fl_Power +name FLOPPYDR:proc7 Fl_Status +name FLOPPYDR:proc8 Fl_Term +name PRIAMDRI:proc1 priamdri_initunit +name PRIAMDRI:proc2 Prm_Init +name PRIAMDRI:proc3 Prm_Read +name PRIAMDRI:proc4 Prm_Write +name PRIAMDRI:proc5 Prm_Clear +name PRIAMDRI:proc6 Prm_Power +name PRIAMDRI:proc7 Prm_Status +name PRIAMDRI:proc8 Prm_Term +name RL02DRIV:proc1 rl02driv_initunit +name RL02DRIV:proc2 RL_Init +name RL02DRIV:proc3 RL_Read +name RL02DRIV:proc4 RL_Write +name RL02DRIV:proc5 RL_Clear +name RL02DRIV:proc6 RL_Power +name RL02DRIV:proc7 RL_Status +name RL02DRIV:proc8 RL_Term +name SERDRIVE:proc1 serdrive_initunit +name SERDRIVE:proc2 Ser_Init +name SERDRIVE:proc3 Ser_Read +name SERDRIVE:proc4 Ser_Write +name SERDRIVE:proc5 Ser_Clear +name SERDRIVE:proc6 Ser_Power +name SERDRIVE:proc7 Ser_Status +name SERDRIVE:proc8 Ser_Term +name STANDRIV:proc1 standriv_initunit +name STANDRIV:proc2 Stan_Init +name STANDRIV:proc3 Stan_Read +name STANDRIV:proc4 Stan_Write +name STANDRIV:proc5 Stan_Clear +name STANDRIV:proc6 Stan_Power +name STANDRIV:proc7 Stan_Status +name STANDRIV:proc8 Stan_Term +name SYSDRIVE:proc1 sysdrive_initunit +name SYSDRIVE:proc2 Intr_Init +name SYSDRIVE:proc3 Intr_Enable +name SYSDRIVE:proc4 Enter_HDT +name TM11DRIV:proc1 standriv_initunit +name TM11DRIV:proc2 TM_Init +name TM11DRIV:proc3 TM_Read +name TM11DRIV:proc4 TM_Write +name TM11DRIV:proc5 TM_Clear +name TM11DRIV:proc6 TM_Power +name TM11DRIV:proc7 TM_Status +name TM11DRIV:proc8 TM_Term +name SPOOLUNI:proc1 spooluni_initunit +name SPOOLUNI:proc2 Spool_Status +name SPOOLUNI:proc3 Spool_Restart +name SPOOLUNI:proc4 Spool_Stop +name SPOOLUNI:proc5 Spool_File +name SHELL:proc1 SHELL_initunit +name GETCMD:proc1 GETCMD_initunit +name SERDRIVE:proc9 SER_EnDis_RCVXMIT +name SERDRIVE:proc16 SER_RawEmit diff --git a/PDQ-3/opcode.dbg b/PDQ-3/opcode.dbg new file mode 100644 index 00000000..1dfa9a73 --- /dev/null +++ b/PDQ-3/opcode.dbg @@ -0,0 +1,232 @@ +0 0 ;SLDC0 +1 0 ;SLDC1 +2 0 ;SLDC2 +3 0 ;SLDC3 +4 0 ;SLDC4 +5 0 ;SLDC5 +6 0 ;SLDC6 +7 0 ;SLDC7 +8 0 ;SLDC8 +9 0 ;SLDC9 +a 0 ;SLDC10 +b 0 ;SLDC11 +c 0 ;SLDC12 +d 0 ;SLDC13 +e 0 ;SLDC14 +f 0 ;SLDC15 +10 0 ;SLDC16 +11 0 ;SLDC17 +12 0 ;SLDC18 +13 0 ;SLDC19 +14 0 ;SLDC20 +15 0 ;SLDC21 +16 0 ;SLDC22 +17 0 ;SLDC23 +18 0 ;SLDC24 +19 0 ;SLDC25 +1a 0 ;SLDC26 +1b 0 ;SLDC27 +1c 0 ;SLDC28 +1d 0 ;SLDC29 +1e 0 ;SLDC30 +1f 0 ;SLDC31 +20 0 ;SLDL1 +21 0 ;SLDL2 +22 0 ;SLDL3 +23 0 ;SLDL4 +24 0 ;SLDL5 +25 0 ;SLDL6 +26 0 ;SLDL7 +27 0 ;SLDL8 +28 0 ;SLDL9 +29 0 ;SLDL10 +2a 0 ;SLDL11 +2b 0 ;SLDL12 +2c 0 ;SLDL13 +2d 0 ;SLDL14 +2e 0 ;SLDL15 +2f 0 ;SLDL16 +30 0 ;SLDO1 +31 0 ;SLDO2 +32 0 ;SLDO3 +33 0 ;SLDO4 +34 0 ;SLDO5 +35 0 ;SLDO6 +36 0 ;SLDO7 +37 0 ;SLDO8 +38 0 ;SLDO9 +39 0 ;SLDO10 +3a 0 ;SLDO11 +3b 0 ;SLDO12 +3c 0 ;SLDO13 +3d 0 ;SLDO14 +3e 0 ;SLDO15 +3f 0 ;SLDO16 +40 3 ; +41 3 ; +42 3 ; +43 3 ; +44 3 ; +45 3 ; +46 3 ; +47 3 ; +48 3 ; +49 3 ; +4a 3 ; +4b 3 ; +4c 3 ; +4d 3 ; +4e 3 ; +4f 3 ; +50 3 ; +51 3 ; +52 3 ; +53 3 ; +54 3 ; +55 3 ; +56 3 ; +57 3 ; +58 3 ; +59 3 ; +5a 3 ; +5b 3 ; +5c 3 ; +5d 3 ; +5e 3 ; +5f 3 ; +60 3 ; +61 3 ; +62 3 ; +63 3 ; +64 3 ; +65 3 ; +66 3 ; +67 3 ; +68 3 ; +69 3 ; +6a 3 ; +6b 3 ; +6c 3 ; +6d 3 ; +6e 3 ; +6f 3 ; +70 3 ; +71 3 ; +72 3 ; +73 3 ; +74 3 ; +75 3 ; +76 3 ; +77 3 ; +78 0 ;SIND0 +79 0 ;SIND1 +7a 0 ;SIND2 +7b 0 ;SIND3 +7c 0 ;SIND4 +7d 0 ;SIND5 +7e 0 ;SIND6 +7f 0 ;SIND7 +80 0 ;LDCB +81 0 ;LDCI +82 0 ;LCA +83 0 ;LDC +84 0 ;LLA +85 3 ;LDO +86 0 ;LAO +87 0 ;LDL +88 0 ;LDA +89 0 ;LOD +8a 0 ;UJP +8b 0 ;UJPL +8c 0 ;MPI +8d 0 ;DVI +8e 0 ;STM +8f 0 ;MODI +90 0 ;CPL +91 0 ;CPG +92 0 ;CPI +93 0 ;CXL +94 0 ;CXG +95 0 ;CXI +96 0 ;RPU +97 0 ;CPF +98 0 ;LDCN +99 0 ;LSL +9a 3 ;LDE +9b 3 ;LAE +9c 0 ;NOP +9d 0 ;LPR +9e 3 ;BPT +9f 0 ;BNOT +a0 0 ;LOR +a1 0 ;LAND +a2 0 ;ADI +a3 0 ;SBI +a4 0 ;STL +a5 0 ;SRO +a6 0 ;STR +a7 0 ;LDB +a8 3 ; +a9 3 ; +aa 3 ; +ab 3 ; +ac 3 ; +ad 3 ; +ae 3 ; +af 3 ; +b0 0 ;EQUI +b1 0 ;NEQI +b2 0 ;LEQI +b3 0 ;GEQI +b4 0 ;LEUSW +b5 0 ;GEUSW +b6 0 ;EQUPWR +b7 0 ;LEQPWR +b8 0 ;GEQPWR +b9 0 ;EQUBYT +ba 3 ;LEQBYT +bb 3 ;GEQBYT +bc 0 ;SRS +bd 3 ;SWAP +be 3 ;TNC +bf 3 ;RND +c0 3 ;ADR +c1 3 ;SBR +c2 3 ;MPR +c3 0 ;DVR +c4 0 ;STO +c5 0 ;MOV +c6 3 ;DUP2 +c7 0 ;ADJ +c8 0 ;STB +c9 0 ;LDP +ca 0 ;STP +cb 0 ;CHK +cc 0 ;FLT +cd 0 ;EQUREAL +ce 0 ;LEQREAL +cf 3 ;GEQREAL +d0 0 ;LDM +d1 0 ;SPR +d2 3 ;EFJ +d3 3 ;NFJ +d4 0 ;FJP +d5 0 ;FJPL +d6 0 ;XJP +d7 0 ;IXA +d8 0 ;IXP +d9 3 ;STE +da 0 ;INN +db 0 ;UNI +dc 0 ;INT +dd 0 ;DIF +de 0 ;SIGNAL +df 0 ;WAIT +e0 3 ;ABI +e1 0 ;NGI +e2 0 ;DUP1 +e3 3 ;ABR +e4 3 ;NGR +e5 0 ;LNOT +e6 0 ;IND +e7 0 ;INC diff --git a/PDQ-3/pdq3_cpu.c b/PDQ-3/pdq3_cpu.c new file mode 100644 index 00000000..dab8e464 --- /dev/null +++ b/PDQ-3/pdq3_cpu.c @@ -0,0 +1,1733 @@ +/* + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + PDQ-3 related code Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. + + 2013xxxx hv initial version (written up to the level to be tested against bootloader) + 20130826 hv fix problem in SPR(-1): taskswitch mustn't modify sp afterwards + 20130901 hv CXG didn't store correct callers seg# in MSCW + 20130903 hv fix wrong stackspace calculation in createmscw + 20130908 hv Segment refcount was not decremented correctly in RPU + 20130914 hv Degredation in SRS instruction + 20130914 hv SPR didn't set registers correctly; mustn't adjust modified SP again + 20130921 hv Rewrite of memory/io handling to allow adding of QBUS devices, + prevent buserror by cpu_ex prefetch and attempts to write to HDT rombased TIB + 20130921 hv WAIT/SIGNAL enque used the wrong queue address + 20130927 hv Defect in WAIT overwriting semaphore queue with its own address + 20131012 hv Previous fix was wrong: WAIT mustn't store qhead back unless it changed + 20131019 hv WAIT doesn't always discard argument, error in specification + 20131019 hv SIGNAL has same problem as WAIT when storing back qhead + 20131103 hv Interrupt idle loop didn't process simh queue + 20131110 hv A really hard one: INT 3 (RCV CONSOLE) incremented waiter sema, because + interrupt changed reg_intpending within a WAIT. Need to latch interrupt before + execution and process afterwards +*/ + +#include "pdq3_defs.h" + + +/* some simulator publics */ +t_stat cpu_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw); +t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw); +t_stat cpu_boot(int32 unitnum, DEVICE *dptr); +t_stat cpu_reset (DEVICE *dptr); +t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat cpu_show_size (FILE *st, UNIT *uptr, int32 val, void *desc); + +/* some forwards */ +static t_stat Raise(uint16 err); +static uint16 Pop(); +static void Push(uint16 val); +static int16 PopS(); +static void PushS(int16 val); +static uint16 createMSCW(uint16 ptbl, uint8 procno, uint16 stat, uint8 segno, uint16 osegb); +static uint16 enque(uint16 qhead, uint16 qtask); /* return new qhead */ +static uint16 deque(uint16 qhead, uint16 *qtask); /* return tail of queue */ +static t_stat DoSIGNAL(uint16 sem); +static uint16 Get(t_addr addr); +static void Put(t_addr addr, uint16 val); +static uint16 GetSIB(uint8 segno); +static t_stat cpu_set_flag(UNIT *uptr, int32 value, char *cptr, void *desc); +static t_stat cpu_set_noflag(UNIT *uptr, int32 value, char *cptr, void *desc); + +static t_stat ssr_read(t_addr ioaddr, uint16 *data); +static t_stat ssr_write(t_addr ioaddr, uint16 data); +static t_stat ses_read(t_addr ioaddr, uint16 *data); +static t_stat cpu_readserial(t_addr dummy, uint16 *data); +static t_stat rom_baseread(t_addr dummy, uint16 *data); +static t_stat rom_ignore(t_addr ea, uint16 data); + +/* the CPU registers */ +uint16 reg_ipc; /* point to current instruction within reg_segb segment */ +uint16 reg_sp; +uint16 reg_splow; +uint16 reg_spupr; +uint16 reg_mp; +uint16 reg_bp; +uint16 reg_segb; /* point to current code segment */ +uint16 reg_ctp; +uint16 reg_rq; +uint16 reg_ssv; +uint16 reg_lm; +uint16 reg_lsv; +uint32 reg_intpending; +uint32 reg_intlatch; +uint16 reg_ssr = 0; /* system status register */ +uint16 reg_ses = 0; /* system environment switch */ +uint16 reg_cpuserial = 0; /* CPU serial number */ + +/* PC address of currently executed instruction */ +t_addr PCX; + +uint16 reg_fc68 = 0; /* location of HDT boot ROM */ +uint16 reg_romsize = 0; /* size of HDT boot ROM */ + +/* possible hack to enforce DMA being initialized to 0x2000 (word address) + * the boot code from Don Maslin's PDQ-3 floppy implies it is run from 0x2000 */ +uint32 reg_dmabase = 0x2000; + +UNIT cpu_unit = { UDATA (NULL, UNIT_FIX+UNIT_BINK, MEMSIZE) }; +REG cpu_reg[] = { + /* must be at location 0: This is to display the combined segb:ipc address, + refers to start of currently executed instruction. Refer to STATE to + see actual IPC value */ + { HRDATA (PC, PCX, 32), REG_RO|REG_HIDDEN }, + + { HRDATA (SEGB, reg_segb, 16) }, + { HRDATA (IPC, reg_ipc, 16) }, + + { HRDATA (SP, reg_sp, 16) }, + { HRDATA (SPLOW, reg_splow, 16) }, + { HRDATA (SPUPR, reg_spupr, 16) }, + + { HRDATA (MP, reg_mp, 16) }, + { HRDATA (BP, reg_bp, 16) }, + { HRDATA (CTP, reg_ctp, 16) }, + { HRDATA (RQ, reg_rq, 16) }, + { HRDATA (SSV, reg_ssv, 16) }, + + { HRDATA (_LM, reg_lm, 16), REG_HIDDEN }, + { HRDATA (_LSV, reg_lsv, 16), REG_HIDDEN }, + { HRDATA (_SSR, reg_ssr, 8), REG_HIDDEN }, + { HRDATA (_SES, reg_ses, 8), REG_HIDDEN }, + { HRDATA (_INT, reg_intpending, 32), REG_HIDDEN }, + { HRDATA (_FC68, reg_fc68, 16 ), REG_RO|REG_HIDDEN }, + { HRDATA (_INITLOC,reg_dmabase, 17 ), REG_RO|REG_HIDDEN }, + + { HRDATA (_ROMSZ, reg_romsize, 16 ), REG_RO|REG_HIDDEN }, + { HRDATA (_CPUSERIAL, reg_cpuserial, 16), REG_HIDDEN }, + + { NULL } +}; +MTAB cpu_mod[] = { + { UNIT_MSIZE, 0, NULL, "32K", &cpu_set_size, NULL }, + { UNIT_MSIZE, 1, NULL, "64K", &cpu_set_size, NULL }, + { UNIT_PASEXC, UNIT_PASEXC, "halt on EXC", "EXC", &cpu_set_flag, NULL }, + { UNIT_PASEXC, 0, "no EXC", NULL, NULL, NULL }, + { MTAB_XTD|MTAB_VDV, UNIT_PASEXC, NULL, "NOEXC", &cpu_set_noflag, NULL }, + { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", NULL, &show_iobase }, + { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", NULL, &show_iovec }, + { MTAB_XTD|MTAB_VDV, 0, "PRIO", "PRIO", NULL, &show_ioprio }, + { 0 } +}; + +DEBTAB cpu_dflags[] = { + { "INT", DBG_CPU_INT }, + { "INT2", DBG_CPU_INT2 }, + { "WRITE", DBG_CPU_WRITE }, + { "READ", DBG_CPU_READ }, + { "FETCH", DBG_CPU_FETCH }, + { "STACK", DBG_CPU_STACK }, + { "CONC", DBG_CPU_CONC }, + { "CONC2", DBG_CPU_CONC2 }, + { "CONC3", DBG_CPU_CONC3 }, + { 0, 0 } +}; + +IOINFO cpu_ioinfo1 = { NULL, SSR_IOBASE, 1, SES_BERR_VEC, 0, ssr_read, ssr_write }; +IOINFO cpu_ioinfo2 = { &cpu_ioinfo1, SES_IOBASE, 1, SES_PWRF_VEC, 1, ses_read, rom_ignore }; +IOINFO cpu_ioinfo3 = { &cpu_ioinfo2, ROM_BASE, 1, 0, -1, rom_baseread, rom_ignore }; +IOINFO cpu_ioinfo4 = { &cpu_ioinfo3, ROM, ROM_SIZE, 0, -1, rom_read, rom_ignore }; +IOINFO cpu_ioinfo5 = { &cpu_ioinfo4, CPU_SERIALNO, 1, 0, -1, cpu_readserial, rom_ignore }; +DEVCTXT cpu_ctxt = { &cpu_ioinfo5 }; + +DEVICE cpu_dev = { + "CPU", /*name*/ + &cpu_unit, /*units*/ + cpu_reg, /*registers*/ + cpu_mod, /*modifiers*/ + 1, /*numunits*/ + 16, /*aradix*/ + 32, /*awidth*/ + 1, /*aincr*/ + 16, /*dradix*/ + 16, /*dwidth*/ + &cpu_ex, /*examine*/ + &cpu_dep, /*deposit*/ + &cpu_reset, /*reset*/ + &cpu_boot, /*boot*/ + NULL, /*attach*/ + NULL, /*detach*/ + &cpu_ctxt, /*ctxt*/ + DEV_DEBUG, /*flags*/ + 0, /*dctrl*/ + cpu_dflags, /*debflags*/ + NULL, /*msize*/ + NULL /*lname*/ +}; + +/* return start address of proctbl of current code segment */ +static uint16 GetPtbl() { + uint16 ptbl; + Read(reg_segb, 0, &ptbl, DBG_NONE); + return reg_segb + ptbl; +} + +/* return segment base of segment */ +static uint16 GetSegbase(uint8 segno) { + uint16 data, sib; + sib = GetSIB(segno); + Read(sib,OFF_SEGBASE, &data, DBG_NONE); + return data; +} + +/* get segment# from code segment: + * this is the first byte of the proctbl at the end of the code segment + *(the second byte is the proc count) */ +static uint8 GetSegno() { + uint16 data; + uint16 ptbl = GetPtbl(); + ReadB(ptbl, 0, &data, DBG_NONE); /* get first byte from proctbl */ + return (uint8)data; +} + +/* set SEGB and return address of proc tbl (optimization for segb + segb[0] ) */ +static uint16 SetSEGB(uint8 segno) { + /* obtain pointer to SIB for segno */ + uint16 sib = GetSIB(segno); + + /* set SEGB and get pointer to proc tbl */ + Read(sib, OFF_SEGBASE, ®_segb, DBG_NONE); + return GetPtbl(); +} + +static void AdjustRefCount(uint8 segno, int incr) { + uint16 sib = GetSIB(segno); + uint16 ref = Get(sib + OFF_SEGREFS); + Put(sib + OFF_SEGREFS, ref + incr); + //printf("ref(%x) %s = %d\n",segno,incr>0 ? "increment":"decrement", ref+incr); +} + +/* save CPU regs into TIB */ +static void save_to_tib() { + Write(reg_ctp, OFF_SP, reg_sp, DBG_NONE); + Write(reg_ctp, OFF_MP, reg_mp, DBG_NONE); + Write(reg_ctp, OFF_BP, reg_bp, DBG_NONE); + Write(reg_ctp, OFF_IPC, reg_ipc, DBG_NONE); + Write(reg_ctp, OFF_SEGB, reg_segb, DBG_NONE); +} + +/* restore CPU regs from TIB */ +static void restore_from_tib() { + Read(reg_ctp, OFF_SP, ®_sp, DBG_NONE); + Read(reg_ctp, OFF_SPLOW, ®_splow, DBG_NONE); + Read(reg_ctp, OFF_SPUPR, ®_spupr, DBG_NONE); + Read(reg_ctp, OFF_MP, ®_mp, DBG_NONE); + Read(reg_ctp, OFF_BP, ®_bp, DBG_NONE); + Read(reg_ctp, OFF_IPC, ®_ipc, DBG_NONE); + Read(reg_ctp, OFF_SEGB, ®_segb, DBG_NONE); +} + +/* initialize registers for boot */ +void cpu_setRegs(uint16 newctp, uint16 newssv, uint16 newrq) +{ + reg_ctp = newctp; + reg_ssv = newssv; + reg_rq = newrq; + restore_from_tib(); +// if (sim_deb) dbg_dump_tib(sim_deb, reg_ctp); + + /* initialize the simh PC */ + PCX = MAKE_BADDR(reg_segb,reg_ipc); +} + +/* this is a dummy routine to ignore invalid writes to the ROM + * which occur during context switch from HDT to boot loader */ +static t_stat rom_ignore(t_addr ea, uint16 data) { + return SCPE_OK; +} + +/* this is the central point to explain the various methods of booting. + * 1. boot from ROM: + * if (0xfc68) == 0 then try method 2 + * else + * MR := (0xfc68) + * CTP := (MR) -> set TIB + * SSV := (MR+1) -> segment dictionary pointer + * RQ := (MR+2) -> request queue + * SEGB := CTP->segb + * load SP, MP, BP, IPC from TIB + * run + * 2. boot from floppy: + * load first track via autoload at reg_dmabase + * CTP := reg_dmabase + * if CTP->sibvec == NIL then + * SSV := unknown + * RQ := CTP->waitq + * SEGB := CTP->segb + * load SP, MP, BP, IPC from TIB + * else + * SSV := CTP->sibvec + * RQ := CTP->waitq + * SEGB := ((SEGB)) // double deref + * load SP, MP, BP, IPC from TIB + * run + * + * This is not fully compliant with W9693_PasIII_OSRef_Jul82, but matches + * the different boot sectors I found. + */ +t_stat cpu_boot(int32 unitnum, DEVICE *dptr) { + t_stat rc; + uint16 ctp, ssv, rq; + printf("BOOT CPU\n"); + cpu_reset(dptr); + dbg_init(); + + /* boot from external ROM? */ + if (reg_fc68 != 0) { +// printf("Booting from HDT ROM\n"); + /* cf. WD9593_PasIII_OSRef_Jul82.pdf */ + Read(reg_fc68, 0, &ctp, DBG_NONE); + Read(reg_fc68, 1, &ssv, DBG_NONE); + Read(reg_fc68, 2, &rq, DBG_NONE); + cpu_setRegs(ctp, ssv, rq); + } else { + /* autoload the 1st track into meory at reg_dmabase */ + if ((rc = fdc_dev.boot(0, &fdc_dev)) != SCPE_OK) return rc; + } + return SCPE_OK; +} + +void cpu_finishAutoload() { + uint16 ssv, rq, sbase; + uint16 ctp = reg_dmabase; + Read(ctp, OFF_SIBS, &ssv, DBG_NONE); + Read(ctp, OFF_WAITQ, &rq, DBG_NONE); + cpu_setRegs(ctp, ssv, rq); + if (ssv != NIL) { + Read(reg_segb, 0, &sbase, DBG_NONE); /* reg_segb is a pointer into sibvec, sbase points to SIB */ + Read(sbase, OFF_SEGBASE, ®_segb, DBG_NONE); /* reg_segb is segbase from SIB entry */ + } +} + +/* CPU reset */ +t_stat cpu_reset (DEVICE *dptr) { + printf("CPU RESET\n"); + sim_brk_types = SWMASK('E')|SWMASK('R')|SWMASK('W'); + sim_brk_dflt = SWMASK('E'); + + /* initialize I/O system, and register standard IO handlers */ + pdq3_ioinit(); + add_ioh(((DEVCTXT*)dptr->ctxt)->ioi); + + /* reset important CPU registers */ + reg_ctp = NIL; + reg_intpending = 0; + reg_intlatch = 0; + PCX = reg_ipc = 0; + + return SCPE_OK; +} + +/* Memory examine */ +t_stat cpu_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw) { + uint16 data; + t_addr off = ADDR_OFF(addr); + t_addr seg = ADDR_SEG(addr); + if (seg==0) seg = NIL; + addr = MAKE_BADDR(seg,off); + +// printf("Examine: addr=%x seg=%x off=%x\n",addr,seg,off); +// printf("sw=%x, isword=%d\n",sw, ADDR_ISWORD(addr)); + if (ADDR_ISWORD(addr) || (sw & SWMASK('W'))) { +// printf("addr=%x seg=%x off=%x\n",addr,seg,off); + if (off >= memorysize || + ReadEx(off, 0, &data) != SCPE_OK) return SCPE_IOERR; + } else if (!ADDR_ISWORD(addr) || (sw & SWMASK('B'))) { + if ((seg*2 + off) >= (2*memorysize) || + ReadBEx(seg, off, &data) != SCPE_OK) return SCPE_IOERR; + } + if (vptr) + *vptr = data; + return SCPE_OK; +} + +/* Memory deposit */ +t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw) +{ + t_addr off = ADDR_OFF(addr); + t_addr seg = ADDR_SEG(addr); + if (seg==0) seg = NIL; + addr = MAKE_BADDR(seg,off); + + if (ADDR_ISWORD(addr) || (sw & SWMASK('W'))) { + if (off >= memorysize || + Write(off, 0, val, 0) != SCPE_OK) return SCPE_ARG; + } else { + if (!ADDR_ISWORD(addr) || (sw & SWMASK('B'))) { + if ((seg*2 + off) >= (2*memorysize) || + WriteB(seg, off, val, 0)) return SCPE_ARG; + } + } + return SCPE_OK; +} + +t_stat cpu_buserror() { + reg_ssr |= SSR_BERR; + return cpu_raiseInt(INT_BERR); +} + +static t_stat ssr_read(t_addr ioaddr, uint16 *data) { + *data = reg_ssr & ~(SSR_PRNT|SSR_BIT3); + return SCPE_OK; +} + +static t_stat ssr_write(t_addr ioaddr, uint16 data) { + if (isbitset(data,SSR_BERR)) { + clrbit(reg_ssr,SSR_BERR); + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "Clear BERR\n", DBG_PC); + } + if (isbitset(data,SSR_TICK)) { + clrbit(reg_ssr,SSR_TICK); + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "Acknowledge TICK\n", DBG_PC); + } + if (isbitset(data,SSR_INTVL)) { + clrbit(reg_ssr,SSR_INTVL); + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "Acknowledge INTVL\n", DBG_PC); + } + if (isbitset(data,SSR_BIT3)) + printf("Warning: Attempt to set SSR bit 3\n"); + if (isbitset(data,SSR_PWRF)) { + clrbit(reg_ssr,SSR_PWRF); + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "Acknowledge PWRF\n", DBG_PC); + } + clrbit(reg_ssr,SSR_PRNT|SSR_INTEN); + setbit(reg_ssr,data & (SSR_PRNT|SSR_INTEN)); + sim_debug(DBG_CPU_INT, &cpu_dev, DBG_PCFORMAT2 "%sable Interrupt system\n", + DBG_PC, isbitset(reg_ssr,SSR_INTEN) ? "En" : "Dis"); + + if (data & SSR_INIT) { + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "Bus Reset BINIT\n", DBG_PC); + /* @TODO: send binit also to a future HDC */ + fdc_binit(); + con_binit(); + } + return SCPE_OK; +} + +static t_stat ses_read(t_addr ioaddr, uint16 *data) +{ + *data = reg_ses; +// printf("ses is %x\n",reg_ses); + return SCPE_OK; +} + +static t_stat cpu_readserial(t_addr dummy, uint16 *data) +{ + *data = reg_cpuserial; + return SCPE_OK; +} + +static t_stat rom_baseread(t_addr dummy, uint16 *data) +{ + *data = reg_fc68; + return SCPE_OK; +} + +/************************************************************************************* + * Interrupt handling + ************************************************************************************/ +static uint16 int_vectors[32] = { + 0x0002, /* INT_BERR */ + 0x0006, /* INT_PWRF */ + 0x000a, /* INT_DMAFD */ + 0x000e, /* INT_CONR */ + 0x0012, /* INT_CONT */ + 0x0016, /* INT_PRNT */ + 0x001a, /* INT_SCLK */ + 0x001e, /* INT_INTVL */ + NIL +}; + +t_bool cpu_isIntEnabled() { + return reg_ssr & SSR_INTEN; +} + +/* latch interrupts */ +void cpu_assertInt(int level, t_bool tf) { + uint16 bit = 1 << level; + if (tf) + setbit(reg_intlatch, bit); + else + clrbit(reg_intlatch, bit); + sim_debug(DBG_CPU_INT2, &cpu_dev, DBG_PCFORMAT1 "%sssert Interrupt Level %d\n", + DBG_PC, tf?"A":"Dea", level); +} + +t_stat cpu_raiseInt(int level) { + uint16 vector = int_vectors[level]; + + if (level > 15) { + printf("Implementation error: raiseInt with level>15! Need fix\n"); + exit(1); + } + + if (!cpu_isIntEnabled()) return STOP_ERRIO; /* interrupts disabled, or invalid vector */ + + cpu_assertInt(level, TRUE); + return SCPE_OK; +} + +static void cpu_ackInt(int level) { + uint16 bit = 1<31) return SCPE_ARG; + int_vectors[level] = vec; + return SCPE_OK; +} + +static int getIntLevel() { + int i; + uint32 bit = 1; + for (i=0; i<31; i++) { + if (reg_intpending & bit) return i; + bit <<= 1; + } + return -1; +} + +static t_stat cpu_processInt() { + int level = getIntLevel(); /* obtain highest pending interupt */ + uint16 vector, sem; + t_stat rc; + + if (level == -1) return SCPE_OK; /* don't signal: spurious interrupt */ + + vector = int_vectors[level]; + if (vector == NIL) return SCPE_OK; + + save_to_tib(); /* save current context into ctp */ + reg_rq = enque(reg_rq, reg_ctp); /* put current task into rq queue */ + + reg_ctp = NIL; /* set no active task (marker for int processing in SIGNAL) */ + sem = Get(vector); /* get semaphore from interrupt vector */ + sim_debug(DBG_CPU_INT, &cpu_dev, DBG_PCFORMAT2 "processInt: level=%d vector=$%04x sema=$%04x\n", + DBG_PC,level,vector,sem); + + cpu_ackInt(level); /* acknowledge this interrupt */ + rc = DoSIGNAL(sem); /* process SIGNAL, i.e. check semaphore at interrupt vector */ + return rc; +} + +/************************************************************************************* + * instruction interpreter + ************************************************************************************/ + +static uint16 UB() { + uint16 val; + ReadB(reg_segb, reg_ipc++, &val, DBG_CPU_FETCH); + return val; +} +static uint16 W() { + uint16 high, data; + if (ReadB(reg_segb, reg_ipc++, &data, DBG_CPU_FETCH) != SCPE_OK) + return data; + if (ReadB(reg_segb, reg_ipc++, &high, DBG_CPU_FETCH) != SCPE_OK) + return high; + data |= (high << 8); + return data; +} +static uint16 DB() { + return UB(); +} +static uint16 SB() { + uint16 data; + ReadB(reg_segb, reg_ipc++, &data, DBG_CPU_FETCH); + if (data & 0x80) data |= 0xff80; + return data; +} +static uint16 B() { + uint16 high, data; + if (ReadB(reg_segb, reg_ipc++, &high, DBG_CPU_FETCH) != SCPE_OK) + return high; + if (high & 0x80) { + if (ReadB(reg_segb, reg_ipc++, &data, DBG_CPU_FETCH) != SCPE_OK) + return high; + data |= ((high & 0x7f) << 8); + return data; + } else + return high; +} +static void Put(t_addr addr, uint16 val) { + Write(0, addr, val, DBG_CPU_WRITE); +} +static uint16 Get(t_addr addr) { + uint16 val; + Read(0, addr, &val, DBG_CPU_READ); + return val; +} + +static void Putb(t_addr base, t_addr idx, uint16 val) { + WriteB(base, idx, val, DBG_CPU_WRITE); +} + +static uint16 Getb(t_addr addr,t_addr idx) { + uint16 val; + ReadB(addr, idx, &val, DBG_CPU_READ); + return val; +} + +static uint16 TraverseMSstat(uint16 db) { + int i; + uint16 lm = reg_mp; + for(i=1; i<=db; i++) lm = Get(lm + OFF_MSSTAT); + return lm; +} + +static uint16 Tos() { + uint16 val; + if (reg_sp >= reg_spupr) { Raise(PASERROR_STKOVFL); return 0; } + Read(0,reg_sp,&val, DBG_CPU_PICK); + return val; +} + +static uint16 Pick(int i) { + uint16 val; + if ((reg_sp+i) >= reg_spupr) { Raise(PASERROR_STKOVFL); return 0; } + Read(0,reg_sp+i,&val, DBG_CPU_PICK); + return val; +} + +static uint16 Pop() { + uint16 val; + if ((reg_sp+1) > reg_spupr) { Raise(PASERROR_STKOVFL); return 0; } + Read(0,reg_sp++,&val, DBG_CPU_POP); + return val; +} + +static void Push(uint16 val) { + if (reg_sp < reg_splow) Raise(PASERROR_STKOVFL); + else + Write(0,--reg_sp,val,DBG_CPU_PUSH); +} + +static int16 PopS() { + return (int16)Pop(); +} + +static void PushS(int16 val) { + Push((uint16)val); +} + +static float PopF() { + T_FLCVT t; + t.i[1] = Pop(); + t.i[0] = Pop(); +// printf("POPF: %.6e\n",t.f); + return t.f; +}; + +static void PushF(float f) { + T_FLCVT t; + t.f = f; +// printf("PUSHF: %.6e\n",t.f); + Push(t.i[0]); + Push(t.i[1]); +} + +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +static uint16 masks[] = { +0x0000, +0x0001, 0x0003, 0x0007, 0x000f, +0x001f, 0x003f, 0x007f, 0x00ff, +0x01ff, 0x03ff, 0x07ff, 0x0fff, +0x1fff, 0x3fff, 0x7fff, 0xffff +}; +/* to produce a mask for a bit field , + * e.g. <3:5> 0000000011111000 == 0x00f8 + */ +static uint16 GetMask(int lowbit,int nbits) { + return masks[nbits] << lowbit; +} + +/* get address of SIB entry of segment */ +static uint16 GetSIB(uint8 segno) { + return segno < 128 ? + Get(reg_ssv + segno) : + Get(Get(reg_ctp + OFF_SIBS) + segno - 128); +} + +/* do a CXG instruction into segment SEGNO to procedure procno */ +static float DoCXG(uint16 segno, uint16 procno) { + uint16 ptbl; + uint16 osegno = GetSegno(); /* obtain segment of caller to be set into MSCW */ + uint16 osegb = reg_segb; + +// printf("CXG: seg=%d proc=%d, osegno=%d\n",segno,procno,osegno); + ptbl = SetSEGB(segno); /* get ptbl of new segment */ + AdjustRefCount(segno,1); + +// printf("CXG: ptbl=%x, reg_segb=%x\n",ptbl,reg_segb); + reg_ipc = createMSCW(ptbl, procno, reg_bp, osegno, osegb); /* call new segment */ + return 63.2; +} + +static t_stat Raise(uint16 err) { + + /* HALT on Pascal Exception? */ + if (Q_PASEXC) return STOP_PASEXC; + + /* push error code + * attention: potential double fault: STKOVFL */ + if (err==PASERROR_STKOVFL) + Write(0,reg_sp,err,TRUE); + else + Push(err); + sim_debug(DBG_CPU_INT, &cpu_dev, DBG_PCFORMAT2 "Raised Pascal Exception #%d\n",DBG_PC,err); + + /* call OS trap handler + * Note: if an exception occurs in boot loader (CHK instruction for CPU serial), + * this goes to nirvana because HALTUNIT is not yet linked correctly */ + sim_interval -= DoCXG(2,2); + return SCPE_OK; +} + +static int GetBit(t_addr base, int bitno) +{ + int wnum = bitno / WORD_SZ; + int bnum = bitno % WORD_SZ; + uint16 bitmask = 1 << bnum; + return (Get(base + wnum) & bitmask) ? 1 : 0; +} + +static uint16 createMSCW(uint16 ptbl, uint8 procno, uint16 stat, uint8 segno, uint16 osegb) { + uint16 procstart = Get(ptbl - procno); /* word index into segment */ + uint16 datasz = Get(reg_segb + procstart); /* word index */ + dbg_segtrack(reg_segb); +// printf("createMSCW: ptbl=%x procno=%d stat=%x segno=%x\n",ptbl,procno,stat,segno); + + if (reg_sp < reg_splow || (datasz+MSCW_SZ) > (reg_sp-reg_splow)) { /* verify enough space on stack */ +// printf("Stk overflow in mscw: sp=%x spl=%x ds=%d dsm=%d sp-spl=%d\n",reg_sp,reg_splow,datasz,datasz+MSCW_SZ, reg_sp-reg_splow); + Raise(PASERROR_STKOVFL); return reg_ipc; + } + reg_sp = reg_sp - MSCW_SZ - datasz; /* allocate space on stack for local data and MSCW */ + + reg_lm = reg_mp; /* save old MP */ + reg_mp = reg_sp; /* set MP to new stack base */ + Put(reg_mp+OFF_MSDYNL,reg_lm); /* set the dyn link to point to previous MSCW */ + Put(reg_mp+OFF_MSIPC, reg_ipc); /* save the IPC of the caller, already adjusted to point to next instr */ + Put(reg_mp+OFF_MSSTAT,stat); /* set the static link */ + Put(reg_mp+OFFB_MSSEG, segno); /* set the segment # of the caller */ + dbg_procenter(reg_segb, procno, reg_sp, osegb); + return (procstart+1) * 2; // new reg_ipc, byte address in segement */ +} + +/* for context switching */ +//uint16 qtask = NIL; + +/* put qtask into priority queue */ +static uint16 enque(uint16 qhead, uint16 qtask) { + uint16 t1 = qhead; + uint16 t2 = NIL; + uint8 qtaskprio = Getb(qtask+OFFB_PRIOR,0); + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Enque: qhead=$%04x qtask=$%04x\n", DBG_PC, qhead, qtask); + while (t1 != NIL) { /* loop until end of queue found */ + if (Getb(t1+OFFB_PRIOR,0) < qtaskprio) break; /* exit loop if priority less than qitem */ + t2 = t1; t1 = Get(t1+OFF_WAITQ); /* otherwise store pointer to current element, advance to next item */ + } + /* now t1 points to an item (or NIL) with a prio less than qtask, t2 points to previous item */ + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Enque: t1=$%04x t2=$%04x\n", DBG_PC, t1, t2); + + Put(qtask+OFF_QLINK, t1); /* append this item */ + if (t2 == NIL) qhead = qtask; /* if no higher prio item present, qtask becomes new head */ + else Put(t2+OFF_QLINK, qtask); /* otherwise prepend higher prio list */ + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Enqueue: DONE qhead=$%04x qtask=$%04x\n",DBG_PC, qhead, qtask); + return qhead; /* return the new qhead */ +} + +/* perform a task switch. If no task ready to run, wait for an interrupt */ +static t_stat taskswitch6() { + uint16 vector, sem; + int level; + t_stat rc = SCPE_OK; + int kbdc; + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "Taskswitch6: ctp=$%04x rq=$%04x\n",DBG_PC, reg_ctp, reg_rq); + + while (reg_rq == NIL) { /* no task ready to run? */ + if (reg_intpending) { /* wait for an interrupt */ + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Taskswitch6: reg_intpending=%08x\n",DBG_PC, reg_intpending); + reg_ctp = NIL; /* set no active task */ + level = getIntLevel(); /* obtain highest pending interupt */ + vector = int_vectors[level]; + sem = Get(vector); + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Taskswitch6: SIGNAL sem=$%04x\n",DBG_PC, sem); + rc = DoSIGNAL(sem); + return rc; + } else { + kbdc = sim_poll_kbd(); /* check keyboard */ + if (kbdc == SCPE_STOP) return kbdc; /* handle CTRL-E */ + /* process timer */ + if (sim_interval <= 0) { + if ((rc = sim_process_event())) + return rc; + } + sim_interval -= 3.6; /* NOP cycle */ + } + } + + reg_rq = deque(reg_rq, ®_ctp); /* get first task from ready queue */ + restore_from_tib(); /* restore registers from TIB */ + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "Taskswitch6: DONE newTIB=$%04x\n", DBG_PC2, reg_ctp); + + /* continue processing in this context */ + return rc; +} + +static t_stat taskswitch5() { + t_stat rc; + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "Taskswitch5: reg_rq=$%04x\n",DBG_PC, reg_rq); + save_to_tib(); /* save current context into ctp */ + rc = taskswitch6(); /* and switch to highest task in ready queue */ + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "Taskswitch5: DONE\n",DBG_PC2); + return rc; +} + +static uint16 deque(uint16 qhead, uint16* qtask) { + uint16 newhead; + *qtask = qhead; /* store first element of queue */ + newhead = Get(qhead+OFF_QLINK); /* discard first element from queue, and return new qhead address */ + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "Dequeue: qtask=$%04x newhead=$%04x\n",DBG_PC,*qtask,newhead); + return newhead; +} + +static t_stat DoSIGNAL(uint16 sem) { + t_stat rc = SCPE_OK; + uint16 qtask, qhead; + uint16 wqaddr = sem + OFF_SEMWAITQ; /* address of wait queue */ + + uint16 count = Get(sem+OFF_SEMCOUNT); /* get count value from semaphore*/ + uint16 wait = Get(wqaddr); /* get top of wait queue */ + + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "SIGNAL: Sem=$%x(count=%d wait=$%x)\n", + DBG_PC,sem,count,wait); + if (count == 0) { + if (wait != NIL) { /* queue is not empty */ + qhead = deque(wait, &qtask); /* extract head of queue (qtask), and store tail back */ + Put(wqaddr, qhead); + + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "SIGNAL: dequeued qtask=$%x\n",DBG_PC, qtask); + reg_rq = enque(reg_rq, qtask); /* put qtask into rq queue */ + sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "SIGNAL: reg_rq=$%x, reg_ctp=$%x\n", DBG_PC, reg_rq, reg_ctp); + + if (reg_ctp == NIL) { /* no current task (marker for int processing */ + sim_interval -= 134.8; /* consume time */ + return taskswitch6(); /* and switch task */ + } + if (Getb(reg_ctp+OFFB_PRIOR,0) < Getb(qtask+OFFB_PRIOR,0)) { /* is qtask higher prio than current task? */ + reg_rq = enque(reg_rq, reg_ctp); /* yes, put current task back into ready queue */ + rc = taskswitch5(); /* save context in TIB, and switch to new task from ready queue */ + } else { + /* else: nothing is waiting on this semaphore, discard argument, and continue */ + reg_sp++; + sim_interval -= 52.0; + } + return rc; + } + } + /* count is > 0, or sem has no waiters */ + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "SIGNAL: Sem=$%x(count=%d): increment\n",DBG_PC, sem, count); + Put(sem+OFF_SEMCOUNT,count+1); + if (reg_ctp == NIL) { /* if no active task, get one from ready queue */ + sim_interval -= 134.8; + return taskswitch6(); + } + reg_sp++; + sim_interval -= 18.0; + return rc; +} + +static float DoWAIT(uint16 sem) { + uint16 qhead; + uint16 wqaddr = sem + OFF_SEMWAITQ; + t_stat rc = SCPE_OK; + + uint16 count = Get(sem + OFF_SEMCOUNT); /* get count of semaphore */ + sim_debug(DBG_CPU_CONC, &cpu_dev, DBG_PCFORMAT1 "WAIT: Sem=$%04x(count=%d)\n",DBG_PC,sem, count); + if (count == 0) { +// sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "WAIT: Semaphore %x has count 0: do a task switch\n",DBG_PC,sem); + + qhead = enque(Get(wqaddr), reg_ctp); /* have current task wait on semaphore */ + Put(wqaddr, qhead); +// sim_debug(DBG_CPU_CONC3, &cpu_dev, DBG_PCFORMAT0 "WAIT: new qhead=%x\n",DBG_PC, qhead); + + rc = taskswitch5(); /* save context in TIB, and switch to new task from ready queue */ + sim_interval -= 90.8; + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "WAIT: DONE, switch to newTIB=$%04x\n",DBG_PC, reg_ctp); + return rc; + } else { + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "WAIT: Sem=$%04x(count=%d): decrement\n", DBG_PC, sem, count); + Put(sem+OFF_SEMCOUNT,count-1); + } + sim_interval -= 11.6; + sim_debug(DBG_CPU_CONC2, &cpu_dev, DBG_PCFORMAT0 "WAIT: DONE, continue\n",DBG_PC); + return rc; +} + +static uint16 HiByte(uint16 reg) { + return (reg>>8) & 0xff; +} + +static uint16 LoByte(uint16 reg) { + return reg & 0xff; +} + +static t_stat DoInstr(void) { + t_stat rc = SCPE_OK; + uint16 opcode, ub1, db, b, ub2, src, dst, inx, len0, len1, hi,lo; + uint16 t1, t2, t3, t4, t5, min1, max1, ptbl, procno, osegb; + int16 ts1, ts2, w; + uint8 segno, osegno; + float tf1, tf2, cyc = 0.0; + int i; + + /* set PCX: current instr in progress */ + PCX = MAKE_BADDR(reg_segb,reg_ipc); + + /* process breakpoints */ + if (sim_brk_summ && sim_brk_test(PCX, SWMASK('E'))) { + return STOP_IBKPT; + } + + /* get opcode */ + opcode = UB(); + + if (dbg_check(opcode, DEBUG_PRE)) { + reg_ipc = ADDR_OFF(PCX); /* restore PC for potential redo */ + return STOP_DBGPRE; + } + + switch (opcode) { + case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f: + case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f: + /* SLDCi */ + Push(opcode & 0x1f); + cyc = 2.8; + break; + case 0x98: /* LDCN */ + Push(NIL); + cyc = 6.4; + break; + case 0x80: /* LDCB */ + Push(UB()); + cyc = 5.6; + break; + case 0x81: /* LDCI */ + Push(W()); + cyc = 8.4; + break; + case 0x82: /* LCA */ + Push(reg_segb + B()); + cyc = 8.0; + break; + case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: + case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: + /* SLDLi */ + Push(Get(reg_mp + MSCW_SZ + (opcode & 0x0f))); + cyc = 6.4; + break; + case 0x87: /* LDL */ + Push(Get(reg_mp + MSCW_SZ -1 + B())); + cyc = 9.6; + break; + case 0x84: /* LLA */ + Push(reg_mp + MSCW_SZ -1 + B()); + cyc = 7.6; + break; + case 0xa4: /* STL */ + Put(reg_mp + MSCW_SZ -1 + B(), Pop()); + cyc = 9.6; + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: + case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f: + /* SLDOi */ + Push(Get(reg_bp + MSCW_SZ + (opcode & 0x0f))); + cyc = 7.2; + break; + case 0x85: /* LDO */ + Push(Get(reg_bp + MSCW_SZ -1 + B())); + cyc = 10.0; + break; + case 0x86: /* LAO */ + Push(reg_bp + MSCW_SZ -1 + B()); + cyc = 8.0; + break; + case 0xa5: /* SRO */ + Put(reg_bp + MSCW_SZ -1 + B(),Pop()); + cyc = 13.2; + break; + case 0x89: /* LOD */ + db = DB(); + reg_lm = TraverseMSstat(db); + Push(Get(reg_lm + MSCW_SZ -1 + B())); + cyc = 17.2 + 3.2*db; + break; + case 0x88: /* LDA */ + db = DB(); + reg_lm = TraverseMSstat(db); + Push(reg_lm + MSCW_SZ -1 + B()); + cyc = 15.2 + 3.2*db; + break; + case 0xa6: /* STR */ + db = DB(); + reg_lm = TraverseMSstat(db); + Put(reg_lm + MSCW_SZ -1 + B(),Pop()); + cyc = 16.8 * 3.2*db; + break; + case 0xc4: /* STO */ + t1 = Pop(); Put(Pop(),t1); + cyc = 8.0; + break; + case 0x9a: /* LDE */ + t2 = GetSegbase(UB()); Push(Get(t2 + B())); + cyc = 26.8; + break; + case 0x9b: /* LAE */ + ub1 = UB(); + Push(GetSegbase(ub1) + B()); + cyc = 24.8; + break; + case 0xd9: /* STE */ + ub1 = UB(); + Put(GetSegbase(ub1) + B(), Pop()); + cyc = 26.0; + break; + case 0x83: /* LDC */ + b = B(); ub1 = UB(); + src = reg_segb + b + ub1; + for (i=1; i<=ub1; i++) Put(reg_sp-i,Get(src-i)); + reg_sp -= ub1; + cyc = 18.0 + 4.0*ub1; + break; + case 0xd0: /* LDM */ + ub1 = UB(); src = Pop() + ub1; + for (i=1; i<=ub1; i++) Put(reg_sp-i,Get(src-i)); + reg_sp -= ub1; + cyc = 10.4 + 6.0*ub1; + break; + case 0x8e: /* STM */ + ub1 = UB(); dst = Get(reg_sp+ub1); + for (i=0; i<=(ub1-1); i++) Put(dst+i,Pick(i)); + reg_sp += (ub1+1); + cyc = 12.4 + 6.0*ub1; + break; + case 0xa7: /* LDB */ + b = Pop(); + Push(Getb(Pop(), b)); + cyc = 12.0; + break; + case 0xc8: /* STB */ + ub1 = Pop(); /* index */ b = Pop(); /* byteaddr */ + Putb(Pop(), b, ub1); + cyc = 13.6; + break; + case 0xc5: /* MOV */ + b = B(); src = Pop(); dst = Pop(); + for (i=0; i<=(b-1); i++) Put(dst+i,Get(src+i)); + cyc = 13.2 + 6.0*b; + break; + case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: + /* SINDi */ + Push(Get(Pop() + (opcode & 0x07))); + cyc = 8.4; + break; + case 0xe6: /* IND */ + Push(Get(Pop() + B())); + cyc = 12.4; + break; + case 0xe7: /* INC */ + Push(Pop() + B()); + cyc = 9.6; + break; + case 0xd7: /* IXA */ + t1 = Pop(); Push(Pop() + t1*B()); + cyc = 9.6 + b/16384.*46.4; + break; + case 0xd8: /* IXP */ + ub1 = UB(); ub2 = UB(); inx = Pop(); + Push(Pop() + inx / ub1); + Push(ub2); Push((inx % ub1) * ub2); + cyc = 35.6; /* inaccurate */ + break; + case 0xc9: /* LDP */ + t1 = Pop(); /*start*/ t2 = Pop(); /*nbits*/ + /* Bogus warning: WD9693_PasIII_OSref_Jul82 is wrong here: + * (sp+2) is an address not a value, so must be dereferenced first */ + Push((Get(Pop() /*addr*/) & GetMask(t1,t2)) >> t1); + cyc = 18.4 + 2.0*(t1+t2); + break; + case 0xca: /* STP */ + t4 = Pop(); /*data*/ t1 = Pop(); /*start*/ t2 = Pop(); /*nbits*/ + t3 = Pop(); /*addr*/ t5 = Get(t3); + clrbit(t5,GetMask(t1,t2)); t4 = (t4 & masks[t2]) << t1; + Put(t3, t5 | t4); + cyc = 20.4 + 2.0*t2 + 2.8*t1; + break; + case 0xa1: /* LAND */ + Push(Pop() & Pop()); + cyc = 8.0; + break; + case 0xa0: /* LOR */ + Push(Pop() | Pop()); + cyc = 8.0; + break; + case 0xe5: /* LNOT */ + Push(~Pop()); + cyc = 5.2; + break; + case 0x9f: /* BNOT */ + Push((~Pop()) & 1); + cyc = 6.0; + break; + case 0xb4: /* LEUSW */ + t1 = Pop(); t2 = Pop() <= t1 ? 1 : 0; + Push(t2); + cyc = t2 ? 9.6 : 10.4; + break; + case 0xb5: /* GEUSW */ + t1 = Pop(); t2 = Pop() >= t1 ? 1 : 0; + Push(t2); + cyc = t2 ? 9.6 : 10.4; + break; + case 0xe0: /* ABI */ + ts1 = PopS(); + PushS(ts1 < 0 ? -ts1 : ts1); + cyc = ts1 < 0 ? 6.0 : 4.8; + break; + case 0xe1: /* NGI */ + PushS(-PopS()); + cyc = 5.2; + break; + case 0xe2: /* DUP1 */ + Push(Tos()); + cyc = 5.2; + break; + case 0xa2: /* ADI */ + PushS(PopS() + Pop()); + cyc = 8.0; + break; + case 0xa3: /* SBI */ + ts1 = PopS(); PushS(PopS() - ts1); + cyc = 8.0; + break; + case 0x8c: /* MPI */ + PushS(Pop() * Pop()); + cyc = 28.0; /* average */ + break; + case 0x8d: /* DVI */ + ts1 = PopS(); if (ts1 == 0) { Raise(PASERROR_DIVZERO); break; } + ts2 = PopS() / ts1; + PushS(ts2); + cyc = ts2 == 0 ? 8.4 : (ts2 > 0 ? 89.2 : 91.2); + break; + case 0x8f: /* MODI */ + ts1 = PopS(); if (ts1 <= 0) { Raise(PASERROR_DIVZERO); /* XXX */ break; } + ts2 = Pop() % ts1; + PushS(ts2); + cyc = ts2 == 0 ? 8.4 : (ts2 > 0 ? 89.2 : 91.2); + break; + case 0xcb: /* CHK */ + t1 = Tos(); t2 = Pick(1); t3 = Pick(2); + if (t2 <= t3 && t3 <= t1) + reg_sp += 2; + else + Raise(PASERROR_VALRANGE); + cyc = 14.4; + break; + case 0xb0: /* EQUI */ + t1 = PopS()==PopS() ? 1 : 0; + Push(t1); + cyc = t1 ? 9.6 : 10.4; + break; + case 0xb1: /* NEQI */ + t1 = PopS()==PopS() ? 0 : 1; + Push(t1); + cyc = t1 ? 9.6 : 10.4; + break; + case 0xb2: /* LEQI */ + ts1 = PopS(); t2 = PopS() <= ts1 ? 1 : 0; + Push(t2); + cyc = t2 ? 10.4 : 11.2; + break; + case 0xb3: /* GEQI */ + ts1 = PopS(); t2 = PopS() >= ts1 ? 1 : 0; + Push(t2); + cyc = t2 ? 10.4 : 11.2; + break; + case 0xcc: /* FLT */ + t1 = PopS(); + PushF((float)t1); + cyc = t1 ? 30.8 : 10.8; + break; + case 0xbe: /* TNC */ + tf1 = PopF(); + PushS((int16)tf1); + cyc = tf1 ? (abs(tf1)<0.5 ? 15.6 : 37.4) : 12.4; /* approximate */ + break; + case 0xbf: /* RND */ + tf1 = PopF(); + PushS((int16)(tf1+0.5)); + cyc = tf1 ? (abs(tf1)<0.5 ? 15.6 : 37.4) : 12.4; /* approximate */ + break; + case 0xe3: /* ABR */ + PushF(abs(PopF())); + cyc = 5.2; + break; + case 0xe4: /* NGR */ + PushF(-PopF()); + cyc = 5.2; + break; + case 0xc0: /* ADR */ + tf1 = PopF(); + PushF(tf1 + PopF()); + cyc = tf1 ? 106.8 : 18.8; /* average */ + break; + case 0xc1: /* SBR */ + tf1 = PopF(); PushF(PopF() - tf1); + cyc = tf1 ? 110.0 : 19.2; /* average */ + break; + case 0xc2: /* MPR */ + tf1 = PopF(); + PushF(tf1 * PopF()); + cyc = tf1 ? 168.6 : 26.4; /* average */ + break; + case 0xc3: /* DVR */ + tf1 = PopF(); if (tf1 == 0) { Raise(PASERROR_DIVZERO); break; } + tf2 = PopF(); + PushF(tf2 / tf1); + cyc = tf2 ? 217.2 : 32.4; /* average */ + break; + case 0xcd: /* EQUREAL */ + tf1 = PopF(); + t1 = tf1==PopF() ? 1 : 0; + Push(t1); + cyc = t1 ? 16.4 : (tf1 ? 18.4 : 14.8); /* average */ + break; + case 0xce: /* LEQREAL */ + tf1 = PopF(); tf2 = PopF(); + t1 = tf2 <= tf1 ? 1 : 0; + Push(t1); + cyc = tf1==tf2 ? 16.4 : (tf1 < tf2 ? 18.2 : 19.4); /* average */ + break; + case 0xcf: /* GEQREAL */ + tf1 = PopF(); tf2 = PopF(); + Push(tf2 >= tf1 ? 1 : 0); + cyc = tf1==tf2 ? 16.4 : 18.2; /* average */ + break; + case 0xc6: /* DUP2 */ + Push(Pick(1)); Push(Pick(1)); + cyc = 12.0; + break; + case 0xc7: /* ADJ */ + ub1 = UB(); len0 = Tos(); src = reg_sp+1; dst = reg_sp + len0 - ub1 +1; + cyc = 14.4; + if (len0 > ub1) { + for (i=1; i<=ub1; i++) Put(dst + ub1 -i, Get(src + ub1 - i)); + cyc = 13.6 + 6.8*ub1; + } else { + for (i=0; i hi) { + reg_sp++; Put(reg_sp,0); + cyc = 18.0; + } else { + len0 = hi / WORD_SZ +1; + reg_sp -= (len0-1); Put(reg_sp,len0); + for (i=0; i= len0) { + src = reg_sp + 1; dst = reg_sp + len0 + 2; + for (i=0; i len0) { + src = reg_sp+1; dst = reg_sp+len0 + 2; + for (i=0; i len0) { + src = reg_sp + 1; dst = reg_sp + len0 + 2; + for (i=0; i len1) { + while (i < max1) { + if (Get(src+i) != 0) break; + i++; + } + } else if (len1 > len0) { + while (i < max1) { + if (Get(dst+i) != 0) break; + i++; + } + } + reg_sp += (len0+len1+1); Put(reg_sp,(i >= max1 ? 1 : 0)); + cyc = 16.0 + 7.6*min1 + 4.0*max1; /* inaccurate */ + break; + case 0xb7: /* LEQPWR */ + len0 = Tos(); len1 = Pick(len0 + 1); i=0; + min1 = MIN(len0,len1); max1 = MAX(len0,len1); + /* Bogus warning: WD9693_PasIII_OSref_Jul82 is wrong here: + * src and dst are not addresses on stack (^p) but addresses OF stack */ + src = reg_sp + 1; dst = reg_sp + len0 + 2; + while (i len1) { + while (i < max1) { + if (Get(src+i) != 0) break; + i++; + } + } else i = max1; + reg_sp += (len0+len1+1); Put(reg_sp,(i >= max1 ? 1 : 0)); + cyc = 16.0 + 8.4*min1 + 4.0*max1; /* inaccurate */ + break; + case 0xb8: /* GEQPWR */ + len0 = Tos(); len1 = Pick(len0 + 1); i=0; + min1 = MIN(len0,len1); max1 = MAX(len0,len1); + /* Bogus warning: WD9693_PasIII_OSref_Jul82 is wrong here: + * src and dst are not addresses on stack (^p) but addresses OF stack */ + src = reg_sp + 1; dst = reg_sp + len0 + 2; + while (i= max1 ? 1 : 0)); + cyc = 21.6 + 8.4*min1 + 4.0*max1; /* inaccurate */ + break; + case 0xb9: /* EQUBYT */ + b = B(); src = Pop(); dst = Pop(); i = 0; + while (i < b && Getb(src,i) == Getb(dst,i)) i++; + t1 = i >= b ? 1 : 0; + Push(t1); + cyc = t1 ? (19.2 + 5.1*b) : (11.4 + 5.1*i); /* inaccurate */ + break; + case 0xba: /* LEQBYT */ + b = B(); src = Pop(); dst = Pop(); i = 0; + while (i < b && Getb(src,i) <= Getb(dst,i)) i++; + Push(i >= b ? 1 : 0); + cyc = 18.4 + 10.4*b; /* inaccurate */ + break; + case 0xbb: /* GEQBYT */ + b = B(); src = Pop(); dst = Pop(); i = 0; + while (i < b && Getb(src,i) >= Getb(dst,i)) i++; + Push(i >= b ? 1 : 0); + cyc = 18.4 + 10.4*b; /* inaccurate */ + break; + case 0x8a: /* UJP */ + b = SB(); reg_ipc += b; + cyc = 12.4; + break; + case 0xd4: /* FJP */ + b = SB(); t1 = Pop(); + cyc = 10.8; + if ((t1 & 1)==0) { + reg_ipc += b; + cyc += 6.0; + } + break; + case 0xd2: /* EFJ */ + b = SB(); t1 = Pop(); t2 = Pop(); + cyc = 11.8; + if (t2 != t1) { + reg_ipc += b; + cyc += 7.4; + } + break; + case 0xd3: /* NFJ */ + b = SB(); t1 = Pop(); t2 = Pop(); + cyc = 12.0; + if (t2 == t1) { + reg_ipc += b; + cyc += 7.2; + } + break; + case 0x8b: /* UJPL */ + w = W(); reg_ipc += w; + cyc = 12.8; + break; + case 0xd5: /* FJPL */ + w = W(); t1 = Pop(); + cyc = 10.0; + if ((t1 & 1)== 0) { + reg_ipc += w; + cyc += 8.8; + } + break; + case 0xd6: /* XJP */ + b = B(); t1 = Pop(); + t2 = Get(reg_segb + b); + if (t2 <= t1 && Get(reg_segb + b + 1) >= t1) { + reg_ipc += Get(reg_segb + b + 2 + (t1-t2)); + cyc = 32.0; + } else { + cyc = t1 < t2 ? 29.2 : 34.0; + } + break; + case 0x90: /* CPL */ + procno = UB(); + ptbl = GetPtbl(); + reg_ipc = createMSCW(ptbl, procno, reg_mp, 0, reg_segb); + cyc = 45.6; + break; + case 0x91: /* CPG */ + procno = UB(); + ptbl = GetPtbl(); + reg_ipc = createMSCW(ptbl, procno, reg_bp, 0, reg_segb); + cyc = 44.8; + break; + case 0x92: /* CPI */ + db = DB(); procno = UB(); + ptbl = GetPtbl(); + /* Bogus warning: WD9693_PasIII_OSref_Jul82 is wrong here: + * msstat is preserved, CPI page 46 does not set it */ + reg_ipc = createMSCW(ptbl, procno, Get(reg_mp+OFF_MSSTAT), 0, reg_segb); + reg_lm = reg_mp; + for (i=1; i<= db; i++) + reg_lm = Get(reg_lm+OFF_MSSTAT); + Put(reg_mp+OFF_MSSTAT,reg_lm); /* fix stat link */ + cyc = 53.6 + 3.2*db; + break; + case 0x93: /* CXL */ + segno = UB(); procno = UB(); + osegno = GetSegno(); + osegb = reg_segb; + ptbl = SetSEGB(segno); + AdjustRefCount(segno, 1); + reg_ipc = createMSCW(ptbl, procno, reg_mp, osegno, osegb); + cyc = 64.4; + break; + case 0x94: /* CXG */ + ub1 = UB(); ub2 = UB(); + cyc = DoCXG(ub1, ub2); + break; + case 0x95: /* CXI */ + segno = UB(); db = DB(); procno = UB(); + osegno = GetSegno(); + osegb = reg_segb; + ptbl = SetSEGB(segno); + AdjustRefCount(segno, 1); + reg_ipc = createMSCW(ptbl, procno, reg_mp, osegno, osegb); + reg_lm = reg_mp; + for (i=1; i<= db; i++) reg_lm = Get(reg_lm+OFF_MSSTAT); + Put(reg_mp+OFF_MSSTAT,reg_lm); /* fix stat link */ + cyc = 73.2 + 3.2*db; + break; + case 0x97: /* CPF */ + t1 = Pop(); reg_lm = Pop(); + segno = HiByte(t1); + procno = LoByte(t1); + osegno = GetSegno(); + osegb = reg_segb; + ptbl = SetSEGB(segno); + AdjustRefCount(segno, 1); + reg_ipc = createMSCW(ptbl, procno, reg_lm, osegno, osegb); + cyc = 75.6; + break; + case 0x96: /* RPU */ + dbg_procleave(); + b = B(); reg_sp = reg_mp; reg_lm = reg_mp; + reg_mp = Get(reg_lm+OFF_MSDYNL); + reg_ipc = Get(reg_lm+OFF_MSIPC); + segno = Getb(reg_lm+OFFB_MSSEG,0); + if (segno) { + osegno = GetSegno(); + AdjustRefCount(osegno, -1); + (void)SetSEGB(segno); + } + reg_sp += (b + MSCW_SZ); + cyc = 26.0; + break; + case 0x99: /* LSL */ + db = DB(); reg_lm = reg_mp; + for (i=1; i<= db; i++) reg_lm = Get(reg_lm+OFF_MSSTAT); + Push(reg_lm); + cyc = 12.4 + 3.2*db; + break; + case 0xde: /* SIGNAL */ + t1 = Pick(0); + rc = DoSIGNAL(t1); + break; + case 0xdf: /* WAIT */ + t1 = Pop(); + rc = DoWAIT(t1); break; + case 0x9d: /* LPR */ + w = Tos(); + cyc = 0.0; + if (w >= 0) { + save_to_tib(); + cyc = 55.2; + } else + cyc = 8.4; + if (w == -3) Put(reg_sp, reg_rq); + else if (w == -2) Put(reg_sp, reg_ssv); + else if (w == -1) Put(reg_sp, reg_ctp); + else if (w > 0) Put(reg_sp, Get(reg_ctp + w)); + break; + case 0xd1: /* SPR */ + t1 = Tos(); + w = (int16)Pick(1); + if (w >= -1) + save_to_tib(); + cyc = 8.4; + if (w == -3) { + reg_rq = t1; + } else if (w == -2) { + reg_ssv = t1; + } else if (w == -1) { +// printf("SPR Taskswitch reg_ctp=%x\n",t1); + reg_rq = t1; + taskswitch5(); +// printf("SPR Taskswitch done reg_ctp=%x reg_rq=%x\n",reg_ctp,reg_rq); + cyc = 53.2; + break; /* mustn't fall through reg_sp +=2 */ + } else if (w >= 1) { + cyc = 54.8; + switch (w) { + case OFF_SP: reg_sp = t1; break; + case OFF_MP: reg_mp = t1; break; + case OFF_BP: reg_bp = t1; break; + case OFF_IPC: reg_ipc = t1; break; + case OFF_SEGB: reg_segb = t1; break; + default: Put(reg_ctp + w, t1); break; + } + } + if (w >= -1) + save_to_tib(); + if (w != OFF_SP) reg_sp += 2; /* mustn't change modified SP again */ + break; + case 0x9e: /* BPT */ + Raise(PASERROR_USERBRK); + cyc = 0; /* added in Raise() -> DoCXG() */ + return STOP_BPT; +// break; + case 0x9c: /* NOP */ + cyc = 3.6; + break; + case 0xbd: /* SWAP */ + t1 = Tos(); + Put(reg_sp, Pick(1)); + Put(reg_sp+1, t1); + cyc = 12.4; + break; + default: +// Raise(PASERROR_UNIMPL); + return STOP_IMPL; + } + + if (rc != SCPE_OK) return rc; + + /* set new PCX */ + PCX = MAKE_BADDR(reg_segb,reg_ipc); + if (dbg_check(opcode, DEBUG_POST)) return STOP_DBGPOST; + + /* count cycles */ + sim_interval -= (int)(cyc+0.5); + + return SCPE_OK; +} + +t_stat sim_instr(void) +{ + t_stat rc = SCPE_OK; + while (rc == SCPE_OK) { + + /* set PCX of instruction in progress */ + PCX = MAKE_BADDR(reg_segb,reg_ipc); + + /* process timer */ + if (sim_interval <= 0) { + if ((rc = sim_process_event())) + break; + } + + /* effectively latch interrupts now: + * there is a known CPU bug: interrupts are latched here. + * If the following instruction will disable interrupts, + * the interrupt is processed anyway + */ + + /* if reg_ctp is NIL, CPU waits for interrupt or autoload done. + * handle time by NOP cycles + */ + if (reg_ctp != NIL) { + if ((rc = DoInstr())) break; + } else { + /* waste time by doing a NOP */ + sim_interval -= 3.6; + } + + /* process interrupts + * CPU latches interrupt request now, and after instr + * execution, will process them. Note: this is a known bug in CPU, because + * if the instruction disables interrupts, the interrupt is processed anyway */ + if (cpu_isIntEnabled()) { + reg_intpending |= reg_intlatch; + if (reg_intpending) { + if ((rc = cpu_processInt())) { + printf("processint returns %d\n",rc); fflush(stdout); + break; + } + } + } + + } + return rc; +} + +static t_stat cpu_set_flag(UNIT *uptr, int32 value, char *cptr, void *desc) { + uptr->flags |= value; + return SCPE_OK; +} + +static t_stat cpu_set_noflag(UNIT *uptr, int32 value, char *cptr, void *desc) { + uptr->flags &= ~value; + return SCPE_OK; +} + diff --git a/PDQ-3/pdq3_debug.c b/PDQ-3/pdq3_debug.c new file mode 100644 index 00000000..33397870 --- /dev/null +++ b/PDQ-3/pdq3_debug.c @@ -0,0 +1,441 @@ +/* pdq3_debug.c: PDQ3 debug helper + + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. + + 20130421 hv initial version + 20130928 hv fix problem with callstack when S_Start_P patches MSCW + 20131012 hv view calltree returned incorrect segment of caller +*/ +#include "pdq3_defs.h" + +static uint8 *opdebug = NULL; + +static void dbg_opdbgcreate() { + int i; + FILE *fd = fopen(DEBUG_OPDBGFILE, "w"); + if (fd==NULL) { + fprintf(stderr,"Cannot create %s\n", DEBUG_OPDBGFILE); + exit(1); + } + for (i=DEBUG_MINOPCODE; i",q); + if ((rc=ReadEx(q, OFF_WAITQ, &q)) != SCPE_OK) return rc; + } + fprintf(fd, "NIL\n"); + return SCPE_OK; +} + +t_stat dbg_dump_mscw(FILE* fd, uint16 base) { + t_stat rc; + uint16 data; + fprintf(fd, "MSCW at $%04x\n",base); + if ((rc=ReadEx(base, OFF_MSSTAT, &data)) != SCPE_OK) return rc; + fprintf(fd, " MSSTAT: $%04x\n", data); + if ((rc=ReadEx(base, OFF_MSDYNL, &data)) != SCPE_OK) return rc; + fprintf(fd, " MSDYNL: $%04x\n", data); + if ((rc=ReadEx(base, OFF_MSIPC, &data)) != SCPE_OK) return rc; + fprintf(fd, " MSIPC: $%04x\n", data); + if ((rc=ReadBEx(base+OFFB_MSSEG, 0, &data)) != SCPE_OK) return rc; + fprintf(fd, " MSSEG: %02x\n", data); + return SCPE_OK; +} + +void dbg_enable() { + cpu_dev.dctrl |= (DBG_CPU_READ|DBG_CPU_WRITE|DBG_CPU_STACK); +} + +/****************************************************************************** + * Segment Tracking support + *****************************************************************************/ + +static char* pdq3_segname(uint16 nameptr) { + static char name[10]; + uint16 data; + int i; + for (i=0; i<8; i++) { + ReadBEx(nameptr,i,&data); + name[i] = data != ' ' ? data : 0; + } + name[8] = 0; + return name; +} + +t_stat dbg_dump_seg(FILE* fd, uint16 segptr) { + t_stat rc; + uint16 data; + if ((rc=ReadEx(segptr, OFF_SEGBASE, &data)) != SCPE_OK) return rc; + fprintf(fd, " BASE: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGLENG, &data)) != SCPE_OK) return rc; + fprintf(fd, " LENGTH: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGREFS, &data)) != SCPE_OK) return rc; + fprintf(fd, " REFS: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGADDR, &data)) != SCPE_OK) return rc; + fprintf(fd, " ADDR: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGUNIT, &data)) != SCPE_OK) return rc; + fprintf(fd, " UNIT: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_PREVSP, &data)) != SCPE_OK) return rc; + fprintf(fd, " PREVSP: $%04x\n",data); + fprintf(fd, " NAME: %s\n", pdq3_segname(segptr+OFF_SEGNAME)); + if ((rc=ReadEx(segptr, OFF_SEGLINK, &data)) != SCPE_OK) return rc; + fprintf(fd, " LINK: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGGLOBAL, &data)) != SCPE_OK) return rc; + fprintf(fd, " GLOBAL: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGINIT, &data)) != SCPE_OK) return rc; + fprintf(fd, " INIT: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEG13, &data)) != SCPE_OK) return rc; + fprintf(fd, " entry13: $%04x\n",data); + if ((rc=ReadEx(segptr, OFF_SEGBACK, &data)) != SCPE_OK) return rc; + fprintf(fd, " SELF: $%04x\n",data); + return SCPE_OK; +} + +t_stat dbg_dump_segtbl(FILE* fd) { + int i; + uint16 segptr, nsegs; + t_stat rc; + + if (reg_ssv < 0x2030 || reg_ssv > 0xf000) { + printf("Cannot list segments in bootloader: incomplete tables\n"); + return SCPE_NXM; + } + + if ((rc=Read(reg_ssv, -1, &nsegs, 0)) != SCPE_OK) return rc; + + fprintf(fd, "Segment table: ssv=$%04x size=%d\n",reg_ssv, nsegs); + for (i=0; i<=nsegs; i++) { + if ((rc=ReadEx(reg_ssv, i, &segptr)) != SCPE_OK) return rc; + fprintf(fd, " %02x %04x %s\n",i,segptr, pdq3_segname(segptr + OFF_SEGNAME)); + } + return SCPE_OK; +} + +/* segment tracking */ +typedef struct _seginfo { + uint16 base; /* base load address */ + struct _seginfo* next; + uint16 idx; /* index into SSV table */ + char name[10]; /* segment name */ + uint16 size; + uint16 nproc; + uint16 segno; +} SEGINFO; + +#define SEGHASHSIZE 97 +SEGINFO* seghash[SEGHASHSIZE]; +#define SEGHASHFUNC(i) (i % SEGHASHSIZE) + +void dbg_segtrackinit() { + int i; + for (i=0; inext = next; + s->base = base; + return s; +} + +static SEGINFO* find_seginfo(uint16 base, int* idx) { + SEGINFO* s; + *idx = SEGHASHFUNC(base); + s = seghash[*idx]; + while (s && s->base != base) s = s->next; + return s; +} + +t_stat dbg_segtrack(uint16 segbase) { + t_stat rc; + int idx; + SEGINFO* s = find_seginfo(segbase, &idx); + if (!s) { + s = seghash[idx] = new_seginfo(seghash[idx], segbase); + if ((rc=ReadEx(segbase, 0, &s->size)) != SCPE_OK) return rc; + strcpy(s->name, segbase==0xf418 ? "HDT" : pdq3_segname(segbase+2)); + if ((rc=ReadBEx(segbase+s->size, 0, &s->segno)) != SCPE_OK) return rc; + if ((rc=ReadBEx(segbase+s->size, 1, &s->nproc)) != SCPE_OK) return rc; +// printf("Entered at %04x: %s sz=%x seg=%x np=%x\n",segbase, s->name, s->size, s->segno, s->nproc); + } + return SCPE_OK; +} + +/****************************************************************************** + * Name Alias Handling + *****************************************************************************/ + +typedef struct _aliases { + char* key; + char* alias; + struct _aliases* next; +} ALIASES; + +#define ALIASHASHSIZE 97 +static ALIASES* aliases[ALIASHASHSIZE]; + +static void dbg_initaliases() { + int i; + for (i=0; ikey, gbuf2, 0); + while (a && strcmp(gbuf2,gbuf)) { + a = a->next; + if (a) get_glyph(a->key, gbuf2, 0); + } + return a; +} + +t_stat dbg_enteralias(const char* key, const char* value) { + int idx; + ALIASES* a = find_alias(key, &idx); + if (!a) { + a = (ALIASES*)malloc(sizeof(ALIASES)); + a->key = strdup(key); + a->alias = strdup(value); + a->next = aliases[idx]; + aliases[idx] = a; + } + return SCPE_OK; +} + +t_stat dbg_listalias(FILE* fd) { + int i; + ALIASES* a; + fprintf(fd, "Name table:\n"); + for (i=0; ikey, a->alias); + a = a->next; + } + } + return SCPE_OK; +} + +/****************************************************************************** + * Procedure tracking support + *****************************************************************************/ + +typedef struct _procinfo { + struct _procinfo *next; + uint16 procno; + SEGINFO* seg; + uint16 localsz; + uint16 freesz; + uint16 mscw; + uint16 segb; + uint16 instipc; + uint16 ipc; +} PROCINFO; + +const char* find_procname(PROCINFO* p) { + ALIASES* a; + int dummy; + static char buf[100]; + sprintf(buf,"%s:proc%d", p->seg->name, p->procno); + a = find_alias(buf, &dummy); + if (a) return a->alias; + return buf; +} + +static PROCINFO* procroot = NULL; + +static PROCINFO* new_procinfo(uint16 segbase, uint16 procno, uint16 mscw, uint16 osegb) { + int dummy; + uint16 procbase, procaddr; + uint16 exitic, sz1, sz2; + PROCINFO* p = (PROCINFO*)malloc(sizeof(PROCINFO)); + p->procno = procno; + p->mscw = mscw; + p->seg = find_seginfo(segbase, &dummy); + p->segb = osegb; + p->instipc = ADDR_OFF(PCX); + ReadEx(mscw,OFF_MSIPC, &p->ipc); + ReadEx(segbase, 0, &procbase); + ReadEx(segbase+procbase-procno, 0, &procaddr); + ReadEx(segbase+procaddr, 0, &p->localsz); + ReadEx(segbase+procaddr-1, 0, &exitic); + ReadBEx(segbase, exitic, &sz1); + if (sz1==0x96) { + ReadBEx(segbase, exitic+1, &sz1); + if (sz1 & 0x80) { + ReadBEx(segbase, exitic+2, &sz2); + sz1 = ((sz1 & 0x7f)<<8) | sz2; + } + p->freesz = sz1; + } + return p; +} + +t_stat dbg_procenter(uint16 segbase, uint16 procno, uint16 mscw, uint16 osegb) { + PROCINFO* p = new_procinfo(segbase, procno, mscw, osegb); + p->next = procroot; + procroot = p; + return SCPE_OK; +} + +t_stat dbg_procleave() { + t_stat rc; + PROCINFO* p = procroot; + uint16 ipc,pipc; + while (p) { + pipc = p->ipc; + if ((rc=ReadEx(p->mscw,OFF_MSIPC, &ipc)) != SCPE_OK) return rc; + procroot = p->next; + free(p); + if (pipc == ipc) break; + p = procroot; + } + return SCPE_OK; +} + +t_stat dbg_calltree(FILE* fd) { + PROCINFO* p = procroot, *lastp; + + if (!p) { + fprintf(fd,"Callstack is empty\n"); + return SCPE_OK; + } + + fprintf(fd,"Calltree:\nCurrently in %s at %04x:%04x\n", + find_procname(p), reg_segb, reg_ipc); + lastp = p; + p = p->next; + while (p) { + fprintf(fd," at %04x:%04x called by %s (%04x:%04x)\n", + lastp->segb, lastp->instipc, find_procname(p), p->segb, p->instipc); + lastp = p; + p = p->next; + } + return SCPE_OK; +} + +/****************************************************************************** + * Initialization + *****************************************************************************/ + +t_stat dbg_init() { + dbg_opdbginit(); + dbg_segtrackinit(); + return SCPE_OK; +} + + diff --git a/PDQ-3/pdq3_defs.h b/PDQ-3/pdq3_defs.h new file mode 100644 index 00000000..3833cf98 --- /dev/null +++ b/PDQ-3/pdq3_defs.h @@ -0,0 +1,415 @@ +/* pdq3_defs.h: PDQ3 simulator definitions + + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. + + 20131103 hv INT_CONR/CONT assignments incorrect in docs, must be swapped +*/ +#ifndef _PDQ3_DEFS_H_ +#define _PDQ3_DEFS_H_ 0 + +#include "sim_defs.h" /* simulator defns */ +#include "sim_sock.h" +#include "sim_tmxr.h" + +/* constants */ +#define NIL 0xfc00 /* Pascal Microengine NIL value */ +#define MSCW_SZ 4 /* size of MSCW */ +#define REAL_SZ 2 /* size of real number (REAL*4) */ +#define BSET_SZ 4080 /* usable size of set in bits */ +#define ISET_SZ 255 /* size of set in words */ +#define WORD_SZ 16 /* size of machine word in bits */ + +#define OFF_SEGBASE 0 /* offsets into SIB entry */ +#define OFF_SEGLENG 1 +#define OFF_SEGREFS 2 +#define OFF_SEGADDR 3 +#define OFF_SEGUNIT 4 +#define OFF_PREVSP 5 +#define OFF_SEGNAME 6 +#define OFF_SEGLINK 10 +#define OFF_SEGGLOBAL 11 +#define OFF_SEGINIT 12 +#define OFF_SEG13 13 +#define OFF_SEGBACK 14 + +#define OFF_MSSTAT 0 /* offsets into MSCW */ +#define OFF_MSDYNL 1 +#define OFF_MSIPC 2 +#define OFFB_MSSEG 3 +#define OFFB_MSFLAG 3 + +#define OFF_WAITQ 0 /* offset into TIB */ +#define OFF_QLINK 0 +#define OFFB_PRIOR 1 +#define OFFB_FLAGS 1 +#define OFF_SPLOW 2 +#define OFF_SPUPR 3 +#define OFF_SP 4 +#define OFF_MP 5 +#define OFF_BP 6 +#define OFF_IPC 7 +#define OFF_SEGB 8 +#define OFF_HANGP 9 +#define OFF_IORSLT 10 +#define OFF_SIBS 11 + +#define OFF_SEMCOUNT 0 /* offset into SEMA variable */ +#define OFF_SEMWAITQ 1 + +#define SSR_BERR 0x01 /* bits of system status register */ +#define SSR_TICK 0x02 +#define SSR_INTVL 0x04 +#define SSR_BIT3 0x08 +#define SSR_PWRF 0x10 +#define SSR_PRNT 0x20 +#define SSR_INTEN 0x40 +#define SSR_INIT 0x80 + +/* fixed interrupts */ +#define INT_BERR 0 /* interrupt levels */ +#define INT_PWRF 1 +#define INT_DMAFD 2 +#define INT_CONR 3 /* Appendix B.0.1 has CONT and CONR swapped, see Errata */ +#define INT_CONT 4 +#define INT_PRNT 5 +#define INT_TICK 6 +#define INT_INTVL 7 + +/* assignable QBUS interrupts, daisy-chained - highest prio = 8, lowest = 31 */ +#define INT_QBUS8 8 +#define INT_QBUS9 9 +#define INT_QBUS10 10 +#define INT_QBUS11 11 +#define INT_QBUS12 12 +#define INT_QBUS13 13 +#define INT_QBUS14 14 +#define INT_QBUS15 15 +#define INT_QBUS16 16 +#define INT_QBUS17 17 +#define INT_QBUS18 18 +#define INT_QBUS19 19 +#define INT_QBUS20 20 +#define INT_QBUS21 21 +#define INT_QBUS22 22 +#define INT_QBUS23 23 +#define INT_QBUS24 24 +#define INT_QBUS25 25 +#define INT_QBUS26 26 +#define INT_QBUS27 27 +#define INT_QBUS28 28 +#define INT_QBUS29 29 +#define INT_QBUS30 30 +#define INT_QBUS31 31 + +/* common unit user-defined attributes */ +#define u_unitno u3 + +/* Memory */ +#define MEMSIZE 65536 /* memory size in bytes */ +#define MAXMEMSIZE (65535 * 2) /* maximum memory size in bytes */ +#define memorysize uptr->capac + +/* CPU Unit flags */ +#define UNIT_V_PDQ3 (UNIT_V_UF + 0) +#define UNIT_V_MSIZE (UNIT_V_UF + 1) +#define UNIT_V_PASEXC (UNIT_V_UF + 2) + + +#define UNIT_PDQ3 (1u << UNIT_V_PDQ3) +#define UNIT_MSIZE (1u << UNIT_V_MSIZE) +#define UNIT_PASEXC (1u << UNIT_V_PASEXC) + +#define Q_PDQ3 (cpu_unit.flags & UNIT_PDQ3) +#define Q_MSIZE (cpu_unit.flags & UNIT_MSIZE) +#define Q_PASEXC (cpu_unit.flags & UNIT_PASEXC) + +#define setbit(reg,val) reg |= (val) +#define clrbit(reg,val) reg &= ~(val) +#define isbitset(reg, val) (reg & (val)) +#define isbitclr(reg, val) ((reg & (val)) == 0) + +/* debug flags */ +#define DBG_NONE 0x0000 + +#define DBG_FD_CMD 0x0001 +#define DBG_FD_READ 0x0002 +#define DBG_FD_WRITE 0x0004 +#define DBG_FD_SVC 0x0008 +#define DBG_FD_IMD 0x0010 +#define DBG_FD_IMD2 0x0020 /* deep inspection */ +#define DBG_FD_DMA 0x0040 +#define DBG_FD_DMA2 0x0080 /* deep inspection */ + +//define DBG_CPU_TRACE 0x0001 unused +#define DBG_CPU_INT 0x0001 +#define DBG_CPU_INT2 0x0002 /* deep inspection */ +#define DBG_CPU_READ 0x0004 +#define DBG_CPU_WRITE 0x0008 +#define DBG_CPU_FETCH 0x0010 +#define DBG_CPU_PUSH 0x0020 +#define DBG_CPU_POP 0x0040 +#define DBG_CPU_PICK 0x0080 +#define DBG_CPU_STACK (DBG_CPU_PUSH|DBG_CPU_POP|DBG_CPU_PICK) +#define DBG_CPU_CONC 0x0100 +#define DBG_CPU_CONC2 0x0200 /* deep inspection */ +#define DBG_CPU_CONC3 0x0400 /* even deeper inspection */ + +#define DBG_CON_READ 0x0001 +#define DBG_CON_WRITE 0x0002 +#define DBG_CON_SVC 0x0004 + +#define DBG_TIM_READ 0x0001 +#define DBG_TIM_WRITE 0x0002 +#define DBG_TIM_SVC 0x0004 + +#define DBG_PCFORMAT0 "[%04x:%04x] " +#define DBG_PCFORMAT1 " [%04x:%04x] " +#define DBG_PCFORMAT2 " [%04x:%04x] " +#define DBG_PC reg_segb,ADDR_OFF(PCX) +#define DBG_PC2 reg_segb,reg_ipc + +/* calibration timers */ +#define TMR_CONPOLL 0 + +/* console sio data rates */ +#define CON_POLLUNIT 0 +#define CON_TERMUNIT 1 +#define CON_POLLFIRST 1 /* immediate */ +#define CON_POLLRATE 100 +#define CON_POLLWAIT 12500 +//#define CON_TERMRATE 1300 +#define CON_TERMRATE 300 + +/* floppy size */ +#define FDC_MAX_TRACKS 77 + +/* IMD anachronism */ +#ifndef MAX_COMMENT_LEN +#define MAX_COMMENT_LEN 256 +#endif + +/* XXX @TODO Pascal error codes (Raise()) */ +#define PASERROR_SYSTEM 0 +#define PASERROR_VALRANGE 1 +#define PASERROR_NOSEG 2 +#define PASERROR_PROCERR 3 +#define PASERROR_STKOVFL 4 +#define PASERROR_INTOVFL 5 +#define PASERROR_DIVZERO 6 +#define PASERROR_MEMERR 7 +#define PASERROR_USERBRK 8 +#define PASERROR_SYSIO 9 +#define PASERROR_USERIO 10 +#define PASERROR_UNIMPL 11 +#define PASERROR_FPERR 12 +#define PASERROR_STRINGOVFL 13 +#define PASERROR_HALT 14 + +/* simh error codes */ +#define STOP_IBKPT 1 +#define STOP_MEM 2 +#define STOP_ERROP 3 +#define STOP_ERRADR 4 +#define STOP_ERRIO 5 +#define STOP_IMPL 6 +#define STOP_BPT 7 +#define STOP_DBGPRE 8 +#define STOP_DBGPOST 9 +#define STOP_PASEXC 10 + +/* IO addresses and vectors */ +#define CON_IOBASE 0xfc10 +#define CON_RCV_VEC 0x0012 +#define CON_XMT_VEC 0x000e +#define CON_PRT_VEC 0x0016 +#define SES_IOBASE 0xfc18 +#define SES_BERR_VEC 0x0002 +#define SES_PWRF_VEC 0x0006 +#define SSR_IOBASE 0xfc24 +#define TIM_IOBASE 0xfc20 +#define TIM_TICK_VEC 0x001a +#define TIM_INTVL_VEC 0x001e +#define FDC_IOBASE 0xfc30 +#define FDC_VEC 0x000a +#define CPU_SERIALNO 0xf5ff /* is part of ROM */ +#define ROM_BASE 0xfc68 +#define ROM 0xf400 +#define ROM_SIZE 0x01ff /* excluding serial number */ + +/* address calculations */ +#define ADDRMASK_SEG 0xffff0000 +#define ADDRMASK_OFF 0x0000ffff +#define ADDR_16bit(a) ((a) & 0x0000ffff) +#define ADDR_SEG(a) (((a)>>16) & ADDRMASK_OFF) +#define ADDR_OFF(a) ((a) & ADDRMASK_OFF) +#define MAKE_BADDR(s,o) ((ADDR_16bit(s)<<16) | ADDR_16bit(o)) +#define MAKE_WADDR(a) MAKE_BADDR(NIL,ADDR_OFF(a)) +#define ADDR_ISWORD(a) (ADDR_SEG(a) == NIL) + +/* opcode table */ +#define OP_ERROR -1 +#define OP_NULL 0 +#define OP_UB 1 +#define OP_W 2 +#define OP_B 3 +#define OP_DBB 4 +#define OP_UBB 5 +#define OP_BUB 6 +#define OP_SB 7 +#define OP_DBUB 8 +#define OP_UBUB 9 +#define OP_UBDBUB 10 +#define OP_DB 11 +#define OP_SW 12 +#define OP_AB 13 + +typedef struct _optable { + char* name; + int16 flags; +} OPTABLE; +extern OPTABLE optable[]; + +/* debug support */ +#define DEBUG_OPDBGFILE "opcode.dbg" +#define DEBUG_MINOPCODE 0 +#define DEBUG_MAXOPCODE 0xe8 +#define DEBUG_VALIDOP(op) (optable[op].flags >= 0) +#define DEBUG_PRE 0x01 +#define DEBUG_POST 0x02 +extern t_stat dbg_init(); +extern t_stat dbg_check(t_value data,uint8 prepost); +extern t_stat dbg_dump_tib(FILE* fd, uint16 base); +extern t_stat dbg_dump_queue(FILE* fd, const char* qname, uint16 q); +extern t_stat dbg_dump_mscw(FILE* fd, uint16 base); +extern t_stat dbg_dump_seg(FILE* fd, uint16 segptr); +extern t_stat dbg_dump_segtbl(FILE* fd); +extern t_stat dbg_segtrack(uint16 segbase); +extern t_stat dbg_procenter(uint16 segbase, uint16 procno, uint16 mscw, uint16 osegb); +extern t_stat dbg_procleave(); +extern void dbg_enable(); +extern t_stat dbg_calltree(FILE* fd); +extern t_stat dbg_enteralias(const char* key, const char* value); +extern t_stat dbg_listalias(FILE*); +/* floating point */ +typedef union flcvt { + float f; + uint16 i[2]; +} T_FLCVT; + +/* wrapper structure for terminal multiplexer, + pointer to pointer stored in device->ctxt */ +typedef struct { + int pfirst, prate; /* pollrate first time, later */ + TMLN ldsc; + TMXR desc; + UNIT* term; + UNIT* poll; +} SERMUX; +extern t_stat mux_attach(UNIT*, char*, SERMUX*); +extern t_stat mux_detach(UNIT*, SERMUX*); + +/* externals */ +extern DEVICE cpu_dev; +extern UNIT cpu_unit; +extern DEVICE con_dev; +extern UNIT con_unit[]; +extern DEVICE fdc_dev; +extern UNIT fdc_unit[]; +extern DEVICE timer_dev; +extern UNIT timer_unit[]; +extern t_addr PCX; /* PC at the begin of execution */ +extern uint16 reg_segb; +extern uint32 reg_dmabase; +extern uint16 reg_mp; +extern uint16 reg_bp; +extern uint16 reg_sp; +extern uint16 reg_splow; +extern uint16 reg_spupr; +extern uint16 reg_ctp; +extern uint16 reg_rq; +extern uint16 reg_ipc; +extern uint16 reg_fc68; +extern uint16 reg_romsize; +extern uint16 reg_ssv; +extern uint16 reg_ssr; +extern uint16 reg_cpuserial; +extern uint32 reg_intpending; + +extern t_stat Read(t_addr base, t_addr woffset, uint16 *data, uint32 dctrl); +extern t_stat Write(t_addr base, t_addr boffset, uint16 data, uint32 dctrl); +extern t_stat ReadB(t_addr base, t_addr boffset, uint16 *data, uint32 dctrl); +extern t_stat WriteB(t_addr base, t_addr boffset, uint16 data, uint32 dctrl); +extern t_stat ReadEx(t_addr base, t_addr woffset, uint16 *data); +extern t_stat ReadBEx(t_addr base, t_addr boffset, uint16 *data); + +extern t_stat rom_read(t_addr base, uint16 *data); +extern t_stat rom_write(t_addr base, uint16 data); +extern t_stat fprint_sym_m (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw); + +extern t_stat con_read(t_addr ioaddr, uint16 *data); +extern t_stat con_write(t_addr ioaddr, uint16 data); +extern t_stat con_binit(); +extern t_stat fdc_read(t_addr ioaddr, uint16 *data); +extern t_stat fdc_write(t_addr ioaddr, uint16 data); +extern t_stat fdc_autoload(); +extern t_stat fdc_binit(); +extern t_stat tim_read(t_addr ioaddr, uint16 *data); +extern t_stat tim_write(t_addr ioaddr, uint16 data); + +extern void cpu_assertInt(int level, t_bool tf); +extern t_stat cpu_raiseInt(int level); +extern t_stat cpu_setIntVec(uint16 vector,int level); +extern void cpu_setRegs(uint16 ctp, uint16 ssv, uint16 rq); +extern void cpu_finishAutoload(); +extern t_stat cpu_buserror(); + +typedef t_stat (*IOREAD)(t_addr ioaddr, uint16 *data); +typedef t_stat (*IOWRITE)(t_addr ioaddr, uint16 data); + +typedef struct _ioinfo { + struct _ioinfo* next; + uint16 iobase; + uint16 iosize; + uint16 qvector; + uint16 qprio; + IOREAD read; + IOWRITE write; +} IOINFO; + +typedef struct _devctxt { + IOINFO* ioi; +} DEVCTXT; + +extern t_stat pdq3_ioinit(); +extern t_stat add_ioh(IOINFO* ioi); +extern t_stat del_ioh(IOINFO* ioi); +extern t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc); +extern t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc); +extern t_stat set_iovec(UNIT *uptr, int32 val, char *cptr, void *desc); +extern t_stat show_iovec(FILE *st, UNIT *uptr, int value, void *desc); +extern t_stat set_ioprio(UNIT *uptr, int32 val, char *cptr, void *desc); +extern t_stat show_ioprio(FILE *st, UNIT *uptr, int value, void *desc); + +#endif diff --git a/PDQ-3/pdq3_fdc.c b/PDQ-3/pdq3_fdc.c new file mode 100644 index 00000000..8812c9f6 --- /dev/null +++ b/PDQ-3/pdq3_fdc.c @@ -0,0 +1,1176 @@ +/* PDQ3_fdc.c: PDQ3 simulator Floppy disk device + + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. +*/ +#include "pdq3_defs.h" +#include "sim_imd.h" +#include + +/* FDC/DMA bit definitions */ +/* declarations of FDC and DMA chip */ +/* drive select register */ +#define FDC_SEL_SIDE 0x80 /* 0=side0, 1=side1 */ +#define FDC_SEL_SDEN 0x40 /* 0=DDEN, 1=SDEN */ +#define FDC_SEL_UNIT3 0x08 /* 1=select */ +#define FDC_SEL_UNIT2 0x04 /* 1=select */ +#define FDC_SEL_UNIT1 0x02 /* 1=select */ +#define FDC_SEL_UNIT0 0x01 /* 1=select */ + +/* command register */ +#define FDC_BIT_HEADLOAD 0x08 +#define FDC_BIT_VERIFY 0x04 +#define FDC_BIT_STEP3 0x00 +#define FDC_BIT_STEP6 0x01 +#define FDC_BIT_STEP10 0x02 +#define FDC_BIT_STEP15 0x03 +#define FDC_BIT_UPDATE 0x10 +#define FDC_BIT_MULTI 0x10 +#define FDC_BIT_SIDESEL 0x08 +#define FDC_BIT_SIDECMP 0x02 +#define FDC_BIT_DATAMARK 0x01 +#define FDC_BIT_INTIMM 0x08 +#define FDC_BIT_INTIDX 0x04 +#define FDC_BIT_INTN2R 0x02 +#define FDC_BIT_INTR2N 0x01 + +#define FDC_RESTORE 0x00 +#define FDC_SEEK 0x10 +#define FDC_STEP 0x20 +#define FDC_STEP_U 0x30 +#define FDC_STEPIN 0x40 +#define FDC_STEPIN_U 0x50 +#define FDC_STEPOUT 0x60 +#define FDC_STEPOUT_U 0x70 +#define FDC_READSEC 0x80 +#define FDC_READSEC_M 0x90 +#define FDC_WRITESEC 0xa0 +#define FDC_WRITESEC_M 0xb0 +#define FDC_READADDR 0xc4 +#define FDC_READTRK 0xe4 +#define FDC_WRITETRK 0xf4 +#define FDC_FORCEINT 0xd0 +#define FDC_IDLECMD 0xff + +#define FDC_CMDMASK 0xf0 + +/* status register */ +#define FDC_ST1_NOTREADY 0x80 +#define FDC_ST1_WRTPROT 0x40 +#define FDC_ST1_HEADLOAD 0x20 +#define FDC_ST1_SEEKERROR 0x10 +#define FDC_ST1_CRCERROR 0x08 +#define FDC_ST1_TRACK0 0x04 +#define FDC_ST1_IDXPULSE 0x02 +#define FDC_ST1_BUSY 0x01 +#define FDC_ST2_NOTREADY FDC_ST1_NOTREADY +#define FDC_ST2_WRTPROT FDC_ST1_WRTPROT +#define FDC_ST2_TYPEWFLT 0x20 +#define FDC_ST2_RECNOTFND 0x10 +#define FDC_ST2_CRCERROR FDC_ST1_CRCERROR +#define FDC_ST2_LOSTDATA 0x04 +#define FDC_ST2_DRQ 0x02 +#define FDC_ST2_BUSY FDC_ST1_BUSY + +/* DMA ctrl reg */ +#define DMA_CTRL_AECE 0x40 +#define DMA_CTRL_HBUS 0x20 +#define DMA_CTRL_IOM 0x10 +#define DMA_CTRL_TCIE 0x08 +#define DMA_CTRL_TOIE 0x04 +#define DMA_CTRL_DIE 0x02 +#define DMA_CTRL_RUN 0x01 + +/* DMA status reg */ +#define DMA_ST_BUSY 0x80 +#define DMA_ST_AECE DMA_CTRL_AECE +#define DMA_ST_HBUS DMA_CTRL_HBUS +#define DMA_ST_IOM DMA_CTRL_IOM +#define DMA_ST_TCZI 0x08 +#define DMA_ST_TOI 0x04 +#define DMA_ST_DINT 0x02 +#define DMA_ST_BOW 0x01 + +/* FDC unit flags */ +#define UNIT_V_FDC_WLK (UNIT_V_UF + 0) /* write locked */ +#define UNIT_FDC_WLK (1 << UNIT_V_FDC_WLK) +#define UNIT_V_FDC_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ +#define UNIT_FDC_VERBOSE (1 << UNIT_V_FDC_VERBOSE) + +/* FDC timing */ +#define FDC_WAIT_STEP 3000 +#define FDC_WAIT_READ 8000 +#define FDC_WAIT_READNEXT 800 +#define FDC_WAIT_WRITE 8000 +#define FDC_WAIT_WRITENEXT 800 +#define FDC_WAIT_FORCEINT 100 +#define FDC_WAIT_IDXPULSE 16000 + +uint8 reg_fdc_cmd; /* FC30 write */ +uint8 reg_fdc_status; /* FC30 read */ +int8 reg_fdc_track; /* FC31 */ +int8 reg_fdc_sector; /* FC32 */ +int8 reg_fdc_data; /* FC33 */ +uint8 reg_fdc_drvsel; /* only combined */ + +uint8 reg_dma_ctrl; /* FC38 writeonly */ +uint8 reg_dma_status; /* FC39 */ +uint8 reg_dma_cntl; /* FC3A */ +uint8 reg_dma_cnth; /* FC3B */ +uint8 reg_dma_addrl; /* FC3C */ +uint8 reg_dma_addrh; /* FC3D */ +uint8 reg_dma_addre; /* FC3E */ +uint8 reg_dma_id; /* FC3F - unusable */ +uint16 _reg_dma_cnt; /* combined reg */ +uint32 _reg_dma_addr; /* combined reg */ + +int8 fdc_selected; /* currently selected drive, -1=none */ +uint8 fdc_intpending; /* currently executing force interrupt command, 0=none */ + +uint8 fdc_recbuf[1024]; +uint32 fdc_recsize; + +t_bool dma_isautoload; + +/* externals */ +extern UNIT cpu_unit; + +/* forwards */ +t_stat fdc_svc (UNIT *uptr); +t_stat fdc_boot(int32 unitnum, DEVICE *dptr); +t_stat fdc_reset (DEVICE *uptr); +t_stat fdc_attach(UNIT *uptr, char *cptr); +t_stat fdc_detach(UNIT *uptr); +t_stat pdq3_diskCreate(FILE *fileref, char *ctlr_comment); +t_stat pdq3_diskFormat(DISK_INFO *myDisk); +static void dma_reqinterrupt(); + +/* data structures */ +typedef struct _drvdata { + UNIT *dr_unit; + DISK_INFO *dr_imd; + uint8 dr_ready; + uint8 dr_head; + uint8 dr_trk; + uint8 dr_sec; + uint8 dr_stepdir; /* 0=in, 1=out */ +} DRVDATA; + +DRVDATA fdc_drv[] = { + { NULL, NULL, 0, }, + { NULL, NULL, 0, }, + { NULL, NULL, 0, }, + { NULL, NULL, 0, } +}; + +/* FDC data structures + fdc_dev FDC device descriptor + fdc_unit FDC unit descriptor + fdc_mod FDC modifier list + fdc_reg FDC register list +*/ +IOINFO fdc_ioinfo = { NULL, FDC_IOBASE, 16, FDC_VEC, 2, fdc_read, fdc_write }; +IOINFO fdc_ctxt = { &fdc_ioinfo }; + +UNIT fdc_unit[] = { + { UDATA (&fdc_svc, UNIT_ATTABLE|UNIT_FIX|UNIT_BINK|UNIT_ROABLE|UNIT_DISABLE, 0), 0, }, + { UDATA (&fdc_svc, UNIT_ATTABLE|UNIT_FIX|UNIT_BINK|UNIT_ROABLE|UNIT_DISABLE, 0), 1, }, +}; +REG fdc_reg[] = { + { HRDATA (FCMD, reg_fdc_cmd, 8) }, + { HRDATA (FSTAT, reg_fdc_status, 8) }, + { HRDATA (FTRK, reg_fdc_track, 8) }, + { HRDATA (FSEC, reg_fdc_sector, 8) }, + { HRDATA (FDATA, reg_fdc_data, 8) }, + { HRDATA (FSEL, reg_fdc_drvsel, 8) }, + + { HRDATA (DCMD, reg_dma_ctrl, 8) }, + { HRDATA (DSTAT, reg_dma_status, 8) }, + { HRDATA (DCNTH, reg_dma_cnth, 8) }, + { HRDATA (DCNTL, reg_dma_cntl, 8) }, + { HRDATA (_DCNT, _reg_dma_cnt, 16), REG_RO|REG_HIDDEN }, + { HRDATA (DADDRE, reg_dma_addre, 8) }, + { HRDATA (DADDRH, reg_dma_addrh, 8) }, + { HRDATA (DADDRL, reg_dma_addrl, 8) }, + { HRDATA (_DADDR, _reg_dma_addr, 18), REG_RO|REG_HIDDEN }, + { NULL } +}; +MTAB fdc_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", NULL, &show_iobase }, + { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", NULL, &show_iovec }, + { MTAB_XTD|MTAB_VDV, 0, "PRIO", "PRIO", NULL, &show_ioprio }, + { UNIT_FDC_WLK, 0, "WRTENB", "WRTENB", NULL }, + { UNIT_FDC_WLK, UNIT_FDC_WLK, "WRTLCK", "WRTLCK", NULL }, + { 0 } +}; +DEBTAB fdc_dflags[] = { + { "CMD", DBG_FD_CMD }, + { "READ", DBG_FD_READ }, + { "WRITE", DBG_FD_WRITE }, + { "SVC", DBG_FD_SVC }, + { "IMD", DBG_FD_IMD }, + { "IMD2", DBG_FD_IMD2 }, /* deep inspection */ + { "DMA", DBG_FD_DMA }, + { "DMA2", DBG_FD_DMA2 }, /* deep inspection */ + { 0, 0 } +}; + +DEVICE fdc_dev = { + "FDC", /*name*/ + fdc_unit, /*units*/ + fdc_reg, /*registers*/ + fdc_mod, /*modifiers*/ + 2, /*numunits*/ + 16, /*aradix*/ + 16, /*awidth*/ + 1, /*aincr*/ + 8, /*dradix*/ + 8, /*dwidth*/ + NULL, /*examine*/ + NULL, /*deposit*/ + &fdc_reset, /*reset*/ + NULL, /*boot. Note this is hidden, use BOOT CPU. */ + &fdc_attach,/*attach*/ + &fdc_detach,/*detach*/ + &fdc_ctxt, /*ctxt*/ + DEV_DEBUG, /*flags*/ + 0, /*dctrl*/ + fdc_dflags, /*debflags*/ + NULL, /*msize*/ + NULL /*lname*/ +}; + +/* boot unit - not available through BOOT FDC cmd, use BOOT CPU instead */ +t_stat fdc_boot(int32 unitnum, DEVICE *dptr) { + if (unitnum < 0 || ((uint32)unitnum > dptr->numunits)) + return SCPE_NXUN; +// printf("BOOT FDC%d\n",unitnum); + return fdc_autoload(unitnum); +} + +t_stat fdc_attach(UNIT *uptr, char *cptr) { + t_stat rc; + int i = uptr->u_unitno; + char header[4]; + + sim_debug(DBG_FD_IMD, &fdc_dev, DBG_PCFORMAT1 "Attach FDC drive %d\n", DBG_PC, i); + + sim_cancel(uptr); + if ((rc=attach_unit(uptr,cptr)) != SCPE_OK) return rc; + + fdc_drv[i].dr_unit = uptr; + uptr->capac = sim_fsize(uptr->fileref); + fdc_drv[i].dr_ready = 0; + + if (uptr->capac > 0) { + fgets(header, 4, uptr->fileref); + if (strncmp(header, "IMD", 3) != 0) { + printf("FDC: Only IMD disk images are supported\n"); + fdc_drv[i].dr_unit = NULL; + return SCPE_OPENERR; + } + } else { + /* create a disk image file in IMD format. */ + if (pdq3_diskCreate(uptr->fileref, "SIMH pdq3_fdc created") != SCPE_OK) { + printf("FDC: Failed to create IMD disk.\n"); + fdc_drv[i].dr_unit = NULL; + return SCPE_OPENERR; + } + uptr->capac = sim_fsize(uptr->fileref); + } + sim_debug(DBG_FD_IMD, &fdc_dev, DBG_PCFORMAT2 "Attached to '%s', type=IMD, len=%d\n", + DBG_PC, cptr, uptr->capac); + fdc_drv[i].dr_imd = diskOpenEx(uptr->fileref, isbitset(uptr->flags,UNIT_FDC_VERBOSE), &fdc_dev, DBG_FD_IMD, DBG_FD_IMD2); + if (fdc_drv[i].dr_imd == NULL) { + printf("FDC: IMD disk corrupt.\n"); + fdc_drv[i].dr_unit = NULL; + return SCPE_OPENERR; + } + fdc_drv[i].dr_ready = 1; + + /* handle force interrupt to wait for disk change */ + if (isbitset(fdc_intpending,0x01)) { + dma_reqinterrupt(); + clrbit(reg_fdc_status,FDC_ST1_BUSY); + clrbit(fdc_intpending,0x01); + } + + return SCPE_OK; +} + +t_stat fdc_detach(UNIT *uptr) { + t_stat rc; + int i = uptr->u_unitno; + + sim_debug(DBG_FD_IMD, &fdc_dev, DBG_PCFORMAT1 "Detach FDC drive %d\n", DBG_PC, i); + sim_cancel(uptr); + rc = diskClose(&fdc_drv[i].dr_imd); + fdc_drv[i].dr_ready = 0; + + /* handle force interrupt to wait for disk change */ + if (isbitset(fdc_intpending,0x02)) { + cpu_raiseInt(INT_DMAFD); + clrbit(reg_fdc_status,FDC_ST1_BUSY); + clrbit(fdc_intpending,0x02); + } + + if (rc != SCPE_OK) return rc; + return detach_unit(uptr); /* detach unit */ +} + +static t_stat fdc_start(UNIT *uptr,int time) { + /* request service */ + sim_debug(DBG_FD_SVC, &fdc_dev, DBG_PCFORMAT2 "Start Service after %d ticks\n", DBG_PC, time); + return sim_activate(uptr, time); +} + +static t_stat fdc_stop(UNIT *uptr) { + /* request service */ + sim_debug(DBG_FD_SVC, &fdc_dev, DBG_PCFORMAT2 "Cancel Service\n", DBG_PC, time); + return sim_cancel(uptr); +} + +static void fdc_update_rdonly(DRVDATA *curdrv) { + /* read only drive? */ + if (isbitset(curdrv->dr_unit->flags,UNIT_RO)) + setbit(reg_fdc_status,FDC_ST1_WRTPROT); + else + clrbit(reg_fdc_status,FDC_ST1_WRTPROT); +} + +t_bool fdc_driveready(DRVDATA *curdrv) { + /* some drive selected, and disk in drive? */ + if (curdrv==NULL || curdrv->dr_ready == 0) { + setbit(reg_fdc_status,FDC_ST1_NOTREADY); + clrbit(reg_fdc_status,FDC_ST1_BUSY); + reg_fdc_cmd = FDC_IDLECMD; + return FALSE; + } + + /* drive is ready */ + clrbit(reg_fdc_status,FDC_ST1_NOTREADY); + + /* read only drive? */ + fdc_update_rdonly(curdrv); + return TRUE; +} + +static t_bool fdc_istrk0(DRVDATA *curdrv,int8 trk) { + curdrv->dr_trk = trk; + if (trk <= 0) { + setbit(reg_fdc_status,FDC_ST1_TRACK0); + reg_fdc_track = 0; + return TRUE; + } + return FALSE; +} + +/* return true if invalid track (CRC error) */ +static t_bool fdc_stepin(DRVDATA *curdrv, t_bool upd) { + curdrv->dr_stepdir = FDC_STEPIN; + curdrv->dr_trk++; + if (upd) reg_fdc_track = curdrv->dr_trk; + if (curdrv->dr_trk > FDC_MAX_TRACKS) { + setbit(reg_fdc_status,FDC_ST1_CRCERROR); + return TRUE; + } + return FALSE; +} + +/* return true if trk0 reached */ +static t_bool fdc_stepout(DRVDATA *curdrv, t_bool upd) { + curdrv->dr_stepdir = FDC_STEPOUT; + curdrv->dr_trk--; + if (upd) reg_fdc_track = curdrv->dr_trk; + return fdc_istrk0(curdrv, reg_fdc_track); +} + +static void fdc_clr_st1_error() { + clrbit(reg_fdc_status,FDC_ST1_NOTREADY|FDC_ST1_SEEKERROR|FDC_ST1_CRCERROR); +} + +static void dma_interrupt(int bit) { + if (isbitset(reg_dma_ctrl,bit)) { + sim_debug(DBG_FD_DMA, & fdc_dev, DBG_PCFORMAT2 "Raise DMA/FDC interrupt\n", DBG_PC); + cpu_raiseInt(INT_DMAFD); + } +} + +static t_bool dma_abort(t_bool fromfinish) { + clrbit(reg_dma_status,DMA_ST_BUSY); + clrbit(reg_dma_ctrl,DMA_CTRL_RUN); + + /* if autoload was finished, finally start the CPU. + * note: autoload will read the first track, and then fail at end of track with an error */ + if (dma_isautoload) { + sim_debug(DBG_FD_DMA, & fdc_dev, DBG_PCFORMAT2 "AUTOLOAD finished by end-of-track (DMA aborted)\n", DBG_PC); + cpu_finishAutoload(); + dma_isautoload = FALSE; + } else + if (!fromfinish) { + sim_debug(DBG_FD_DMA, & fdc_dev, DBG_PCFORMAT2 "Aborted transfer\n", DBG_PC); + } + return FALSE; +} + +/* all data transferred */ +static void dma_finish() { + setbit(reg_dma_status,DMA_ST_TCZI); + dma_abort(TRUE); + dma_interrupt(DMA_CTRL_TCIE); + sim_debug(DBG_FD_DMA, & fdc_dev, DBG_PCFORMAT2 "Finished transfer\n", DBG_PC); +} + +/* request interrupt from FDC */ +static void dma_reqinterrupt() { + setbit(reg_dma_status,DMA_ST_DINT); + dma_interrupt(DMA_CTRL_DIE); +} + +static void dma_fix_regs() { + reg_dma_cntl = _reg_dma_cnt & 0xff; + reg_dma_cnth = _reg_dma_cnt>>8; + reg_dma_addre = (_reg_dma_addr>>16) & 0x03; + reg_dma_addrh = (_reg_dma_addr>>8) & 0xff; + reg_dma_addrl = _reg_dma_addr & 0xff; +} + +/* return true if successfully transferred */ +static t_bool dma_transfer_to_ram(uint8 *buf, int bufsize) { + t_bool rc = TRUE; + int i; + uint16 data; + t_addr tstart = _reg_dma_addr/2; + int cnt = _reg_dma_cnt ^ 0xffff; + int xfersz = bufsize > cnt ? cnt : bufsize; + + sim_debug(DBG_FD_DMA, &fdc_dev, DBG_PCFORMAT2 "Transfer to RAM $%x...$%x\n", + DBG_PC, _reg_dma_addr/2,(_reg_dma_addr + xfersz - 1)/2); + for (i=0; i cnt ? cnt : bufsize; + + sim_debug(DBG_FD_DMA, &fdc_dev, DBG_PCFORMAT2 "Transfer from RAM $%x...$%x\n", + DBG_PC, _reg_dma_addr/2, (_reg_dma_addr + xfersz - 1)/2); + + if (isbitset(reg_dma_ctrl,DMA_CTRL_IOM)) + printf("Warning: wrong IOM direction for DMA transfer from RAM\n"); + + for (i=0; idr_imd, curdrv->dr_trk, curdrv->dr_head)) { + setbit(reg_fdc_status,FDC_ST2_RECNOTFND); + return FALSE; + } + + /* get sector size available */ + fdc_recsize = curdrv->dr_imd->track[curdrv->dr_trk][curdrv->dr_head].sectsize; + + /* clear errors. Also clear LOSTDATA bit due to aliasing to TRACK00 bit from previous seek operation */ + clrbit(reg_fdc_status,FDC_ST2_NOTREADY|FDC_ST2_LOSTDATA|FDC_ST2_WRTPROT); + + if (sectRead(curdrv->dr_imd, curdrv->dr_trk, curdrv->dr_head, curdrv->dr_sec, + fdc_recbuf, fdc_recsize, &flags, &fdc_recsize)) { + setbit(reg_fdc_status,FDC_ST2_RECNOTFND); + return FALSE; + } + if (isbitset(flags,IMD_DISK_IO_ERROR_CRC)) { + setbit(reg_fdc_status,FDC_ST2_CRCERROR); + return FALSE; /* terminate read */ + } + if (isbitset(flags,IMD_DISK_IO_DELETED_ADDR_MARK)) + setbit(reg_fdc_status,FDC_ST2_TYPEWFLT); + + /* trigger DMA transfer */ + if (!dma_transfer_to_ram(fdc_recbuf, fdc_recsize)) + return FALSE; + + /* now finished */ + return TRUE; +} + +static t_bool fdc_writesec(DRVDATA *curdrv) { + uint32 flags; + + /* write protect? */ + if (imdIsWriteLocked(curdrv->dr_imd)) { + dma_abort(FALSE); + setbit(reg_fdc_status,FDC_ST2_WRTPROT); + return FALSE; + } + + /* is sector available? */ + if (sectSeek(curdrv->dr_imd, curdrv->dr_trk, curdrv->dr_head)) { + setbit(reg_fdc_status,FDC_ST2_RECNOTFND); + return FALSE; + } + /* clear errors. Also clear LOSTDATA bit due to aliasing to TRACK00 bit from previous seek operation */ + clrbit(reg_fdc_status,FDC_ST2_NOTREADY|FDC_ST2_LOSTDATA|FDC_ST2_WRTPROT); + + /* get sector size */ + fdc_recsize = curdrv->dr_imd->track[curdrv->dr_trk][curdrv->dr_head].sectsize; + + /* get from ram into write buffer */ + if (!dma_transfer_from_ram(fdc_recbuf, fdc_recsize)) + return FALSE; + + if (sectWrite(curdrv->dr_imd, curdrv->dr_trk, curdrv->dr_head, curdrv->dr_sec, + fdc_recbuf, fdc_recsize, &flags, &fdc_recsize)) { + setbit(reg_fdc_status,FDC_ST2_RECNOTFND); + return FALSE; + } + if (isbitset(flags,IMD_DISK_IO_ERROR_GENERAL)) { + setbit(reg_fdc_status,FDC_ST2_TYPEWFLT); + return FALSE; + } + if (isbitset(flags,IMD_DISK_IO_ERROR_WPROT)) { + setbit(reg_fdc_status,FDC_ST2_WRTPROT); + return FALSE; + } + /* advance to next sector for multiwrite */ + if (isbitset(reg_fdc_cmd,FDC_BIT_MULTI)) { /* multi bit */ + curdrv->dr_sec++; + reg_fdc_sector++; + } + + /* now finished */ + return TRUE; +} + +static t_bool fdc_rwerror() { + /* note: LOSTDATA cannot occur */ + return isbitset(reg_fdc_status,FDC_ST2_TYPEWFLT|FDC_ST2_RECNOTFND|FDC_ST2_CRCERROR /*|FDC_ST2_LOSTDATA*/); +} + +static t_stat fdc_set_notready(uint8 cmd) +{ + switch (cmd & FDC_CMDMASK) { + default: + case FDC_RESTORE: + case FDC_SEEK: + case FDC_STEP: /* single step in current direction, no update */ + case FDC_STEPIN: /* single step towards center */ + case FDC_STEPOUT: /* single step towards edge of disk */ + case FDC_STEP_U: + case FDC_STEPIN_U: + case FDC_STEPOUT_U: + setbit(reg_fdc_status,FDC_ST1_SEEKERROR); + break; + + case FDC_READSEC_M: + case FDC_READSEC: /* type II: read a sector via DMA */ + setbit(reg_fdc_status,FDC_ST2_CRCERROR); + break; + case FDC_WRITESEC_M: + case FDC_WRITESEC: /* type II: read a sector via DMA */ + setbit(reg_fdc_status,FDC_ST2_TYPEWFLT); + break; + } + return SCPE_OK; +} + +static t_stat fdc_restartmulti(DRVDATA *curdrv,int wait) { + /* advance to next sector for multiread */ + sim_debug(DBG_FD_SVC, &fdc_dev, " Restarting FDC_SVC for multiple R/W\n"); + curdrv->dr_sec++; + reg_fdc_sector++; + /* restart service for multi-sector */ + return fdc_start(curdrv->dr_unit, wait); +} + +/* process the FDC commands, and restart, if necessary */ +t_stat fdc_svc(UNIT *uptr) { + DRVDATA *curdrv = fdc_selected==-1 ? NULL : &fdc_drv[fdc_selected]; + t_bool rdy = fdc_driveready(curdrv); + t_bool um_flg; /* update or multi bit */ + + sim_debug(DBG_FD_SVC,&fdc_dev, DBG_PCFORMAT2 "Calling FDC_SVC for unit=%x cmd=%x\n", + DBG_PC, fdc_selected, reg_fdc_cmd); + + if (reg_fdc_cmd == FDC_IDLECMD) return SCPE_OK; + + if (!rdy) return fdc_set_notready(reg_fdc_cmd & FDC_CMDMASK); + + um_flg = isbitset(reg_fdc_cmd,FDC_BIT_UPDATE); + switch (reg_fdc_cmd & FDC_CMDMASK) { + case FDC_RESTORE: + fdc_istrk0(curdrv,0); + curdrv->dr_stepdir = FDC_STEPOUT; + break; + case FDC_SEEK: + if (reg_fdc_track > reg_fdc_data) { + if (fdc_stepout(curdrv, TRUE)) break; + return fdc_start(curdrv->dr_unit,FDC_WAIT_STEP); + } else if (reg_fdc_track < reg_fdc_data) { + if (fdc_stepin(curdrv, TRUE)) break; + return fdc_start(curdrv->dr_unit,FDC_WAIT_STEP); + } + /* found position */ + fdc_clr_st1_error(); + break; + case FDC_STEP: /* single step in current direction, no update */ + case FDC_STEP_U: + if (curdrv->dr_stepdir == FDC_STEPIN) { + if (fdc_stepin(curdrv, um_flg)) break; + } else + fdc_stepout(curdrv, um_flg); + fdc_clr_st1_error(); + break; + case FDC_STEPIN: /* single step towards center */ + case FDC_STEPIN_U: + if (fdc_stepin(curdrv, um_flg)) break; + fdc_clr_st1_error(); + break; + case FDC_STEPOUT: /* single step towards edge of disk */ + case FDC_STEPOUT_U: + if (fdc_stepin(curdrv, um_flg)) break; + fdc_clr_st1_error(); + break; + + case FDC_READSEC_M: + case FDC_READSEC: /* type II: read a sector via DMA */ + if (!fdc_readsec(curdrv) || fdc_rwerror()) { + dma_abort(TRUE); + break; + } + if (isbitset(reg_dma_status,DMA_ST_BUSY) && um_flg) + return fdc_restartmulti(curdrv,FDC_WAIT_READNEXT); + break; + case FDC_WRITESEC_M: + case FDC_WRITESEC: /* type II: read a sector via DMA */ + if (!fdc_writesec(curdrv) || fdc_rwerror()) { + dma_abort(TRUE); + break; + } + if (isbitset(reg_dma_status,DMA_ST_BUSY) && um_flg) + return fdc_restartmulti(curdrv,FDC_WAIT_WRITENEXT); + break; + default: + printf("fdc_svc: Fix me - command not yet implemented: cmd=0x%x\n", reg_fdc_cmd); + } + + clrbit(reg_fdc_status,FDC_ST1_BUSY); + reg_fdc_cmd = FDC_IDLECMD; + return SCPE_OK; +} + +t_stat fdc_binit() { + fdc_selected = -1; + fdc_intpending = 0; + + /* reset FDC registers */ + reg_fdc_cmd = FDC_IDLECMD; /* invalid command, used as idle marker */ + reg_fdc_status = 0; + reg_fdc_track = 0; + reg_fdc_sector = 1; + reg_fdc_data = 1; + reg_fdc_drvsel = 0; + + /* reset DMA registers */ + reg_dma_ctrl = DMA_CTRL_AECE | DMA_CTRL_HBUS | DMA_CTRL_IOM; + reg_dma_status = DMA_ST_AECE | DMA_ST_HBUS | DMA_ST_IOM; + _reg_dma_cnt = 0x0001; + /* hack: initialize boot code to load ad 0x2000(word address). + * However, DMA is based on byte addresses, so multiply with 2 */ + _reg_dma_addr = reg_dmabase*2; + reg_dma_id = 0; + + dma_fix_regs(); + return SCPE_OK; +} + +t_stat fdc_reset (DEVICE *dptr) { + int i; + DEVCTXT* ctxt = (DEVCTXT*)dptr->ctxt; +// printf("RESET FDC\n"); + + if (dptr->flags & DEV_DIS) + del_ioh(ctxt->ioi); + else + add_ioh(ctxt->ioi); + + for (i=0; i<4; i++) { + DRVDATA *cur = &fdc_drv[i]; + cur->dr_unit = &fdc_unit[i]; + cur->dr_trk = 0; + cur->dr_sec = 1; + cur->dr_head = 0; + cur->dr_stepdir = 0; + } + return fdc_binit(); +} + +/* select drive, according to select register */ +static DRVDATA *fdc_select() { + DRVDATA *curdrv = NULL; + + if (isbitset(reg_fdc_drvsel,FDC_SEL_UNIT0)) fdc_selected = 0; + else if (isbitset(reg_fdc_drvsel,FDC_SEL_UNIT1)) fdc_selected = 1; + else if (isbitset(reg_fdc_drvsel,FDC_SEL_UNIT2)) fdc_selected = 2; + else if (isbitset(reg_fdc_drvsel,FDC_SEL_UNIT3)) fdc_selected = 3; + else fdc_selected = -1; + + if (fdc_selected >= 0) { + curdrv = &fdc_drv[fdc_selected]; + + fdc_update_rdonly(curdrv); /* update R/O flag */ + curdrv->dr_head = isbitset(reg_fdc_drvsel,FDC_SEL_SIDE) ? 1 : 0; + curdrv->dr_unit = &fdc_unit[fdc_selected]; + } + return curdrv; +} + +static char *cmdlist[] = { + "Restore","Seek","Step","Step+Upd","StepIn","StepIn+Upd", + "StepOut","StepOut+Upd","Read","Read+Multi","Write","WriteMulti", + "ReadAddr","ForceInt","ReadTrack","WriteTrack" +}; + +static void debug_fdccmd(uint16 cmd) { + char buf[200]; + uint16 dsel = cmd >> 8, cr = (cmd >> 4) & 0x0f; + + buf[0] = 0; + if (cmd & 0xff00) { + strcat(buf,"DSR=["); + strcat(buf,dsel & FDC_SEL_SIDE ? "SIDE1" : "SIDE0"); + if (dsel & FDC_SEL_SDEN) strcat(buf,",SDEN"); + strcat(buf,",UNIT"); + if (dsel & FDC_SEL_UNIT3) strcat(buf,"3"); + else if (dsel & FDC_SEL_UNIT2) strcat(buf,"2"); + else if (dsel & FDC_SEL_UNIT1) strcat(buf,"1"); + else if (dsel & FDC_SEL_UNIT0) strcat(buf,"0"); + strcat(buf,"] "); + } + strcat(buf,"CR=["); + strcat(buf,cmdlist[cr]); + if (cr < 8) { + if (cmd & FDC_BIT_HEADLOAD) strcat(buf,"+Load"); + if (cmd & FDC_BIT_VERIFY) strcat(buf,"+Vrfy"); + cmd &= FDC_BIT_STEP15; + if (cmd == FDC_BIT_STEP3) strcat(buf,"+Step3"); + else if (cmd == FDC_BIT_STEP6) strcat(buf,"+Step6"); + else if (cmd == FDC_BIT_STEP10) strcat(buf,"+Step10"); + else if (cmd == FDC_BIT_STEP15) strcat(buf,"+Step15"); + } else + switch (cr) { + case 8: case 9: + case 0xa: case 0xb: + strcat(buf, cmd & FDC_BIT_SIDESEL ? "+SideSel1" : "+SideSel0"); + strcat(buf, cmd & FDC_BIT_SIDECMP ? "+SideCmp1" : "+SideCmp0"); + if (cr > 9) + strcat(buf, cmd & FDC_BIT_DATAMARK ? "+DelMark" : "+DataMark"); + default: + break; + case 0x0f: + if (cmd & FDC_BIT_INTIMM) strcat(buf,"+IMM"); + if (cmd & FDC_BIT_INTIDX) strcat(buf,"+IDX"); + if (cmd & FDC_BIT_INTN2R) strcat(buf,"+N2R"); + if (cmd & FDC_BIT_INTR2N) strcat(buf,"+R2N"); + } + strcat(buf,"]"); + sim_debug(DBG_FD_CMD, &fdc_dev, DBG_PCFORMAT2 "Command: %s\n", DBG_PC,buf); +} + +static t_stat fdc_docmd(uint16 data) { + UNIT *uptr; + DRVDATA *curdrv = fdc_select(); + if (curdrv== NULL) return SCPE_IOERR; + + debug_fdccmd(data); + uptr = curdrv->dr_unit; + + if (!fdc_driveready(curdrv)) { + sim_debug(DBG_FD_CMD,&fdc_dev, DBG_PCFORMAT2 "fdc_docmd: drive not ready\n", DBG_PC); + return SCPE_OK; + } + + reg_fdc_cmd = data & 0xff; + switch (data & FDC_CMDMASK) { + /* type I commands */ + case FDC_RESTORE: + case FDC_SEEK: + case FDC_STEP: + case FDC_STEP_U: + case FDC_STEPIN: + case FDC_STEPIN_U: + case FDC_STEPOUT: + case FDC_STEPOUT_U: + setbit(reg_fdc_status, FDC_ST1_BUSY); + return fdc_start(uptr,FDC_WAIT_STEP); + + /* type II commands */ + case FDC_READSEC: + case FDC_READSEC_M: + curdrv->dr_sec = reg_fdc_sector; /* sector to start */ + setbit(reg_fdc_status, FDC_ST2_BUSY); + return fdc_start(uptr,FDC_WAIT_READ); + case FDC_WRITESEC: + case FDC_WRITESEC_M: + curdrv->dr_sec = reg_fdc_sector; /* sector to start */ + setbit(reg_fdc_status, FDC_ST2_BUSY); + return fdc_start(uptr,FDC_WAIT_WRITE); + + /* type III commands */ + default: + printf("fdc_docmd: Fix me - command not yet implemented: cmd=0x%x\n", reg_fdc_cmd); + setbit(reg_fdc_status, FDC_ST2_BUSY); + return SCPE_NOFNC; + + /* type IV command */ + case FDC_FORCEINT: + if (isbitset(data,0x01)) { /* int on transition from not-ready to ready */ + fdc_stop(uptr); + } else if (isbitset(data,0x06)) { /* int on transition from ready to not-ready, or vice versa */ + /* handle in fdc_detach */ + fdc_intpending |= reg_fdc_cmd; + return SCPE_OK; + } else if (isbitset(data,0x08)) { /* immediate int */ + dma_reqinterrupt(); + return SCPE_OK; /* don't reset BUSY */ + } else { /* terminate */ + fdc_stop(uptr); + /* successful cmd clears errors */ + clrbit(reg_fdc_status,FDC_ST2_TYPEWFLT|FDC_ST2_RECNOTFND|FDC_ST2_CRCERROR|FDC_ST2_LOSTDATA); + } + /* reset busy bit */ + clrbit(reg_fdc_status,FDC_ST1_BUSY); + } + return SCPE_OK; +} + +void dma_docmd(uint16 data) { + reg_dma_ctrl = data; + reg_dma_status &= 0x8f; + reg_dma_status |= (reg_dma_ctrl & 0x70); + + if (isbitset(reg_dma_ctrl,DMA_CTRL_RUN)) + setbit(reg_dma_status,DMA_ST_BUSY); +} + +/* setup FDC/DMA to read first track into low memory */ +t_stat fdc_autoload(int unitnum) { + int unitbit = 1 << unitnum; + + sim_debug(DBG_FD_CMD, &fdc_dev, DBG_PCFORMAT2 "Autoload Unit=%d\n", DBG_PC, unitnum); + dma_isautoload = TRUE; + + + /* note: this is partly in microcode/ROM. The DMA cntrlr itself does not set the + * FDC register for multi_read */ + fdc_reset(&fdc_dev); + dma_docmd(DMA_CTRL_RUN|DMA_CTRL_DIE|DMA_CTRL_TCIE|DMA_CTRL_IOM|DMA_CTRL_HBUS|DMA_CTRL_AECE); + + reg_fdc_drvsel = FDC_SEL_SDEN | unitbit; + return fdc_docmd(FDC_READSEC_M); +} + +static t_bool fd_reg16bit[] = { + FALSE,FALSE,FALSE,FALSE, + TRUE, TRUE, TRUE, TRUE, + FALSE,FALSE,FALSE,FALSE, + FALSE,FALSE,FALSE,FALSE +}; + +t_stat fdc_write(t_addr ioaddr, uint16 data) { + int io = ioaddr & 15; + sim_debug(DBG_FD_WRITE, &fdc_dev, DBG_PCFORMAT0 "%s write %04x to IO=$%04x\n", + DBG_PC, fd_reg16bit[io] ? "Byte":"Word", data, ioaddr); + switch (io) { + case 4: /* cmd + drvsel */ + reg_fdc_drvsel = (data >> 8) & 0xff; + case 0: /* cmd writeonly */ + fdc_docmd(data); + break; + case 5: /* track + drvsel */ + reg_fdc_drvsel = (data >> 8) & 0xff; + case 1: /* track */ + reg_fdc_track = data & 0xff; + break; + case 6: /* sector + drvsel */ + reg_fdc_drvsel = (data >> 8) & 0xff; + case 2: /* sector */ + reg_fdc_sector = data & 0xff; + break; + case 7: /* data + drvsel */ + reg_fdc_drvsel = (data >> 8) & 0xff; + case 3: /* data */ + reg_fdc_data = data & 0xff; + break; + case 8: /* dma ctrl */ + dma_docmd(data); + break; + case 9: /* dma status */ + if (isbitset(reg_dma_status,DMA_ST_BUSY)) + printf("Warning: DMA: write status while BUSY\n"); + reg_dma_status = data & 0x8f; + break; + case 0x0a: /* count low */ + reg_dma_cntl = data; + break; + case 0x0b: /* count high */ + reg_dma_cnth = data; + break; + case 0x0c: /* addr low */ + reg_dma_addrl = data; + break; + case 0x0d: /* addr high */ + reg_dma_addrh = data; + break; + case 0x0e: /* addr ext */ + reg_dma_addre = data & 0x03; + break; + case 0x0f: /* ID register */ + reg_dma_id = data; + break; + } + _reg_dma_cnt = (reg_dma_cnth << 8) | reg_dma_cntl; + if (_reg_dma_cnt) clrbit(reg_dma_status,DMA_ST_TCZI); + _reg_dma_addr = (((uint32)reg_dma_addre)<<16) | (((uint32)reg_dma_addrh)<<8) | reg_dma_addrl; + + (void)fdc_select(); + return SCPE_OK; +} + +t_stat fdc_read(t_addr ioaddr, uint16 *data) { + switch (ioaddr & 15) { + case 0: /* status readonly */ + case 4: + *data = reg_fdc_status; + break; + case 1: /* track */ + case 5: + *data = reg_fdc_track; + break; + case 2: /* sector */ + case 6: + *data = reg_fdc_sector; + break; + case 3: /* data */ + case 7: + *data = reg_fdc_data; + break; + case 8: /* read nothing */ + *data = 0; + break; + case 9: + *data = reg_dma_status; + break; + case 0x0a: /* byte low */ + *data = reg_dma_cntl; + break; + case 0x0b: + *data = reg_dma_cnth; + break; + case 0x0c: + *data = reg_dma_addrl; + break; + case 0x0d: + *data = reg_dma_addrh; + break; + case 0x0e: + *data = reg_dma_addre; + break; + default: /* note: ID register 0xfc3f is unusable because RE is tied to VCC */ + *data = reg_dma_id; + break; + } + sim_debug(DBG_FD_READ, &fdc_dev, DBG_PCFORMAT1 "Byte read %02x from IO=$%04x\n", + DBG_PC, *data, ioaddr); + return SCPE_OK; +} + +/* + * Create an ImageDisk (IMD) file. This function just creates the comment header, and allows + * the user to enter a comment. After the IMD is created, it must be formatted with a format + * program on the simulated operating system, ie CP/M, CDOS, 86-DOS. + * + * If the IMD file already exists, the user will be given the option of overwriting it. + */ +t_stat pdq3_diskCreate(FILE *fileref, char *ctlr_comment) { + DISK_INFO *myDisk = NULL; + char *comment; + char *curptr; + uint8 answer; + int32 len, remaining; + + if(fileref == NULL) { + return (SCPE_OPENERR); + } + + if(sim_fsize(fileref) != 0) { + printf("PDQ3_IMD: Disk image already has data, do you want to overwrite it? "); + answer = getchar(); + + if((answer != 'y') && (answer != 'Y')) { + return (SCPE_OPENERR); + } + } + + if((curptr = comment = calloc(1, MAX_COMMENT_LEN)) == 0) { + printf("PDQ3_IMD: Memory allocation failure.\n"); + return (SCPE_MEM); + } + + printf("PDQ3_IMD: Enter a comment for this disk.\n" + "PDQ3_IMD: Terminate with a '.' on an otherwise blank line.\n"); + remaining = MAX_COMMENT_LEN; + do { + printf("IMD> "); + fgets(curptr, remaining - 3, stdin); + if (strcmp(curptr, ".\n") == 0) { + remaining = 0; + } else { + len = strlen(curptr) - 1; + if (curptr[len] != '\n') + len++; + remaining -= len; + curptr += len; + *curptr++ = 0x0d; + *curptr++ = 0x0a; + } + } while (remaining > 4); + *curptr = 0x00; + + /* rewind to the beginning of the file. */ + rewind(fileref); + + /* Erase the contents of the IMD file in case we are overwriting an existing image. */ + sim_set_fsize(fileref, ftell (fileref)); + + fprintf(fileref, "IMD SIMH %s %s\n", __DATE__, __TIME__); + fputs(comment, fileref); + free(comment); + fprintf(fileref, "%s\n", ctlr_comment); + fputc(0x1A, fileref); /* EOF marker for IMD comment. */ + fflush(fileref); + + if((myDisk = diskOpen(fileref, 0)) == NULL) { + printf("PDQ3_IMD: Error opening disk for format.\n"); + return(SCPE_OPENERR); + } + + if(pdq3_diskFormat(myDisk) != SCPE_OK) { + printf("PDQ3_IMD: error formatting disk.\n"); + } + + return diskClose(&myDisk); +} + +t_stat pdq3_diskFormat(DISK_INFO *myDisk) { + uint8 i; + uint8 sector_map[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; + uint32 flags; + + printf("PDQ3_IMD: Formatting disk in PDQ3 format.\n"); + + /* format first track as 26 sectors with 128 bytes */ + if((trackWrite(myDisk, 0, 0, 26, 128, sector_map, IMD_MODE_500K_FM, 0xE5, &flags)) != 0) { + printf("PDQ3_IMD: Error formatting track 0\n"); + return SCPE_IOERR; + } + putchar('.'); + + /* format the remaining tracks as 26 sectors with 256 bytes */ + for(i=1;i<77;i++) { + if((trackWrite(myDisk, i, 0, 26, 256, sector_map, IMD_MODE_500K_MFM, 0xE5, &flags)) != 0) { + printf("PDQ3_IMD: Error formatting track %d\n", i); + return SCPE_IOERR; + } else { + putchar('.'); + } + } + + printf("\nPDQ3_IMD: Format Complete.\n"); + return SCPE_OK; +} diff --git a/PDQ-3/pdq3_mem.c b/PDQ-3/pdq3_mem.c new file mode 100644 index 00000000..e90b73ce --- /dev/null +++ b/PDQ-3/pdq3_mem.c @@ -0,0 +1,355 @@ +/* + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. + + 20130920 hv initial version, moved some code from pdq3_cpu.c +*/ +#include "pdq3_defs.h" + +/* the memory */ +uint16 M[MAXMEMSIZE]; + +/****************************************************************************** + * IO dispatcher + *****************************************************************************/ + +static t_bool initio = FALSE; +#define IOSIZE 4096 +#define IOPAGEMASK 0x0fff +IOREAD ioreaders[IOSIZE]; +IOWRITE iowriters[IOSIZE]; + +/* I/O devices are implemented this way: + * a unit will register its own I/O addresses together with its handler + * in a hash which allows simple lookup of memory mapped I/O addresses + */ +t_stat pdq3_ioinit() { + int i; + if (!initio) { + for (i=0; i < IOSIZE; i++) { + ioreaders[i] = NULL; + iowriters[i] = NULL; + } + for (i=8; i < 32; i++) + cpu_setIntVec(NIL, i); + initio = TRUE; + } + return SCPE_OK; +} + +t_stat add_ioh(IOINFO* ioi) { + while (ioi) { + int i; + for (i=0; iiosize; i++) { + int idx = (ioi->iobase + i) & IOPAGEMASK; + ioreaders[idx] = ioi->read; + iowriters[idx] = ioi->write; + } + ioi = ioi->next; + } + return SCPE_OK; +} + +t_stat del_ioh(IOINFO* ioi) { + while (ioi) { + int i; + for (i=0; iiosize; i++) { + int idx = (ioi->iobase + i) & IOPAGEMASK; + ioreaders[idx] = NULL; + iowriters[idx] = NULL; + } + ioi = ioi->next; + } + return SCPE_OK; +} + +/****************************************************************************** + * configuration + *****************************************************************************/ +t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc) { + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + while (ioi) { + if (ioi->iobase) { + if (ioi->iobase > 0xfc00) { + fprintf(st, first ? "IOBASE=$%04x":",$%04x", ioi->iobase); + first = FALSE; + } + } + ioi = ioi->next; + } + return SCPE_OK; +} + +t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc) { + t_stat rc; + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!cptr) return SCPE_ARG; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + if (ioi->next) + return SCPE_ARG; /* note: fixed devices on mainboard cannot be changed */ + ioi->iobase = get_uint(cptr, 16, 0xffff, &rc); + return rc; +} + +t_stat set_iovec(UNIT *uptr, int32 val, char *cptr, void *desc) { + t_stat rc; + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!cptr) return SCPE_ARG; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + if (ioi->next) + return SCPE_ARG; /* note: fixed devices on mainboard cannot be changed */ + ioi->qvector = get_uint(cptr, 16, 0xff, &rc); + return rc; +} + +t_stat show_iovec(FILE *st, UNIT *uptr, int value, void *desc) { + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + while (ioi) { + if (ioi->qprio < 32) { + fprintf(st, first ? "VECTOR=$%04x":",$%04x", ioi->qvector); + first = FALSE; + } + ioi = ioi->next; + } + return SCPE_OK; +} + +t_stat set_ioprio(UNIT *uptr, int32 val, char *cptr, void *desc) { + t_stat rc; + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!cptr) return SCPE_ARG; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + if (ioi->next) + return SCPE_ARG; /* note: fixed devices on mainboard cannot be changed */ + ioi->qprio = get_uint(cptr, 16, 31, &rc); + return rc; +} + +t_stat show_ioprio(FILE *st, UNIT *uptr, int value, void *desc) { + DEVICE* dptr; + DEVCTXT* ctxt; + IOINFO* ioi; + t_bool first = TRUE; + if (!uptr) return SCPE_IERR; + if ((dptr = find_dev_from_unit(uptr)) == 0) return SCPE_IERR; + ctxt = (DEVCTXT*)dptr->ctxt; + ioi = ctxt->ioi; + while (ioi) { + if (ioi->qprio < 32) { + fprintf(st, first ? "PRIO=%d":",%d", ioi->qprio); + first = FALSE; + } + ioi = ioi->next; + } + return SCPE_OK; +} + +/****************************************************************************** + * central memory handling + *****************************************************************************/ +t_stat Read(t_addr base, t_addr woffset, uint16 *data, uint32 dctrl) { + t_stat rc; + uint16 ea = base + woffset; + + /* Note: the PRIAM driver attempts to read the ready bit from FF25 (bit 9) which should be 1. + * As long as we don't have a HDP device, the invalid value should be 0x0000 */ + *data = 0x0000; /* preload invalid data value */ + + if (ea < 0xf000 || (ea == 0xfffe && cpu_unit.capac > 65535)) { + *data = M[ea]; /* normal memory */ + rc = SCPE_OK; + } else { + IOREAD reader = ioreaders[ea & IOPAGEMASK]; + rc = reader ? (*reader)(ea, data) : SCPE_NXM; + } + if (rc != SCPE_OK) { + cpu_buserror(); + sim_debug(DBG_CPU_READ, &cpu_dev, DBG_PCFORMAT1 "Invalid Mem read from $%04x\n", DBG_PC, ea); + printf("read buserror: ea=$%04x at $%x:#%x\n",ea,reg_segb,reg_ipc); + return rc; + } + if (dctrl & DBG_CPU_PICK) { + sim_debug(DBG_CPU_PICK, &cpu_dev, DBG_PCFORMAT1 "Pick %04x at SP=$%04x\n", DBG_PC, *data, ea); + } else if (dctrl & DBG_CPU_POP) { + sim_debug(DBG_CPU_POP, &cpu_dev, DBG_PCFORMAT2 "Pop %04x from SP=$%04x\n", DBG_PC, *data, ea); + } else { + sim_debug(dctrl, &cpu_dev, DBG_PCFORMAT2 "Word read %04x from $%04x\n", DBG_PC, *data, ea); + } + return rc; +} + +/* read routine that does not generate bus errors, for SIMH Examine + * will read 0x0000 for unknown memory */ +t_stat ReadEx(t_addr base, t_addr woffset, uint16 *data) { + t_stat rc; + uint16 ea = base + woffset; + *data = 0x0000; /* preload invalid data value */ + if (ea < 0xf000) { + *data = M[ea]; /* normal memory */ + rc = SCPE_OK; + } else { + IOREAD reader = ioreaders[ea & IOPAGEMASK]; + rc = reader ? (*reader)(ea, data) : SCPE_NXM; + } + return rc; +} + +t_stat Write(t_addr base, t_addr woffset, uint16 data, uint32 dctrl) { + t_stat rc; + uint16 ea = base + woffset; + if (ea < 0xf000) { + M[ea] = data; + rc = SCPE_OK; + } else { + IOWRITE write = iowriters[ea & IOPAGEMASK]; + rc = write ? (*write)(ea, data) : SCPE_NXM; + } + if (rc != SCPE_OK) { + cpu_buserror(); + sim_debug(DBG_CPU_WRITE, &cpu_dev, DBG_PCFORMAT0 "Invalid Mem write to $%04x\n", DBG_PC, ea); +printf("write buserror %x at %x:%x\n",ea,reg_segb,reg_ipc); +//exit(1); + return rc; + } + if (dctrl & DBG_CPU_STACK) + sim_debug(DBG_CPU_PUSH, &cpu_dev, DBG_PCFORMAT1 "Push %04x to SP=$%04x\n", DBG_PC, data, ea); + else + sim_debug(dctrl, &cpu_dev, DBG_PCFORMAT2 "Word write %04x to $%04x\n", DBG_PC, data, ea); + return rc; +} + +t_stat ReadB(t_addr base, t_addr boffset, uint16 *data, uint32 dctrl) +{ + t_stat rc; + t_addr ea = base + boffset/2; + if ((rc=Read(ea, 0, data, DBG_NONE)) != SCPE_OK) return rc; + if (boffset & 1) + *data >>= 8; + *data &= 0xff; + if (dctrl & DBG_CPU_FETCH) + sim_debug(DBG_CPU_FETCH, &cpu_dev, DBG_PCFORMAT0 "Fetch %02x from SEGB:%04x\n", + DBG_PC, *data, reg_ipc); + else + sim_debug(dctrl, &cpu_dev, DBG_PCFORMAT2 "Byte[%d] read %02x from $%04x\n", + DBG_PC, boffset & 1, *data, ea); + return SCPE_OK; +} + +t_stat ReadBEx(t_addr base, t_addr boffset, uint16 *data) +{ + t_stat rc; + t_addr ea = base + boffset/2; + if ((rc=ReadEx(ea, 0, data)) != SCPE_OK) return rc; + if (boffset & 1) + *data >>= 8; + *data &= 0xff; + return SCPE_OK; +} + +t_stat WriteB(t_addr base, t_addr boffset, uint16 data, uint32 dctrl) +{ + uint16 wdata; + t_addr ea = base + boffset/2; + if (ea < 0xfc00) { + sim_debug(dctrl, &cpu_dev, DBG_PCFORMAT2 "Byte[%d] write %02x to $%04x\n", + DBG_PC, boffset & 1, data, ea); + wdata = M[ea]; + } else { + printf(DBG_PCFORMAT0 "Invalid byte[%d] write %02x to I/O addr $%04x\n", DBG_PC, boffset & 1, data, ea); + return STOP_ERRIO; + } + if (boffset & 1) { + wdata = (wdata & 0xff) | (data<<8); + } else { + wdata = (wdata & 0xff00) | (data & 0xff); + } + return Write(ea, 0, wdata, 0); +} + +t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + int32 mc; + t_addr i; + + if (val < 0 || val > 1) + return SCPE_ARG; + + val = val ? 65536 : 32768; + + for (mc = 0, i = val; i < memorysize; i++) + mc = mc | M[i]; + + if (mc && !get_yn ("Really truncate memory [N]?", FALSE)) + return SCPE_OK; + + memorysize = val; + for (i = memorysize; i < MAXMEMSIZE; i++) + M[i] = 0; + return SCPE_OK; +} + +t_stat rom_read(t_addr ea, uint16 *data) +{ + *data = M[ea]; + return SCPE_OK; +} + +t_stat rom_write(t_addr ea, uint16 data) { + M[ea] = data; + return SCPE_OK; +} + + diff --git a/PDQ-3/pdq3_stddev.c b/PDQ-3/pdq3_stddev.c new file mode 100644 index 00000000..d4f93272 --- /dev/null +++ b/PDQ-3/pdq3_stddev.c @@ -0,0 +1,641 @@ +/* PDQ3_stddev.c: PDQ3 simulator standard devices + + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or + other dealings in this Software without prior written authorization from + Robert M Supnik and Holger Veit. + + 20130902 hv added telnet multiplexer code + 20131020 hv fixed CON interrupt handling + 20131103 hv connect CON_ATTACH logic with DSR, so that DSR is set if tcp connect +*/ +#include "pdq3_defs.h" +#include + +extern UNIT cpu_unit; +extern int32 sim_switches; +extern UNIT con_unit[]; + +static t_stat con_termsvc(UNIT *uptr); +static t_stat con_pollsvc(UNIT *uptr); +static t_stat con_attach(UNIT*, char*); +static t_stat con_detach(UNIT*); +static t_stat con_reset(DEVICE* dptr); + +static t_stat tim_reset(DEVICE *dptr); +static t_stat tim0_svc(UNIT* uptr); +static t_stat tim1_svc(UNIT* uptr); +static t_stat tim2_svc(UNIT* uptr); + +/* CON USART registers */ +/* This is described as positive logic, and represents the + * content of the corresponding registers. + * However, the USART is connected to inverted DAL lines + * and needs to be written to with the inverted value + * This is done in CPU Read/Write */ +#define CONC1_LOOP 0x80 /* 0=loopmode diagnostic, 1=normal full duplex */ +#define CONC1_BRK 0x40 /* 1=send break */ +#define CONC1_MISC 0x20 /* 1=one stop bit, 0=two */ +#define CONC1_ECHO 0x10 /* 1=echo received data */ +#define CONC1_PE 0x08 /* 1=check parity */ +#define CONC1_RE 0x04 /* 1=enable receiver */ +#define CONC1_RTS 0x02 /* 1=enable transmitter if CTS */ +#define CONC1_DTR 0x01 /* 1=enable CD, DSR,RI interrupts */ +static uint8 con_ctrl1; +#define CONC2_CLENMASK 0xc0 /* number of bits */ +#define CONC2_CLEN8 0x00 +#define CONC2_CLEN7 0x40 +#define CONC2_CLEN6 0x80 +#define CONC2_CLEN5 0xc0 +#define CONC2_MODE 0x20 /* not used set to 0 (async mode) */ +#define CONC2_ODDEVN 0x10 /* 0=even parity */ +#define CONC2_RXCLK 0x08 /* not used, set to 1 */ +#define CONC2_CLKMASK 0x07 /* clock selector */ +#define CONC2_CLK110 0x06 /* must be set to 001 (rate 1 clock) */ +static uint8 con_ctrl2; +#define CONS_DSC 0x80 /* set to 1 after status read, cleared by DSR/DCD/RI */ +#define CONS_DSR 0x40 /* DSR input */ +#define CONS_CD 0x20 /* DCD input */ +#define CONS_FE 0x10 /* 1=framing error */ +#define CONS_PE 0x08 /* 1=parity error */ +#define CONS_OE 0x04 /* 1= overrun error */ +#define CONS_DR 0x02 /* set to 1 if data received, 0 if data read */ +#define CONS_THRE 0x01 /* set to 1 if data xmit buffer empty */ +static uint8 con_status; +static uint8 con_xmit; +static uint8 con_rcv; + +/************************************************************************************************ + * Utilities + ***********************************************************************************************/ +t_stat mux_attach(UNIT* uptr, char* cptr, SERMUX* mux) { + t_stat rc; + mux->desc.ldsc = &mux->ldsc; + if ((rc = tmxr_attach(&mux->desc, uptr, cptr)) == SCPE_OK) { + mux->poll->wait = mux->pfirst; + sim_activate(mux->poll, mux->poll->wait); + } + return rc; +} + +t_stat mux_detach(UNIT* uptr, SERMUX* mux) { + t_stat rc = tmxr_detach(&mux->desc, uptr); + mux->ldsc.rcve = 0; + sim_cancel(mux->poll); + sim_cancel(mux->term); + return rc; +} + +/************************************************************************************************ + * Onboard Console + ***********************************************************************************************/ + +/* con data structures + con_dev con device descriptor + con_unit con unit descriptor + con_mod con modifier list + con_reg con register list +*/ +IOINFO con_ioinfo1 = { NULL, CON_IOBASE, 4, CON_RCV_VEC, 4, con_read, con_write }; +IOINFO con_ioinfo2 = { &con_ioinfo1, 0, 0, CON_XMT_VEC, 3, con_read, con_write }; +DEVCTXT con_ctxt = { &con_ioinfo2 }; + +UNIT con_unit[] = { + { UDATA (&con_pollsvc, UNIT_ATTABLE, 0), CON_POLLRATE, }, + { UDATA (&con_termsvc, UNIT_IDLE, 0), CON_TERMRATE, } +}; + +REG con_reg[] = { + { HRDATA (CTRL1, con_ctrl1, 8) }, + { HRDATA (CTRL2, con_ctrl2, 8) }, + { HRDATA (STAT, con_status, 8) }, + { HRDATA (XMIT, con_xmit, 8) }, + { HRDATA (RCV, con_rcv, 8) }, + { NULL } + }; +MTAB con_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", NULL, &show_iobase }, + { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", NULL, &show_iovec }, + { MTAB_XTD|MTAB_VDV, 0, "PRIO", "PRIO", NULL, &show_ioprio }, + { 0 } + }; +DEBTAB con_dflags[] = { + { "WRITE", DBG_CON_WRITE }, + { "READ", DBG_CON_READ }, + { "SVC", DBG_CON_SVC }, + { 0, 0 } +}; + +SERMUX con_mux[1] = { + { CON_POLLFIRST, /*pfirst*/ + CON_POLLRATE, /*prate*/ + { 0 }, /*ldsc*/ + { 1,0,0,0 }, /*desc*/ + &con_unit[1], /*term*/ + &con_unit[0] /*poll*/ + } +}; + +DEVICE con_dev = { + "CON", /*name*/ + con_unit, /*units*/ + con_reg, /*registers*/ + con_mod, /*modifiers*/ + 2, /*numunits*/ + 16, /*aradix*/ + 16, /*awidth*/ + 1, /*aincr*/ + 8, /*dradix*/ + 8, /*dwidth*/ + NULL, /*examine*/ + NULL, /*deposit*/ + &con_reset, /*reset*/ + NULL, /*boot*/ + con_attach, /*attach*/ + con_detach, /*detach*/ + &con_ctxt, /*ctxt*/ + DEV_DEBUG|DEV_DISABLE, /*flags*/ + 0, /*dctrl*/ + con_dflags, /*debflags*/ + NULL, /*msize*/ + NULL /*lname*/ +}; + +/* bus reset handler */ +t_stat con_binit() { + SERMUX *mux = &con_mux[0]; + + con_status = CONS_THRE; + if (mux->ldsc.conn) setbit(con_status, CONS_DSR); + + con_ctrl1 = 0; /* no echo, receiver disabled, transmitter disabled */ + con_ctrl2 = 0; /* ASYNC mode, 8bits, Clock 1X */ + con_xmit = 0; + con_rcv = 0; + return SCPE_OK; +} + +/* common handlers */ +static t_stat con_reset(DEVICE* dptr) +{ + int32 wait; + SERMUX * mux = &con_mux[0]; + UNIT *term = mux->term; + UNIT *poll = mux->poll; + DEVCTXT* ctxt = (DEVCTXT*)dptr->ctxt; + + wait = poll->wait = CON_POLLWAIT; + sim_rtcn_init (wait, TMR_CONPOLL); /* init poll timer */ + + sim_cancel(term); + + /* register/deregister I/O handlers */ + if (dptr->flags & DEV_DIS) { + del_ioh(ctxt->ioi); + } else { + add_ioh(ctxt->ioi); + poll->buf = 0; + sim_activate (poll, wait); + } + return con_binit(); +} + +t_stat con_attach(UNIT* uptr, char* cptr) { + setbit(con_status, CONS_DSR|CONS_DSC); + return mux_attach(uptr, cptr, &con_mux[0]); +} + +t_stat con_detach(UNIT* uptr) { + clrbit(con_status, CONS_DSR); + setbit(con_status, CONS_DSC); + return mux_detach(uptr, &con_mux[0]); +} + +#define XMITENABLED() (isbitset(con_ctrl1,CONC1_RTS)) +#define XMITENABLE() setbit(con_ctrl1,CONC1_RTS) +#define XMITDISABLE() clrbit(con_ctrl1,CONC1_RTS) +#define XMITEMPTY() (isbitset(con_status, CONS_THRE)) + +#define RCVENABLED() (isbitset(con_ctrl1,CONC1_RE)) +#define RCVFULL() (isbitset(con_status, CONS_DR)) +#define RCVENABLE() setbit(con_ctrl1,CONC1_RE) +#define RCVDISABLE() clrbit(con_ctrl1,CONC1_RE) + +#define DSRACTIVE() (isbitset(con_ctrl1,CONC1_DTR) && isbitset(con_status,CONS_DSR)) + +/* The transmit interrupt is raised continuously, + * as long as the transmit holding reg is empty and the transmitter is enabled. + * It will be deasserted when the tranmit reg is full or tranmitter disabled. + */ +#define XMITINTR() cpu_assertInt(INT_CONT, XMITEMPTY()) + +/* The receive interrupt is raised continuously, + * when the receiver holding register is full and the receiver is enabled. + * it will be deasserted when the receiver reg is read or the receiver disabled. + */ +#define RCVINTR() cpu_assertInt(INT_CONR, RCVFULL()) + +/* The DSR interrupt is raised when DSC is set to 1 (pos logic) + * and DTR is active, cleared if status is read */ +#define DSRINTR() cpu_assertInt(INT_PRNT, DSRACTIVE()) + +/* Terminal output service */ +t_stat con_termsvc (UNIT *uptr) { + SERMUX *mux = &con_mux[0]; + t_bool isnetwork = (mux->poll->flags & UNIT_ATT); + t_stat rc; + int ch = uptr->buf & 0xff; + +// sim_debug(DBG_CON_SVC, &con_dev, "termsvc: isnetwork=%d\n",isnetwork); + /* TODO? sim_tt_outcvt */ + + if (XMITENABLED()) { /* tranmitter enabled */ + /* attached to a telnet port? */ +// printf("*** Emit: %02x ***\n",uptr->buf & 0xff); + if (isnetwork) { + if ((rc=tmxr_putc_ln(&mux->ldsc, ch)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return SCPE_OK; + } else + tmxr_poll_tx(&mux->desc); + } else { + if ((rc=sim_putchar_s(ch)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return rc==SCPE_STALL ? SCPE_OK : rc; + } + } + setbit(con_status,CONS_THRE); /* set transmitter holding reg empty */ + cpu_assertInt(INT_CONT, TRUE); /* generate an interrupt because of DRQO */ + } + return SCPE_OK; +} + +/* Terminal input service */ +t_stat con_pollsvc(UNIT *uptr) { + int32 c, kbdc; + SERMUX *mux = &con_mux[0]; + t_bool isnetwork = (mux->poll->flags & UNIT_ATT); + + uptr->wait = sim_rtcn_calb(mux->prate, TMR_CONPOLL); /* calibrate timer */ + sim_activate (uptr, uptr->wait); /* restart polling */ + + kbdc = sim_poll_kbd(); /* check keyboard */ + if (kbdc == SCPE_STOP) return kbdc; /* handle CTRL-E */ + + /* network-redirected input? */ + if (isnetwork) { + if (tmxr_poll_conn(&mux->desc) >= 0) /* incoming connection */ + mux->ldsc.rcve = 1; + tmxr_poll_rx(&mux->desc); /* poll for input */ + if (!tmxr_rqln(&mux->ldsc)) return SCPE_OK; + /* input ready */ + c = tmxr_getc_ln(&mux->ldsc); + if ((c & TMXR_VALID) == 0) return SCPE_OK; + } else { + c = kbdc; /* use char polled from keyboard */ + if (c < SCPE_KFLAG) return c; /* ignore data if not valid */ + } + + c = sim_tt_inpcvt(c, TT_GET_MODE(uptr->flags)); + uptr->buf = c & 0xff; + uptr->pos = uptr->pos + 1; + + if (RCVENABLED()) { /* receiver enabled? */ + if (RCVFULL()) /* handle data overrun */ + setbit(con_status,CONS_OE); + + con_rcv = c & 0xff; /* put in receiver register */ + setbit(con_status,CONS_DR); /* notify: data received */ + cpu_assertInt(INT_CONR, TRUE); /* generate interrupt because of DRQI */ + + if (isbitset(con_ctrl1, CONC1_ECHO)) { /* echo? XXX handle in telnet handler? */ + /* XXX use direct send here, not sending via con_termsvc */ + if (isnetwork) + tmxr_putc_ln(&mux->ldsc, c); + else + sim_putchar_s(c); + } + } + return SCPE_OK; +} + +static int set_parity(int c, int odd) +{ + int i, p = 0; + for (i=0; i<8; i++) + if (c & (1<term; + UNIT *poll = mux->poll; + + /* note usart has inverted bus, so all data is inverted */ + data = (~data) & 0xff; + switch (ioaddr & 0x0003) { + case 0: /* CTRL1 */ + con_ctrl1 = data; + if (!RCVENABLED()) { /* disable receiver */ + clrbit(con_status,CONS_FE|CONS_PE|CONS_OE|CONS_DR); + sim_cancel(poll); + } else { + sim_activate(poll, poll->wait); /* start poll service, will raise interrupt if buffer full */ + } + if (!XMITENABLED()) { /* disable transmitter */ + /* will drain current pending xmit service. RTS output is assumed to become inactive + * (it is not necessary to emulate it) */ + } else { + if (XMITEMPTY()) { + } else { + /* some char in THR, start service to emit */ + sim_activate(term, term->wait); + } + } + break; + case 1: + con_ctrl2 = data; + break; + case 2: + // ignore this here - DLE register + break; + case 3: + switch (con_ctrl2 & CONC2_CLENMASK) { + case CONC2_CLEN5: data &= 0x1f; break; + case CONC2_CLEN6: data &= 0x3f; break; + case CONC2_CLEN7: data &= 0x7f; + if (isbitset(con_ctrl1,CONC1_PE)) + data = set_parity(data, con_ctrl2 & CONC2_ODDEVN); + break; + case CONC2_CLEN8: data &= 0xff; break; + } + con_xmit = data; + term->buf = data; + clrbit(con_status,CONS_THRE); + if (XMITENABLED()) + sim_activate(term,term->wait); + } +// RCVINTR(); + XMITINTR(); + DSRINTR(); + + sim_debug(DBG_CON_WRITE, &con_dev, DBG_PCFORMAT0 "Byte write %02x (pos logic) to $%04x\n", DBG_PC, data & 0xff, ioaddr); + return SCPE_OK; +} + +t_stat con_read(t_addr ioaddr, uint16 *data) { + SERMUX *mux = &con_mux[0]; + + switch (ioaddr & 0x0003) { + case 0: /* CTRL1 */ + *data = con_ctrl1; + break; + case 1: + *data = con_ctrl2; + break; + case 2: + if (mux->ldsc.conn) setbit(con_status, CONS_DSR); + else clrbit(con_status, CONS_DSR); + *data = con_status; + clrbit(con_status,CONS_DSC); /* acknowledge change in DSR/DCD */ + break; + case 3: + *data = con_rcv; + clrbit(con_status,CONS_DR); + cpu_assertInt(INT_CONR, FALSE); + } + sim_debug(DBG_CON_READ, &con_dev, DBG_PCFORMAT1 "Byte read %02x (pos logic) from $%04x\n", DBG_PC, *data & 0xff, ioaddr); + + /* note usart has inverted bus, so returned data must be negated */ + *data = ~(*data); + return SCPE_OK; +} + +/************************************************************************************************ + * Onboard 8253 timer + ***********************************************************************************************/ + +struct i8253 { + uint16 cnt; + uint16 preset; + uint16 mode; + t_bool hilo; /* which half of 16 bit cnt is to be set */ +}; +struct i8253 tim[3]; + +IOINFO tim_ioinfo1 = { NULL, TIM_IOBASE, 4, TIM_TICK_VEC, 6, tim_read, tim_write }; +IOINFO tim_ioinfo2 = { &tim_ioinfo1, 0, 0, TIM_INTVL_VEC, 7, tim_read, tim_write }; +DEVCTXT tim_ctxt = { &tim_ioinfo2 }; + +UNIT tim_unit[] = { + { UDATA (&tim0_svc, 0, 0), CON_POLLRATE, }, + { UDATA (&tim1_svc, 0, 0), CON_POLLRATE, }, + { UDATA (&tim2_svc, 0, 0), CON_POLLRATE, } +}; + +REG tim_reg[] = { + { HRDATA (CNT0, tim[0].cnt, 16) }, + { HRDATA (CNT1, tim[1].cnt, 16) }, + { HRDATA (CNT2, tim[2].cnt, 16) }, + { HRDATA (MODE0, tim[0].mode, 8) }, + { HRDATA (MODE1, tim[1].mode, 8) }, + { HRDATA (MODE2, tim[2].mode, 8) }, + { NULL } +}; +MTAB tim_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IOBASE", "IOBASE", NULL, &show_iobase }, + { MTAB_XTD|MTAB_VDV, 0, "VECTOR", "VECTOR", NULL, &show_iovec }, + { MTAB_XTD|MTAB_VDV, 0, "PRIO", "PRIO", NULL, &show_ioprio }, + { 0 } +}; +DEBTAB tim_dflags[] = { + { "WRITE", DBG_TIM_WRITE }, + { "READ", DBG_TIM_READ }, + { "SVC", DBG_TIM_SVC }, + { 0, 0 } +}; + +DEVICE tim_dev = { + "TIM", /*name*/ + tim_unit, /*units*/ + tim_reg, /*registers*/ + tim_mod, /*modifiers*/ + 3, /*numunits*/ + 16, /*aradix*/ + 16, /*awidth*/ + 1, /*aincr*/ + 8, /*dradix*/ + 8, /*dwidth*/ + NULL, /*examine*/ + NULL, /*deposit*/ + &tim_reset, /*reset*/ + NULL, /*boot*/ + NULL, /*attach*/ + NULL, /*detach*/ + &tim_ctxt, /*ctxt*/ + DEV_DEBUG, /*flags*/ + 0, /*dctrl*/ + tim_dflags, /*debflags*/ + NULL, /*msize*/ + NULL /*lname*/ +}; + +t_stat tim_reset(DEVICE *dptr) +{ + DEVCTXT* ctxt = (DEVCTXT*)dptr->ctxt; + + if (dptr->flags & DEV_DIS) { + del_ioh(ctxt->ioi); + sim_cancel(&tim_unit[0]); + sim_cancel(&tim_unit[1]); + sim_cancel(&tim_unit[2]); + } else { + add_ioh(ctxt->ioi); + } + return SCPE_OK; +} + +t_stat tim_read(t_addr ioaddr, uint16 *data) +{ + int n = ioaddr & 0x0003; + if (n == 3) + *data = 0xff; + else { + *data = (tim[n].hilo ? tim[n].cnt : (tim[n].cnt >> 8)) & 0xff; + sim_debug(DBG_TIM_READ, &tim_dev, DBG_PCFORMAT1 "Read %s timer%d: %02x\n", + DBG_PC, tim[n].hilo ? "high" : "low", n, *data); + tim[n].hilo = ! tim[n].hilo; + } + return SCPE_OK; +} + +static uint16 sethi(uint16 val, uint16 data) { + val &= 0xff; + val |= (data << 8); + return val; +} +static uint16 setlo(uint16 val, uint16 data) { + val &= 0xff00; + val |= data; + return val; +} +t_stat tim_write(t_addr ioaddr, uint16 data) +{ + int n = ioaddr & 0x0003; + data &= 0xff; + if (n == 3) { + n = (data & 0xc0) >> 6; + sim_debug(DBG_TIM_WRITE, &tim_dev, DBG_PCFORMAT0 "Timer%d: mode=%d\n", + DBG_PC, n, (data >> 1) & 7); + if (n == 3) { + printf("Unimplemented: Mode=0xc0\n"); + return STOP_IMPL; + } + if (data & 0x01) { + printf("Unimplemented: BCD mode: timer=%d\n",n); + return STOP_IMPL; + } + if (!( (data & 0x0e)==0x00 || (data & 0x0e)==0x04)) { + printf("Unimplemented: Mode not 0 or 2: timer=%d\n",n); + return STOP_IMPL; + } + if ((data & 0x30) != 0x30) { + printf("Unimplemented: not 16 bit load: timer=%d\n",n); + return STOP_IMPL; + } + tim[n].mode = data; + } else { + if (tim[n].hilo) { + tim[n].preset = sethi(tim[n].preset, data); + tim[n].cnt = sethi(tim[n].cnt, data); + if (n < 2) { /* timer 2 is triggered by timer 1 */ + int32 time = 1250000 / tim[n].cnt; + sim_cancel(&tim_unit[n]); + sim_activate(&tim_unit[n], time); + } + } else { + tim[n].preset = setlo(tim[n].preset, data); + tim[n].cnt = setlo(tim[n].cnt, data); + } + sim_debug(DBG_TIM_WRITE, &tim_dev, DBG_PCFORMAT0 "Timer%d: %s cnt=%02x\n", + DBG_PC, n, tim[n].hilo ? "high":"low", data); + tim[n].hilo = !tim[n].hilo; + } + return SCPE_OK; +} + +/* baud rate timer 0 is programmed in mode 2 - actually, this is ignored */ +static t_stat tim0_svc(UNIT* uptr) +{ + int32 time = 1250000 / tim[0].preset; + sim_activate(uptr, time); + sim_debug(DBG_TIM_SVC, &tim_dev, DBG_PCFORMAT2 "Timer0: SVC call\n", DBG_PC); + return SCPE_OK; +} + +/* system timer 1 is programmed in mode 2, causes interrupt each time it is 0 */ +static t_stat tim1_svc(UNIT* uptr) +{ + int32 time = 1250000 / tim[0].preset; + sim_debug(DBG_TIM_SVC, &tim_dev, DBG_PCFORMAT2 "Timer1: SVC call\n", DBG_PC); + sim_activate(uptr, time); + cpu_raiseInt(INT_TICK); + reg_ssr |= SSR_TICK; /* notify TICK timer int occurred */ + + /* handle interval timer */ + if (tim[2].cnt > 0) tim[2].cnt--; + if (tim[2].cnt == 0) { + cpu_raiseInt(INT_INTVL); + reg_ssr |= SSR_INTVL; /* notify INTVL timer int occurred */ + if ((tim[2].mode & 0x0e) == 0x04) { + tim[2].cnt = tim[2].preset; /* restart timer */ + } /* otherwise single shot */ + } + return SCPE_OK; +} + +/* interval timer 2 is programmed in mode 0 (single shot) or 2 (rate generator) + * this is triggered by timer1 - svc is ignored here */ +static t_stat tim2_svc(UNIT* uptr) +{ + sim_debug(DBG_TIM_SVC, &tim_dev, DBG_PCFORMAT2 "Timer2: SVC call - should not occur\n", DBG_PC); + return SCPE_OK; +} + diff --git a/PDQ-3/pdq3_sys.c b/PDQ-3/pdq3_sys.c new file mode 100644 index 00000000..4f4c57fe --- /dev/null +++ b/PDQ-3/pdq3_sys.c @@ -0,0 +1,621 @@ +/* pdq3_sys.c: PDQ3 simulator interface + + Work derived from Copyright (c) 2004-2012, Robert M. Supnik + Copyright (c) 2013 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of Robert M Supnik and Holger Veit + shall not be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik and Holger Veit. + + 2013xxxx hv initial version (written up to the leval to test against bootloader) + 20130907 hv added VIEWSEG command + 20130925 hv added CALL and NAME command + 20130927 hv wrong disassembly of LDC instr +*/ +#include "pdq3_defs.h" +#include + +static int disass(t_addr addr); +t_stat parse_sym_m (char *cptr, t_value *val, int32 sw); +void pdq3_vm_init (void); +static t_stat pdq3_cmd_exstack(int32 arg, char *buf); +static t_stat pdq3_cmd_exmscw(int32 arg, char *buf); +static t_stat pdq3_cmd_extib(int32 arg, char *buf); +static t_stat pdq3_cmd_exseg(int32 arg, char *buf); +static t_stat pdq3_cmd_calcea(int32 arg, char *buf); +static t_stat pdq3_cmd_calltree(int32 arg, char *buf); +static t_stat pdq3_cmd_namealias(int32 arg, char *buf); + +extern DEVICE cpu_dev; +extern UNIT cpu_unit; +extern DEVICE tty_dev; +extern DEVICE fdc_dev; +extern DEVICE tim_dev; +extern REG cpu_reg[]; +extern uint16 M[]; +extern uint16 reg_pc; + + +/* SCP data structures and interface routines + sim_name simulator name string + sim_PC pointer to saved PC register descriptor + sim_emax maximum number of words for examine/deposit + sim_devices array of pointers to simulated devices + sim_stop_messages array of pointers to stop messages + sim_load binary loader +*/ + +char sim_name[] = "PDQ3"; +REG *sim_PC = &cpu_reg[0]; /* note this is the artifical register PCX */ +int32 sim_emax = 6; +DEVICE *sim_devices[] = { + &cpu_dev, + &con_dev, + &fdc_dev, + &tim_dev, + NULL + }; +const char *sim_stop_messages[] = { + "---", + "PC Breakpoint", + "MEM Breakpoint", + "Invalid Opcode", + "Invalid MEM Access", + "Invalid I/O Access", + "Not yet implemented", + "BPT instruction", + "DEBUG PRE exec stop", + "DEBUG POST exec stop", + "HALT on Pascal Exception", +}; + +CTAB pdq3_cmds[] = { + { "VSTACK", &pdq3_cmd_exstack, 0, "Display last N elements of stack. Top is where SP points to" }, + { "VMSCW", &pdq3_cmd_exmscw, 0, "Display current MSCW" }, + { "VTIB", &pdq3_cmd_extib, 0, "Display current TIB" }, + { "VSEG", &pdq3_cmd_exseg, 0, "Display a segment table entry" }, + { "VCALL", &pdq3_cmd_calltree, 0, "Display the call tree" }, + { "NAME", &pdq3_cmd_namealias, 0, "Define a name" }, + { NULL, NULL, 0, NULL } +}; + +void (*sim_vm_init)(void) = &pdq3_vm_init; + +/* Loader proper */ +t_stat sim_load (FILE *fi, char *cptr, char *fnam, int flag) +{ + int rombase; + int c1, c2, i; + if (flag == 1) /* don't dump */ + return SCPE_ARG; + /* this assumes a HDT style ROM, where the first 2 bytes refer to the + * actual word start of the ROM, e.g. with PDQ-3 the HDT ROM has 0xf401 + * as the first word, so it will load at word address 0xf400, and 0xfc68 + * will be preset to 0xf401 + */ + c1 = fgetc(fi); + c2 = fgetc(fi); + rombase = c1 + c2 * 256; + rom_write(rombase & 0xfffe, rombase); + reg_fc68 = rombase; + i = 0; + while (!feof(fi) && i<0x1ff) { + c1 = fgetc(fi); + c2 = fgetc(fi); + rom_write(rombase+i, (uint16)(c1 + c2*256)); + i++; + } + reg_romsize = i; + /* preset the cpu_serial number from ROM, may be overwritten manually for special purposes */ + rom_read(rombase+i-1, ®_cpuserial); + return SCPE_OK; +} + +/* Note: this simh handles ABSOLUTE word addresses and segmented byte addresses. + * A word address addresses a single cell in memory (up to 65536 cells). + * A byte address only occurs in IPC context, it is relative to the content of + * the reg_segb register. + * Convention: + * $xxxx = word address + * xxxx:yyyy = byte address yyyy relative to segment xxxx + * #yyyy = byte address relative to current reg_segb + * The t_addr type must be 32 bit, the upper half contains the segment, the lower + * half contains the offset. If the upper half is NIL, it is a word address + */ +void pdq3_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr) +{ + if (ADDR_ISWORD(addr)) + fprintf(st,"$"); + else if (ADDR_SEG(addr) == reg_segb) + fprintf(st,"#"); + else { + fprint_val (st, ADDR_SEG(addr), dptr->dradix, dptr->dwidth, PV_LEFT); + fprintf(st,":"); + } + fprint_val (st, ADDR_OFF(addr), dptr->dradix, dptr->dwidth, PV_LEFT); + return; +} + +t_addr pdq3_parse_addr (DEVICE *dptr, char *cptr, char **tptr) +{ + t_addr seg, off; + if (cptr[0] == '#') { + off = strtotv(cptr+1, tptr, dptr->aradix); + return MAKE_BADDR(reg_segb,off); + } else if (cptr[0] == '$') { + off = strtotv(cptr+1, tptr, dptr->aradix); + return MAKE_WADDR(off); + } else { + char gbuf[CBUFSIZE]; + get_glyph (cptr, gbuf, 0); + if (!strncmp(gbuf,"SEGB",4)) { + seg = reg_segb; *tptr = cptr+4; + } else + seg = strtotv(cptr, tptr, dptr->aradix); + if (*tptr[0] == ':') { + cptr = *tptr + 1; + off = strtotv(cptr, tptr, dptr->aradix); + return MAKE_BADDR(seg,off); + } else + return MAKE_WADDR(seg); + } +} + +void pdq3_vm_init (void) +{ + sim_vm_fprint_addr = &pdq3_fprint_addr; + sim_vm_parse_addr = &pdq3_parse_addr; + sim_vm_cmd = pdq3_cmds; +return; +} + +static t_stat pdq3_cmd_exstack(int32 arg, char *buf) +{ + t_stat rc; + uint16 data; + int i; + int n = buf[0] ? atol(buf) : 0; + if (n < 0) n = 0; + printf("SP: $%04x LOW: $%04x UPR: $%04x\n", + reg_sp, reg_splow, reg_spupr); + for (i=n; i>=0; i--) { + if ((rc=Read(reg_sp+i, 0, &data, 0)) != SCPE_OK) continue; + if (i==0) printf(" TOS: "); else printf(" %3d: ",i); + printf("%04x ($%04x)\n", data, reg_sp+i); + } + return SCPE_OK; +} + +static t_stat pdq3_cmd_exmscw(int32 arg, char *buf) +{ + char* next; + return dbg_dump_mscw(stdout, buf[0] ? pdq3_parse_addr(&cpu_dev, buf, &next) : reg_mp); +} + +static t_stat pdq3_cmd_extib(int32 arg, char *buf) +{ + char* next; + return dbg_dump_tib(stdout, buf[0] ? pdq3_parse_addr(&cpu_dev, buf, &next) : reg_ctp); +} + +static t_stat pdq3_cmd_exseg(int32 arg, char *buf) +{ + t_stat rc; + uint16 nsegs; + uint16 segnum, segptr; + char* next; + FILE* fd = stdout; /* XXX */ + + if (reg_ssv < 0x2030 || reg_ssv > 0xf000) { + fprintf(fd, "Cannot list segments in bootloader: incomplete tables\n"); + return SCPE_NXM; + } + + if ((rc=Read(reg_ssv, -1, &nsegs, 0)) != SCPE_OK) return rc; + + if (buf[0]) { + segnum = pdq3_parse_addr(&cpu_dev, buf, &next); + fprintf(fd, "Segment $%02x\n", segnum); + if (segnum > nsegs) { + fprintf(fd, "Too high: maxsegs=$%02x\n",nsegs); + return SCPE_ARG; + } + if ((rc=Read(reg_ssv, segnum, &segptr, 0)) != SCPE_OK) return rc; + rc = dbg_dump_seg(fd, segptr); + } else + rc = dbg_dump_segtbl(fd); + return rc; +} + +static t_stat pdq3_cmd_calltree(int32 arg, char *buf) { + return dbg_calltree(stdout); +} + +static t_stat pdq3_cmd_namealias(int32 arg, char *buf) { + char* name, *alias; + + if (buf[0]==0) + return dbg_listalias(stdout); + + name = strtok(buf, " \t"); + alias = strtok(NULL, " \t\n"); + return dbg_enteralias(name,alias); +} + +/************************************************************************************** + * PDQ utility functions + *************************************************************************************/ +OPTABLE optable[] = { +/*00*/ { "SLDC0", OP_NULL }, { "SLDC1", OP_NULL }, +/*02*/ { "SLDC2", OP_NULL }, { "SLDC3", OP_NULL }, +/*04*/ { "SLDC4", OP_NULL }, { "SLDC5", OP_NULL }, +/*06*/ { "SLDC6", OP_NULL }, { "SLDC7", OP_NULL }, +/*08*/ { "SLDC8", OP_NULL }, { "SLDC9", OP_NULL }, +/*0a*/ { "SLDC10", OP_NULL }, { "SLDC11", OP_NULL }, +/*0c*/ { "SLDC12", OP_NULL }, { "SLDC13", OP_NULL }, +/*0e*/ { "SLDC14", OP_NULL }, { "SLDC15", OP_NULL }, +/*10*/ { "SLDC16", OP_NULL }, { "SLDC17", OP_NULL }, +/*12*/ { "SLDC18", OP_NULL }, { "SLDC19", OP_NULL }, +/*14*/ { "SLDC20", OP_NULL }, { "SLDC21", OP_NULL }, +/*16*/ { "SLDC22", OP_NULL }, { "SLDC23", OP_NULL }, +/*18*/ { "SLDC24", OP_NULL }, { "SLDC25", OP_NULL }, +/*1a*/ { "SLDC26", OP_NULL }, { "SLDC27", OP_NULL }, +/*1c*/ { "SLDC28", OP_NULL }, { "SLDC29", OP_NULL }, +/*1e*/ { "SLDC30", OP_NULL }, { "SLDC31", OP_NULL }, +/*20*/ { "SLDL1", OP_NULL }, { "SLDL2", OP_NULL }, +/*22*/ { "SLDL3", OP_NULL }, { "SLDL4", OP_NULL }, +/*24*/ { "SLDL5", OP_NULL }, { "SLDL6", OP_NULL }, +/*26*/ { "SLDL7", OP_NULL }, { "SLDL8", OP_NULL }, +/*28*/ { "SLDL9", OP_NULL }, { "SLDL10", OP_NULL }, +/*2a*/ { "SLDL11", OP_NULL }, { "SLDL12", OP_NULL }, +/*2c*/ { "SLDL13", OP_NULL }, { "SLDL14", OP_NULL }, +/*2e*/ { "SLDL15", OP_NULL }, { "SLDL16", OP_NULL }, +/*30*/ { "SLDO1", OP_NULL }, { "SLDO2", OP_NULL }, +/*32*/ { "SLDO3", OP_NULL }, { "SLDO4", OP_NULL }, +/*34*/ { "SLDO5", OP_NULL }, { "SLDO6", OP_NULL }, +/*36*/ { "SLDO7", OP_NULL }, { "SLDO8", OP_NULL }, +/*38*/ { "SLDO9", OP_NULL }, { "SLDO10", OP_NULL }, +/*3a*/ { "SLDO11", OP_NULL }, { "SLDO12", OP_NULL }, +/*3c*/ { "SLDO13", OP_NULL }, { "SLDO14", OP_NULL }, +/*3e*/ { "SLDO15", OP_NULL }, { "SLDO16", OP_NULL }, +/*40*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*42*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*44*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*46*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*48*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*4a*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*4c*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*4e*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*50*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*52*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*54*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*56*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*58*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*5a*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*5c*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*5e*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*60*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*62*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*64*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*66*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*68*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*6a*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*6c*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*6e*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*70*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*72*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*74*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*76*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*78*/ { "SIND0", OP_NULL }, { "SIND1", OP_NULL }, +/*7a*/ { "SIND2", OP_NULL }, { "SIND3", OP_NULL }, +/*7c*/ { "SIND4", OP_NULL }, { "SIND5", OP_NULL }, +/*7e*/ { "SIND6", OP_NULL }, { "SIND7", OP_NULL }, +/*80*/ { "LDCB", OP_UB }, { "LDCI", OP_W }, +/*82*/ { "LCA", OP_AB }, { "LDC", OP_BUB }, +/*84*/ { "LLA", OP_B }, { "LDO", OP_B }, +/*86*/ { "LAO", OP_B }, { "LDL", OP_B }, +/*88*/ { "LDA", OP_DBB }, { "LOD", OP_DBB }, +/*8a*/ { "UJP", OP_SB }, { "UJPL", OP_SW }, +/*8c*/ { "MPI", OP_NULL }, { "DVI", OP_NULL }, +/*8e*/ { "STM", OP_UB }, { "MODI", OP_NULL }, +/*90*/ { "CPL", OP_UB }, { "CPG", OP_UB }, +/*92*/ { "CPI", OP_DBUB }, { "CXL", OP_UBUB }, +/*94*/ { "CXG", OP_UBUB }, { "CXI", OP_UBDBUB }, +/*96*/ { "RPU", OP_B }, { "CPF", OP_NULL }, +/*98*/ { "LDCN", OP_NULL }, { "LSL", OP_DB }, +/*9a*/ { "LDE", OP_UBB }, { "LAE", OP_UBB }, +/*9c*/ { "NOP", OP_NULL }, { "LPR", OP_NULL }, +/*9e*/ { "BPT", OP_NULL }, { "BNOT", OP_NULL }, +/*a0*/ { "LOR", OP_NULL }, { "LAND", OP_NULL }, +/*a2*/ { "ADI", OP_NULL }, { "SBI", OP_NULL }, +/*a4*/ { "STL", OP_B }, { "SRO", OP_B }, +/*a6*/ { "STR", OP_DBB }, { "LDB", OP_NULL }, +/*a8*/ { "LHO", OP_NULL }, { "LVO", OP_NULL }, +/*aa*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*ac*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*ae*/ { "", OP_ERROR }, { "", OP_ERROR }, +/*b0*/ { "EQUI", OP_NULL }, { "NEQI", OP_NULL }, +/*b2*/ { "LEQI", OP_NULL }, { "GEQI", OP_NULL }, +/*b4*/ { "LEUSW", OP_NULL }, { "GEUSW", OP_NULL }, +/*b6*/ { "EQUPWR", OP_NULL }, { "LEQPWR", OP_NULL }, +/*b8*/ { "GEQPWR", OP_NULL }, { "EQUBYT", OP_B }, +/*ba*/ { "LEQBYT", OP_B }, { "GEQBYT", OP_B }, +/*bc*/ { "SRS", OP_NULL }, { "SWAP", OP_NULL }, +/*be*/ { "TNC", OP_NULL }, { "RND", OP_NULL }, +/*c0*/ { "ADR", OP_NULL }, { "SBR", OP_NULL }, +/*c2*/ { "MPR", OP_NULL }, { "DVR", OP_NULL }, +/*c4*/ { "STO", OP_NULL }, { "MOV", OP_B }, +/*c6*/ { "DUP2", OP_NULL }, { "ADJ", OP_UB }, +/*c8*/ { "STB", OP_NULL }, { "LDP", OP_NULL }, +/*ca*/ { "STP", OP_NULL }, { "CHK", OP_NULL }, +/*cc*/ { "FLT", OP_NULL }, { "EQUREAL",OP_NULL }, +/*ce*/ { "LEQREAL",OP_NULL }, { "GEQREAL",OP_NULL }, +/*d0*/ { "LDM", OP_UB }, { "SPR", OP_NULL }, +/*d2*/ { "EFJ", OP_SB }, { "NFJ", OP_SB }, +/*d4*/ { "FJP", OP_SB }, { "FJPL", OP_SW }, +/*d6*/ { "XJP", OP_B }, { "IXA", OP_B }, +/*d8*/ { "IXP", OP_UBUB }, { "STE", OP_UBB }, +/*da*/ { "INN", OP_NULL }, { "UNI", OP_NULL }, +/*dc*/ { "INT", OP_NULL }, { "DIF", OP_NULL }, +/*de*/ { "SIGNAL", OP_NULL }, { "WAIT", OP_NULL }, +/*e0*/ { "ABI", OP_NULL }, { "NGI", OP_NULL }, +/*e2*/ { "DUP1", OP_NULL }, { "ABR", OP_NULL }, +/*e4*/ { "NGR", OP_NULL }, { "LNOT", OP_NULL }, +/*e6*/ { "IND", OP_B }, { "INC", OP_B }, +}; + +static uint16 UB(t_value arg) +{ + return arg & 0xff; +} +static uint16 DB(t_value arg) +{ + return UB(arg); +} +static int16 W(t_value arg1, t_value arg2) +{ + uint16 wl = arg1 & 0xff; + uint16 wh = arg2 & 0xff; + return wl | ((wh << 8) & 0xff00); +} + +static int16 SW(t_value arg1, t_value arg2) +{ + return W(arg1,arg2); +} +static int16 SB(t_value arg) +{ + int16 w = arg & 0xff; + if (w & 0x80) w |= 0xff00; + return w; +} +static uint16 B(t_value arg1, t_value arg2, int* sz) { + uint16 wh = arg1 & 0xff; + uint16 wl; + if (wh & 0x80) { + wl = arg2 & 0xff; + wl |= ((wh & 0x7f) << 8); + *sz = 2; + return wl; + } else { + *sz = 1; + return wh; + } +} + +t_stat print_hd(FILE *of, t_value val, t_bool hexdec, t_bool isbyte) +{ + uint16 data = isbyte ? (val & 0xff) : (val & 0xffff); + + if (hexdec) + fprintf(of,"%0xh",data); + else + fprintf(of,"%d",data); + return SCPE_OK; +} + +t_stat fprint_sym_m (FILE *of, t_addr addr, t_value *val, + UNIT *uptr, int32 sw) +{ + uint16 op, arg1, arg2, arg3; + int16 sarg; + t_stat size = 0; + int optype, sz; + t_bool hexdec = (sw & SWMASK('H')) ? TRUE : FALSE; + addr = ADDR_OFF(addr); + + op = val[0]; + if (op > 0xe7) return SCPE_ARG; + + optype = optable[op].flags; + if (optype > OP_ERROR) { + fprintf(of,"%-8s", optable[op].name); + switch (optype) { + case OP_NULL: + break; + case OP_UB: + size = 1; arg1 = UB(val[1]); + print_hd(of, arg1, hexdec, FALSE); + break; + case OP_W: + size = 2; sarg = W(val[1],val[2]); + print_hd(of, sarg, hexdec, FALSE); + break; + case OP_AB: + arg1 = B(val[1],val[2], &sz); size = sz; + fprintf(of,"#%x", arg1*2); + break; + case OP_B: + arg1 = B(val[1],val[2], &sz); size = sz; + print_hd(of, arg1, hexdec, FALSE); + break; + case OP_DBB: + arg1 = DB(val[1]); + arg2 = B(val[2],val[3], &sz); size = sz+1; + print_hd(of, arg1, hexdec, TRUE); fputc(',',of); + print_hd(of, arg2, hexdec, FALSE); + break; + case OP_UBB: + arg1 = UB(val[1]); + arg2 = B(val[2],val[3], &sz); size = sz+1; + print_hd(of, arg1, hexdec, TRUE); fputc(',',of); + print_hd(of, arg2, hexdec, FALSE); + break; + case OP_BUB: + arg1 = B(val[1],val[2], &sz); size = sz+1; + arg2 = UB(val[sz+1]); + print_hd(of, arg1, hexdec, FALSE); fputc(',',of); + print_hd(of, arg2, hexdec, TRUE); + break; + case OP_SB: + size = 1; sarg = SB(val[1]); + fprintf(of,"#%x", addr+sarg+2); + break; + case OP_SW: + size = 2; sarg = SW(val[1],val[2]); + fprintf(of,"#%x", addr+sarg+3); + break; + case OP_DBUB: + size = 2; arg1 = DB(val[1]); + arg2 = UB(val[2]); + print_hd(of, arg1, hexdec, TRUE); fputc(',',of); + print_hd(of, arg2, hexdec, TRUE); + break; + case OP_UBUB: + size = 2; arg1 = UB(val[1]); + arg2 = UB(val[2]); + print_hd(of, arg1, hexdec, TRUE); fputc(',',of); + print_hd(of, arg2, hexdec, TRUE); + break; + case OP_UBDBUB: + size = 3; arg1 = UB(val[1]); + arg2 = DB(val[2]); + arg3 = UB(val[3]); + print_hd(of, arg1, hexdec, TRUE); fputc(',',of); + print_hd(of, arg2, hexdec, TRUE); fputc(',',of); + print_hd(of, arg3, hexdec, TRUE); + break; + case OP_DB: + size = 1; arg1 = DB(val[1]); + print_hd(of, arg1, hexdec, TRUE); + break; + } + return -size; + } else { + fprintf(of,"%-8s","DB"); print_hd(of, op, hexdec, TRUE); + return SCPE_OK; + } +} + +/* Symbolic decode + Inputs: + *of = output stream + addr = current PC + *val = pointer to data + *uptr = pointer to unit + sw = switches + Outputs: + return = status code +*/ +t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, + UNIT *uptr, int32 sw) +{ + t_addr off; + T_FLCVT t; + int ch; + + t_bool hexdec = (sw & SWMASK('H')) ? TRUE : FALSE; + if (sw & SWMASK('M') && !ADDR_ISWORD(addr)) { + return fprint_sym_m(of, addr, val, uptr, sw); + } + if (sw & SWMASK('B')) { /* as BYTE */ + if (ADDR_ISWORD(addr)) { + fprint_val(of, (val[0]>>8) & 0xff, cpu_dev.dradix, 8, PV_RZRO); + fprintf(of, ","); + fprint_val(of, val[0] & 0xff, cpu_dev.dradix, 8, PV_RZRO); + } else + fprint_val(of, val[0], cpu_dev.dradix, 8, PV_RZRO); + return SCPE_OK; + } + if (sw & SWMASK('C')) { /* as CHAR */ + if (ADDR_ISWORD(addr)) { + ch = val[0] & 0xff; + fprintf(of, isprint(ch) ? "%c," : "%02x,", ch); + ch = val[0]>>8; + fprintf(of, isprint(ch) ? "%c" : "%02x", ch); + } else { + ch = val[0] & 0xff; + fprintf(of, isprint(ch) ? "%c" : "%02x", ch); + } + return SCPE_OK; + } + if (sw & SWMASK('W')) { /* as WORD */ + if (ADDR_ISWORD(addr)) { + fprint_val(of, val[0], cpu_dev.dradix, 16, PV_RZRO); + off = ADDR_OFF(addr); + if (off > (reg_bp+MSCW_SZ-1)) + fprintf(of," (GLOBAL+%d)", off - reg_bp - MSCW_SZ + 1); + else if (off >= reg_mp && off <= (reg_mp+OFFB_MSSEG)) + fprintf(of," (MP+%d)", off - reg_mp); + else if (off > (reg_mp+MSCW_SZ-1)) + fprintf(of," (LOCAL+%d)", off - reg_mp - MSCW_SZ + 1); + else if (off >= reg_sp && off < reg_spupr) + fprintf(of," (SP+%d)", off - reg_sp); + } else { + fprint_val(of, val[0], cpu_dev.dradix, 8, PV_RZRO); + fprint_val(of, val[1], cpu_dev.dradix, 8, PV_RZRO); + } + return SCPE_OK; + } + if (sw & SWMASK('F')) { /* as FLOAT */ + t.i[0] = val[1]; + t.i[1] = val[0]; + fprintf(of, "%12.6e", t.f); + return -1; + } + if (sw & SWMASK('S')) { /* as semaphore */ + fprintf(of, "SEM(count=%d, waitq=$%04x)", val[0], val[1]); + return -1; + } + if (sw & SWMASK('M')) { /* as MSCW */ + dbg_dump_mscw(of, val[0]); + return SCPE_OK; + } + if (sw & SWMASK('T')) { /* as TIB */ + dbg_dump_tib(of, addr); + return SCPE_OK; + } + return SCPE_ARG; +} + +/* Symbolic input + Inputs: + *cptr = pointer to input string + addr = current PC + *uptr = pointer to unit + *val = pointer to output values + sw = switches + Outputs: + status = error status +*/ +t_stat parse_sym (char *cptr, t_addr addr, UNIT *uptr, t_value *val, int32 sw) +{ + return SCPE_ARG; +} diff --git a/PDQ-3/run.cmd b/PDQ-3/run.cmd new file mode 100644 index 00000000..63886fe4 --- /dev/null +++ b/PDQ-3/run.cmd @@ -0,0 +1,2 @@ +@echo off +pdq3.exe testhdt.sim diff --git a/PDQ-3/testhdt.sim b/PDQ-3/testhdt.sim new file mode 100644 index 00000000..9748c7ac --- /dev/null +++ b/PDQ-3/testhdt.sim @@ -0,0 +1,125 @@ +;set debug debug.log +set debug stdout +;set fdc debug=read +;set fdc debug=write +;set fdc debug=verbose +;set fdc debug=svc +;set fdc debug=imd +;set fdc debug=dma +;set fdc debug=dmavb +;set fdc debug=cmd +;set cpu exc +;set cpu debug=int +;set cpu debug=trace +;set cpu debug=write +;set cpu debug=read +;set cpu debug=fetch +;set cpu debug=stack +;set cpu debug=conc +;set con debug=svc +;set con debug=read +;set con debug=write +;set tim debug=read +;set tim debug=write +;set tim debug=svc + +att con 8000 + +att fdc0 master.imd +set fdc0 wrtlck +set fdc1 disable + +; HDT boot +;break f418:368 +;break f418:36a +;break f418:218 + +; HDT:bootfd +;break f418:e0 + +; HDT CHK instruction: will fail if CPU serial is > 0x7fff +;break 2018:067d +;break 2018:070f + +; entering PASCALSY +;break eb1e:10 + +; problem main loop in syscode1 +;break dc26:1d0a +;break d488:b1b +;break d488:b55 + +; bug in SPR(4), does not save SP in TIB? +;break d488:bb8 +;break d488:bc7 + +; problem with wait? +;break d488:0917 + +; interrupt debugging +;break d078:4f +;break d488:919 +;break d488:ebe +;break dc26:ec3 +;break d1bd:79 +;break b80d:715 +;break dc26:1d35 +;break d488:806 +;break d488:915 +;break dc26:1d36 + +; SHELL handling +;break badf:98 +;break badf:51 +;break bbd2:1ba +;break bbd2:1be +;break bbd2:32a + +; Ser_RawEmit +;break c964:5f2 +;break d488:d80 +;break c964:6be + +; ticker interrrupts +;break d078:4f +;break d1bd:6e + +; Start/Stop Process +;break d488:7f0 +;break d488:92e +;break d488:934 +;break d488:958 +;break d488:0dd9 +;break c964:756 +;break c964:a6 +;break c964:cf4 + +; waiting for DSR sem +;break c964:624 + +; Ser_Read +;break c964:466 +;break c964:4f9 +;break c964:4fa +;break c964:327 +;break c964:59e +;break c964:323 + +;break d078:4c +;break d078:4f +;break d1bd:6a +;break d1bd:6d + +;break d488:ed0 + + + +load hdt/CPU_C5.BIN +dep _ssr 80 +dep _ses 80 + + +do names.sim +boot cpu +set debug stdout + diff --git a/README.md b/README.md index 527bfb8b..97d29df1 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,10 @@ #### Updated HP2100 simulator from Dave Bryan. +#### Beta Sigma 5, 6 & 7 simulator from Bob Supnik + +#### Beta SAGE-II and PDQ-3 simulators from Holger Veit + ### New Host Platform support - HP-UX and AIX ### New Functionality diff --git a/SAGE/FILES/68k-s133.sim b/SAGE/FILES/68k-s133.sim new file mode 100644 index 00000000..15dcddfb --- /dev/null +++ b/SAGE/FILES/68k-s133.sim @@ -0,0 +1,31 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set cpu bios=s133.hex +set debug debug.log +;set debug stdout +break fe1ad6 +break 7bd08 +break 7def2 + +set timer1 debug=read +set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +set fd debug=irq +set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68k-sii.sim b/SAGE/FILES/68k-sii.sim new file mode 100644 index 00000000..ebcf8ceb --- /dev/null +++ b/SAGE/FILES/68k-sii.sim @@ -0,0 +1,31 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set cpu bios=sii.hex +set debug debug.log +;set debug stdout +break fe1ad6 +break 7bd08 +break 7def2 + +set timer1 debug=read +set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +set fd debug=irq +set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68k-v204.sim b/SAGE/FILES/68k-v204.sim new file mode 100644 index 00000000..44573c73 --- /dev/null +++ b/SAGE/FILES/68k-v204.sim @@ -0,0 +1,31 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set cpu bios=v2-04.hex +set debug debug.log +;set debug stdout +break fe1ad6 +break 7bd08 +break 7def2 + +set timer1 debug=read +set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +set fd debug=irq +set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68k-v22.sim b/SAGE/FILES/68k-v22.sim new file mode 100644 index 00000000..1f424af1 --- /dev/null +++ b/SAGE/FILES/68k-v22.sim @@ -0,0 +1,31 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set cpu bios=v2-2.hex +set debug debug.log +;set debug stdout +break fe1ad6 +break 7bd08 +break 7def2 + +set timer1 debug=read +set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +set fd debug=irq +set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68k-v23.sim b/SAGE/FILES/68k-v23.sim new file mode 100644 index 00000000..5a7f6872 --- /dev/null +++ b/SAGE/FILES/68k-v23.sim @@ -0,0 +1,31 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set cpu bios=v2-3.hex +set debug debug.log +;set debug stdout +break fe1ad6 +break 7bd08 +break 7def2 + +set timer1 debug=read +set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +set fd debug=irq +set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68k.sim b/SAGE/FILES/68k.sim new file mode 100644 index 00000000..0c9734cc --- /dev/null +++ b/SAGE/FILES/68k.sim @@ -0,0 +1,45 @@ +;set cpu debug=int +;set cpu debug=exc +;set cpu debug=ctrace +;set cpu debug=btrace +set cpu 512k +set cpu nostop +set debug debug.log +;set debug stdout +;break fe1ad6 +;break 7bd08 +;break 7def2 +;break 8d8 +;break 794 +;break 78076 +;break 75612 +;break 77ef4 +;break 75618 +;break 73518 +;break 7353a + +;set timer1 debug=read +;set timer1 debug=write +;set timer2 debug=read +;set timer2 debug=write +;set pic debug=read +;set pic debug=write +;set pic debug=irqin +;set pic debug=irqout +;set fd debug=verbose +;set fd debug=cmd +;set fd debug=seek +;set fd debug=imd +;set fd debug=irq +;set fd debug=state +;set fd debug=status +;set fd debug=rddata +;set fd debug=wrdata +;set lp debug=rdc +;set lp debug=rdb +;set dip debug=wrc +;set cons debug=read +;set cons debug=write +;set cons debug=irq +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/68kdbg.sim b/SAGE/FILES/68kdbg.sim new file mode 100644 index 00000000..c8c08a39 --- /dev/null +++ b/SAGE/FILES/68kdbg.sim @@ -0,0 +1,71 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set cpu nostop +set debug debug.log +;set debug stdout +break fe1ad6 +;break 7bd08 + + +; raise PICINT7 for fdcread +break 7def2 +; softint7_fdcread +break 7db38 +;fdcint6_callback +break 7d5ba +;fdc_read +break 7d832 +;fdc_cb_reenable_pic7_2 +break 7d82a +;fdc_reset +break 7d7f4 +;fdc_sendcmd +break 7d454 +;fdc_senseint +break 7d48e +;fdc_readstatus +break 7d544 +;fdc_startdrive +break 7d6d6 +;process_schedqueue +break 7c64c +;fdc_readid +break 7d956 +;fdc_recalibrate_routine +break 7da14 +;fdc_Recalibrate_done +break 7da60 +;fdc_autointhandler +break 7d7d0 +;handler_autoint6_default +break 7d7ec +;cancelschedule +break 7c614 +;addschedule +break 7c5b0 +;fdc_getstatus7 +break 7d4dc + + + +set timer1 debug=read +set timer1 debug=write +set timer2 debug=read +set timer2 debug=write +;set pic debug=read +set pic debug=write +set pic debug=irqin +set pic debug=irqout +;set fd debug=verbose +set fd debug=cmd +set fd debug=seek +;set fd debug=irq +;set fd debug=state +;set fd debug=status +;set fd debug=rddata +set lp debug=rdc +set lp debug=rdb +set dip debug=wrc +att fd0 cpm68k12.imd +boot cpu diff --git a/SAGE/FILES/bin2sage.c.txt b/SAGE/FILES/bin2sage.c.txt new file mode 100644 index 00000000..1480f80b --- /dev/null +++ b/SAGE/FILES/bin2sage.c.txt @@ -0,0 +1,95 @@ +#include +#include +#include + +#define CRLF "\r\n" + +#define BASE 0xfe0000 +#define RECLEN 32 + +void putS0(FILE* out, const char* header) +{ + int i, csum, c; + int len = strlen(header); + fprintf(out, "S0%02X0000", 2 + len + 1); + csum = 0; + for (i=0; i>16) & 0xff) + ((BASE>>8) & 0xff) + (BASE & 0xff); + fprintf(out, "S804%06X%02X" CRLF, BASE & 0xffffff, (~csum) &0xff); +} + +void putS2(FILE* out, int addr, unsigned char* data, int n) +{ + int i, csum, c; + + fprintf(out, "S2%02X%06X", 3 + n + 1, addr & 0xffffff); + csum = 3 + n + 1 + ((addr>>16) & 0xff) + ((addr>>8) & 0xff) + (addr & 0xff); + + for (i=0; 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%0DYmH<^52!>EG5^{v7i_%5 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

|+lnKA0K&Z$C;rBrpHsfBo?5 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%0A4j)`k$ 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 literal 0 HcmV?d00001 diff --git a/SAGE/FILES/cpm68k12.imd b/SAGE/FILES/cpm68k12.imd new file mode 100644 index 0000000000000000000000000000000000000000..5518d099d8b8e5a769cd9921eb6388cdd0654a99 GIT binary patch literal 658767 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

|+lnKA0K&Z$C;rBrpHsfBo?5 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%0A4j)`k$ zNw+xhjpVadeoWl*X1Kq9drkkv;^f4D{OV<-%Dg+=F9NWC39cQ}2I@aH4~6@$YXJ1d z!gpL*^9BO={AbdbS|!}IYemJRcZ3^VgU+lIi2{^VSE7r3Ra8!xNkKIAs}_9|pOx*b z{cR{z)Bo|?{_927qP?*y_-`x9*%2dFf%1zekBt?hv>l}@Kv9754wQ32;YE4p!gox3 zK6eK?Ebc@P;OomMn^YciRF<7ozIL`OyQrKKlw~)S{rIFB=*Px$fG?{v;uQAyY%Xv) z5?7MO^-A0o5*JW7!+%^N{SrALO$eoMnFF72?z~OF0lrk&UzG~C<)a)(h0Ty~z2^>o zUij-j5k7?rPOR^AF3j2QeLl}W?##7sI?F_d;ynP~18Lp^ns+96D~b0&*j*(IxU~?u z>c|Drx~ue(n;&0A2Pol3ZOQ9WtMnUymqr#@#%?uOh=xzFTo1(hpR6Ra|;;^XHH zOd?wyk{;N)HNc)AF6!WuwXGt1AEhM=DIFK0G_QeDPbH;SR8U&}ytzg^Y*ty@rV3w3 z6s_>SSBsW<>whSm_`qtXkt1e{g<^@Yj9G>y)`(5wMPt3O%ba4iT>I9wZ(n=9#Eq|4 zC&funHi(E=2j&<56+2)uBg11T&w40t?JMJWX; zf;+E%mHYQt5D{vsrJ>)(ME0dQ@5G((3EF7KJL~ND@EK7M3``B&CZ-~lzwYqwg+qQ< z8DHLw`=%}xdH5{)?Y|e}VM=sbNSG)W;G@TwWZZ2qp$?ZEGl1_!IXw%6`%4M|y%C7k zuj=rrDHzjMA5Ft(MwOgeC#O28DS?TQ>8<}*ToV4;-&#U9!?7-~ei}Z~tBuCjaq%_W z+TSMaRBr|z$)Lc;goFOrQgn$E0c08lp13D&6clw7t(~+JA#wO7;3no61-Tu$>nKc& z0`&{7O6C&1t`p*n=)GpcHBX2$V-AZmH(n6E6K9IvG26!M9J6Q4A#vU;n|P#TBR*|x zA`B+3m@w5-)BoXx_i7KPlEQy=ZODIhaTGQF6$O?bdH3=hq+ea(c7(*r_iF1`E%~N} zPXR&e?jfyhqQkvjv`yGGAr;spI&w;HTrJv)c8RvJmvY=Wc{vlresjviyRLPBYXi9a zQ$58?(N2V3F?=n`-7mWji}Gupy=LpABL7FZRrvmU`85|rd2W5~lH8`;c2TZ=r>z_O zfIi5L{121|%R~-+Pa; zvfC;KTvaUrkQ5c2h{Q{AoXf{8^~YgZ%2`6>2$%iT=e_iQ@S% z3H~#8OMMsaLHT%E)(Xh#Az28_<JR#hFsWezU*oU$o<$FYXYt! zTmd-IQyebdNF7S0z#X#Wes4jz|AP-^;B(oPrWqE4zOe8l{EcD4|8aaJ@MK)2`98tr z*86Zg+(dH)T)B4QsY&lpsb73N*s#W&g}FkczK(_Ek$0D<6x$t?DWz!}a|O0xl=4C# zvAYPyN49%Q)|k}+Z(@9`^5t#9eSdLr1GYca2?zEwYm3{^xNl)~cUj`&Q^j?_#jW#! za^Xg)#X21cL9P>d3M044fiY+ z-WF%iI;Us|?^t{3#b)QGwU@RugbyQhYC}PzHZ&FC$P z4){7Xcsoi#0iuTYuQeVg1 zVzvh(;kr=5QCa<8L@n0po^aw&hY5FlP40@nh8^=)dlyg&*Mq-)Rb!}f*2NdB?lkKv8iDr^4cAKl%LsAW!5H^M#6bj=G+G3 zl!r}(E zUpV7p@IG)Gau^uqe0T}FBI{A9A!I$}#<5Of0<4^uXnj33wDaZKqItB`@o0V^bXD1EopC| zt;73wVG})NQdBsmt;3zM8%wAcGvYmgXxcXMQB!atHru;Hzr9UZ;-kgbKzGN4SqNWZ zv8rF?q;JiupNB)gg=Bc;He=qvWFh-#4ti*AqL6f*bNJTIBqosTvoGeJ zM`V2^5QX#zO+D~RjT!OJ`kg0%*;h=W{)cr#{<4mpbhqZ?dK=eiTm@#8xB`CLDyc%~ zH&^N_)=oh1W`>W~!xx5(ictKnp_bOjXpAIk8x3huK{^_1(!LDG%fW*PiWkcs4O80* zlj@ASsr_-Ub-uSyX&T|1P1d;#&v^Y;V_I2bz&Rf&=S=#USxlWn24T5aLoQaGBu#|d zAbPGj2gMitl_ZCtL%96?|vp8OWp*~55xWk>IkQJ`H z&-;Uz9J2hoMMzE)S;PeisP*qM@pWeD?8&&7%f;#n5Q6&6d z7K!`@ktkdu5))7k;GPY4cvg|RkFyGpkBt~s4szV>Sx)4*rvqmRsLR1Q1Dw?;&-s!_ zECRj_S39m1mJkoY{y94k%2vFl|I|m|_3eN>3u~bnZxE!X5t4{TRY7F4( zh1Uw!^#AHb+_3pvv3hIzkNd4-NEca0LaB)%F%~_G2@AvGJbHHHg8ozM zV)GWhlWWTRSirwpY{X_}ARddAX27XfK?eL$%&Fjc1I08#D}?Xm3Nbb@C(w>h_F{ZC z0J9kwpCP*AW$p?L?W{zgu0r?|x=~tyzUb@s|xmD@C=V;`Y(8$LuGQIpA0eNs^^4 zBuSQzlO!trs*og6>Al6Utkmz%!`)MQUD*x0b9_SNCKe*SG7*=pAB(p7(AM)!@jSE| zV;C@2lnsprc|?w3;KTiAo)1=t^17hF$&Fe|a!t9#sen(i5-+>Ai!9+z`{g9GOTSo0 z;X$h3j2hHihteJ;82h{UV=`wxF}QAsQw%0$-4)i8a?S8H!2U#8L%S%nc#UWm;|(kl z?P3B*4RHk~I)6-L?ZM>VgmauL8^Hn`c3D}+G48X6mVmc0tpTEm>SQ@l)Rn;{#Sx^y zoe@*8EX+tR3)JOuS@_euKooT2;$BQw3lhF?|Itl7>ilP4AZm&8vnZ&h`pW8_9uQOD z5L4tON%s^Ak21MMr_OnIS7sC+-IN)`M-OHO@zH_IApT|Lh#(##JIvRS#AaRFPX#b*#hrlnM zBMS_2=`W7)7&uzMW1zPI$9&@YJA{LTp&Qysj2!*gmI~r3BvG=om_*6aCXyseZ;~V` z_0l*mMc12cLhSZe2zR^|lYfQq?x+xB65}yaiu@QEMCI>p03KQdjgDZ2s0jD}W~m-G z2n);{>}rcvUs{C&xGHe8AfbJ3*3iHZgBE#9uKKuf zq1M0Sl>?+gq=Bo>3GR)G0V?qDVyV8fF2h)DX{^@sx zB>l+&F)Ol7%yyqm&!TOZEw=G2Dy8_Sr3e^oSQ7cvzRcFtuL3R?;f+0;fqNHe-ft;BvH)tsspzM6j$GxAc@SUrI!}X?a1J)}!_R<2kE{T6Uz|Dv$e(Z_bg*kXh@|zvA zbHjs|a1vi?2oJ5n3*X7gs$Z3wmYOaCqImz_{jZBMasB>B_J17*O*iZh@1HL!#Etun z{Vp*@OikaOn{<2Ly|HYK`B-3$xuL!X4K^%swgc0h$Sa&teR>VL>JGOMuDjkC{0Msh zfqR_%+@q<+F2Y=DG~&n9VPNjS;Go%QeGu+9MJ(m3A}BGN zUZR~!VrKFaNWK50r?n#a5z^9RKhlEa$EQ543~?iR)N z2o4co`*(4FyDeC4itcm5iS6*ZeW^${g3Vl?!X_8A2#gY$k4+T5jGaTmY|fu!G#ZCd zrYni%{^Wx9Ho@*SxqHnAh^A?wk*KQ;;|P6S+$XmiV-pS#I!W**BL!7Ec9{>Ybl@=i zp$0s$v|aXZCLR|!nI*w@GOoLw;v%B zYQsp^1TnQvN|_IlWa|~fJr!G~ULVGEUc3}>?@e8Y(-h1hlS0D%g?__5=`Uzk@_t_~ zJxR(d$B6Oah%5dPVC))V;`b5jY`FiOHv%|*?A-`1AE=>7$>&wLJ4w3iSj=I?ka{2VG))W9nRh5e7Nf%& zuo`F6>D2qL*7S?INeeL5cjK1S=QrN}Mvu{p>*U5B4gMRHR1!$2&v*!m1FPajUbixX1B-(4D=|4?$qd}-I2Nu z3yvGlvDVC-Os}io%9dSJU8XRy;w7)5ULFfb)VG3GPKFBm=Dr5?2tcP==GrvQ@ zTf27f9IRX)_%=%0QF=7+ZPaElKQKRv;8^m+e?zz%7?%0LfyOn#0rR=wK*9_TV9Ccb zyV|wppClp#>kKJ?mPneYPkF&ysy z^@-r_tSt1D32Ho`jfqd%;y7;rWSCv**#^8KQq4Fx5T9(M_TVt%5c>RD*wKr}WO#yS zK4l5<0dQBy+wM-(q-1)y&A={%oDDdf z#dBAB4*Tml@P>(z;p?duUPPdQnR=2iae#dY@-0}HO|AQNWfBj+>l=Vj9eKvpaG#LstbbxD`&m-h%8{CN|RI4Uj+^U*ze0^}Y=^8RSFJ8q) zAAcyBKAMb)f4&Pxv^Xk0-iGo^XkLjl)&~PG#+@+j`S=!?^HhBgX+hlsJD?FxgOkKv zX^oX>jed0J6`)!38+Q)|E8J!h2b_?baP*)AOjb;Myg}RYs}Hm-XWxJ=P2v7uoq#PE z$R9r~-RF~Qg!Ae(<^v)CTQ=ACP=Ig%%T^5=S_8Y&L+hN#G5;1)MBJ+;K}(oh(?Rfr zB?gX3FVa48D0oaawX_ZsY(ki8pnGd#3LRG<2ua3A7>vR=rGh7(KdsN~HrL|lWgS}A zXZ{y+jfFt?_)J`w)nuhf&vGe9H(TP;9=jf63+cfHieqmFt36KmjM}<2kv|lg=TXWs zw_@373a9&wK#a8e9(sF<1B20(VZByk0CS8yp0jg)18-?4z!Nv1`reFvi`G zv^8E39JsPCIFM=#^qK2}0}ZJ@IO*Pjj$BF4=*On6 zvx<=WkZW0Zu3)}^IpZtA-SuA~T`D+!c>$CdGcoa}jTk}bgkSby1;GKc8arp+vc#X_ z!D{DNazkcYF(!&Ye<&vY$w!ta=(azLjsdd*cvs;PWbT%(b)vR2K93wrbf7ZgdGLsd z0}*=v)=gBhB#( zgl2#q2gOFbwg4L8iOUsXZIyq*3|1Vw!mhugeJEq?+oWjIy z$PL1r9uf}Zh7V=T7v_5*V4SFfMwBW^C-NDf$wyv=d>rywrSM+l4$K#&i6U&s$~U1z zVKjXm#F*39p~Vi+;lzud^AatFfSch-zcfp6mE)P|l$akIwm!2IS9vAgYe2h6a=<`V z9(PW{i$-QSslg7gbS3Qr#Y#s6Wx5NrtS;=DD36%MRbVT_2*V!d_Z#6xI;k*!v$5xq z;!rUi$c^uL1l;8-e6a#6N10+dk$)&mJYa&kCAbw1cu%@pCNw@$XC`v;j$udN2qhBrjr6+K*i?eL^Jg!l58~s2sGKNg#AhRDgt;s}9(%(WDBY<< z1NhuH6O*r!c~S`qj>?IVslpickYck%FLy1CpMVU!)IoGHH#kwY-oTDIh@t05HQ$XJ z0(4qE!dN}5O2D#sqD)$ppL^afShIX&k$@G@ng=V0F8)g1tRwd)e79k@Ag-;)kj3qq zeC@+>()XEhGeHi+ zC@#RkLwC6UAJ4A^V`z9rzJ=UBJE?z`jSS8HPqOZ=(}H%j-S70=^-ITfrj?*rfInm-6p zmmBY>>Ho*^fl2XsxFWb_EEUVLeqB ziu-Cqc+QyD@C^&IA4<-miS@y{J4oz zAvAhEjO_-gdNf&%$@eb*tiw~{rLut`q^21{eO>(~I8o^5Lg*eyNY19%vp$&WMlBrD z05up<=NoX?hdaId5Du7h)yo&6x45=s8II`asm3}{636cSXBD__dC8g$c(R1)T={ux z3gA)+2LV526#>3Z!j*s@vvL667H=`=@O1eWj`c>e#L7ud#{Fa| z?&Pk+o!o7KI>i|;uIcZ2C2tx(007p2JRFwd;X7ug`u^T|ZVDqz$#RjQE};$D{J2{B z&ZO?--qK8H+pP04UY-*ww5^HN_KZ)={&F(%jatyi!fJSs_8pmti|XT zOP*R|?oR|)6wax6WsSMdSXtU&CdN04xZMAmd#qwYuk-`!Xb{#J2sDB9-SNK$_mdhp zW)E=20as=9HVLavFIkJ&rv~h4|bI zQ5$|a)Fi}Xwc+)t+Heq?v;C>mUOI?)GE}?omXJ{qs4%=cyO;Z(4BZkjg1}6%+$c?n zv>QQxg)t5@#udMD&zK>q;|`3hd50sdvlfS5?h@5am82Q^{59vqy5Q9b_sgMHM?=`U za7)-Il@^R&pF+8;HjK2Kjz_M>l83hlDF1-+spgCdA&x{M6-E~A`|(a>Nn-@_#FOxl z@4(kP47|kBQHNTzYCHDr7HvVTBgy>Q5be@H?{4glUjRoFIL3kluf`f7$+0$Ay(-wV zZr&o|8P0+EAgFYw_0ELe30kWoknyI#fRs3M$bzHEi&lwErjx9&&IYSLFD;CSNV~YS z=$v6*9Wt^?u>7Q32#e8@b&!UaUU3wh6Ys)1qhG`HdA_^dC`WL9t+GN~+T3oGCGJ__ zofB5Aq9Y0N2LiR@7SxGL;r<^yQ@hrUW zMHC~F+_|ZP^1bbYMpxk-ILpl4doa8Ai>21vM`g?7AE`{i#=71+S-N{qj4rSJ+z==Z`o6&}HB%_(yio@$6AX9E-O{U-90 z;J~}LumgN@?NhmoaU*_jT{|8)-i404DPD4QyOD2DI?kAUeY@c`#v{!!ijX>u0(4NG zQ4ACF%?fee7#Cb8QrFiSUOf7!MxGPdZa6W#^61>exCvbS>csD$^w~#J$Vb<$k zm3jE}uiKc|rUHbZ0RD zTdA6|5`JLjzW%j$m*jQRWzpTHY!h_mzI#u8?#@uWUABrSQDgKL+MB1?377ZGP&3n{ zn$lnO`qz64^JSWc2NZehG4`siju^Mhs1^^ik*evcyB|&663J}r-2QLwyj;hO-dJiT zH;kHaq}`Z;E6BDgCtgmb562G1&G8(P%`LXv+;M34r-Xpkl$PQP_doHGUj~BZRKej# zAm!sqhd>D^v!Ktnqr#|)7woJsZu!@Q1?D3k0;xNQis(ici%os<}!9y+edjP)?so zIeixB=@Z5m0?MM-{SMNf(hM^}?R-8f^1+9$DaLZ%7{)A>AE(nI8PgbvxGSV!#CS!D z@l+z4g%N0y|`y|qjlr2HH51-v6gmz*n_2P#}6s8X40GHPHcF7bamLk zLX4mucl}b~z+8m8SR?0_rNU>pk>(hANd1Nr`%rfXkFo@98H91A`V$67{!w~&cixZj zuMQa&zT?N8Y5E@d16~R+FTS0k8CZz3;M*O?p6w&r`Z#FAV=SUG96U3<#;8PkgE5^3 z6?p+?(a?xP4SHCsaCf&K*TK9#^EF(1tO}fh?8meB4=kJj z|LG&5%18b{1-_#{d}`(kN&1e1WoB z0x|9(cP7musTz!lBY8CP@uoJ#RBpUZHA9?2^z21&99HI|;Wy(HMI;`=g>5U0-i)}# zfwVCzQP3vL320n5%EEXXj+=#-OM+OZv1btwON}2m}G>;uU@Q$Bj6boh0?#yh2>;#RG%cTmz~s zs`cZ-hIL}Xhtf4T9fw{F2*^cmz_t&{>#zvmQ3~j+t&sl=*%B|69tgDI32@p2_fq@O zj?dGbAl(t-)Vp2UcQZUT1?`!R_LP!d3Q>e6hLh2UqvAh33ir@7Lr#X%E>@Ar;+mCW zutF*mgC(dlj9ECwehmun_!cTK;tuSExLajiwd9^n;&I_`8gR!*_cdbRER3r5VIU!J z9zvdl{4wBejXM@q7_%D$W|&)n&t8sWeP}j~>O_&h%6tv@(54FGwpRRg@<}`qGH#=$ zq3hz(j@w|zhvsXf5xTPsY&4b5Axmx@vJqWB(Bz=^d0%UBV06DGX{xOw&NL3Ao^TGM z+Dhe~Gd|DlQ=TCm2-{hZG69a9ouCb=Y^TxyJni4f6Q(g6ZKL*@%Zn2@q^AcBIHZ3q z@uKwxEP&@)pR-a8z_dPP?Sg*7JZ`;I``a=c?oI9{uc2jhYcKEeV&eQ(Ja{>1?gtk4 z;@nEyR}|8VFz7`5J&syj(y!E^V?|%$UYt+2L8dS&2Vh4S2MiLLT~@kpR+uQ zsqynA3vtqm-TuON@^O1Sf)3NNz@M-X9nOG32gjMX5bJ+DlF2h|z)YI^!~NfTs-}O( zGjsd*-IvTNK2!-_zdR?#U#B`D0goTQ*M+C*n1AFkKmIzk_O}5v6o&;NGa`bg>K63x zxTmZOZ}+teyzoYMCxU*8L^1w2bE&h<+3sB7OgcN9UCu+!H=J)e-*Wai4?B-I-*(lx z7P{(Pi(Cz^#jd+tOI-K3?seVgvRqBB7FXQ0)Yax{cdc+GT^+72*J{@q*IL&)*F&yu z*Lv5Zt_|*^?qlxb?i21__eu9D_i6VT_gVKj_xtYi?ho7-+#k97-2LtW_a%?;MyeAEu7~{P_><0s7AoiyCg9kK+T`S3_{N zp%8)e&wuDv{HJmMS`VzgJfkrb3nOCVKSSg4Zu|dD&1yqD7QLf!>B`lu;(2P-6AwM4 z!1W4Rqnetc%(HM>Fc`!?O_6oGBs4t@9b9;mqLg)SM(>!rJlXZ2lGy{95|nj4l5a+u z@2rHtE9=fJoN1GCE_%njRqa^9pC{ybNRgnVJTLh`O^{J3p_|jt6ba#gPS(v>2t55L zNVrhMzuG}~BQ;Bq(l6l@o=d}XRi8<1=hQOnSdwD@9S&7Q&dIEeoRAhMm;zJnVIOQtP>2T^XBeg^Lch#Q{_pAl6x zptQJvFy4`eMU^`L&A!({8DnK4-!F1&hNA0}XQ< z=Y|_(hUpnCkj%x#C|k{ zExX}%QSJPDvQSjhk^aNte}}CK%Kul`Dxv(RVS01^Veyl&l~4KWVarGPfw1MEyskUZ zRYxZ_OH0J}*WkwkSyQe4d>>T>@SR+Za z_DPw!khwz3jBS_L49eKk5_csiJ8Tx_1758;CCxbC)(*oJ0Qb-^+*QD>ABMY{t&@_9 zK(S#MMc}q-F(`4W`vT+IjK_={BlFR5kJ7&bs~Ef7yK0&of7rx`|9KWi*Py2V%w#akO)Uoddkcd0C0?m+pO`R4|g0Dm72=(fv- zefKxFM>bTuj_-!J`zCiS6$mqNu^V(2=&0OPx6ODVu>!hZD7rz26V)OtZCZl53Iy#e z1g*GOjFMq&L$Hi7wl#&M>}|v|0pal`f_~gQ<9oZS@p|e6(0Gh(aW6Qg5bwZgIQo0C zblh1^Qd)LJ%EdOSnX+6|SKMxit8m5(dbjc22&_R%^Xpfkt+(tc7mvjYQK~}e8}S^J zZboTioZiVd@jr;*l}q=)15Ienvo++E1;!Rgnrv)E&68+nOS)!mx+Y83tkqt-*pe1W@(t6l@FR+F{K!fsq)D=K>9PQYIp1f_IYeKmQ81EImKvS;5XzLy~Up$X;VY>XcC|{i}Z$){0y8K;~X>=0(3n&ND<-bdt z@gz*zKqC|I&FLm@v^N8*8x z-8aoQcGS(sq2%UBn}N5J2QJJmH(sJSVan2)KPClaH{mtw4Y1|eC(6ZN!>(r`qcrWZ zP1LWznGxT$&fg3+S!I9 zjF+sP=!hCvA;e2$^?WQvH}=9Cu(bd9kRBYiq-8!1{lPkM_v;vhe-9akxGz#}Y)7wk z8{6-E{jGB2?;&l94EOC7t`m@{X2tQ-Em16e@#?gsxO@M&IpC+@-tNHLF{WW=IkKHD zw_)v5mcg#Smp?cYh|(l(K!`|9H}n9+*Ge}yiJ!qxD}M(NLWXs-dk`q6d@ z`E-na@*MiMcu%?buL&P{M9joH0EnS91^VujO89T-Jb}3TYtU|<=RzbrnR1;hY@t5N z%aFE+dQJQl+jZ4$F+M3QFZoA24j;_HpRLdUdbzcbJc&mY<;JvTALNQXC^ZSO1755| zf6!`V%079S=WT+-*Wddl2K=dNOiA^hSYl$i@iI-jrE#kZ9NC#1mNg1)A#jdibXBl; z6TIqe#rPOFNst-^S8X$1P6`<{_+z<|Hc@-<=VZqB6F$s<-#1>yycVz)p;_U$#^hMD z(JjKD(A|lKhFiTTg})8RI!C4FP(pa_1mDi)JO>5YPPh_|!f@@e&cJD7jql5@!F&j+ zf4G|hw-!9LaF$!re&2#4jeo%G9t8gTup~|c-+1NB6@dRCc8JQDQWW&6oQ)0Re^Ou= zpO?d<78GB=w%~ux84%)sJHhn@VCvSXavjPG(&Ytc?E>SK*cRk<$e%|31>`ihLYkag zXORt;PNr?6$r65|_DHLylii^98M_i|(Xr0~u1~}BAnjJ;2WaQ5i3%z42XW%BHhus~ zqXFxwF!q!iKWNQCuo|fGNy)3h@%d(S;b1B7&naorYX&6lk~9s#dW~IDo*|x-0U0x1 zZOs9Gt?_D;(<~QJ<5hpT0S^HeHhw7U?lFGYJFVSRY1f$x@^R>}Do$zA3#xc$}37WNXh=<1a zxXz?7cFQPy!ovJ+yoN{|+M13F8N00jFj>4m!k>jcEU{iWHkzo6&U+2|XhTwsJReqk zTRQUFb*{S)Vy1b`q8Y$z?3SVMTAIEjCO%w?v5r5v`Oty6ems`t@m4Kbn9VKx)4iab zPi=wg9+sLSfGGTT8?U0nw^&%-ja!CrKLqYY%KHfF=Y_|MU@MqQX?f9ktTy)|50R3`}-2P2OYellO;Das3J0nvfLO(}KqB#kC9J zSWjF3`n&KyHBbMO`1=111eRZVDNP(7+R5J3tB(emRx@7&tO_pLG_c z6uqYmk)DjkjfaE#q&jg4_lPoxazHhPN7*0yWT+6%H-tMScXr>xr2cT73ro;CI1vu& z-)fzS?Z$fx7`1<_Oz%5zBk_k1&^+u|<@B5*_0uf|_Nsq;22`}cMnwN%m!iUL_?9%5 zcwa&2-v8c2xQj;Y9J$lE2b5pLuA&rqJ@O)~&9sNX&B-5%@nr4@T7(&(e~Y}IJe;Nu zfa)KH9?ad$FLg>Ov=l9WEBJP)Id)kT(c-%W7T_)P+(`C9TScttU-4ys~ z$MnJGw8ZtG!m=lt$wSz;Jdd&847eo?|1Ds&Mzp5kt$qThh11Xy2YdjHd~;e%@-Q;heh?Pc-trPoVXth z2$46XT;%P+mgdGMSNh?oXOyFUe*}NyyB2Z#hOTcfghQ_~-e~a?uLHbtd-{fT+>wS^ zy0M73p4({AGhSRZv3p<-UsyzYUs9PsV^Nd^!ZnicXXo78DeSV?UEyw16e+#SqxcOo;DZ=%axSj>= zn-F@n@n+M#vbk^SHP4t*S4sa^N#4$H^UV+j);uS;Hd|$ycBs}wt-q*TupW}XS%$%z zEze>Kqx;VPjv#a(+~%OX8D)y)zmlCG1Ze)a4e(#jbHUQTLTxz$jZUV>Z5a2zOQH5j z;PWtd&4KG47q}G`&tQ^nQxGJ-f)e&DBo|Wt8q|<`smY=x<)$apBn!O2C#1Hxl`PuKil+d>@=uCnhrfY8``wN)ZWu@4y)nj-rYh-? zBjY-fO~%i$KL{k7(uWgA^x?!gbhYtwI-EGSSbFA23+||Ba7rK0F+)53;W;GVHZ(j} zpylJCh0e_u4h7ai*z_Vsebzr;(cp?~nBe;LHe(?UdKTiq2QIq`E~8243Yvu8r*4__ z-ozm#c+}3np=+D&6&%nE&}cj3XQe7(EpA z##=)+d`d&n&SrZ%e^-{q&@_BidK#7<_+1Wy;2Cta7%W6suE13cpR|)t5EQqebH$}g zLlzZCt9_XBUV?lqA!kp5KS#FjFnBS>2Yi;e^rjqG8}?x5AWw^$P%5Bzfqu73cIyqa zzcOwBc3Z0hJ1DhbykXcj4z0i7!ye}?+Eroq7D!wGbRHfYE4I*oGWcB^1)cFc2J5e7 znEiSWmgA-X$$`zsR z&~%&FlD-f5Z}NTuFwyKOH%=hz@pnYD2OF#=3zc1WzmELN*ySC3!l`=EaDrnC_IY8n z`5o-+u5K;{O#qU;;HBI4E!I9nf|EB5|D3X321O%UN%voOfHH{oD6jRx<8P)tGXCz@ z;g_+jtMwG>c1U>(QF?(&o9JFMWb}g0)2wz^z19@eZnV|@ifWq*r4M`G8W7&dJltdc z>cl))+-n_{_;j49a8_u_TZa#;Kh{zQvxyu#>hrj3t_+i-S3`mxRE#jA?q5?NM2 z8tYd{JmOwV20grhxcLqwTr0lQl81bZ_>R0E+yag^>ok1lY;Z}Q`8Y(NzQNJ3C_$ee z1NGI$v8D;qzGK?HNG1MlG1d#?Sj%xpm-~3+_|u+?`_khXXP<`nj-20)1O1kq@90L> z4KsxC3`*!U91zfP=n0tOv=DF?kKtM*9lReDvp^xlC6pj5UQfp1@YbNNZg5=%bJ5xU zCSjm6F4hg{YNFvLXvz8#_(^I??m=%zJH{s_BdBTPkOis2Ah!-0Ct>h=zY-usXO_m=fSilS9)ZO?BJSQ(ZSr_Gc<#>o&S`7Jm~Hr`vX{GemIB?;qdPb?u36 z$+9dd!cmFg`ntwFF@^|ZgmDZQ#~2~}3&q&3ER2(oaO58n5Lrh7>>?4`^VaAuf6u#Yp=cbKDfNNmV?KBj7va|+KX!!o_~bvSzJ$nM6hM>@6-JI z4F5id-%(-EN~K8$)~`?=Wa}r;o<8YCNX#%Bq%nvCZ5W?EC2YvNOH+XlF!0hC_9I|S zdDB?Ip%{!LpY}tor(t+8STlb8m2l%q)@q>ok5yS z+QnT#jH|O6K1LCFBV5E6A5FcJka9wUz4>=YD_~vxFQXg94Nq zR#dRW4!8#K3`!uzF9HQ%jsQh+~ERo(1g-muiays<%9-mLiMHWn#W)%Df>YQ=fa+=f|83JMDw8vR;W zRbe5&D=Vs3H2UsQnwyp`t40_tQ7><(Rpu1?`aw}EK zoA1UV_|mEZep=;Q?yoKY_~kYC6fAFOSz5om3P{H*7Y}Q0Teg zY#P86#Uu*wFN!<;`yc$rxTAK$T2{YMy8G~3xPIY6E}Gw}>K86Zyxm*B5RN$b<2Yaa zLd*m7w{ZP}q__jywk=x`c(BvMDGzSzYj4{a42nUxp~Qx^^##L$?oPbn&%Uia+&2#o z95+I55q`surM`^6>Lkm1y}pdnX{CQyUj}z2{q6nwGB_dWZ`bO}WR12{(6jYri8|OG zuP;l~&z4_bhTZS@BRp-p>dO)}vbENiC2C}g)Gta(*@gNwKfJE5o%8LjUzEViHoRt8 z&AM=hXXA?ma}+80l~az^FG}Efi=}>1q7Jus$_hZ_fK3zutz{N-?-j4qgz;t5=emR=op66e3t4bFH0Inwx zUi6mBzx1rf$*1jjCrA^8Q%Wj6J&oZqBnp#I^jwUG#LoDt28ZtH;wAhh#ip(1SPGGO zzba055o1V3!h%y9>h-5I6GPKKr1i)Tz@@D0ELZ_VHWd-H&%Yr5>v1ct0sF-C)$w zAaF7hWsrQ6V3 zN^c5=!JiCFPutG$4$-gH8zsdg^ga&P>Xh~>mz8KVNrzH|$`;UTByp3W>4xVyR;Rt4 zVNe}9_$gg5?bGydhRLnPPt;;29F3dgDFD~O=^p`R1NJ9+aM%7)T?fm8Nv?wnZR9$*&_=F<3vCJ4!Hf=a9dv&5^}7z1 z!fP<@I#@Et?yyNO%}2ZfSGu7h|tlI!50 zXn0dp;kuGf8(0i`AHgrS;gD0||2j^H2K6Sq5dRxd&V%1%cBxokpwE#E{?m~oCmwnG zpJ-S8iAPmq!oxB5*T<1rs_~zgkA4nrvK!jI! z!(dAlwh9I0;?v!{pn5kZ8Zpf8K2|R_Y@D$k9}%mZxgLi`-xkWE`;=y+f7Ogt35dQ* z93nS)L?Hus&AstSBt-(X;kP|l7@@tq@DQ^DoE=3?{(9ljogIZoV}TlSc0``7qOuapKFze`5@04TVSEBU>HSgL#<6BN^J5K5DmSeJpxF#i|=-l zxu8gVH$=1Pa@-xV1U9QKMoC%8aNrAtyf{Bj7LTNJk>zRJ3vhoD_xo|*fjfZ|v27sp zcg1#~W5(3G7v`n!hP1q76&}5Wl#AiV4EF{VmYdNt4)j2dA*+lcz7=#Jl+0fAOsPyV z1u7d8-}9~)kB9E{>;(CDJb6Jp4#U+GiMKjxkRAN~_>-{M;_Y#7ZOhSP@YVb%ufq;( zo}j~Q{ye0<210%h4e-Pn_B*0}_vhm(EV1+Z?{J7GQChm#i_)G9m7B=uv6qRm7xq-F z|LwYf6gzqgxTIac<4G=g7r#HLmHebS2o~U_9`QqONpAsp3GhNz7V!9Ch&)EW4;vMZ z0s1q}7zf>+Vl3)_*$-GQ#KaGPM~3(zQvQ$`^oPu#vQzvp7cfr~_BGGa1}g_RJZNu74g{TuvCP& zU7(}^h3uOsqORs|kcFA!#~mOafWF|_N$$G8-HGh5{GQpNJsHpJm;n#b8CYoYxWxgk z+ClFDaUkSj5+7vv2bDsxzX(=I>gnbOrbK%SD8!|Q*k`!KeuNy@#$H0^7Q7!&UkCYK z65j{w?8V~r1yMl#168KpkwLvfv@*pPh#2){^s%ui7;wrY?9>@sC;cJ(WX-}_GVY7lK~3YiTVXqgW{{9=+Z_8S_HYIA zUJCzBjW8zSD4byawufNw!cz_y9g8i*VngRZ`*ME5mqr6vt{OTIs$IN(ng=E^G|Vk= z1l?x`=+_}04+z5uL>9olU5OR>-!wCkk0ZGXE8;~IEO|0V7u0B=h(I385((ILhcLzg`bn6xjdWkQUVI<~je{UxF3LFx^ghPjhqMDE>~%HMREQs7ZUaaVi)aNBfY1d z0MyKsl%UZlJn%{LxON4{2y~Ei{^9`~DslZ3q9R(2 zayv4UIsQxbM*xeVe-5{lpw_ZVE$PJco$20bz$2qSPOgsQeN|$|2;74s1FC#3um}J^fEc828WN z{aN{b^$MO3YR?E4L9Jv+1MySs*^M-ZwKPZY{Gs;z8lJCd&j*q!h!vr$kLs12u#Q+i z#>$sj!vFj%5edYxi=nm!AR^5v#OJiS^2P7JvfiWXQE!tN>Nvs;_67V4wxMk3*?>sB z{wPYg1c(-aes}#HG{_h5`^kj1FdT%8hc1KzAUN+Z%1=ixAq}bqp@VogYwt(!K7jWO z`94DNFW}uG->;YBom^qQV2uJeqXp3D*WfJwQFbRjiN%aKq<7eO%Uv?%CwmG2PZQ(m zY9nl_7{^cj%qL#+f&?j7?ie=*~M+XrTMHnFb8CMg+27!x- zmq*3uFzJ3O)*ZzovgNLfN^KBurqYnCjSdhWpKn4p%n@Ncoz_Aj&xc-B;iV<=F#f3X z@ikQ~W&o}=*oc5GOGDw^)Pnztp%|s_KuUoyABPL(J z=GR&=FjM&1Mm3wB@@_lFGFy)UdbdGvWZ>Ncq@&gNRvXxGN=>vm50|_G2P@naJL@awe%4wW+~qv;?D( zLeDyRsT`8!?}F5a@UaoVwNv9-y&Z?+&|=mVfT>vFz+|o8S7^NhO=49+;3y8KJHvEKx3|-M&*U)Kr0LAY5v2l(ql|msBDZVN=FfJjTx*USgeK zfF&H142_7v_%M86=wPfr9#UUw*jQO;&HKIF^LM~tnNefSu1!ew|&PA78C zg}esbm`^q=H%%jNvba_O7ND&^AbF;kjkP>0Ai#Hk@crz0)lcEZ*>E1F@EKb8cC{j& z-iGk`T6mXQ5Km9x9xdFD?Q3ya`5BBAo zjNcqjvpx`|XL_)Yft~fQGAGW45`oEyc!ztV4!w|x4(P(7^}y&M$c>IFTfnMO^tEV+({Ll)LKv8v;Xwfshy^-U!oqX3Tgi{enSKfko1S?(QYT26pHm$h zSzHqvT3j2uDiwQzKR8?1rFwrN92KNJRy2Q{fExDjHb9g{C#wSJocJQzv#VS__g|!7(4S zvtk$=>8B2dSbw^&Z1C*Y(!nSO{umP9!l@HcS6wliO@o` z(@dl@I6kD`%=xd>iB^$_XAeaO*d`wyYs8TX8W@bD!mGzR>u{m9u${(QglJ5I85^f7 zAiqqNHzI(n-^S(RhR8&JF80C6$=U>gNO?1?--c+Lgg0_#vsrzBWV3!7eTU|KVC4(X z(O8M{zI~=bd;^*b8tL~R=~JG|{UFIc8gyB` z!nDq&9$>spdO1stLc?bU=hX--L_CC|2UmXX44q zsa;4tPF?%-65PVz&dW{Jh5KxcEm}z}`t$@f>!)-^!Y$TC_+4r(2aZNO8Tfr3yI9!7yLN!iJS-3FEx2o?+h=Xu<)Dk>cy zA%^Op*Jl#pX%xk#?IH+E%}Vot`y8wu);tJE1HJ`-t!+$*JmOX|3m7b9QMKm%2Ks^? zrkVBDTl2`QcYYVDZm`~wfC)G;?(3u+QC~M&?|=uoUG|RKM&P|H79Q8`Cs1vg$HL_B zDdtjNm@q_<3RK7ag){>){%HmXO%1AqidZR-dgx^kVh&2Nm`Fm_2ts`qRAY*SH zW+C=%2AYF>hB=7UkNVD7QfT#)e4{fzR3~b3tAzT=S@hhQi3a@y%N*8L>KLDt(d;^| zw-`y|`C}itTMHzlfh_OmVEZDi#M&A-sM5YxqqQZN4~=Fswto@kZ)#=qtHnq;!@x*B=-^~e%93}+(PQrA1-4@DJHJg)%5n+ zi$sLaGkJPE2^u~1V}qa-kP@UaixR0xh!PJB;WQrc(`*_PL`lbKPF;fEn7GpeVTEe} zt}OwkFFo|3zCAmIsP_scqqdFPsTOoXVr8)|@E_@}Wt)3S&8y=Xw2F6DA z=A9`|7CDL7{DzH_Y=woox1Lg1DA+TvTnI(`6Qatuyrmkxc<_mX+njGX9RHRz3uW0- zcqlIS-y`l`Uf<}s2VRXbVIo4@S)x#cU_ZX?r_$J%wYNg#aFel71)Wy=IUPPL?<*-oMnZl(^uyL>`Rz4ov+$?9f=Q zRFyCGHHzkHzp~Wt_bvCV^jDWFf?XUb)5>N=L89inDJ9*6q(vfbWi#A6tIFvn#By2Z zrOnODYa57Oi-jmsYJAnz(sdJ{1vx(^{0HHiDcGx1Sz3<@OUF<+>($gRU*-pd`E zTYbMG{Edyuilq(ruu~#x%MC$sfJmN^z>}!jtkf*?G;4JMt`wpul)3@lmZJHdX4K6G zXgJac(2I~e)r}G@D;+(FBvsW7%h5uTM(oKtCqX}r1mu88sINjo@-WR2CGan8Tax@I zG%iS@zSGw@OTMxvsp9mlnnmdOt5+ya+-DJ})y?I< zr%9p4DOb3)h3>d18)F5s2!$%;Z&bv*k}@V2Q4T((;yz#F{mOm5Rro>K_bZJ)x^&%d4te%HiwE%}wm!Yg829Dn&sqLQkOVa`amn1sQYZpg4g0TXE^tHA`i-LVioziseT=alqjd|0ET-&}6k z%ghjAw6yds{m3Ugr$Lyt`NTO3M5WLnHEc8(4Rp8&OpgLm7a!Kd6p`-oFX@TG@tOz` z*7C2%(ba0*&=+YB^f|kGIy#H;Yu0sjDfzSRnq;$Dt!G*P^X^v`D=V5jouT@5;Z6xsiz?Bg zmaPp$QX=Ndi0W|1xI7DFRL!_NWg4(R`-9EBf%epr7Rg9|pe?1Gd8IPEp>uQJxRT~+ zMKwh_H;s!dnZIE69jjO0!TJ4>b=|AhqUI8K3Mrccq0R|NY5hNlhV-*8s5oyo6cXWQ zDU`K$i`EJaJ(2E!-VPLhAELWD!yG+p&b<2<-?6&*4k~j6A_+w&lO9kf*;XzOuj_Np zLi^!pGNr0V*@#wB+L2IMhnRI;>$V2^*7byy!npu|B>uJQHYnUM6pH8eKv!31htd;n z?^FVPO5fT}1ueWqY3mFDLOA47miH;$0SX}C9RSnUqjdBrf$)|wWkfn3+PE$PV8Nb9 z5+YRezd<%e7$|5?>z?HeRoE8L>{_PGQ8sk;DI0s02Rl&?*bU`wV3c#d-oH=&C;#z5 zgLnAgq7BtLbG6?2p{AnCt4;cD2xnjStRkhQGqQmiX`X9dk+Q6(cS~elXlMqq>x|M*S^zDF((gTM!u=Hk10bA_$J z^N*N{EcA3_6=O3Xc?K5w@^LgF-tf&o{pg6gPjAh&hp~!h>B@8+f*214gdLis<=D)y zu(du>cwZ$%_NrR%ln}PRIi}Uofqu{Vw&3KX*QcZOTi{nYw-jOfIPBQ;Um@oG=30d8 z;*d8f)g;i9Q*Gw3Lll;o$zdHFa+pGF?{kQcL*C{z+d0I|A%kieL7!Ws7CUCtMJuCo zD}e870ddRvR?PM+IcoOaei6VV>TlZ4eBv&46Lsd6DNPM0R1tF*FCv^z5aw^*If&mQ z9CCz14)O0{1K-{T2t!Dc zBq8TIP0cp@WNRab6{m(VsZLcQh3oaXi|~u}5@T6wBSU`&yWt()EeJgv!h9_QGoXxe zZ*33E-yC`rnkks1tOJ_bXG&GqkqQ$3pViU)hHj2^9QVR)2E_xybV%FNN#jfKLq zYHV1M@b2i!OTuO;m6^4+wXyOLPVdC?H_tK+-l6B*$u9i5PSLY7!exXcZ73vOzjqjq zce)BRxQi$c*R`3_Wvy*Wg1*f_bQAl$kKy;(H$fMCVU*9IGz!(Iq*sc{os_rexh0FJ zL76Cdm8%;og}1g#NkaWQ5_mG|Y6XCoB>*5lSA>aL8_IJ59SybbkI!A4Q8)M;dQ?pH z9E^>ix~93A_dLTyjYDDLFis#2H!8t#Mgk(e(EH>1-;|xz`toSqr)h#nwxj}$j9yFW za<6LjsJe56+4ZPKR4txJs?{@r=}Y4=RZYbiY8mnx=Vq>aM!L!njfioA7JE3>85<2{ zxef{oHv@WQ#s|c5rX9r@4G$5XBC1QMx=#(J!mzNsH6rjAvf1ZgZfXb`{kxS(p%!l1 zlfeeQ9}U(3##*mCRLOOJZtf)1dunT=*Bvb46emL2TFfF)`hBDxqS%m8wKL_8Af!Wm zh3G-v-E&JD_97nmC?bJRn%xV`Y5BvD_5p((43%*9gUEi$MWh*UPys)!i!KrT^b>mG z%Cc}Ko(niUtMHwXYXrVnt8Q#WLk}Ew=dX0aCYmh6#6`Qf)Z?K%t=d!jKccWN|?0>b*Es)_D}gjXg(c5y?QoK1}k_oxQf zhWG&Be5@*3eJNxeLQblgcmh+Wy+brKzEapvJ<>yzf0^uGuAlJlPwyNtyoR@f%xYl8 zKt*fgbQ0$SvU5;FqXS5~y}QIk-_lOIdIo-gl?P*^ME~5$-28)D8+=^%X@-evRP3mX zHoRe)p6n?=sezY)>NNLRz-Aw*oQq9hu`UO2uv1JacA}fEwKm>;DfY3a=1{-L?BcFE zm(M5t=8p0~UyXX6_(_K3PPT{DoY=>q1cWJo@G8a$SM1!GgRu+VaBMVaJhKzeSF{@8 z@G-so+^bEE%9`S65(bdkroPt3Gl$Tla+Qphs7rjj^OK!8Q;IvEqStn4T3Fl?8^NzF zb{)Ug*eHH2v6zB$rLcz&%Qcvb4JXHFVI$0^Fel-|@6=Wucq*i}GGxgVLO_{7%aDCB z?R9j}R@s9Hf1>-eeGr@^QYY(Tq7=)yX@|joVZhrANFQ~+{+DGyaf8WppCo5QIA{2u@pKHi5wY1>&|Oklybm=*=5M++vx?#LoUE> z55Rd+V_Zr>)s~fhH;#4qDYQtQOAcQ=L18-DnZKd~sM6im-oGfXz#wH95c9OKt zu&|TvHjovxd2{*j46}O4#y@@*Byz?ZROY9x?N;K!(X@ShvM)l%YshPo2 zyaJt~a$0k3x2@Pbcz@93->qJ${1IW8V@~O4BTS3IP_DxztfarmG^m#%pI}7R8iX)O zi(?KA)B$D0lKtzD3987|=30CpJXake=m{~aQF<~NpJii`$Qs?Oo=ep3TcQlu!fIj+ z6(_Z<3v2;=HAN_w$Fa%Wv3mi+kVg{o`td?)paD&PXsJA8Wa$sBLE~@97DmC@SqheZ z7tMQ?bMH+_pHv*u8`Ztffp4LWya*k|m!gp*!>$ePCxcIDDzlM;l!p_@SM;3X_BedC zaU~?VI<+{@qZGN|W@t&r?^I@^3f6X#U^Cmqxn3U(M?RE94JCT)kBAj;_KJy^NAD$I zlF6Wg16L+4J1!e8?)6z~iG3N)yP<5B2ooqXME-bh+=0et|I%4b&njw$q6aBH_bMq~ zQWk$z$ee!U2*e(z5vc^&)cx$lBSfLa{lXC2LEV8SGlp#ZI_y(03p3;QJKZMVZm>8_ zb4ES2%A}GEna^N%Ac-##fcNioc~ah&cIT$N-y60&=J$%a=n446sAl<`KdCgM?#RhU z^OsJJ`fAmEUZe=Q+fXPNq?g@utaqxATdlB%(h`>2GT>4vCA*@D#Y=?sm0lo`waEhN&ioU~ny1yqUdWra7@KBdFH=Z&A$}Ky3ou&0++{-MmkD%mQ;QrVN=w&bG zO;b;BuKh?4ZycoD&&3pXD-3~ALcaYe`H)8a5NTgTny#Q3=)9OWZRw@hz?{0+^HdUP zf++jNkd1gg+l{4U3qAd9U+ii099QgVkd&qawz;yh1JVwfP5O|-{{-hX`kw%tOxe@^ zw$Br~ae5Vl)mN9txh;RGH1WcXprEF$a2j5vnwTw61BU4M3lJO7^v}<%S8EpE7kjSQ z6?+b6We#{;vHz%+PSn_jd^EPWeo>uTH>iMKrN<)nfoE6Y`<=>Kd`R(x>tO78V&%ef zXuYQl0Jwi39DAzE4z%}on-}9Z_7p;2-iuHqc@E((1s|}xh*e;c3&);^l$aANXhuA} zIUM6TPM~l4P!OSubkBL+Js25dFHDfKk9ZU5o+5aV0?G|wqNfo=_5CE6ITONE0P#b7 zBkqDdER3;(K{Fs8@Hl7~D2w;#V)QW8jnVqn#AvO0peoxGhbt<>mk1)%-=6a~s!kcB zxE%+@t@%jh`@Wi`l45m;WzbQYD~3L7cu3~dhYuR-ZzWA43z~$Z?kK6^E(h>(;6tRj zTP@z5p)7B8$f0BmQeVF{XYl;a=4$o4x*lmPNHcTmEo0JTGfm7r?o zp_)0eQsXPDnva8!u^6hGlU!ZOtt>)?YjOtFkK#2R)CD~ENLfQGjqud)B;56QX%Cyf zAY7P|5)w#H$!uWijj3&50jPlLy`&e+FAJBFv2T7Qu5#9sfW`cBQh?_#NaTg4M0sc4 zIbsBn=a(szw;ar7^}Rt)&GcR-Aty5zj3O0Av5#Z*yh-Klq}jr_(rURZ)^fZ*HcVi> zuzR|N5yW=ja5FcW%CHz8{Dvar;At9-|(RR(g55wVP99V$gF?d^&2PV=^m_lc^xtQ-ClWPkX7d7Mgg9E9?2Vq!r*W&1St^ zh~Zk;gC;Qr?H?AI{N$kdU(tgkGzf#jFk825NRtMen@45iX;JT(cnjjw5ucCR-b!)O zCU-|K>xtCvl)|7}-;`*A|0ck6+k}{YUHDDCdHk>pj1`GOj2`8fOw|47cv~EEy5C6R zAw!cTOQeU)#4Cm>JR3tyb3+-P4bYPxn>&fVM4DFKgrVM$k5E%E9%{(tP&@oyhuAE9 z(S@(PUfOy1C*Yr6q&36*m*671#zpvk@?7Y#FcK%Rk!j(D6ZJh-p9b^-rfYWzhuIFRriz4^#kLS z6uRj-V2v8rVPy_=b~rWynoY_F7DtFW-#PKfOt(g_NpX5*dUy8NvVYaQ6Qa_np7ZVu zW)t26KP8II?$#)Fm2_VyO(UKiN(R?%$a^q0)RV_;iB_76(L5EGx5=;OHn#6Lg7L4E4qJI6`>F zM=~_mH5#kiQFrthHBfB%r5LoU9=mr(k0s}H^UmfS>SZc7X9QZ}F2$aodGZj32eJ1N zS$?rrehiFwQ_|p|_pz{)1uvoZrfIU^S(XK4z%|ZIrb!r_1oPD;&NS z;mJ~>jYEATB|I4zc`ii_=ml44$p){)`&UCGcD_<*q{sj%GlofKB>H}+Oz)Xp zWEvbRNzgdsWQm0H%B*ng>Q_mTqVyy=l8=hy!DwI$+A-Uj6f)=GS2g8LYkq9%&sk!e zOr-8i?#;SPn+OwP=%Kwk)B@E6+2r;<7M!ZrCRskICYTsr=V``SO>aaKr`@EiG33Q% z4fK@%25EDeI*;B7y2xmvQ~58;ofmMr`XLdODh0eWVHkY2weco}k&U>0DmY)g;N2N6 zK)-ZTZ)52(rcX-AU`QtXUq;SEA}mFKkrJK{(KVp}%SZUYBeIu3fa8rN7~dhoZh+Z1 zx%Jm*S}NBWb-fgwjbmKmjZiQ_BaG43R7ZmFpu5uAsLL&;XtLZ&(Q;@2gYDQ}oY7p1 z*|o_tO}$F2r|Uwo5p5D>A?Zf5PYiP-XsIIZ9u7#gNswyn@J%v}Ea;ddMJWV200p5z zPk>xlIbpz>*pfL-gK?=?!Ay$SK%EJa*iIZ2Hju}tW+P=D zPo6(uW%U$(jiJ-(d2sM=h_34gCYP}`#K@YQaN0CcpK^@KZd=~>)g=-fu%;8BbvB2zF z;fl{9(sfkJgtsbWQqt7PK8$w1BxNq@`>r~uq-i7EP?A2b&#f$#I|G@RS6v}yN|{UX zI!vIc&<*CXd=o_XOqtzJGb&;BfO&A)Jaa_m^3TMrid2De-WcpKXOF=Cd`Sy&A%xaV zE)(?RH6Kin0kt^eXCvYjQlH9JOB_=$Frk4Q_?8lpH8E?$j0R$uj$@Bu30OChXiQ1n zAVc&Uw3%ZL)`zyhyxTL?7-lbE>Pw<{J0UIHx}U zN^UZ#r;u?4M*Ko=R%j;m*UD(1C{H+Y`6)kF95(mR(easw&0U1E8O9ZT6)dUjG?51b z1%}5!w++8r!=`-|LLpOPf-(kLDdnj#FN1k%z0*P_RAy-6DHjQ&uTHZ>c$PsBS-@>j zl!95)N21^wvd1VD^rQ+AIRu?{`p+p0Usi2{mB%8jJicY{vau-Us%Vk$Ejzp;Xx?h@ z>{OM_hQm9$&A;36yY1>V&tu;0p-jA+zPEkfj*qr~v_rl08rDRDFs)TZX$>7ErB_8& ztpp`qt85ahVjBnQK}4Rp0w;}`d{3xDQ%_?BYgljmGH(2@+f@#3_kHjwRmifNg3Q|1<{;JIXJMsVW6o_^HH7G(M z_`3c|?gyhjAfcHRoFuhNyRhekpSLH4>2Y6mw`=KJwR=DA>v7e5T^RpwI6{1l4DdgJ zoCcsD5pz(BsCby~Zn2r~iWctB!Yx|3Neee>;RX&D^Im}a$ji6}aJ`Oe5Z61nPT)F) z>+FB$*dWIFQHwxiL7A(syH{-707w6Fh2E8pNZ-So?+di8+jReZL8YS{`*C`D;lO`C zqTAQ5+tjJ_wBdCgg6WQJ5H6QXxvw&~uB&rHZ)f}cHnA?eDbTeJ-uJ!iq#x`Ggvyl} z?KaU9hBtng-157&;0K^kf`JNDDA5K*_qC^_i6lTqi-%W#&%>P^HaGx5N2rA~vz1v-3gui~>2~%5b0!so?G(>6{Y>pv;*QuORjh ztdnVdoq>+j+^cAlNNUhBiOaGCE`*v+E$kZT4)me^z)_jeF?U9XGGjqkhazUU=9MB$ zt4U99rz~>D28FT%fv$CJkw9e2_#_nH)3&~|y^kv_VQX+AopDIxX|$mawBOj*yRmN! zUE)P0(N3oqsx^iN2^8a%1l?^o;a*aLG0&;%X%c(2lDE z7hH|S23#9)ZN`Pase6T(@+ht=czzuBcX2QKitraH7q4|;W$b4DcuxlHD<@(tMN9rf{FXhcYuLE^G`Q9&E>qBjV}mX@8Is$n-@3 zn1p>wxi^!~>bVyj5JcO%v$40g6MM5Zpx-MGBO*>} ze~(N@1T#Fmmin#pcAc8a%$bRHn59tDSUqy9mb0&iVLCndgaGKy#Ibs+I=ediI-T?6 ztN-q{WotFk^FAfot2D{Bf_6jEo+d^Qdv>}(GZF-}J*XFP>v}eBPw0XrjYYrd>Jzj z9X*}EveQYgl137=rzsE#Fksp?#r1E)1mWQTnuY{&FQP+{K=0Z(Xn#*bPakg(bEYtl z)@Jd_>CMD^sI>$2kmVbwNUf73w&Qs?-5i+^``yR3SW>aceNNT_tt~OqDAd8NuWX>L za~pVs=?k>sA=0xEqfKuQ^=q9}6Z4t|POrpYV5cM)m|sP}0D8vcTJi3<@|$bPWRhx?(V3L`-t8%kmfSW;&62_m5+xrs zjNbjhUs}7QbgvXCpo>aFlC1P31Ov&TBtck|Qse|uN@4+iUEbZ>#as>~mi2UZlhVPX zD#AOvJHvh0&Zjd(H7N?t{FUJc!#xj&vCEK?%MGM~NN90!ykk98bvu{}ss-{#VfatuZ3CKH?JERl@HLM9H(@C8~X{*-so;cLX zaZs%g)U-P^wewpMJh51i`$DZNh!Z%U#05hVcG8l7U)q;6vao#X=;_>Gnvv`&pu!~a zZR{tsVy0C=zIv&TK9bZ@T;eJ&PTEbVZ6+)oznM^(SDbqE zKP3w?Yp%oj4Zx?wT{OzNy zdx(yP$o}bHBKdwHddrdUCzNozH!0!0GU1w65c?#>Zm}fAR>;^$Jz{$)c2%w#q@MBqsZniH--p4|=-cI^-6xjr%j6r?rOfNMU@t4}(J*JKF0RCWUu{5$cU6Tq zOM0-XP}Y{IZs6KqRq zf^u#Emqz|f5I?_lH^`blF+Qzk9iK^l4WE|-V#@nuz%J9wwP3JCXqr?mUT__xoh*je?OS5q$g?S!i7j*v zw4V?3=~GpN!$O2`JHm50d^Oy$w^ZEDp~b|4h5$RePd`pC6Fnnq1!v7ydGna@S}Tz6 zdmH=b_L8%_%u_N|M~xb`{feiF8iD2ptrx)>I1Du7NkY1}lzty_Q*6W!xDDu6xnL-4 zV=z8nyogc^aEhKXa=m*9n_h@W4|%XQeh5%U19YxUM#QoR zrHj_ju`wV~uTA8J*Lsmk+3o{r>Fx4+941qdqh0I8fVj1#bx**7?K&b>=SO_|m87*0 zJMBM-_&v2M`$cIq+mtg12Iv>L-4|#}Sfq`+6>M0om%V@*@#|iAytWZdg2%>r`xNy1 zLf>v>1^jZmf(ku(9U;qY{~wy_->R0|MsV^Jo~Y~=oX15*ZlW5oPT*bXh%&vbY0sU5 z^xl>2+Rc*U5n{9%A4o|N5R>*#|F1-Is%^_Aa$gL*YY24tN%-UvnYTA^wx`Er>!n5u z9MkzJl%?;Ym6e~btlksgZISKRVyUAQoSZ<5Dji?c97YPcNzfn<&0P3{ z+KRCg&f`uY5>gA78=T0Hl@^KAhjO$mx-lX_J*89fO~!+W0UIr z>oMs!C*v&_i-_U+-X@0YQi>J<+UC=EZs|V_h$7dEX2F&TgtuN~KcC#wQH`~*FKv=Q zkEcA_)vSPmKH5)fq3FR``zSa3fx_ph#NysutI}KE&F2&*$*kd0QVq5$jBU#8o2=|t&_r^nUyo(HtyslQoLm|dxXyAzI ziies3u}HpEzASg%-t%QDk#EUTGV&RN_x=O6;ZXIHdWXRjhXw4gaS4P9lV?LiAx@Pt z98jgS*hS%AguFR6whvk&F;mQqX)#&UyAkD(K>3{kaAHXo&eghEew z$fFiW=*3Q98R$lB9P(Xp;>=*IX@*SjSuIerWhnY?eaKEs7A~d_n;KR#!G$gxU2kv~ z1KU$KyLXnPMAIHBag~z9?)J(Yfyb>-UzUg&S1qx4d1>D`&Bo|T4Lp7-}L;`(}BR9L9II$O_RhN?Bz_IWsrl*vk z{v~*j0E?(9d#Mupi7B_3cx;8~er*mt1&$!5iF)03Z-`4@^9og1&67EO(LrK@QD*4Z z^}K6dp&VN*GDoDI;GnlJqMW1|tj$Tz7dR3xsh%OQ!b~!RdpXia4u+~+xOXYkNG;gZ zef<)|{UM?#PKJG<&^>z#;Vx{(?k{547t;L#WTxw=sjlu#)DC}1w)RU#4?tFV3)LhA$ zstX=NCgpDL-cbI`W;NIQe?tVDT~7p@D*Xy^wD9h?-Vd2)J_srEQPZwB0JX=}`7Xhe z>;9TYg!G<49noBHyBw*Kq@ZD8_!=C!zoZ!8jPd;TE?CrUs_NOPH|FsBhkOo5pq|xiMO6GT`{<7m{%F z={RD*=24!QY`7vG$^+%Sk2jzkeFBFilstEe` zs7BSo!p72ln&`5606t9YzDu#p4;ZRw%8&CZ82_v9Pc-jIbF1aLp33u~T!;l9-0Yod zethOb^P~zb+@acN{%JY``khRk(9m;mGSxFaxuMf(NJhU#6NQ$26h|_elDG`S8Ko%0=Bc2H$v2vHP7pS!llY_mMksJ#( zbmJj>gheV6;i56A04?kq9~Rj^LDCl=Df6NHjGa;fYT;&MlmHCpqE zo-0xHHLs2ji_}jL){q?5RS0oEI3-1d4ZD{?5nYLg6$ zyp|Y(s$oKJVioY$x0WT100D0%ypN{1hS+OObv1Fy;zjvOd-$f-5~!Q?YNP%b4C zW_;-Z7pBhQ@&z2edhhiAO!FY>GZ-YJs9>LTbPck9wSGPZD-C>70XCSq+U~gcWYV^2S4(oFBTHUALvU?sQ)vLqg#P6CndC&I zG_M$(i@;Z#PodH+{rtQA6skAT1ospVKWKVP9!5)B_sE>8Fuv}=5iycQsEMW@uN3qq zMe6k96~g}*Qd}!GV~1Y`()YP`%N=6We>GmV!<98I)R3kF=l>5)6qj5M_B#)cEy)L5 zR&LkJG89h)19nyyuHz)@dduHCIB`ix!2^5b^&6)U=QPFUhA_n2zzB6e=Z62MxV|k3 zR<>&wg)b2Zf5*Q^4v|C?6$aRNj`|aTP4XC;@ne44^fUxF?;)D*L`ApFeh|Bk@Xhz0 znZ#J=D(O5dou!tT@j=rb9ggX3Ie4QblIZFQ$sMt>(3jMyu+C((iP4XBJ8bJ!vU?H{ zSLFu7*jzpuTua51q8$~X)d(30wP;0G;9y@K$*Gqj=2{2`vB-*>YGm;|@y;hcj2xJ= zHZ~F)!dXbegz|lb66MxC*v&EoG)Jg3oCLQU$07_-91k`0Hmtv?6~(nUfnW$bIUGqi zEYTrJgZ%J-n#J`xt=H<4Up zGif;QkvJP9(xe2fQgH10c71Gs8$T;^uHCXQd6G`aRESS|{uU7Ez~m^2eC%#SL2~RN z%OsAYN}9ypcR&`SPh!6;z%EjTsLKhA*BM*_m~iDm7{_phPxFYV2{bv~AZu&;H6mW* zrC?bh?wEWyHQ}9uJFG&%OxRbGEHhA5vr{GO}u^`Dt08${m z?Ttw|cf+mPv{}OCUc*?D8ODvUMCki|CRq)mY!23-c(XEQA6Q;X%s#NiZ&FkAjls?{ zlwy4%MnYG@|iz^`w!$NVLJ$RW)V%A;eMj3L>)-Pl53q^o?X+w5iE#JK`I z2o~HcOI2u_J)J6mE%vnS-hr(Ebt%webkrhsQ=4ly={09DoETS$SYQX{5RjEv0;V^7 zc>t<1-WW4oPoVh~X1=igE^!22_3ueEyX^UVSOJPnB>@h1nxmf%z-Z$uB}Djwd$op5 z>9s)ZCe9})$iE@kzVdW}nOIP`%bj#OLDod46O3(+_}K){CY?awN;;b$niM`&Kbe4Z z3JiIsUHv%OcFcKV(5(5mDP66-^P|-oHF1{an7HD;L>#j%AAq>}Ff;E^@>;KK56ryu z=`g5#-(^nM``;fXr7A%)%}n+bsCr5cD=mD~RVlA2$@QnN3L%q63EKL-Uw9m7bBj8Y zHgw5l%?I9A+!hD+!fM;SuoH;4d*wuZyS-C_AAmx9Pzm8O`xS@_sO-9Uh_PHFfat>;z5*7S3e$uY;{4#9 zUqV5D5l;iy1>{Gp0kK)cH7Lm@m(~g&XxgKeA&w4R%kf0fl`~y*wv`q?a}e>_>eTTu z&PQgs{mqH9!BzoRw ze=|a)ftFnq#9l@F)kmX&&c78Z6n^d2hW55>7&?!-wQuViHo(c?3VD*<$vk z*eG`8^P9Fc?Nyv_V8Z&`0bKabI+ZsT7LhZ)l5wN+37C|y(G$L4OYt4h@`^^+5j;Qp zb6jwfNpfh)oWwD@l6I=!HfYqjTmw zv;)(D(~v7fY_WTEnBGT+r@2Q*k-{)K9GvNS1~O0X4u#CaL1bbYI_PMOy8(7edT=s= znl>y;R35reHPuK%Qz&cP zAeJ6Hhj3vm!9*iJMCUc$5v<9b;xO}JY1$Eq=@(%haVz*r6%R=@wDMqVY2BmP>jwAk zt`y3Ol3E%leYJFmBI5R;!{9^TD799`!6js>JghNg2u%;2;lmnj2?&HCa_^9}E18PH zTf?Fh%Tn<7h#%Cr8lOxuoM?r4!O#WTF=LcW#jfm1?7ZZ2oaavR^AV2*%1XjKn2m&V z-jT*fG`$??$1-aIXeWU7186~_;CUXIJE`bCqyhm{2thzxA_YE?$r}xlBMCf5nVmQU z;&EV3zYzasCM^NPMtIyU1rBWDmgBeh#@tB=NuylU^ts{?`hiC9?-IeqIh6N+c3$Ke zY9Jhv4Lde4xfj!DsTG`|{Qi3@qdq?Aa^qj_jSen=qrea?4L+>Wr&6)$sZn7V)IY7pPH7}(o7&Iecj{t03p5zRROivc9 zIin;7Y1{H2;C1jXgI*{>p;8Ba>!QtW81hJH*hK!9Orz4cjwjpElELp!JgEqv_pt;P%jye=2)1dRAc?${I7Kq2-CWPf9rEf4U})@(f8iEQuK6 z?RmR&9b4DknJ_rFK*dZAW_=uRh@SMKi}`!rVKyQ-x<4kIQkDVOwp9!UggTiPDwH;< zJL{l17-^=01yeS%xnYW^8^rRs1((UwE$qf_SU!!qH7uF+36on*bb^6w5^WYh3h{VN zUx>?|n&K%a-HfH(*HA9$_6u-NgWPrLdO{bSI6@MbZDb^Wi9RGJS~kisnuBZl&iGSM zZlt6e`(v{6Nr}=FEf?C!5e~=!EWsG$L<#7{Ak1PxWT<>hW|7vErW2S(?W88bNG$K0 zy){8Id|0NcSre&KOscbbGs`=XOistOrm&$jBV5Tax7dp&s1Q9$<&IQ?L!~%`?}3PJ z7|igo8P$u*8_;BVSo1dFL~0^nTF7!2q=m4n=DYe0G2Gep6lK_}(42FHJlv4TNll6~ zxJ>X)=2a9$6RXTt%mQQj+X=naw~y$&>W(t&zf z*UQtX4H{z&am)m=n7W{38MIcKZu{bz;)^I_!*1MJO*4}{1+e5ZlIV!ZU3c{3L^!c# zqU(;ntH%&64JN(g{)KL_i6*yd4WCM5Qk%3>X-sO3o`3#1bVWNj#IBuDV^Rx2i>c#i zQOKv(yatXkgkC4U3LR2EfJ*-x;*>6nc5I1>x>|BK=Fgwd7iG|qA+kKlwaCcTu}Gfc z8y=7y8B=`H#hSG4Xair_G0%id1l=*x>7A`2xwB2DKEz7R4w)*^zZ9r6vDnXkDvIHO zQrx@~a7joA@qu?|H)hoEP9aCguWye2^bICF8L;vbn)+OgNjmYI$%j*Da1_WN>1-tv zPJt=K!2c=~+g)$`mku*e60Tx$FzFTB{%m|+MR`=wR zuCyc_mJ?nkzU$iRJ#!E*?7spuOkV7i(mm({+^WH#FlC~Y3lvTce0c)(o)eGFr0_fk zrS&1zG$;vvd#TikU0vVV6XjasG_dc)T* z)8XCMFO#BF;<|qMpP&Nihj(AUoJdWjber+JsOR1O81Am1-BXhiUl`2R%c^jslvJqZ zGJLayULmkna3UqI4jZSCUq27%T_LjpxB6fvDtbPVbm^t*SFrweg}|x8NMtyVN}Q(y zT=8KrlWOMso8*wU=Aa7f)W37?f)N4|Wy~eu1Uk#$~ z9KRW;$!CS%1k9~B4O25R-UQ5-~@N78>+Tk|h3n%f+GUE;Cl6jOFHH@cQ2B#qR5u zzyKG5t*}rO$F2nnwZ1zih;N)yY4lD#F{wnr1K}^K*^CWLeJQbs0qjf7VL*0=PwTy3 z;y}Hh`u)x2RpFQiSn}H=ni|7O0xw=c>$5wda$Aa6{V4Es;aem-F<;E0+G^`0HqoUi zErnR%nyKcvcBMMU@m!EjgR*H3G-sqzlHzx3!oh+6bX*o_C@4@E z)e_wC2@|OdFCNCkfMVQ;$%fuF3b7eS4i;AnSmPZDHk6642aL|fanlMZ))ocu9CSXa zMT^hbYN&iHRqv}1q^qf6q%cFntAs?d;V^a#5Tx=O1?;qzwtT#^=2$Mq=hyT+g5vzD zbW&%Oso$(g(lwdgsoy2*vJ+}Iw1P>VMFuGI^o(Px&bKo}i%XiF+dc?@>v7U)ZDg?<&w zcEzBfXK4xO`v16V+$blLG&ySYrQZXba+$&~5T;Yt6uVkT?z<1P1z8zF0sFZ~%EU%N z&SZA3C|s$sX&~8{XJET#VG}^2$F#b!*TU3EN7P%CAE`B1d*|>^>+0Mdcb)r}gRcCJ`dn_9MOSJN}_@>@iua0w}-B_rau zcT3Du$VziLwpcCw9{RWtZ_7q_>sY7ht@k?}Z@k}WdF%al%Uj3bw&hpPBfLbJ#1KrM zF0WhaSz5RB#3T83kEaw=_|#kH@p$SyCm$Vnq|G+{7~uj&3y;q+@Ki8Y@ndI;={-gDJ_jLqyGJO*P>_VqVF6uEpP@Dbpq*Nby z@I8cN1|SODY9iz1nyT0c7$NDa2=PxziL89KJV_8d}?sx)Mvc$&)3qtIRxznm!Q3d6ayIc_8n1J2czXN2q!B*qT%G z#g{imdJXuzl;wA74U8Ky(JKO3lx29yWsF|=;6r%gJ>X!FLWdHau8pF#jkqIm|R3iec;2^X{nYLy=igw z6_oI`EP5NVX+lk9@Xn-Y{v2U%e&h&@>#^v-BVi9{lzQwlErUkN<-dS|S_8~rEJC~2x&dqJEoqCiO!BbXrYunyWymu}Dc4L?PQ?P@LP+Rk-6aTO7 zJs7(TrIu`9Zgl#oRP8Zq=T}v;w-)}TyNC(&DZOL@NEtpN8M@6hsr-g{H=Uw4BtFL= z-IB1HKpqNcHd;48HC?e$(*4kIC$)wn!j459%{ze+;|AUe#uGPcv>sX#i^kcVUH#G_ zcwnCz*O(Hwx#F)Vx0M)1=3~8>SqF6f4(d8oSs|kPU_8Ki2v|iWW>zieI8l7dr`B8B zj_vm}GGZ*4 zMMDm1#{?#7%Xpd^{`v|UHd6(4d7>?=MA7#Jh)TMj<5C@}N~>-841EOTLzQk&QW*X9 z22F?$i2+`0kC#sddPc;v5cc=9qB(~EC_Eg2#wwwkFJE2L+Ul$Oj^ z)L^NNASr|zQ6qv@S~KD)(U4=i9aCYLhkLy%U51PGFuKuI8uA^^WYZ+E*<#>{#Vvf8 z5c6eP4~Vb3Qu^C5=8IxG{LY2JAhLRh%!?qj*F*fM^Z{nd+~cz>Vuy+cL)o0vft03R zxGTV(n??Or&EfDU!g*FBK@V-~!FK8Ei)jCnc<6LwqRb5(j-v#l#$14zkXUE^Zs3^qcN?KkcO)}>LiOT|_V z!8?^7SdZszoc{mPYb|S{79a)w9$1gNo9=2+Qpm>~k~7fn$Pb;t@4V27f&MHd^f7+t zg+5SE2MQU2mW~|A>i8>k4}>Eb@vqS3Hk?Soxk|?YyYFHc0@l13;*T@qo{7SZR4BA6 zGU3IvjBA;rA|QA#kqcfem=?=V1vb1I>r=C|Q1Xl8&jvR1#`?4{@_)$#(^zPdk8|Vv#^lI*zxW1D*pK!5AWziQT0U#ghaA13`d)mzGq&{zwnpq-it;uS1c=Ga4C4X3 zZAOpWs!mRVrASy5hcD%A#n20D-(Y& zphC!V;lXm+Ap0>&7)_B5!}>r=xu~na*#u?1_X|ug3OuziKn|;Q(gDTpFo=R+IZzq~ zp$p*ffu00`5qBgY{})k!khr&y{+Ur<6ivxz`(Um66+M)_4#zXq^AD= zw7m~_RL7MsSlwz`ZKaXhvdkz1la5TVEJV|h8LyCqXt%MXXb4e+Y!gDr6-KwQpZ@R& zNr2T7nU4UU1DM2)Es2nsS!{LRu3L4g>eQ)Ir%s(Z2Zz3|lQ`DpapzJ3Wd3oOq!O=LIgerucFD%=Qntn_i?a~CWgOUfEbG+PxSi=b%`OXl*1?9S zQDekx8Vyr@l!nP8?{tTqPdMRFvS4kcodCltk*n=$|9rEM|I+OXR4b}5ZIWeL!s2vA^ zDgZ8ZE98(Ab{YD#-xi6W@!YNBN&&Rn;$(#d(l90A;Tu^?#+LpK~- zCnoBKG*KAShHVQJFKV@`SZ6hQUz+6Fu%(P z*w4h0l86%FZ$X^?{F1If7p`3n@FOUW(7`X9hFiRy#Y4^hLy@BI5?Q2?8dFTXDWu7^u%75IaP=daiD*T3x_ zhG)Eg--18kwQKnHTP-V^VG=4&?JM~0{L3v+D))KB1o&8g^Ev$&bv?V&$9VQ1LEe~? z-~YCLmh>_5r|ZbBf0Y9x*HyoNvy;wP26F5oNay|pE*J^^*ZUEA`GR?8v(-0&AW@&F4i z;a7ZTRqNvb)&jS`=Hu;;3slRGer4Dy1;5My47b}7j)o;2cl^>ry7BLz+k5GY-TdZn zC)zO^!^=C?JhoDol1kvlR|78j_C1-v(vJO^oEZc_kVFgZ#px8 zfeRuo2CHv;j4(mK2pkZL+iX|^gd3X{glED(dIubXw}~6&*2mlb6HpIA3#*BF4b~e} z)P}aR@Web!oW|zwg}*%OtI{@vKzM8=iu~vAbgV(_p)ukFG{aLoTqE1>?63iq;e{Px zDV-I{NTFs_0=*7DtbZQfZchJ0aM$#+QaP??rF`};U3`N5Q@+7GT>o-i&)^~%ziu;fz#&rDg-?BHVsv~7{D?7jO&C)#J*<=6v!WTUFfAqg%Z{|N=`k$2^ z826vf5E}O%-wT0_7rdq1<+U0y1?~xdX->txH{-Ti_w_&IQ~RKAYFORAX3-jWLa$o5 zpjx{>zvY%0GrqlMH65U9zurw)5*~BMDzLrA(~CL0qc3V>JZ=(%cG=}W$!7urz~7j3J4Npfz^_8Nd$*`EAGADBk>yG z=iLt2APAwmb@MyzkFELkHxR|)n{($1sIWU}O^0B{?H}KcHZd_T9T>qvO=Aldy>GW* zExG}UMxmu~EWA9nvKgTt8o#srtKV5u(t!ag3`n8{ zp$ZZjIT`{>g-ZoMn5EGhcD;1wOuU(U_tNOy>|fKOmNg9wp-|EUKk+0zqy}z0`5- zayJ}h!ZNg0iy7acwZ&Xh7GBMG9Bi2G;hI%Ky%Y29dfbG-5Po>!mlxwD^J>5T;sM_i zE&-jjtQAU|A%O0lb@x5hbEEeN*zkXCXEQ|+cYz{~Egy!)Q9>n*$c=Bsp*EL+G*tLI7^tY`ubimVQ1 zx0;lG7gp@YO|&xI%b5bH!tN@6&8T1}WyWzhWF85U?+^2L74a}bs=hxwV+ND%31hO( zm;ouO)EdBBkdP)wiSn>$&1wm%f@YNgHp5=5($xR>Y6M0?tQ5+IpfE@>)|BJqvgiUY z*eKEs3;W5Bz3QabRH_w{X?MI29!SuIK|Q9;1`N!8QC$ z9+A&O@_C*P1`7y^YFa_-&iS=FB{4O zx7l=`dpXc17kGbjlIq{KR(`I09`7J@C68F|F1p`Q6}E6EazLEx!<|OYMP8Xr9zqK0 z>Z?W!gU0GPc#6ZmMEQHGRDBI{ZLsS;fU`vNK5;TMxTX`EBV1GA%e z?me!b>HD|$r1GNC_o1-QRBC-a(gxQga2vzlgmk-Ohj^K?_kE*+5HAM^@j@%1Txg{h z2XKGn{`G~&aX95=ndA{7%&tB73dj+Mpyr$Icfj-;|6a(|IHV$4CcLw+ruFrk?02eVVq)v&@PD!)>_)v0Ef zML2rB%46Q@>{*H^7g}YYIc$jkh!P+aEb^i>-IG~&DxQ^ zHY5EdE8SpCzXmMh5k5W1rv-CiRFN9NDdGsyt`F=M2=`^Cp4X}H!IiVhP+mA=(}%IY zsa)+(AI26fJg$4-f17Q5V;!+-2AUq!=#QfJ$s^fAqp^Y0JFkBFLOYykc%$NtePA{e z?j8*%(NrPjo8~|NU>HvWvpK+Ut=P>eWkmFpb*9I>fj znzQ=MVaQG^&%sq3Kd(fc`$h2sw>=KF?P+|F+~_iF=7*oswS{BFoy-x6K98HsTon4M zas1;oCug_DvztTK7c*+yZ^E&=E(um*n8{cez`UoEAo^laEY{tfUCNv^CJu{6)h}m0 z7MHMMGN*>qP%$;!aEp{_hS#ye7*vCF5uK-*)!-AxeL5r38H0f77&fF&O{YUWAn90b zknYzF)Nj!pY1YB%6qs3iQ3Lc8fE2iQh>C~7C-k9)SR9ETtHh;D z64Eu=xp1TtFs7~Y8WpQ@jM-e6k}u=JlE)}9rtw$r`-v&Iz64jD*6dxq`ZMX-Tek4H z+b&Z(e#S|o*DS=z?5xsQVxzT&@1^Qe{hFS(7Ekcb?affGz|#hctF zYw;$yBSW5{9cCWd1+7r>s17EP+_uUavPx+v_I%X8?mdq7xmrp_o7|?`D@VEtN3Q`G zRd=c|kh{Je4*aa==2lt&L=hsM?f`x9816f7;U)3k{40gI`s@0rT>R=;H&L7ueUdcK z@^N>Y#9b^W{P59&6tS;3jwgdgzT&YO(<5f%5EckX*Y&I(n2v8D1U-Z8X4cOEk*zj)KSeHd zuiRiDQWjx7@jl6Hpa!S-LdQ0tU3*`Xm|TPriy0}in`K(Wh$8=0KKuP?(kraT@4i@D zFok;qTy1&`eD&5;D!8vM!;3~uk(~p*2dtdk2uqKYwsR2$5^=tCg4+0X^@NFX)l!Il>-!>@IQECtpC<^(s_Kpu()luBPZJ)XEUR z=r=Z_H;Qa@OV#2MK?ddsiKMSW8=?(9A#XopH%#r7w=X7wHe}VMAv*}vZ5ez*M<8J* zuu24s#kxLsI_N84a0QhG$;pqd1dI}-%W#@gS-V+H9?`oIvvswZuATj2i!S?JEsAN! zaVyh<2-JF<_$S0zUj>BRa>AYe3c2Xu+7pNI-!S-O9V4mqZnBoNwNXqB=N=9>^a7igczD;)aq^CVG|PCkkg#DkkFH>=SToB0C5Wl5)cO0;*R_>O&$&$ z1DBiF1J<#uP-C~R+E?PX6p&F82dgrMKOc+Z+oWlVTRrf4af*KJeGnjNg`7tSFmcHq z+c2=JpDiM_@a|ptJp|*h=tPz)&K(c_B;pQ! zcVb9!)I&(lCF{0^ zppT&5(~av0Lt{>_W15;hRwZreCCfnGAd3 z&1oOJ>1%`AcVg^<-AHTVi?MKPghTSqQoes?D?cBX@;2hMm$i4+>GESwFurRnBGiGH z7C&aTGp${TF-dx=G{eCk)8|VdvObuv@YgptvE!HhY=_MXF^HoFNkXhy_XY zx~BA{_UdR%(O(qA7SzylWR?(ZH}<3q1EeRvJ**r8k55m@o+BOA0hE*JJi8QSd%MZ` zlh5)=w|R6;bpPAi&G=Nko7nHLvZqD!ZnA`)BM#%zSa5pZbBNCmy+f#;Oisk4o}|s!=q!*37S$bRFJnAm&CR%ML!VZyotj!aci1oB;Y7g^)yY?A_GLd0)bY z;7tWPe682%Fw@6Ea9V~GVx9kr-9CY1^X=>PbH)%hb}-MMS$x?hThv&p2RoxDHlGp# zZ<*a(Mblg{fMiJ_F!V+?KC%dhX|+b{_TqJ%W_M+Y2_yqJ(&)sL@Wmf8U~LXO<6>3s zMl*w-fRtBNsRJ~$%KfHcpyAz+jteTAeW*o#^%PZSR3%Tqp{ z8s&+melp|jDt`~7!!tlg??!sPa5n~JqD+TR{dH;%pE^#$JAofcNNqA$c($g#wvB@J zt?hmo-HL^~%=>Pe6cAwOCBg)8;8SxoP3tzPlMH(C&F~07mIEX|k$>JcTgfJFivrT<5rv)~r&@o?}U%DlI74C@#T#e>mF_Ldq?PX(e zR8Q|FXI8OmgKODHr%I;vRcJ(v1;CbT#%vPl)fSi)w$p$N%WHJCJy4J5zL@XU+WN99>y<#|*G8@$k@ zw@oq*PXKpqitKA$;d0_XPuhKzt1sidz ztjNyJOvE3#ADp;k7&7OM&;^)YFIf-QNlRf?l#Qg`O^cADFQy5`>^G)nLg=|QNy!(G*E*Pt1lA)oR0FS-!l;7 ztV(W%{dXLBJ;K(-;+Ap9#-4?m9S*ML%)hWeS|?6KF;grCK5jX% zOsibOUsR5JPF)`kQGt!D`t*Fp&TP6Kj*Q6x|F@YuBD=iiIAfHoh+qtQF1@HnU>!-u z86Sf&f-`szrVL#jUor}anVw7Tmb%4ckwBCuUR#x0={J-|V)@uqPwKPPb1VEjoJwxf zO~WZ<7*E)rWB!olt@-0-UiN#lK*;C%hcPJ1e8Rq;fYJ)uP7_N0f7^Wech8`QvgeRd zjv4f0vK{skoXHr64!^PHFQ00@donBq zu+1J3_cwOfFlgq{3hXJ=r)R8*bv*>?==mpoJB{Osn{bHiJG?^TrQ}$@4lzRb@K$>= zLMPpio=mR?v_4$qs$U1f+<~)&YoM*?AyxU}lG2FJ zeA%~8GMbi(u~+t1j>O32cGTvY%dDj>gl>E);aQ8XwW~sEKWNB~*L!A)<=FGi4iW zr$awjHmZhQ?vluHx8$%?#8TUOgN#tuPksB!bnP`#`;o>PHw;(phjm{M*2sxK6qESq zDs@{dbp-plqinZz)$WLO0qtV*B;25kWt<;an;vp;eUOD4O+h1wJ40;Cq{i)y+jw7V zUtwa9-vxzrPwsqx{NKLeq_-D(ljO+75~Mmc%ut=)0xYqW*q|PS;&YN77FncxPI`_+ zo_ptQcIcU{oV)KFoFDE)aMYrC(=L=%W9Fe|7pr~XQ5zc4mhq=#}*OT5d#*&4nj?4Jz!#}c0^iU3CvUiIW| zC&1Bvi$L&^7N6XW{)O3UrZsL8zb`n8=j3=tg!E^&0xEU*x`zY0huHRDC4xIJIYmt1 zoDnVcA=;IY-6PXrbD)3A#dZD$6rLlBqx*OMr-mYtN_e8EQ{@QinXN`K@jkv{3>YVLGj>vHuSf0WA>S?qvJp2_=H)Ez|iO|;SC${v`?&FHfyOYx!Gs} z!#^*gXD12bw|D8r=`bA{lYF!9;_+XcFf7?SnW z(kaY#<5bxxEn;M?F2q))vUniza#3W~%d(yF-9_ zc`-=~H=e6dYCh|GB2Nbp?&sZKxJUbZ$zLvzro9?O!T960l%MMvc*8WQtBIUFV;M{hUJH+$cK_1-}# z0a;3>W zE~4gbtgYw#&Mm}R?%phd;)6tWrUMRq8BJeC;fn zdB%vkV253>WxFj6gl=d(6o2cnM>XI+qWTBTv?H3p1tB`20QL6t{8-)oYkt?uFEenv zm}~a*AV3CE&h6EKP92SiDJ=N6vV_?tnbn&}I6X&oUQv$B*R1-t!m90jFq8pIJ)FrQ zGxW3l)csTof7!K}ZT$2t*>hQYS-rT>j({BH!YZQO*#;zHJmN>J z*(sKBNMRU8AVM^oI$(oP*ZrecRo?!dguetXO^w41+Zjjm!`7C4vcg-+8rF8J($dy%PpN{$#S_ z%SGEV>9BuwFm0I>T}ThmuC~E6Z)QTJ8t59L4gI)fZzjBfDsKCoGP7Wm=H_x2=#AQf z7ul!ZwY}};e7!p}@-HSo?VHcfGnYJ({p^OrJP#ra9S7{)q0woYh5mRK-|OdJteyztXt}YMk5yHJP~wYIN?VS{!+7=-8#h0{%Y6 zKDWU0CI^$)d-pw8ikB(Bm;PIMawO%;t~?T%_T8hd6bV}V`-M)5?;f|M0EA^iZFJtN zTO{S-Q7PXTm14M3@}!i=I9BUEBPk*fSSdkC5hb#fA^~pSJ?Vmz&phv*9+h(5m2#`V z`OmJDkfeOim2#V;{I9N*0!jJ4E9G`c+2Tqml$33*lshEl8CS|AN%>n>%3n#!ZdXc? zr2JP`%4a2Ik1J)er2K;`<#Uqqx+`Uhr0jR4+$kvsT`5x~LpzWQD@m{QogCIY_S{RX zz!vTG#Db^)lM$r$m$3=&$}pM%&2q-D4(oO072+R1Z*s_$S4e*RyghF_d4DhVY2)X; zu-uhb2yy(py+>Sm`xdhI`&s}+Mj0cbBvMcY!8^cW=cjf)RZ=CmXlPm8P=0!N7 z@djhC)s^|<8v^!tT!ZoZYd6fR21;FUM{b<=!}U(yqauoo-`?a-SKh#l;U-VH^2(Nb ze7OCyU3ulybNsvm5m#P0G8#9p$McaZZ_&aV63+$Gl~?wtT0U3tGdU=qm-YMPC-UnmKYP#0=NW!p_UiWoaY@_8 z&mMjI?XaiQV=Dm6d_j_BTWMTGdKiERDpFv)?2x+hr4PvXi|VZwKh)du0C5 z?NXC05Uk%SXEXAb3d{<3T}YiPsRiy-K7Upgrj>g&%5a4731EH?dEXkZMS5{cZlx4O z2+Im(>Dr1qpz=hkg6Y~YYVjKU!eWNQFCKY$S%Q|>bzSVqhpUZ93Hs7s#$6qLc`MJz zer$aUkA4N7nSmLWU-^OEU+;6srTZ%!3D%Bhop#v}M1QRNUs*qg^&}$572vK`FPwwR zn^mx`;c48{n-oC}b}DNlq2g4w0#`Vs?09%VZBhp|AH)DuF}SA!3sMi0`{HIEffdvl zQ10Qipu}8?Q>Q5iDDeq`(R}P`5}Xn@tIxa%Jr5{<^g6D$&A3QVf%4)Z4mY|!*4;t5 zE_m@)BU=SYI41&JVeKn7umwPo@)%J4nH29Gy$lozvJrs3rbOkz`#In4FegETz5@|^ zI@Qz;>4B6F^DWGlt6*2ecmB3=eBP2M!{=ub)A1Qhgz*_lOvY!SRi1|#GMG3Z!G6Zt zmkndq{$hH=!e@|n7_o$Oy*eM-iWp3jtlBcm@6zpOYdPPNKX>=X)+({&Ks-^1{w~A$ z507XZX(1-ox zFSe8D)G+6NgfqiLzzJ4pi*R~I8w>S}5+&4fhh26;5~=mVDKJixybcx@Y?P4R5Vf3Og(zT*%%LQJauPrM&=QH@BpT)q|HVe zEx`rvu&DB*FVIhU3h);c(zz_AI)oEw!g-vAsfGzlU2dvn$3Fl7XkG?N%qHAbV0SN? zfifVh=Mq8?&k;mjG$)s0n0hXy&oTUEIKeQyMi_rnWLThg+|_jeTtR)mJ?{Vwle*BZ z%@&S3S0Tnx#8Pb`b?tpn)N?wAtyh;kvLL(itk&GDMXsyUxV8)DSQt^zAI*|A1ho=B z14cxTv^yO$E+CiGu$Un|eGvo%VO>?QE{^44aRf$S6E6ltqO4US6L~x$Ee&m}R%Agv zhtTpNS}qK216>?Kop+Np$`W17C%S~!=0S4(0!_f2p%T4_%*BL-Y+T{#=O%P}o<{t= zgLitdB_k=5wRQ=f(8%Orb9xlD_HNU3n5GyjO^W~Mh_Fyu}GM5}Q^*O<6b26vmWv|Js5G@68 z03G$)5eWnzhw3pXpjqP!Yk_N`AjC>|)$c1aqA<}^2z_MVACCtZ%>z1y^< zWAB;9uNjjO-7GIrh z4BbhPthZUXh`ua}yL+;X4nCogAvTt%)$UjJ(B}962SX`B&?UAnc{zb2tjHX;5AS4c zOmMaF%Zx`n18_%>LC+x2`v%fy;`s`m_k?rjcSTewVDy|JYLg$CVz&)BFNl0vOi*g$ zL0KK!iVuQ-v06@+>2onX4e*4!ATl$Jrur=%0m&EW@ESFQdSQ7Y!0+B8rdVX0`}tkn zEWuA4xE13a^hi2S@;IDg&*56{&LcRmcA3Hv8969aiq*;^7AM}xXTEj}SCVO2;?5=k zp5r(%r>EO}h(#`*vIDR(y~7-|945Q+dvyNT{V^55Uq1f4m0b*Rvnqw>ApY{QhvQZs z@4F_UdDl_5`zzu#Fb~-a7I+u85lLLk_U#hOndv|&sGL$9mQ_DzK+h4t^j02FRhoz~ zmmWdMl61-CQWD`5^?R6~T;z2LHOUO3ROS7hAXKjrXDsl9Wg>|@P1UM(IwCRW;Tbm% z@s0w&uu~X7D{s3trUbEHiZTXOZe=V!U;o;$U#;m?Wkmv?rO8jpIWUjPhP0xpq!SD zgz#Bl7Se|CteEM!LC>g-mD(zkG*J~8dB&V4E|^)22tD?+)# zw>tAwA|Fp&^PIAOmEawbB7yK(a}@OZYgN!eM$RDKu=r>j+4dF7TgnQ+G#Xk#mH zZFj+UmE4AsFL7CMpQvZs%nFYBILW9+cN zm%gRlW!JAnBujCe4fh|ns$d6uY>}+w6H-UoJvPaBYDgF!6O^e=&QtzJQ-c;jhUE`n!DIn7PJ`GT*^>ruIod8wv5N8*FGG@!jXc0E?ud-mb_riIBar)*hytL zfEQ;LHmat`3=;21m@Y(YSmVJSlyC(1|M%0FV?`1BOs^~uYVic2*tZW>eYV}7gNa<< z)H&c_$Lh8S22#Iy+! z0Bxu1=deUVYtWvz;WBu|qFSRAkir>|tOZoV0ZZ+B&H~hH#Y{aKoJ0ET>46GqsnB1y z)9@Uz<N)k|yj-3K9etUfC-)L<&+Iuj4CbSCIL{NhJRgRrdl3qfNlS zfeDBRz!wnG2PPmBxO-x4U7cIi94wJKHs7R;cf`=&xlk#bC7eO)|y7?=rrS4ELY(yTwm~8TCX*Q0v#}|Dy-gT+2R_8tTd3Ro#Ed2t*Vm|IwF;*HR|tgc@IJe9Hr&8`BwceU|G>#xqA%@&Ja#O1txJwgrgD>j-rr-J;oHIR$z00ToThfm(fnH}gCUahSAT|2^=;sV%=FO7Pm213x;4Ff0qRO+Uhh1Z4vn zo=hZ_V!yyi1@aECA-#9Y6Zo%NH6i$qOhTWdZ#=q_`bJ|4piD?0oEg6T_`ZnmT&$f7 zarz;{nPI~&c(wZc8vHS$p92+WzYluJHmth{$%3}uqj4iCd5Iu;mZ$Gv89w%s6XM*S z@-8=)NI13{18XUA3{(`8DE?mgbS)aU&@)YNmvfj1w{RXMp-flbGGIIj5V(Yh`DZ=d zp}&ciPtRmlM;?kx*utYvOeGKPLP~#~E|Es5*k$*_4@+tpd4GQuIR<{qn!@yvGm=t= z8rEkv%vKm;2RL~Yy5s-_t3?%Rf=Gir<)iY*QFh`|uuY|uAGX+Ska7I7HL%`f_6U%` zIr=LSeuxPud71>`vCrb{vnvcr*p{+vCv_YIK|qC#5OKC*?ctn(%YpNO zk2j0R4<7*0+)Ob)n>~?*)i;Q+tl3$K3XT?^LEBEgseHzsCxrb^$a*dSOSagby+l#d z+h4%}lqVeM_SX|h{T$*2k`}{LgFHd8+utZp^YPRqPc?XY#DXRv3x(B^6e@t{9nzv# zl&_YuN)5LM;R|zE8)*ygwRnczXAp3R?KdrNfjvhM$yRi8Jx3B$ehNJB8f#l; zO-1ENO&w!4cd9CD_Ujp|{x$7pfu~bLHO=bUOCp|IZnzScu%?ie;XG=n#6G-mmX>O) z(l5dZ-~CVrDDMORtO7IY=N+SHy?9BdpssGj$&lwOwTIl|NboWgj9yhvXdrR+M*WgEwCDH$$mc4W)Kt#rE z=!^Be8@oC!-*ggtGyS`{l{e)!FgN0Xu2bKVCqkGe5CYH`5z1twM48gYcj!a!MtHM( z2=?~==tIZf)fdZ;&98(~1rlU&^#t~_cjM&lMvPzXavos!Zsb96m=CQgwHR|&c_+v3 zK-a-o`>G@RK~rVcwYFDbsPKt4EThsHs;SdWPnX1k5w#)pYGRq}Shkvv=v`KW+SeIV zW}WPYZo#n9|A)AQfZM=9eUf1r%TvWiuZp&Z#WB1p!ULu9ya4eIA~$BvtF!XI4j;BT zpWrT-K3~5LVrUiOv<}}jl)`X1UM}P7FtjYaRCgW&a#C7)D514G)F|y~M6Szz&i%o) z%x@C`JQ-kyqxCr3TQz|Qqmxwia}at6gN@4~ZVqEof z0a;G?t{&{*ex+13@gs*lcme?=^u3TON#>a|ouUHsl95| z!YFm`XD&|UTb~#Ik@1@Nru7~S=UOTgfR#z8uT zZ#0yT(K~Q2Os97^a=K?42l~_p&TGU?kdB3>l~lAXh|f9g{#|%BB6wcX zo{!H5+OQcSgEPEQf0aV#8UBuW&2~S$3H`l+Sr3mv1qU$0TH&1YpZ+ViS-o9I_ZrXL z^;>qz?xNK>>W^Gx28T>gx5a-DuQl$Qa%bIUz=l&#e8Q>cE<9WQh_Dfh$Dm-F@L^Z+ zgn=iIKUs>_uqN4rh1%YcRs09~;$+wbKX;1E{&osV{bf+}MfB-)e;ID?=XR3JYEX9_ zE(Bk*ax7^NyM8^;R-nssBMU5e%7p?>tBJ}YOw{lu*B+t&yV-2Q1VC{MHyPzLS@NePTAM4 zXs0-)Y%GoeQ@J<`$a&Eykdin+?W^?5MC>osHM6ZApS6lbz^9=Hr{trp+aT*sZ$cDN zp19#?nTn_h;NDQadiNOx*tXQDwyrMhsX%2AS4JIZIZ;00W6O^5$xxmjgEFRA`qit# z9J`$M`}P`-F!kI^ z?f2Qb*uLFV&|Ih?cBt&&+&uS^mCFyR2je31>)VZO#YJEqpLE6xy9lbVFB1B>m!#&G z@tJ2LI=qMK;A77b2)y#jX*Xo861={}EMApcjtY-G_ck`YJ0CcKJjb3VM?dzwJU_P~ z%mwS%bD7aBHOa8s&|HfN1@%@vN8Q@%F?H9nW9fS?`gcwH(TP#2Yd4Xx4#e3!;8m6m z2(@LoJe;J})O>&JcVKn97sK|_V-P`F#Z7pQ{zPLSQOO=%c!FjrP(^{s8Y<^*gX<1jr>U51sfBJeJuqDPEs0 z9+uQW8;}_UfHM8I`LNv(eRE`Ry<=kq%1ht$Wi$1~vlm`;(l3bebaeW_{IT<&d)b|? z&)5dnC&Z+s_f4(D%e-{W9u2PVm`oxVTu(F~m&;c6ph1>I4qO|PJNEj%-3u@3QZN8~ z)N!-)w;yE8W^f0X8RKYdUX|w!L@^fC;||0%HVP#*qJrsE++60tR;#q))Qe1)mOz@! zDWECv$jQ-D2iE4oHE~xObGKM<*?3#^0Z$jpYMkvjjw@!Wjk|7{G|AmquhzF6c1XT& zzSIP9%KM7cw9-xP!YPBLfZbo_Dd~hBd$r-KJQZKMe;Ci}TRs*xrmP`GblTi0`i7gn zA-LmpR^KYe5oaz*MPEThG0w1&^sKzFYF@6*s>BJY*Enj=Sg_=bcjoI9rf20p{8M*2 zc2c{l_oha8u-SXqc>|w|2)b@|abbUQSQXaAxDQLM=I`VCnU_mxe;Jp&-ouN2XdUL{ z)&C^n3xDRsPZsMNxvN@+_-3HS$a-_3re&x^${GdruRbl zfJ(z{9HkRatdTc3FRx5*Or9XVf&L5U`rQ11ZwR6-vv~Yb!>3DQ_+Y4xecT*p_~cEEsYX5?6Mf>(C^;-7wVj{Ne8udV1XX__{tECH z!e2iAWVX3;${8elWjJiqqIR%nl6vn>!&}q`LznBpG6g4~iM%41Hsi0u@PD>bb)-`9 zLO1!#Qsd*Yp}ibLq1+%3yu6g3ABt~){w2Z{&vQ?CVKM6HXa3$x`1^oqLpwo^i<#DM z;BTpz#N5taB3*GsxLHf$9kawZ(g&TC&cDFebxfddM&p}&kC6O&juXNC z(I}q#qug1YSix&J>}1awbgVnXTz|1s1}T+x34wO_0L$f~AouV`!}t;-8(b6AON z082@^%m9h$3+)BYg@bpiOB)vcM6_h0@qz~1+nkT-Qbyvkj}5T&vfb$uelC%{mLm&W zNy|1|uwu9HdGLwM_ShO;q~?NX@<=|(ULFw$Awm0lZV#4l^z7X3jw&v3FmmNJgPPs)jP|o2?ZkDr<>ADI0Ycsh4Hl?fJS5 zF5RqEa{Lx@P@Quxqnywz#~eY&sfOrzEm&+_UmQEDlvd2vqXevr3Z*2~05P+Xm>GyA zMAzNBm1Lud$0i5e`s8L)RGOL~m;)zA_ym#ty$Ut~?mz|OkC1XCKGg*)=!-B-9|z`} z)R`zRj6X32agsn2$S!#@m0Azf$=&V#I_CWb?F(Wi?_tUPZFg#7fek^QRamDYd6>i2 zDM)4q^e;Wz?76@?mcD|4J;fFAL?MyTU)R=(&Ib6@DxoCo)0cz{mi~qF78t8at_rva zT?bPt92>aJ$4GYl6(oF~cFp_ity9<4J1D9#8UD8%x3*zwUO@ zrkr_|^W$`zWpwonN?=cS?{K`Ez0&j`vuh(y^&QBl7ppUld`L&&?>Iu@TkFt=blUf< zq)1;A;(^aTx6SOIUQ5eTk%GmTjtJlUS_Pnb=AF}7AoV}&_G~$RL4`;vTz%Jh7XolE6 z&3im?j6tFKpXm=72lU)!IZc}72n``v_kxX_E)s=RwD_e zqE+tjV67~(QtDcZ^;mEev*CMm1x72j713MV28NSeljEvD4D#S}~Y2wT{y zXcgD5{S}-xU7a3f;e2WRezdEqtvHBpO85O$?UMp?xJ>ka**XN|GF>Ip`mfk)ne=R5 zMIz4w1m30-)jG7sUWbIGE+$oJmXtaFLJ~E=M*Q?q1IrFM>y(vGqfTKMTiY*tAIt!U&|IV;Xp&r3m@-1s z$oZnigS4}nvxTTGUq>R;cBCf?%Wvy?KnTIIiV|kaww{Km+`NCT^{z{G^A|2;pj>|i zCP%mKu|TysM5wJY5 z;LIEg?b6pQNUM-HUm(>7*DYMbA=ei!GX*i^l0i!^KWLkSvy9=JZA^CkUX>{%Yb>~? zjwL6J<~?d3>bzZAHXBdbePr#H?0~oIS)E6kWbpu8U(-Zj&z*`kR}pDO!#?D&%rmWR ztgu_ljb;A=XKpX`#tF??TykAq5Yc3DwR`rHeytU_B0b|Xc3+ZO*G8wF>{?xGNt!_P zY@Nf@w`DEG+_R(!%mG`@(Pj1i>BeQZTI8hE#c}aPxtt9$p~d|n(}JPpmkm@6`%ce-ba-jS#bLem_QP^ z(SdTapmkD82uv?<)+nO}y{K#1r_P5vEnbf|$2Y;B8}MKWa`tA{7SqO9ac73m zTFr^31ywhvcNoAU7oD+$6VzH#*;hB~fL-Brz|}UKXZg%J=Q&ZR?<*3<2@?mo->p=J z*jpsGK>_QnRNB}*z0|SS_EP7ouJWZt2wY3AA1jxuE^+sKVl!$9p_a+|jjn}GZ9RMK z+6>FMS>S;;!%&IucT_4`%=A|r0nVH;e}vq75-e7V5+Qts-8>(-*Md<%ty3{zAT26r z+GiV}>-<3zFf}lyCB3Vji?B){>(Q$g4F|Qbptm3PDp{1Vc4f-DVfQV|E#;JL_)(fxp`pSNoC4cH(L?Xs1Ye)3N+4*#-ELkhTOCCg+>=#`=*}P5EnaN z74u_6UqeJ2gdX9LTQ!UhnRYAgWr65#N%*5xT?!@}u}ZbUTU8ZPMt(H68;3&)?^87c zwdWDY%p9_8srnr<&2{NQ)f?6-M59}>o{H82FqbYp=+t}l*BKFOO|tXUNghoYq8sb4 zkkbKM3g#sUPOy?O$-=h-t5!6(+^?rq`5l~M_CC-ej`WoS{yw)S`Wi0#0N?gi3l3wr zTldI{FF?(1JNh7u#l7AOgMh*tn+C0-2I@ThRidM|xP{d{o3lf#2KqDf59x)D{2*mF zc2onDhb3=TZFe7!e3H9H>$}wa?8?f~vh-GAN%mG@Y_8~;qR$i9?o8Q{ebQ@!7YdGr>&YwN4*a_qM$Nt128%!A zX_P+6j3ZSXp1QS6W*Jh&>1jqP75U=$l&Ju3siZE(xD1WS0vJ#bqcT`U6DH# z=1f*a?$mI)B6ljgBL3tOmy~obd0Njdskx%Qsm&j3LI^@vzGxvYC3SaRQN=(VkBOwd ziA0;#dNIlysKEVYk5S1Qbg+r+w*iGn;q1PtMUbJk()4qM8IWf`gpft5G7-Y({fWH# zMQwb_xELS3T`wY$9})|XTqGx`uypJCcw0;>;SYlMJaq(x9g~}$7VpMW+Aa&{=*qZ3 z7J)4b3q`hvb5|Fg-`#xx93nMO6x+O&D(RuI)BC%|$~{j(!b-7$EFaFbD_!^1oRx*y~hwNewPE2&6n*F7mdQ zr7tZUfQeb=wS`U?O^8Z=$Dpn?j2m8|z3P_6*OYG&N{1rqmbwh+Gz-b0{VMLA@uF&f zO!u~VGcg4#h5-AHo~^}YPW&3X@AE>8a?uN$iz=O4EH2=$1jev7%ufOH zWx$-~)cd!;(4`aUTqj|&r_g^W5pc6loi+*py$Tl?7vQ@Z->Z#_z3;*p2F@Jgz=wK+ z8f1(M#;fNIj@kq*mdj@7WT`kcKl!=lQdp4ul;T;>FStAE*~hHWJ+OD{;?v)LKnjl9 z!bYcDAJ?}z zH^SQ&qa8hOH1d}OUU2SDrX>(76d^l%GRk&8Q*6Kcx2HJ==l`%&8_oS@7GeJk*2o-u z62y&CXrEpV&PpG3_|^5QdLWle;)+OuFnyTOU4Mps)Jd{g!q~?4**f zz~HUWgnhZOxN%#sP_4yuDpZTj%kYQv0B|uMJLx%U37DA638YP=HBDcdf!BJn8I%}bJHs}1w25XQ-VP%m+z@3&RhgG9eH91s_ zMGg}Vr3VnXup~L=VY}Jtm&zN`%#CrpkRyaeA&oTWJ<*lxlVBCW4&{l&YpalN5$<&$ z3U|JEH5vlP0^c}T(>i6=#AvQgharDp79F^R7VhMQrH-?PcTvrO+79Ni%4X+jJqsAq z$!s%oWWvPke7)i6gEehWF=uv-c>7!f7mwhg*v{I6vDRu#Fl{84%ViIXOBtNK+G))9 zXf*dn_-l;0TaJ7P1!h!@m(y3~wiF;HbZ=n!+3SLD)j4tqfx}|5oLS63@T$qM9nO9t zD)h@Ei9#c9${mxRE!xb;Xxfy%U3)WdmBQsK;FhEK4}+yKT#oP~fHjOm%^kJT2S(?-(fw%;m$o$?+~=F+bAf zy#L8Zcn_zPqu=~ArUR7OlPq-=3;h&M+YZUN4A%xF(tSApqYVH+W7e!s5!e{}zkVYFtpQFG^_)Cey9 zO@_VgR4Ii#`(C3jh8br0pZ||Stmo}< z5j#8vV#gUCPbW}3JPwKjMSlX8fUztbU8>(=7L9?Sk3mjljp%25b2wK>>XZ7tsZTn% zh57=#G=GBVd686B>*~78R3FNO{r}Q+f_35h#V&sSu{*nt1AvyWN#tW8kppN;03(gM z)jkWi^GUR_oVn<2Y^vpK98I<6UxZqEO(V^+L1h}9=g^Vbe+HHMh(eImC)r(LejzA} zkBne`N<>E4OayST3v)`Y0GxbER<&Yq{FDl<2*hLH0wK6$s8Xr9v61WiJ#zid*vJUi zgpup!^!QJ0>5Kx&ow1a<6Ek!qCDTA*`wJL6IR7LBpp@GAq!F2XW>LEeEovVb zuE+Od{(3wuKdPT6539V!ZSMRcm?=HIgcmE;wD&6P`FR_Ax;D%HhYc9q+qrINtNXX6 zG6)H|E&~s>7zA29HMEsw{YS@Th z{aB0#^DxjkxY^KXh|`(h%+7ir!21b!UydeD%4{Muuq3s+Mlnb~%6KgA!8UIhMyz2h zgM@%ZuhQArWTY26>8Q`+DiLtru=Rf{mvv;=EFnbj!p+4b>3=>s;K?6HM10y6ksEZO zHj$L=^G}x0&KBVb#0yrOlPHaBC(OTl6SK~X-+2)bJyZ4^iO1@?XT)&19^UHWZ7S$( zOLbu<^%K6;*AnbyiEwZAF|?UAB6SIf58pZ1m_+O; z)=H~cY*9R#LbyXAf<(NXqtj^YZ!rt1mu_x_^LC~}=&CJe{<5x8MYd~64f8_uzML08 zP6{hx%0&L^ALtTV{qW1@u|1Hx8K7eQ9fM~^f7DOk-D7bgkx%+<$XWdd zrXG#(ZndYL2M6e2514yXZFB?4IN#0^zM`CiCzS(p%BRZ zmo5&>mmw)YT6i6Mwr%_W`wDJ(Cz~H*ZJc2fj$we(>P zPWrajM_l;e`QxMeJ8?Y#qOfMhsExCHBaS7pN@wgdMVHK7W;M_rPmop9M_4AYfBFI0 zbtzW!c>AY=^?PyUQ2ACGXjc58nb=pPJ~I3e06%JcDBPa<2pX$Ae&fjWi{_>JhdQQU z?-rOh0rOLK=088U^y!&+uY!L9G{_J^=7irqz@6WX@Lu_-c&$n;F!RyTOHR%QhCclW zu~R-GG(&lbhD+$fCETsAf(^(K!_V*6Hi}yFtq2CR=PfK$jAEOoRTrOrqzU%bC9;tV zN@>eSN?rG#x-ln@-VD@u;xB@^{-$ACikF*c=k&2*`miWEmI9f$kXDCo78B|u#uHwk zQo}PFQXehej>V|k9%1pzl)5wa=|}O%r~k8w?_Sn!J?8l{;s5A$!F1l@?VTy)+AvP8 z!>(M5$H{ZXm1j057V~MY$cYPl45EhjjiQ~M>OoAMzh2&ZAr_7CKRN&BfR>L{nGIQfng5G{cJ?Vr~4*Y3ZsF@TArv zX$>~<8E?@Zz#dxE4#=_gGd3&GZ6GTk6M)?Ud-7+>8tPwn1J)HR!bTxg??r_^w8VrK*H&c7=3W(k!QJ3IIE={ zw>#Dx-&7o_fFI`JcqQ02i9=A_rUC_BlmfAJ4j2VEyV~v=nl(-0=QMrHfdiOZ(@^3y zm3}Ro>5YnK8W&;n5iOya3warqL-zO8TsO$g%>bmjfbtsU_@*0Y5wc%-n>&~)3RT?ja&p(gSXglU9+u)-AB17W}maof)j_C(<1^`7b%3fw!?ZvMm zko%VAsiF?_LEg#JuG!UQOZV+6;|Z3mgH+a7+GH%jmK#WnKTr{6r&>b$PqhSodFrviFORJ7A;$J4q?d;$%E0(O{Bqp`@dxT2 zIR0dDFdm-`G<;ZJ7mvs5;wLxmdvbZ+T}Rku5K#N*68oMtr-YkuchGkN=++I>s0ufg z;sSW-v*93WAzpTAGdo}M6T@4w-LB6)z^P%I9rAo_fTRudqGViOCgg8sw@xe=F-O1SC|raHlM4ArLW?5*YF;=({(5C)jz= zD46=ix-B4=DDKzH>F_SAEqd3L>wLU09L#J1IqS?$h&{7Y!ytr0oRfq+b%#i+kr0$+ zA)LieULP=mVTM$=b#nKmEsGwi-;(gbWNQ%D?~o5Urmg>sl_Pg@_eEC@UPYN>x}e+z>*bgkn53{zymcFeXJd&&nn1?!Jl>MjXSWh9_TAInZ8S)JIab z$0rV4u8(buhU&UGOi&dL(=H*Es#bP4q`oQe;86s^$eka<0diKoMgayax9d<{Y%+%q zPxSa$v+;&AxIP@x$6@T zDA-_F2Ppd%;$5M^w&m+oVWq#AlzBQrc9^R=J@HzjDD3aXFr9kD%-b&C&^t^W*la1q z=#8-`yX&Mn+Y@tYc$KF-q5=a(4YVe|76|c}3)xh=`LQ$jc}vb7-(a5soQS}%r)cCCpbi4plo{S1Wiu$3;>@=SO02xq~b9|SdoA*^20evYpPN2)0uKt26hYJ<$Nkt`tfs^u2L(JZv5!c8 zfg1ip&YnC)+^4e+Sw6aoXX0$}NzdD4EM5DaY^S~1=wqp@^9e}K;~#FlIsWO1)zK?B zeJX@UtKfkuH8J6zf=|OYWy+%3Nry(Atkf<)<(#y%&>SsWF$qpEhKeCi4j=ZWu0V{X z_Bw`nK8fAVI>Gwb@YmNaS0md<1h%R`69M>2fJ+3VnLDjxPVpF)7E?c=LV>yBIFi%D zHaC_UK`-H{gyJ3)EGMmjBVMyxj^Q1n<>Q=6d5>ognmuM6G(YJ|llyF&+@bdxHI}+< zvs8AyJZBxR;>DyGT~K6Up&iis_tDu;s;gAji%=fGXF5(ZNX03xa;_nvy?tFWit=9H#~g~$RlA;pTl{jMXM8gRq$tk$&}-O50dLjggB5+ zON>WGBXztEj^97eTK3Q8AdT%fL2XxEnEMJyrMMRwszXnQS(iW`2KvyWacaUMHXbHD z`Gl7mK7l%_@%=Afy>Z{M1cZRWxBudS=V4#gBp#==oXDb$^Uch#6v$r43@jGf_QE>x zwnr~>L^Qt8KaMCcXN@VIoKel5go2anoPOzvbp`HXuVYeu%q2gB3j@yi0%>k8TAdmJ zujIy;<{x7s+A&v%NMS$H+VFz(O2ON9}#2JJD!Puf~M`K`)oN;~wUVND| zgq*%rI6;I~u#l4&9(>1}s4nLnXyoH4#xSxKb(h(7bCYhJd_+`{oeEf2>)TUT z6EUmil61{t;NP=%b@03)HHv@Hp1u7s`30q0YJ`jgZdrg0quhR0SPPkos0W31TIxEV z{spTm=1r&`Z*XA$0laaEi)@WSM>&l4e5~EDiQ+5W1F+2NdR6w|yqX85qLQSBIc=D+ z)I#S{1Lhkr^IbvI;(3GQ|3B<*6XiX7jcLe%f2Wq~HTqz$&%H(~Wq2k0@e10i$ zd|zi_H~}}dghWvOczPj3JMmAiRngxXkKifB)*PJ}U# z!;Orm+SN+eAPdXEP)_{rwoX`UbT;DISZbBK1zu&);>3bg0Wj9}Z{v!=&IeH6T0#KJ zTq`h^;n!MB$o05?1QSbVn#IdQSzJhj3`*v{jjpnluekPXSK7THGdy`H==HQb8R zDHxBaR5d^hFN)n6OLbcNm`-$m&BC47`RE)4AQ;Sl3)Qx1ZD8u1bz2yiVs0(aQb;XR zU3Y{=gA$2@BxfzTAE1Vj4DN82VsKY`w9W+hs5 zolmf|#7sgRX~RSwX{%{SNuS_{Czj{d{rdQmja?YZ>ySqQx$PHrs#pSzf-M`qNuOsG$ zuuO-L?$p9TfGjnM$fQGgA(Qm`OrMN!(Z#%&MG&1a08%P%bSaA*`|T5appqMgh{f^T zn+2p1o)@1@iqStTjB@%~j76wA~=R(xnTQHasmB);z{6G;mWXaTV+bUQ6*gF>yIFs+)+{ z8CHcx$tbf~gkRBSv#EY?z);unIHrF=Vari4TsO|E13Sq$F9Lv$E zmxQDwD4&gKCKNc8rU|gv2n9nvN>2!mjJCKcY4?c1>^9gQUoYx2p>feS z9Wu3*K$aL!3etn<66g428ip>a?FbMd`wA16_+3y~_vFq8ve9ioE!r`o(}M4=p|osHd!B zjBW=Fa9E5UgKssr<>7OEyANd0pT%vkoXu152jf48Aa7X&%E6+$hP%MsA#WTGSMljd zFndF(m94({n;Rd5Hq1AFOXGtFwzOB6{`H>t79)D_0OSqTnz!RnWo}(<-MhxrwVs2U zTl@o?2R0d3>o+Cx@yqwrrWZG#-*$e7G4uw+Uo(IHmb>1SS|-fzG6ME9@uEJl@e+^M z?}Z0<|9pHl@;NBa!Nxd-KCgR7<#S2GbAZoK(FETflG9yq{<$#-fshD?0}z=K-ubS% z_IYJ@w|=uZDc#}Oy2D-UaNU6|kL5|DW`iSC9^7nownVy?ANCJ)9q3xFyEqj8!RSuv zvf=-ay|)3cs=D&V_YF56TmmvN(i9^-LK0(2E=hn8DA;fb5Muaf5`|jSlaG5Z!JB(y zasvs{G?hRYilU4kZHH3EI#wM^9bd+=)?pY2(IQ2ll-F^XK$S+yOVQW*_@G7Z|F_oO z`qS`V1l^WS{%pm9n8b*hY^|B@9^U$W`W~6R{SXVAFtbnj@!;*F9Qd@ z_$nUYux<`Jj4%UX>+80ypM)JP!hQIwDF|7Ot;Pi}K`YyG&RoXfZvi%mzJ+J`M%4R& zt7Lt$$){glK8ut^DqUI&HvPDn0MRln_E8~PBzBQL zv!SM;kC5XWJ&6)Q&{52DIUt$6bw3qJW)b`I$#3TH`(%F4`qypjn~miYqUgduac&w# zRlW;RizMm2KRCSPf$CG=iY-}NwGlRMq&tdz2i?A;qc&RKc$cwsjlV4rimc6mRTS)#hOZk8C2L2*5vJUj(>rr<$lI9|iQk#FMM?_oSI;Ms-eZ9Et8p~^9c z*6C1eaU&i||7AR+eskiv1AhEQKdT<#8hrrI9!D6x>xbaZ`8!+NjA)zRZ$wo2J%Ym` zt?kjf9D#Rs7kJBaa&Lf0R4xo~?=*p3MjFHk0UD1H2^jv)sJ|^-A2Oo#4I#frESj>^ zSliYd^&9@Swn&>12^-B(BhXB7rDa7$MMiylyT1jnZANprIoezwYF_7WLXpBvMtihA z>TmIfu?mSqjryoTfyksi($UtakXvX&k@_YeiF8C;J9G|WmJqc@m(gN07!f067)G5@ zkN1$__jq7FEt)E7xuJ{&Xzp1?ZaeDS?)Ts2=!!6UtHs~cjCNL? zGF)eY&VB(^!7qM+=Rfegi{~R)SdGGyjR$mkumTTG=p1at(}(AWc>WE~F+9J+^NA3z zr{kG`2ekY;#>4A%c<#c}i{}wMKf&`acwWbI63=-&mxVYq7EcKtq&c(%&o}U_!GnAb z{Vks7@tnZ(o)Eu8nSPl=BLfCd;;&W+F%B`A$T{;~Au=lEL-F*>dJf?Sg}7!1+y}r8 zzVISmb_(&u6g*Gh!SJ~jL+4r)BfAIB{X$%agt;KDTvRm|Fu5pdUIrc@&wC3`H=btz zcN)(HA@UC)f%;u{2_qcUz5XQ~V!JsX+V9un{Y$_(aWbBe9sVT@a|+kLT$J-q`Q;A~ zG=`G!-`yenYy4s8HN0J&>mqGIA^4B@a*Cs;M~HcMC>NAQe&1O<`w+eh?jvw19F0M)erLEX z@H^stAS}j5Ve9dZcz!4kotDBVkGIS7C*9am-yHTfjx6?0C#Fawy7G`F=!txR;W+Wn0YV*V=c`iAyMr~^z3 zh3)_w1mzGT5r^cFhBd7DDy}l(C&{8Dwk+hrEW%nJAo}m&Bw8D`u z=Am%Z3ZN-2OiWhjC_8_R40UV4NYUQ*Xj^kQXnE_Kn%eyB?FcejsCn%v5Eug;gxd?* zQ>Sk8hw7uvYy5^vXEjv=rc!i8&~Jf8Q8=T?A8KyFluMm}zVJ6j(E=FnjWp;Rse3p` z0B@ubm@!@OEGkq_S*_Vn-(+;Oqct(*awl3jbK{1Z+oNJ_eOnk6nPoJ#w6+*Qe;C9; z`B}XyTAF25Z$yScB*7$Y<)EwBj!ECDL|GwKtf{%ZHB{fo^S>3P#S1H-eN}THiav+@ zWfiU&9oE*-$Q29u!@=k(^pt}rSeUR0qoKWBG(et1O`1p=X%4!=EObO8MuC-4ap~}- zQgO{KYAUr7$(q>VqG%SVze!N@3F<4%$5DZf35FsKA<>B;BRbpgr!msfBB)?Z?V_c= z{jL&fI{-FNOb7#3G&iBfil#9*sIsCt;J+JxC^is6djvxC7Nj@O2vb0Fpb@@sBZ?6f z(P&7tLUa%yEP9&h&)uTEqk*1g`g6BHzfy2Lz0^|>zqJTr0eG4*W8i-?MK=pSJb0Q# z3xq=cb2o&`pjh4BhU&Coe71^P+L7ffv~+2i@r}aP+wrG^{)FgHnEtdIO|!@iuq&lK zDKa*Dqh5!IDqI4;eWc&}P(reX(z8 zb*+(?=MlMuW!|!Oh+r;{$RkN|ZKSPfmO;ayEffgB1TD{~vGHQuEOH7^BxVuF@_2c7 z2pB3gl<)XEf*;u0!JULB2Tv{@%uAN&UygVD%-MLd@D$-O@qo?Wc>*rdm}mk_z>0^r z)i*VF8pQLML+NqNBDtgW&`M5e4~?Z-2o02rdP87DZS))WSA9dIEh@ZSLsKNr#y_JPZqY<5VB;>MMF6ML`6smIpm-`DRUW@KNDUor z_-NlvLUf%M;+}FL?uIn7zCeg?u7)^xs|@dX914p7j_JNA!!~r{c2=}FJrvgSIJ#zI zsStgb;WzIV;;+3DkPr}3LhekwrHZl_h!H(_thcfBbxdJU2+V)b=Xmfd$J2wy8Akqn zOcmw$+w-kh55TUp>H_&B2^_@1!ps0@Pl7i=(wBos$@n6nP2<)~vy6@~=B~z7VB&Xo zL@-~^s}B>)#M~P;w5PrmKCE<9oa$i_zc9vf(*xp!dB8NRlQGj^!fTB*gK^>b{)$|z zQKmKJHi~&hO#n0uS2RrGM97@5284d6Cwxw&vifsFB}z zqftDwZ0cmAqB+i>4J97R@ZeAN-2TWSji?e{0v)w=Qmb3&_g?l@PoK$X*;jJs;$>}XmPS`GWGNuo%W$t$3 zi);PSMd2pK5~lpf%jv?^r65ENxv9Ezy6xLuT?(F!UoZU`s4ksKuFUUQDj7J>GRC=w zO9n6F+*4gD8;H|gtS*%`VqdI!29+8eMqZbvdWI}0`>v@jok2Np7HO;RT)Z^wU)~(1 zEYhgh?4>Ny!qqeE>ZTpMb8+3;h=x22NcJ-1;p!Q7u}7AnDb_ZF857Qtv#BY_OOWu< zf*ZembO`Qp^$gh*T(Sw(Gwfy>xxcy?RDc3-x;@o1>}GP6R?m=i;Bq} z{^){cPWM{%47;mGo~|ylyL06E>M}>W)K<@s4NB=eo;w%c3_0J|K{!2QfRnu(H>O*P z?z#?Gn9`5S(pX()x7nzY>N2}Vp4HW5j@ousm&qD2&UMvgcCUCIsV=iS*VV@@flL^3 ze|4GN)vg`YGwm9A&fK|pZd23Z2ovF`QWuKNeo8p1w0fp28W(g=^-P<3N1dylX%}?V z9n~}K?i|%$J<~4esHdxE+65hTqI#xH%j9zu`xWl^*5%w0qb^j>v^ygGd8!gM8kH>l zHm)EFz`ot=16uZB3@mJmtX6 zIRQSdAp43y*lo=%%b8q9mm>%Ea$Gqex$^A06+W&m`#Ry{Mq}RtJlE2En+)9#yRIDR ziVC>N{Fi2A`Id?|dOwf9a-NocN-HrWyI?j#J{Q5Lu%w4%SW<|?2(yhxLLWki%%_?@ zM`WSl0yx1L$aP7fkiM1dv)}Evp^KgDYT^{huH$eSnyWuJS6Nl6h{Q?7OitQCf32pW z_i7H|zn|Rzt`7;?b<$1)<(+JXUUqevGA#(|AiG0!?uqR(TzE3KmoBAje(9qW+}=r4 zGx|q4?YG`3o=QQrr-%IdU8Qspw2ad+Hk^h}c0I(YZT}euwq(~<#-ZxyYM3?JQ$LHB zL0FkK%rXi?MozJ}eY6KE52FQYo5oOc1H-goY1_8O3NzYUBGFZle!UT+y%jo*sZDrm zZEkF=4>i(T8+MPNwD3lTObsO)qP zO?_LtKhW490YecK(kO%>cBfGoF(6krwYN6~O%0*Z9t}O( zGuksA?fn1APj+as$X1<{3365MNwX0qeL4&z!?BW7l9Sw=O5>13EC+Rz(kf0v@lK*9 z;?V>kjw=*4t8pfjU>5i=(D68Q8cCaWTt!??R4BV3l!Fa<-YOvBP}OtoutMb+h_ALz zO_(S>e0;@C@0B6xz4WzebPxsZ&L4Qh|Q!DXconIDa{#F|*KNtuY1ts*(WH0k5A zB)fW5tjv{Qb*Tw%c&s{|hF&SLDsCh5(CzWKii@&~oLoRGv!cITxTKeKq~+SIX}Dti zc}*o7O;^$>?^(juSEVH&@4$dII!iFjF$J=R-djqLcL>tyFfElJQa#c{k1_Un=X z);+~(DL~)BO?e4v6Mo59k4-v-wa#At`|{F{0k@ZIN<1&mlkZUFy0CAWvI19m857~d zEyKP%Az`jQOKM=x0mNNJah?N9e9#-k0u!s|1w~2`rSW}xi7zo8ahV7k&uPwbe5RGY zoc3swKb(vFJ!k2=0Y{z`DR?|&v^!SNU)R|5Ra7Uy9jaP|i%3NBeu7WgOQjyQYCfes zFbRs9iLm>gG*_f;?@9YM^wx8Q+t(~IeKQe1fD(LV;>aaF80m@R-iafqv`c(B%_2Q_ z6*ZK%8AmKUWUA=dJEcIR%{?p1=A9E|2DQR#^&+`qNe99G_x~v^&VT=c{@)V*Wm@3> z62M=kUH>~_t*EGDJ2fa{2N&zVF#*)}+?A5?=GR`sY5Web;E^;DjM}-xCmHXOj?o^q zbwhS@hOQ-6e>Z#8rp@5$4i5S4|IdFenlE3!1miGT1!LP$|40Tf*5l)2Sv0SmuX|u~ z5Yy}(J!dx8_OuD(-@f*X*riEtQ2eC#u!|?oXOj_Y!^_4L;r4b>IL(5o2Jm5%BXt~H zKU~^AYJ!^tw-GaQKimc-h1BC6zm&J?8yc}Sk3W7fAKPln+Wc7g`;Ce=*pRfdVMgt$ z=GIo|BSZz_eUV5M1{3wIytRPcxI$w=DAL;6Wh`JT7BVF95!|AswQNcVxNx93*a1Ti zvO1WHxTWDjvPwvZshzuU{8K`2BUqJ6{a1!ufpOu7RqVxCALpUZtA6LBguA zG%qkGf7481x6|84v5i~iesX#1l86(v6`w93e-wQ@I2`!1V}}Kj`Zs;9B5bfE$8)2JT&OkHcLJcRyTg zHF);Gg$U<)94@HY^L@AhxDUVuae8{-f;c^`a6z0N#1V0NR=`!nIVy?iG7wzVy!x(C zi@^2HMs;MZQ4KT1P&}Ck+7hOHFzjx%-zBLx0peyrEURyWkrxs#gJpuKLdg715VKM1 zZ-Xr{hZ>WniA6(4Ocj+wN0f+#Lq`;g1&H9iB#evshO5x1nJdf4qp60s=Hvk4u~hAc zfs*pmFskuG8Hkax3cKq55RaZZxvd=%@%1BLv@H@MD`olPAxM@mR)`vS*68s+oeq-0 z;sR7FKR7Y+HX@>3Pn&$D@JRlY&90}3j7Bn<$uTo>5<~I08p#)$s&Kw^O1`JPXTzku z?RY=oc>fp2`{Ryx{>+QQ)8+^_9q%_e-X}WV`RheAIzO$mM`t*IAv6XLkIpt4WCBCS zP3h8`=))G5--n+MS}Ol(iu*ziVz|WP)9`i(Fnj^xnru$<68wDjPx+sL|0+tS{5#<1 z_EG+=%$~AW1J%6*wgn90awol&UBX*fjNrC3u9`m8!pDwRqNnlOpQ4USB)QjmjB(BR1}EG=p`avME7aBLrq7TZTd#P-p+uzfTbY#&WGwvQ$k+ehMI9`kp)pi9xdw?dcBiw2=N4IW445_x2IL zOfM(sT~DvrM)>G`Rnm%W#Cy|sBbCcN#c3%(cPn)lm`UA+w+}fpb%b76v298!eD#rrMx8{gYzC~(u8u&tvK@B7hGeE_|4|uZ%*1B zi~VaXHjvaqCSc#*9UHg~ckaec;_tH9f8lRhtlvADpkkK+#nbmTKzT>MvyDSPRiQ}~ zItSl;ioK0g1+i238;kvh@w|t>zl~k+d1I%qzC`oD(b=Z>v_O|AlWw8w3!eGR66OCT zN(3GqN+^kl-FAhtxVUw!vKS+*)7FZ; z#@RG~iPDtm(x?F?KF#~g(#Rq87bwl8r*&!6U=o+U>nx2cVT8-Bnxx0mP+j%s)9|GU zx-hzFE~PsQlTa2Xw?WhV8QkWIWb?-dm>~w3Jr2-ce+h1ET?cM-5^ft!#Y0cXx)yR$ z#w9s3NpSMiM%voCCc`4szy>;7>bxa;=$z1En=ve0>u#(ie(l!SwkT#b5pU0#1Kt1X&Jk%%{3!vV7V!7Cdu| zhRDQ8X88s5OqQlOcC3!|Ww^TeyR@8~*L}NGQ~3J0QY5W4ve7ghuCU9AWsW}@#S$GR zUaJOG4M&-Er4uVRM1}H$W8*3~DKJhK5EXP3)-LNcU!e}8$^_0)*{@+~B);r8F1HDs z1d?bLq*#(fvy$K{Ni^#*k6sHIb&*yB#|G$}3qJRuR!D}g9yPXt>z2)xVrv5eqejSI z4-vL>+Ra8o7n%VTUgBSC5D*;?A$xWeLvpO}EY~MbEbT)h)>J{XA8g4fN1PzJ%UA`A z38Ei=AOMMxS7cN)I@4moaZnl?kR&&JbMXco>L|QuKze9jJXJQ8b*xOh0sCvIRCAG3s zUIlCmwA!El1s-#}x*PXLISQ-LsYeHJW5Gt#=srD}@C~GFip4I89lhR7m7Q)ua7ViP zA1z4rZX_Xf+)+*mf!E7vIqb=}uyY*tEgj}qbMh*4+#-(Q)#SMO^vBHWjyrr^vA`WGrxS(si&Z0ZI%$=b%>dPKVZCw2qRBi*~8F zAXmJ#m=75f^(^LM-d@Xcfr$;#011X|K^~t2R=MOD+JZ zz*&6LIwd5gnstrcv3=57-CwQXm%x#HmhC!-38dO?b)FC-1;ic0a8iy_l zjwYg9_({;Efq+;lHOPEQs;#3HX6(g7w5vSCbMw#7v_Y@{=@=#$ib!>P?2 zS}|(-?AhE&13t-BKg7JBB$xczW8{)Q+as6!*?eg#^_j2lCJ^V*_htCCr*t=~@DEh@ z9vx2kT>I>jpSg>imIAWJFRze29+$rdy*~mud}tCKU@|@Wp-m65nuPoxqI`&FP9+}q zzImMUYmlKF_JQfR-35b-NXQRop?3(HVjDPlZJut(n_ z-2cw9&{5`;{~qG-_c>g`d>@!tz3}fJN-974B0^Y&V1+Ob-`~S&Kcckz_w)NjdVj@D z@5ffq`vH^Qf3=z4AFrB8N^h`WzM$mTcY&9e_^+ImIUPHW5biA<@~g23$zZGs=2z7S z;fudC%&|^{u-5ODtqM;MLRjx-g=|I$YyPZ|2N1%#KOJ&}mF=&r*5k4wVst^cgQyt_ zb-`E@H&;NcXk6tYxx^sFoI1gT+w&r8g=ca7T_ncx)`=2cNS2d)k*a=lc93;fk}pp9 zgsR07n!6h;#)t3A1v9C+5(`3b#=}BuyXrtrVpr)9yQ{1atE+U#QAr?qj8hWGz4WdKU4Qf@3cp_N1kxPaOX;4@qrd(VUmrTHm}X3Zb+2O__fKJ7^}<9bGy5ns$i$^E z{ghJjY@L9~+=K5A`;g=Pf%SM>gtu*hHoPsx+XI1Bc&o+RgMm8~fB&wxPrZF_N-BSY z?)n~y9N(Xn)5><=rr9%*=%M~iaw55YrOsYX0@&}1D+We=j-%QY8af`zuD0x2y)J6U zTBymZI*^Y3UaYic@_F><-1!&71e2Wkk`JFbIHb? z^b|<TGlG;7)!i+v;Q|hRD$E zhDE(jO7iYw|6avZth=$-}q8-wpzj_eXHa>Cz2S!Wgqx(_YlP8k`?)j<(+lhcEk|(a|XyQOy zq{Z$UDzHfC6t>QBWJC!*qhq}K+9z(VVLOF{;}x`TMq>fy7J5>tlr!iJODLQfFh-_S z$5F`Sec1U5rPC%wEEbYm%r{Ks@ibuaY<%=4?6riXV10u}3f4Cy%l)q##v-3qf_{7= z?Y?QBuf&+`)ev_-}yXXxsKgc1F|-s*s3ZSW4f z!JtLK-GVm>hZ*#Q6RwoI+)<)jmZ@n5MsA&U-E*zA7s7dsko!+ms?SHFxpK>H2olY0 zmn52dmn6~L^_nRE50YpF)x(vm)MB78pR5>F;Gb$hpG}HBn*uP|u`8X!(ztAl7~i0H zVuGf|@4mTWTlZI`1aV@*g-wScLtySS2-r~69^OWxs4Y*#cg;F-#5ixXSS z6kiuoK$Xr!mSf{RyYbM*otsd*l`^isn?xdl>hF=C#CaoHxIDH3guD{9V(A`=yf3Wx ztV{Lv(%IY-6V{9#c>G}R$&KfK%4J_a^vHZYO^!?_Y3CL((Mm$%^-S(q4k0prnc6t5 zz#4E(6r-huw1VI`M;}<~P-#Mw^NhrTQgbTe7@xN3RU62D7NnoA2C_-3b@Zmnjg_yk zU_ZBIjJwEbDZru2BDjs8)^go3y}qcTbmc7eo=41Ck6Kl-CL8)>KP$H7P61|ib=8z- z8L7{4%_0lhe(WIl+l*?Ouxl`_DHM7|D%0?Sl+BX}itU!<{GBh;-S|~QPDiw~V5<@` zWnz%Y2Cn|$u!cx9iaALpRB#Sln7#I9tD+?RR_;pzqkNtnnIH4As7lFS4y6RyzZ5TM}?Ao z4p83~E+v>)F5h7p#*Z*?B)9RkIkKW8o4sGMm%+_QXN~xw8m*T~cAVnSb#cA28U}t?n=rDE%o8<>7FO1Y>iG-maA>{`$^sIN zSfEl%JG$iz_pUUdQPC)u2zCDe8T9tQOgKo_QboRjKoJ)Tvk$7mMlIe?B$xAkC>I*u z7^RRJE-C{W&!EB3e}Mn8&?|L8a)ZdDY(cSNpsUH0mwK%YJ?IsVvd;yDDlLdyD>$f) zwq%HMX)}i?O4m^E<&;z_UO-UUWcT$Sp!Zct(n2%zf-LQJxkUvLr zKT9}qPBQr3jib7HX zDU?@Zel7lO$DjCelPY#ChPa_ z_nAgKMlcYc|5=ABYE;v$`q^le%mJ{ty2^15hN#Y+6fFU zrO40m!u8jq|5;e9+Rhoh5?D#n9_z(Glt zREkrqF@7VO{{_>lI_>~C2*r3P7ZOWkJyfU#kHrQwRJ3I2e~s$M;tfW(OjQ})C+u3v z1q9c!jcVx?=9wubyszxVTYIMjsAfi5Nyj|UeMNe|5lvir9R>ip?yAI`UN7;ZLe7;aW2yTrjM z%2jujQG+(-n?=lg9n+rHL{C=>9?cIF-|GF-c?-HU`A_T8{8ZfSzQEf{WI25!m2{|n zoF0)e@+bolELe@4GpG`};5uvPTtNw)Q^i}4YUX-*uMo4yd>H1%v%GL&m@$iX1z}!1 zi}s^e2{H3B+#uWwa6$Mp&%pJ=B@_Q9xR?rPH*w~Ra2w!016S=P&hj}-_StH9Zbv5$ zaMZVTVMmZPPm98m4bW*2vcO+Tx3n@(sO`dipDnm1(FP#fVqAR$PQzD$Vt>2B52a72 zolWtbF;lG=vN?9flvpveZ|;mKwqj_zyml3oJWZDAu*!#a$)$*@ZHiR{ZE`xy^(|D^ z>6dwGQ+_dYdHJOL#14JCQCvzI(W%8Z3fdNDz4y?7xWpTP#nW%JwlS++ks%L1NCA&J zU5Y_v|H+iYl55#>j(3MdTXwf2oYzuP>MdiXxq8oWz%XNz;WMN_#rS79%=u^V5?jIW z=A(M&?K$4Y?p^XRnY5f}%YlCX>dXd`* z;?Q)FThe4er;BpAcm&Nc5CUE3AQ)9}j@NtN7WG_#)HJ1OGYhTeBj))Pwi4Pk;8Pn| zp#^e}i4<+ez6kDypZj0owAGfE%atF9FQtV zy*JL`^(_n7y*qRh+5W_SSWpE^N~JP9_C@a&r;qZLa>uOIggubCY}>@;8GRs=0g0tW zV%ZjlB`XdKmtJAvA?Coci_7rV=S;mom%&}^v=mS!Y8Zk<{~HnQUxsEaKI)-GKW&0L zsdkP!S!7XdjW;<3GO-wI_qe7lrrfbk3ZCYG!@!oG(%6=c8r}AEC+lr*Wh-EIH2^OXwYhcsP!n;|ImCxJ6_HytjtEel8}f$*~62wcD}cn&Uvmjw^O zh48Xq4O|E>3+NmngqH;*>_B)~kPR2Y%K|tgyv#oX7sAVY2t-Bcn}9!Y zwi3#$Y8fV+MZqv>47otK*;@W`OURT;K`jLo?ExC~0otOMdxr!U2em{)O)H}s&n$(_ z>!LwWbewa^yhXTvl6qpv3OfSpWx}XiMl@XBH%GI(k}0(O+2tk~!o1-U!rFZ^~#AJZt>i z_1f%B(u0iVBiCf#>>vZqK}OGWA$ctmhl3LA%t;ot>B*uBT{eU1HaTzgt&K*Z7Xp!*oM{<$C-KDyAE-wSfmhrlUac9*? zjp&W3t}bWEQ$hX4eAC(C<-a2QD(-FbCFowPZZGG9e-wvLuMU{IIGxq`{+HClP zKBuW3`k;?A&k~~QJZ5do=2bi4Vm7ZLX#unOA}HMTY<}}(534Ra!fY17UtE(R4u5Ub z--@rI;NE(g7xgShT(=_9L0=lEps%;!`U(3dO^a#upNQUqu}zy9#LCYC00U<0XJWus z5sds6+Y~gRV{cc;*&#r>)3Dq&F?|oEc8&Vv7{4=5VJD~ULbtH)O z6IDwkMw4x!;jS#l;mM!HTq>U)0S(%>IiG~M{YiG*e)CD$LJO5JO=nw-5tZe?0j~FT znR~86nH8@1IN*|TSOpy25B9Kfm!Pm{9DPE$2LM}?_OS|+E`?=leXkI=j76@v z?W2yQ?I>K5wqdhZN78m1T#~l$hD*|RE8IG`klO1?;exZ&Wx<8iUi%4LNbR*J;X-P! zC21Q{d+jc`klJhSg$t>@7Gs&D_F59p18@uALTaxa0~c{MAHc;puQ>r1)H_3 zMygdPLcZEfai!&oC3+58f3UWUHN}aQWzLsd3Lbb1*koLPX{N}rB;yZm7Jwj@07V@D zYV?w2IoZ`od7A*F^l!JB#_UL5i{yjJLjuUvL0mIy3_AB3B-d1=eIIhcq=SY;o#)) zD!4=iHn&M75am;3PL*7 zWs7;Ors58ny&R{yXmPd!C$>~#t2kD5O0^~3V10B1u~i(ax}o|#N7`eEg{cH`RSjSL zjwALsV#jc-YUt`W9I+=Lo4wDms$r{H1FTB?7GjTaEXD^BX7$sKw76~H@*a*=1EP9| zBlbK-|g@iqNZX(eX%s3bAEQ(ym_Q zh&_$i@mw-R%++7jv1rY6FeSXiv5I`FZ;-KA6C(ONqWc-OMX}W*baJ(n6`x`u?4;70 z&%{AsefBAx>zX|@t0E>w@QLfQ+b2LigIst!$#0MgS3)2rxo{=PagYmFk~|5yaOG~e zkPBCCg$ucGB_5IsS60G>T(~k1F66?MZn%&OzwtI)$c5i{87}0)Z#)JUa^W}bh1&p^ zw7yC%yxr@O=ZNIo9e>3eOvFO}b^9v)y( zn7(6e#bZsVYeh4Yb>*E6VFR$1Pw#qL80>iG9`_K@b?Q30p-|uK?`nw9hccb%1}UJg zd^ZCdfV3?}}=^(uX80JbrIz}%6NXu+df|fF*D*;GAj3);RN&=9kSph6^F+ErSDi4zE z;_1PHkSGQjJ6Q1w14(C2g0SNi0Lfn#NjPHhDzhL7%c6^+0Cd=u3`Y_z9=^^hI&4z2 zLDjJplF5JFQbnln+f?{U;#q1Yo{4SjJ5=~r62eUtK0YD5L58pRI3c`Ag}<2)9#G*< z34rnqsc^O3$Wj@Fx2o`t1Uzjj+)}QpdPPPcpQ|mUC6jznq0ax<`YI@sF)=Xi+NT zJ7l?(N;Kqc=5ZCTI%au3Zdwrd0Je&X+EUlRY%?WZd`l=B#EekP+fNG zt8oxbfT&Rrs`GArA`T(|h$01{y7AU6aS$OTuQ)pN)`mEUR?O~D+Hy@)*WNlS4x$YZ z2Ni_sjEP!Q=(pDT0ntka>4WO;hm^B-%M?1Mpi6b9DwP9*$|mhgZZDx+0u5xPQqpISv{(w{q8(&t18J#Ywv?9Y zFGy*r{t;VRYIs6*DjC}26XtEv4pRNJw9wIwe7v(Q8ccp6PT&*aZS6PWL%N>DbaWH< zF*W$3YyCKQTFfUsrk23wpU;xxf)I6x93p@*y||>1lte}YJ|zyDr~G0zg)6~s`p}3< zrk4Vftt-ISTP=JtF(7V~s{1QQ5%IS=d09iDZ`etws!-ugQV$^w5))uF6|$RKJRQ5^ zH0yni3In*q$k&JIvGW|SZXioA`a-Q$N1YR;vv&fnWH8Cfhf7&dKJY0LsjxSHyyRyt z(%3`Pp9w`U-w;KsAk*5@Q!y85hd|#CMf9GeZ$yH@UX&YRo-HKek82<#TpjWsUCS>2xq&VJN&a=1hD52HbzuX!~f7BD$#E8(}f9i!s*m%@}+p?VVcLL@!=z6 zGmM3_XVB>j52feR7nm~Wk|(V~UySR8)#ZG~Y#jUsYw>qBM{lA}bE|V1=>@oOkD9hI zKv?w2E7kF%18GZMj77UWrZ0bSRc7$*3E6b=WADbm2RZYHXjoFa$%ajqKZ-~=pBCz zohSskp;f>E66np*EaO3MWbiNV2f-(_afJt;x#BMn;-mI$)Jq^b7;1O;Wk<;~W&SbF z4&vjUM&N@bFMfJL5zJ*GHz*2Xe8hl>>IFW|or9vHMBZ48I`7x7T4O;3$8;On6uznQ zK>sE)O~YssB*O3?)MR{uOR)2>yrNzbP>-7kXsG7)j?RQ_Cm$5z)5>QrPT{+KsIgIh z7v&*a9Am17t{f}yigexR0aaVR-noZs&SO2+6L5QzO**2^p?}BNEj%JZ49vUN3rudxK<33$99WGPn+$6H)#47l@C z2Z1EvSavU@fw@r5?BTZsP}e-I!ZK8dWKqA!_du0RCbUQLJ>Bn59`QSz74GlNOZ`); zFsKv>OmN6@;!wmT`KcK=ut_@3W2X>9NaXxW8kL3h0ITz`yo=gCd2&*E)=Mt3z!1L2)qoy zO@d3-G6)NiHg+T){95vsM8buTc*9MkxRWP}!S@69CtQ|9RIol_j4MQ74T=xR-x9`! zE^Y1Da9-?hYVK&6jJsIF!H|ElF?G5!;LI{mVhI)uk+!?&F244T5TE{Ok_IrLsDL2j)KqhNzS#03zmbsNC7M`ZkyvY!s&r0!`#PSgCTVOW`E(Zz3UE;J9 zz(rRCQ(?Z(?nLt}yTUw8?p<$~Z?e17Ji=~^`5L=lG54{1qxk~6Y38#g^!Tl$vk$;6 zf(speE0G~qospApp`(vH02ey?2+FH<^sSvz8>|hlNQLREnLqbtk~W(B4IM!oh>`0o zrxh~kG5I*lib#0Mibx=Ui+jUObcZC&VzC?}HKwJ6Y$7XcSa7gGvy3M#rWKEyj9L@o z0`eZe6vGYx#6g++{27zY^o_*=5E33ui(CWYtXQ(r|?xb!W@> zCCRirBC~G!fkwgRMQ`b;O+l;sP+B4idW{AB5^${|AFt`&mPDzG|IJoZWnmIx*=7n@ z$z|KDx71qAaStVQRwqe<)Tw)pEZZh+yJE5T$hM11HCCm^ECku{H{1RfY`F-EPs54W8V%XIg&=>+kbkfs({0FV*@ocOeAObYI**OPs%=_) ztLbnNw`4cu*_hXP?11!1*ZV;{yE(TXL11<(v`&qacT=sQuNCBtp1miY}^wYw-@-{9IzcY&;_4}pZCY*6<8Y~1bu z(v&UfTmjLjwMHUTcM-W;r3QlnqA}|PYF0ZG5)*Gc$Zs7DGhX!t!b6W%6+6sWRk2qX zsS4urjnliOO#+QmUZ>gP^zK(R`Rh1)oZkJ^pg3!s-pyOeG!%6@dz{|gqSG-c^~Vpu zyQ}4Jy}MElz`K{mL))^a9I$uapx`GFJSP9U3v_}iaDk&|6j+i3YrU+{CTl3EYd)&X z=vz%_&%H_s({3z#mHOl+V zCv{T}8s!Y9MtQ$Uce!$YgT^?+sWFayeq237EySS$maButvWnrcOz`;<-tGdO0$*sM z@&BoXElH=j{Gsdx4awT8GsOQA+MT!ENoPfSD@Wf3#EX)1barCsgHv>t!3C%2gk(sZ zVl4@K;1p}`g$quxwi<3d2!MW_FR6Lhp+&`q2igo4MHVfxFWqBZDs;rSJcus)#w~dN zXPE$>q|vjr;x>{+NW(D4TpbrnQ#Lja?3p?)mL_bUbDoZiHR3ma^|9MY*jgBxA+VM; zc3GQvv02w2@>$=7Z3bno)xk@3zK3BW4U4W#awv5iw1y0aud7z!&m@Gaq1SPLeE2=P z6g(duVEvE#U44wT)0+{`A3B!Gf!uMkN>yWF<5VtEmmNbgn@S}I=qOML^Hjn@ov;d{ z;6z#=D;ntR8HYlFB!o=l}10EER0~Akq(7_L$ zjZei|Bu+`ZVd8R@0Ujh7fGQ2n@SqdkXUhTGNe&2;Y_{8OuK6Y7l8>bg>DYnG<9Q|Zt z06!rdpE8al!g2W}2>h%q7GhmC`l$pitq*U8OM-bA1WD_|N5BEPXo2_|+zaT>$#4g- zJX`^{AM3_v;hw;{5^SXFFkGw^yAEKvXu{o#Z_(|83z*yEAVVfO6^oV`wfHzm z<0>(|NX(cnii?XxFxS%;wdIiF_w4~ia%JpiD~4W$+0sjT4`hDNir{wnT_Ai zPxZRzeuD2~eoXfXkl@<&ElIFl>vYvQv_r0Lx>`+M-E`e0S2tY&xw`49m#dqu+vVz} z>+5oL({+nn-E@7;e3tPnR@kfJurE~DXPalu0c-DQX;YJ!zs4UHjy51!-{KfHA#cK$ zHKEMgh$eFdvM?2~P`>f|@|Ii5d0n|V7Wai@Rzax6O>-3T6=xaNd1V>a%`ndjaZf2Q zVU2%JKHMa@24Tj7-#s^}`&mT^w)hk$6|Q3MbceUtdLOFc`>IsKf7fpKbsxy4S$8I` zSZ}Ig9igT{=BH5tDj3Z}RIr0^QLuYnhO2(}oGrtSuv)H(8IJc-$NO~0yHwgaNu%!r zRl@u265jKWEa5$yoh7_yy)5B9APsXM-Ym(IlljY|;RxFn*}X~A2kmH(c@cioi=ZLL zDo}-zg))9KrpJYnk&$6w5X6Pj`Bj7_U?6iM!vOKe!IBM;VPNRQg_7ZrVPLq#g_7WI z(CCT_B}v_&;pPl=Pjy-fu=zJ-9S6fpYJ-NSGbL}58Z=(xLTN6>q2Gj1nuCjJK*zzN z==|f^xuzbQ!}ix2)xh7ud-(RiCvGhl%-@toynG|W%>w*TeM*tGY`!^%;Anazp-39&zOrcGLr5c?x% ztZQ;Y?0wEy@mfOc+PK(95@PG^SmG7ogy@^?XvE%}5Ia3Cwj?2zuQT8ZOCC4Asy6|G z?{RTJuo~i?kJXTc;Va>H7*LG!_WFJ-Cv7_Bg&{33?ox&k)^%v%{0vyH9v9-?Ehsfa z;Cn#`Bm&>N4lYFCdjoLm@!)sw{q}cJacqM3z8vGdoey4+U5dJk(4tpir)$FkR$WUu zWKzDsnd~d<#Nay8e1R6gjzlyjh{2H1tEUwnCo-5u7$zB9OJGU71WiMX<{d{k1*?Qw zK8_n;G$-vy#}-!_Hq2=ID&~?+8#gi0bvw?9NohIqc-U(a}=@kSMQ_n4un0mgZi79`fH=Xw? z@!jL`yJIo08{5E4Mk*cOt#|Y--UJ#ePb6(HQX~o+kj|L1-u4Hp?`F(FX zRIqyPnTfU8ARNJy8b^RHn*G*EF0+l}89o{t!%dQy@_};)p6_x10g>Xg$zJcae5cr0Da20`XI6<^V^yHZQC1nte5Jf3Lz}0H2LlsfkLV<$_HCfe? zDB&XoYaC^fRyuBChUmb}#9wXNAa~T|Wjd~SLb>+?s}pI&CMCowGeybR#fXGhHX|W! zLfv!kON5D*A(zicaiG%$0eu~wHJwQ$+INn?-__LpT3p^(gFL}4Hqrtajk$3FTr}p! z*>F{3Zd^g)0#Aw#iG>?Pk6MTHVue#9J0uw^oW`v~sw*u^)ML@)E=o(kjR)dnL2QJ?UXZ!wJ4Yd( zaK?DIrVu&>tvjC~`_-6Nkmhl^%?GQiKfG%#vhy<%V6Xt%^co6*GP8>^vx_pbi!yI| z1o0^Irqys&nfu1dGWYW5sEGm722N~`EVtAgb55i6dFkqn2uk|)B- zPzx4&h-`{7xK>_SE2MYH#V9fxRCNVpp_6+*eGkdXvx~~Ji^{W$%J+53%J*R$S(Sf5 zRbGmBjt+BFT<^b+Ff*kxjhn*?MaNyaG8UwH+&m`4W*WojBz93wc2Q1tQO?bVEazsA zUCzzs=P0K~bwzwRtHW=YKTeFu z%mbV()+O8 z@oQLIhrWbA@x*qe(pXzqpLTKBP*eP5k{Pw>b(6;>@94I!VFv`=#4YH)@j-!>no2EFX-`qylxz0j>v;J74*|S-z?n_85*nwtF`$ueD@a;l;jMU+7+vu6wG} zQh>rpu%T6o11S@hl}<}On#8OK{i5YezWzOtiU^1RXkZRSWsHOX_yvDHbM%6TlUb~` zjiA<+6m_4}oDU4sXG|yf4#lPP-Dp#H>{7ghbf2}u#_`F6;=Q_`IeyfjcuPp)_>qb6 zTUm8ZY_V$hpt#pHZlam3%wAZ@enE*0!%#l1{f2qskfS2Ym*G&jp9HnNIT%vz5_}P8 zk_Sif4njPdM}~nS45NmLi^otm3>0A)IZPZ~I5=D-F%0ENiLH-O6Y2{P?W%wJ_AqI` zNMF_a?56wlF+Ir(@!(+)4!HG$&%*`xesCvTaP0@z6G7p@Z~GX}VD3DKfjjo&mWB(R zpMFd{56QQ|4$pP%*~^{;d4RB0DjO=x!SMi}4RYM~T1M=a1lGA0-<>VQ1Dhlz4&t}l zDg5D!;F$Z;@kY`fu6X4Qq6eh8D{l}za5KRTbAMFMcy2lc!;KmQ_es#c@UaZPx6k%NFYE;uKc3H8S41V zg62+4-DC!_hQ2(_oSuyM>iO;%!*FS~t6cjQEcO z=f9c95Ma99sgn^)pFdJD6Reo8QcU8flStRR{bLQ2=0#_Yk~^r|4@#}m_Wcsm_Tw6g z%C!Ao$;ZrlKr!##f>+Fs9xsIXFILIrcxES-XZzn#I(b^9YNI>>BU0r_mF-N*4zjzP z1l?9_8;(*W|E_Nv@Pic3bq`+;w$68)gfS$3w}^~$aiOcZ3bv|hCuMN@TR0^lWw9?o zJU0mDjXdv{-qTrjs%G(|5$%scAp&&k9KWsfqEW#*S^0+j$Toz7bw09+;^C5L57zkz znpv~XN46(YtB($pF}ch#a;JApHVgrhr%?g_H1@+x0VEG^F?(5hfKa5?1Nz&3Y^8^R zFqk!y)vLU~zFsX52#oji)CL8A*Oe#3FIHv9Z{0ooj%+V;n&VPyC5Of`Ww+1iB90Zi zTosO84)7Jg4?ibU=~iI~Gj`cL$!{UN9dqDgE~WY7uQt!ALHu*nTMr*qxj)a}_439p z+hqN)wVA+Q1w-6Wg#GZ}Fa`_@FWCz5XTWGBcsYLbJlvzfzz`9O^GrgHfrr<~G4L>s zG{;xUmOqP2r_P)vzc0)DK*^a#8Fq`}gGqa7Oe?~DvhuDe;vRtJ{ic#4Ts9jQOp+wb zWlIupYbN60Hj;e!0N)@L<_@8`Mji+?I{M6y4sH1Tj|-UT%Ng@gCAyR5*e&9P#YZ2~ zEkm(siLu{w#*R&l4LDsxYsUOVj!e=t`NmOk=89} zwmm;_Nk_C%)XlG1%zx(1T_#{%*wR>!HR-J%e*&4Dzcc;4i8wOHjQZy%Wl_I3o{IY9 zUQ*Bp3(_;ilt4yhh!hDLZrL{Zg`e;75yL0<<}LJ&3XIe7kKq&DG-C(WbjQrqlMdk= z+l9*TA32Y|eTjC}gU7w!(IG$oF7LDV4+-}g4*g(9M5a}cC%s#zfDEXNRN_e&&=%s< zIXXI3CN)u<<`b(iFxBZMNaYW%f)nyZAjC{_mEPrn-HO@L1l=;ToZwPVZ9O;b{9zcXbNl~H03 z97zAN@PNCxeP51UCa6gVhiDi6+Sn&3nXWOFEbx}hy9)Ji1;?r)@VQGdEAW2Se+Dkq zZY`|-_>-LQ$Dh=0NzXv2yLLC;@lY6te1K^oiDt_0Wz-;iiuYqSdw!~v#7AUu6G7Hd z>N$ZD+Wq)AmXDBI0XzS~C#X8bQ_Arf)+h321;OqdD1H1Tl?$>Q_&7SL zEg#dOsMf9eu7efu2fpj*IMS&Lcpn)5in-6+tCSn^a3go~&fAF4!82lJT6(sagtI63 zw4XfZ>FXVzO|>0#q%kR&)qRBZYix4%Ms)HQPHybql%HxI_PWh|GMAn~xdhWOoR9vlFZ9K%O z4r%Gvp*FY~SGQUYwCMRYh1Ic3ub1%`wPdq9Bb?cNWU~9+O|n-dCi7(NeFbjwaYd`# zyON1A4**xM#Pf4ftvc}o*`R7HF7w3rNkymbB{3*|oZHrKO79f7vo#Rfq7Xs@MBZ-Rr#;ylnBlqO*Qf2uTl_XVE<@4aar$;y>+dqdKAN38rC@;08hNtJ)Y!``IsKfniPd;3;(}gk8Atrm z`aIvpgfq9?{CvRqH3gseIln6$DA#;8uIS89cYi>ie1#NRD8|Tz`9E$#6@DVz1wR4r zYKgre(m6IA)kzJeAmoxrm(|g=*}=8(Z5)QEM+Dt9_nB||Hl$x83Iljw;~JJ&#`7kN z;?mwP$V0RJTMAOmL-=-GiZ{8UuOO99?i$VxXW`+eZA#&t8Ooo3QRFeEJ(6hU*X7Pt z{QA|ZnqaoHjKYUyGa#_AXp%fl>!P5Bd9e*5m)%P^>OY#W{HT=fQ3w$a<#W)FDLdGI z*v{vmS(qWdTLsv26@fe=jWMhaf9gfL9^hPs?@?U0JZ3B%>poXOD1YAOJc8XTSrljq zEMqK9)jvPfl>VQu{KqR_%&pxR_{2=f`Y&=d9WI+&S4oTaKN3O7$qQNjh_(Mu?xieG zm-0k;n-_VVF4Yng$zfWiIbF(C+sD%5EbmrJmLci#KJ9yIEPT6d*^aJBC`fJDPaPo{ zBdGjC-DpI{r%RO(P*K1>8AhVO=~5*MNReoL;0%%T=~4*+F=BmSj1wBlM2tMS1&ii= zzw%uGW_Rp; zUxpf3V+hvwW2*m8_F(&s#$$r3=flmMh!^0aBoZa+QMAV9*9i7;o_|976@+6Sm|L*9Z~OCp!^~_j6d5pmhUFa>B0IInd)duP5Sj6eC-{Q#ax$ z-eu~>aeb;gv%K7$I$Sbo*{z`I3&3{4>j_GNk(J^r5l-L4*!Z3g3)eV>i$filo(Cpf zF7fH6|JNmZ7Nq?)1fXnivNR|U(+jw}U|Ewk{*oy2U1LV8xch_S^W0S%Ldraj)^*+y z6@B@sfGV7SA@+8D6-?h|;R<=4{*J84Tkaht&Co*W-ckI4sv=zd;!*F*vtG4eyYaEn zmkGzu4hG%h&zK+juE8*HOdDGTrmQZIks4-M8FbYQOC3cm6WN^^9)3dF&wOhZUn9YT zOYuJ%&S`Qn_0(3W_ISNKe_`HA@2FsoccW{{Xt~sUs+5#cVlW@93RdYiZrUxf)Z1d*T$# zpFVt?w8Nn8Y^do;>k+~$j{H=(<$F5(=j;4J%%1z+rL1Q+V`)<|X&=EN4KO4?jkBQA zB~&+XV?{3n)}QCfTVqQ)#;e(RE8771FgVVYTYBBhmh{$j+KH2GT_k>L-qJu>I9*y$E?vRh^pe-Lj1!;6ml)xGjQwSz6KXdPWnBg8k@<0 zmqtHXCl}yoo;u$%!aXyLD;35_V#2yXE#1=2Bk}0;Lh)tT%S}rPkRu(}rv08uZ;8DkXp6upQsF?-{F06;h{yrM zf=ddvl4j}LWZ$OQ5U2Y$eVMi;-XcNT0poU0b6N^O*}*psxCJ&nu3%5q72bQ69Zb#`-gB58%q4JuuN#u01F#JEFly|@b*d)Z@BRhB-fw!KV zTWTJTYqNC3Bm*CEVOnvp6kH0l9!rw5vh>`>8-nRS{}^@5_m2SuB(ZG9DgN^k$}rYE z4$cp4rEMW?)jTywIiZ(PT4(u_f<@QOkNt6t%ew&**&m%P@KQFN^?6}Ka8^1f1*tHs zgKwIX^IO1S(*u)#jy%s^3^X9kOd)=kB30)9=*9>MshWS6>Se-;(0k3!t@){W?nt;` zE5wgW-VNULez^QmX>0Lg&WdqK;~W*T3&BfMxp;nL*yOTJh~xRxP~uB|^s62Qv#=zY68SY7c*{vIvx=P`F7zF-v7A4~lz(RlZ&e$^|_u z$`;JDLXvRj-!(fCmY)jd=Zar%yCessuiA&k;7Y6{n`6J#3;zeIk=g1K6I~@Q12RM9 zS6t*ybS{5!LFdO9I~6_{b>OC?9tih*>4IML3h`VH#urqH&t<{IBIP;Il>R;EmL=HX zR+H^+k=Ei#Cxv4s-kcL|z87(*V#2a}$SIe}9VL=eZhGr=*0lXLHe1GGE?F%X0gxfn z(Kb1)<1C1M=!X3M-H zum-veoD{+k$jxjeo*6$y=cNukLnqG4+`S|mj0lztnxPGFGsmklB~l1DJ185F`A*WXH6z{(O%5^_ z$dg{M+2lL=2Da6J;`6&eLd(E*vuQnbu9CKZ&Mlingtd(POdQn(b!cMu-d=x(bOSm0 z51U2#iwkZs2bh~I3w!{@A!@kC!#e3Rm`1X{hfzlG@Am!Yt6#1VZiyS6n8vzSr+Cdf zaW#FltOt6xPx6wdUL;)UWOW{6xi>3+@s0C^8yjJYbD%Y6Qc1PKLe{Z|v3;$tV4kKR@1-Ez8n>-`Z|2vThYB9@ zPNtIgZ{2$z)`zIYDF`R1byEI)vL0Gu<~(`)JNeH)ZFfOb982;9F*A%H$;4ia9mDO3 zDwLFT@rg*hl(8TQG8|TqW`O^+Jpn7-0D0WTHzYh`6yo`E&?UIR^JQ?s4W1|NpnlI+ zqLd#&ZNXC%jZMiFppx$eNM>jm6C;@&CvX8$z6B~+3QdTCM7dQe+4e2r{l$r`N!D2R zv}Wmdy-2C)HMjFd(yfw1%)|y5_PlnB%%A~DGD+NEW+5y|;E~ih%U8p&MlrM%Mapg>yJe0hS+{WT`@mAFHYCT|~j~WM^dkWmE z(34xSwSTGdRk_Zl0j*^70^0H?-8Is(Jno`MUr6NH)z(#oh@Fo;h-o)gft68alXPaF zI>pKukz{ev8<&g8+z>+aR6XiyQ&Bngrv@yXXffvAi)1;S3_Vk&(>KpRG*qS_FuK2-7Uobu|3HUzOl z76b>w5UUMCrj!-BD8B~xe-|Yid2=mt#?>OJoUs65>PHr4Jo1J3{(7L+Zrn)__b~1> zJw@@u-}l!`goLmmf(Zdr$2F&^g&1TLOjGm916##BX7+F6Ri8*+B}(BzU@udc{sk+w zVIb2CMkX-BIWsV2=?FOqi=d@71nxl3jRSJYvC!1#^ z#+Gbe*4q#dbV7(VtoCw>tWYn#9onm&%giQWLhzB5KNoL&|8#wx=P^RYqi&$dLSu&W zfTuO^nz|93?n`>f(7TD(#s#)lK|Txf0_p`WQ)uq7Y5!=2$or#JKzuGgS$ZRxPSYGb zbKD$k!_*Q0LDq*!aKAC*>gbLM7i*Ce@kg98j`YNdg|m2SwS?38Zj&3Pk~Jj+0RPnQ z{|?$2C9Z&=K(c&bl>;kz@_D;}x% z8}^)@#dw;V^*59fMUSsSn#Xo%Z;&>pm?c5Slg}QT+9zj6$p;gO&%>w!Q0&}M*np7o z5*aJ8Z6TfKN?Fs<{jf&e8_Gf#=)wV$q-i!yLo8)_Pv#LdNw|__TSENxa~R|p`+xm3 z?il-j9l$+`AO8OO#V>5^TmG%aK6)EN-}cocO#xs-)sqGxFl~oAp(4<28b(5#$c%|; z@gWJ$T@K3QH5imaoW07h+-SE4$i)~8e<>t31^LMi>}kxD zi-%WPifEKfQX&u71xc1f)tbtsB3K$+DoWO^rpw*9tXa2IR0Z*2Rdvl$oWJ_@rDDZu zyjHHgLKgkZJa7ljlerQ-N6QubZUBw9NE**VU1A<0qbz5Wd#R&hK>&(SAjKEL^CH3_ zcWz7$x>LgTAX2I4^6+(L29ap^7+*oee2k0n71HxMmgk-n@@Y>A{E;i8#U4~svW#}B zigD`3&+iYUhXa#-UF&&TZiVXVc)m$v-kTcQ9m7OiUjq8dN?k3hLl1v0TducdF*9YLe2NN)?p*$eTM;vGVq;YZ(r*l`g zQA!?kwU~`i8guc*$IFPgoW4qeErz!MQ5 zN_ijyo`FgIkmtPM0ggk)oGAoXBM$3(eFBJltPe$A4fAA#cN}kRH^)dF8)IA^<6?}E(u$Is-Z4|M~SIF629(CrXyVF!bA3eFMO z%cV?9YOC9z4SHwBIWx`$zOgv&l=GvSTLcfCNgC{?jC}WxnXHNn%$X zjrH;}dg@iWdh)cLlcgP7F2NosH07Fb856?{7d;Ok^)+BSCWg$zLY*wcyXUZffaSrv zXIUg8-u(zOBNRQ~h4@X}g!|jL&%h6V?_Ln%q!SMmA3{0f?_`$5d$}S3Gw*_GzMK8Q zbxR2fjf3AjBZX*`9;Zw|oQ5ZmfBh*H!fzSo2xSExiR9{U7VK*4aYJ*|OgOPwS6nnV zTJf%$=1BopQY=egs>CE$|Jq+%l-iA0mvMLCeqmQcJ-6#?>e*d|a3O*D|7)UvNir;B z{@~O7PzQc#*Yx)vF|6Ev{(&c5#e}p=nV<6MKH9*Rix^A}gRsf3L){B;Uyu9Oa3{e* z1b09s6&mQL%5d*S82(N*;CDoN;yd+*^vrjvQ+nz<^_ukDcj^@x|I|x*`WLY0f;gw1 z1&G$+j>QRi0zCBuGDO&^M{%d}_Tf(DW8p&ep}$jT+o=!Y!hqDDX(*V#*uOUY;nA{w6zln#|Y}pESFE`1cvK?brqM&tyG5qr4ck`sYt0 zTby@}2p zU;_~ct}bDNPK5h*AM^=)xBD!3Y!Wj?TJsH+mBo3&TJbJ2y0Imtas}UQbmxrxSI;P( zk1HvkDU~Zc4wgEftN7U_b;XYqI4LdpCHT~I09=OQ4WZVOA1$cT&V?5{A|h2gw*Xcx z+J%xn?VLIfF)vM!T81T3-wi#z3MfTa0eF{)cj-P_^(2I1gW(+oBqfb#y+$Y&u688? z`BM$lrv}5Gh@*5r%IZ}eKgBzqF6Cy+8@imm!D1jSUXRQzDg~ zEABBDGig;{#sa#R;Zc$6{t&G_2K~m6 z?Kq&cF+JC#^?w&n|7G8T5@w&YoF)XO>(eiTyf#y5W`b%j2WwdFZY!hn!i-t6``W#|j_>fwC4zTIZ)nS7+ zf5g}j(ay!&jAw51PxLmQ)7yLwZN8AyX6$%uQcHfMx`6NU8JNMiFl_Xmk{Vux_WlZx z9OfR6p~r{I5Tbar5o(2PUW5B$+r>U@7j)mK5TS>L2|jY~DXl-SvcaZ6Hl(Bkrckx8M_BCnZUGRz@40OS$E(|^g-vK&*`)uUVV6AS4ao3`XD%mAibilL~!xG1xVc$JECl5Mi zZlDi-vMc)n12{>??y0*V*uPl4BF`xH+&tVkac4e9%>%sx`SP@Dy+T^v^74jy1R&m^>8tZ|F7vM0rbjn7G6* z|Nd`)02szE|Nd`=z?TSc-M#O`-*rd+y@~iG0{q@|)fZFIFA?C2f$Q&0u3sX+?@d>I zF%`8fO4bzkVoLck*WVEYY{+K{esIx5XOD^-@N?le4Zk$}rsIe8owyOdbo@w^pMf7l z`w;zI^Y1?tIe?&B%#BLP`BW9l*>3zGZ6`@NNy$kL zwoeqVdhfkrN87$-M?H@%J6O7BSzBA%GK4L2wCyiyYkRcF(bjg?;Tvl2YHRzmyAZat zt?jX;xKrBC_t#q^6ywhUS*gQ#N!%UodPY*BQKg$GvGJp(w!rQIP#TY0Q@h@O#oxUsN@}M1U^}vcD(!>IiV*vaB!eV^P97Cd5wWJzxGM zL!c)w`F--Y(aAskyL=hj-CukqU^motcNFDxmGX7@ZhBtI*RMWI&tAUX#@Bg#oy}JT zAAkEl(xsu*1Fa(H4=V~O9pZ)(BsqJTy~*nPBH%3Rjc;wnnUcTogyO2g)~! z(F1|+LOHcdY9^3sT?(5c7ei|cDlxOXsnz8HUu1}4DN$X2Vc53FtSO+v|Byw+Z(eef zrohgWbc~dUaCFDSZdayI!Xqw4)Hd2|RYGyOMG5p}>0T8PmQ1&MMwbxwXhpQWRg~O; z=hSp>k(ioWgiy88k7p-8@2m8?mmsVSE8DL_7ZZnzhTu?+bW`m6l%jvcUttlpRJ*XH z978IXo@xc3(bFia<0hM5p4rh1QLBWwS`TgPxpsz_uQD7w%Xxr@H+Q;hM(R z3@@e5=%f%=f&5WFqh6h8f7hq7FmBX%Ws%cqXEa_@n#;`&}7U;q&_{d}lf^=*A2} z`mT*64Xl2sn~eA)+8_-XH>qGni&^jMQ2H_-+eBL6JQ_pA(;?i;i=+|Xlviq=r1-O; zrYyX!4z$!FGMdtmKhW*foUT@(h8!-8Fm1Fc=vYExk5_LFXL3w8V%nPBs!j2T43sgd zW^s5F;SN5`DVq2eM9sX=J@d4o?D?caL1lY7EW%;`4vKXz_lQg*7?}-0QEe#f(~HiF z7wx8seNVKwE~;FlOTJ(5@tX|*7zJoXE4t1A9BQHQEL`&GDOlbbVcG~i{nAHqp(u|p z5ixqH7@9B%5H1%~r$ZZSo0zm)wF{(ibOV}D9fYs51}ITAc%ehn)#?)H%4TG|b6G^V31>wQ7Z$_QVPxR~(RYSC z%UYprv=iOZ5?0WWv7ir=ShN90S1FZ+P{}%T>c&>GA>my;^d-kH{Od_ z2&GaHYZUjLK;oztYjB|CQP?dOBZpYEZwPfiR#6I;dgv zBPZ6JSrz-=ZxtFDeybVoSryTWE>9FF$40h{LUPKzgc3%Rr~@3`$UG<&4He~{LX>sp zl>3;N<1dFVyb-kmVdZB|0lITSOHrc{dJ2=N>j=tVJ5L_7=rl10A?(PNLX>HRsTFT^ z?+!-MlOw_MBr}isG)^;fNaQAE!!byUXRT6KjHz@s_UZUd7Ey%CN;;g z$KKnQ2vXO|-3;}oyFa`P1*kuM^Y1o}+;R#n+O_hsh`O_^Q53H&7X{A$`aX>cM+;qV zbP_k>k0Q0>OpLJh&69QU(I5mVn8C%Ev(o?OuPLv(44QR`tC(%eh2t^2iAulTq1!8d zwp;)ytnf)f#5F}YnwYZ8-c4mW`TUg|Vfq7-z7vS+R4_0UAG%{fDAV%Z-uNoJ;i%Dw~q|)Ag>dg*NNW0Xx0 z;}l}pP+}T9-97=7a4Gx!zREvkYN508+CHKdRQntU5TFP!oJDWxIqOyvnq4boK`TMu9Q2jjic6ij;m zR)at39nDR8zdzz~f3;Z<@Pwk;<#X<|g{c)MK6p5{Bt42QI}|{Sa9Sdr-yJMRJ&Hme z|9#Zl8;kt+`NIX%f_!WejiZ1MgzWL)cNhRYwa|cGw^|J#O>xLefSDlG$@Qx-rC7)p zf}ZYIwLzrH;7Ma2jnp%zX5XW=0e$v;@-C3)v!pKoCCE{mKI+>rRG2zU`JiUC-f70l ziu|##@!-up#ZfZjF-Y_uY+Jt?-DMMo@6-RO=ZaMfTl&P>Ai& zUd8m>LERgSb{?alPzQ5Mtz*G@?Nt|14o!PC6c5Q?KW|metguMQ$otyyA~83dQwq3jnW`uz@=22;ZTi#x@Z|A9CqBD+d7RpDtmzY}p@c&v`xCbF+L}r{AOfPj%tg&ZfS$5$zfHvPCa8+Lz(Vp|7+f6fvGd z_)DP;@MH_T346fFJkL|-9Pne$(3{(xjDA!jaR_q;%AvX=-g5z8Q?}cqy)Z#c3@7z0 z;ypw8fg~uC_E5!IOyP07A3Vb>Ji9h zrUxgUP*at(b*nuh>(}6|_Nt#L({$Q*L8nddwVmS9QM4Z`$#nb}WkH+RM->XmsBEV} zm+w>3c&hCGL01S;syvzk<00YPoVgYIkGBeEgZ+G~@TzI3XlB^fd?(gE_nr5_(ES5{ zhT@Xtd-cwVPwOV2dEH>n1vfJX&CHT*8sAve{yr!u9Y7z>GPjmeD@)MchqJoWi}4nB z=`D`&@Wk=~Eu4zhvVl2KdgHt6Auy>TwpeKmeBz`^%8^3;4T6O^hZW00SvM2;raNMOUwg!sA=4Fg#`Kl9N;?eJ}_UOeFVqsaOQc8)VDcBy^CHp_J2>kC{v0d>ZKQ zU}Y-O_=(R8m_3Ww2ZG+smFvLtgq(DzK1wAs%w z%S32GF)ZFxy{4wV(D_VrO?MUVXB-_<)!$VGXI_5=>1dScYz}pio36lK zteAS?FwNSx|M+V_nP$YbhYL-Jsne#Ql5*{OvIT6UhuKtYr?8Jv)-xRt3P*Q(UeZ5jZH^LLS8Q} z=%j2AYo@q+84n0M8RJ1BYV9L=LyVqeg|T`%i8nhW4l%gZr4eTa+|@=L1J3fa^`<1i z87UyI88=2{3iY-K97fxfX}PF{To8Bfp6Am6HZ2aYw7~u*XXa0;_XqzHVE7DXgPBxs zY^(re*jSMu8w7HsfeVTG_bI8|x?wWWYs%ry1V{@onI+eyqHDhR2c%H!zl@$i-gG|{ zrR$Ho#+Cr1%V7xgu;N1Z47Tq_m%o6TIOq+}MAz(LTF6{4jZ!}cyj-So^WdY>I<|J@ zzYv9hlAWNW4q2#Dl3W-&OrsElrLr$aAc1QZ1Yx72a$Ph!N-VQM?!B13S7flz`RHJtKHqFfwyRK1@<*Lvd&fSuimHjQ^8p=Fi8g#S8mz|w3HU@yJh*_t^^`p z7d7Yz?1ix&(SnySdQ)^-aFA(1I>2i!m{KsUR@j_8?xP5|hADiC3{M&0@XZJ}Q;Cfn z8f0gF@G;aREM+u$7){9DG=?`q{Xy71e}0-VLNtT&(}&VxdZv-t;9=yGla@hA&^O~~ ziKIQR-x|>duSP}YPchMvT(lzx>t~!IjD^RvussJ?)s{1>daq^XyG$}ZNJOtUkLIgY zg)n-!eIGo2*+87&b06E76A&5*w8iKV=CVz+CgnP5jU^{eYvB6uUqNlo(daQoK?99D zgJ55q?!2H9!bA-&0xPP6>sDVUEpigF&jjMDJ+LaBgK_Dj!N$~MVwz-z`?c$4BMO#8 zzla3|&oD9l%0+nRZe0p?l6sCQ7=!|N01=y{YU2pk=V7i?ZZsO(7ro5~Y}K3HFlT~J z7{j2c?j*n~>sA|ti$OX>_0{QC5}N}q!a+OZa#y^`=AWewvd~SB1@rXcnCVQ8>Po&>55LZh((@|;U%`L!VA7eop&2J9861I z1?vbx19cuC;_U7aPC&=1!eanDanjQ9V`fj!;%W__Q!fL7e@d{^OB6btL`!%OIph3N zTb{4HSES*T1-R=9<)THCh&Umz>6#g>dE5_4ob67trhrhI7J4*FKyMH03E0T%H`hHiPJu?PrYM&nBK?qKp!`ulmg;(!; zxgZ0cJG`lH#l-8x0L?up>u6rIS!{r+TR7?o3lmE%EJ{E~ao{aNZSgfP=dC*$Ockvb zeZ80EwRb&)1#)Z1`8eOP0&#v?h6Z22HYIm~Fbx7dC5B;xonsAp?Pb2VIAwfYX^zib zM&bd8r1JwA;dwOVilepjbA&sapK`OsaXa?FEo$0vdjnP44)K7#Mm5+536dNvu`$Kf zHacy?olwRtu_&;H z1PV$KJ*n{Ocnn-A9lti`VSiNJ2r-32iYbCC0{if6FOAL@!4=2%h3q>m@Xn*`upHml zX#aHIr+d^P|6cfmOT)YE(LIOuUEFhVpW1gAqV5o6L#5GMy11k%rBPKcL7Aerl~MKc zZ|hkm(bCZO^@OP2R=a7dvU+=cOQ@mgn{!quEe}SvZE38R-V@oGB6b>Qd+}@j{KY4g zE)q&2dhu%>s14UIRq7sWY*zkw!2_H5?;A>JOGCX=tclcaY^W#gnx^LZh>|<^fn2AU z>s`1*nd>dwq2$f=E^63u>rzGVJB0})U(DSk@}0t&pP#R+R8}ix3Z9%|MQtR~v`uDY zyljFF50qa(#PPQRzf$~G<5!K}8vLMZMyJG)=7GQhlTL`EQ{U)hIQny8JL`rQaChVP zGM+Evj{VL_!@DRI%Y7gv`nUSCM3iltTk7j^@^`_V1&eQ2lt9g@M<1P9vw6z{3}|Ij zQ)FB1mdFE$SFeN~jBMIQT0h$u_@vjgrM6+qPUr$DwUIidv8k?J!MX9ugUyc`aUW3f z3m$#+mMxJ@4G-dLZX=%RJ>iWFxsN^?q8x6|yLIZ+sRjA0CMC1u!l>kyrUuUVf%=9J zzCTdkvQ61q|B$kAOQdc~B+PmL=SQb*Aw8>2k!^R$$9wMPn0ZiBx~IB++dVB?`O#k= zUbQ8{k5w)8+gEI^ZOOaUNP;8m?`~{v;IF0i4e}$>uZ+|gi7M-NY)ej5vazXUn~_A1 zR$2ee(g&J35RV)fF9R7EnXLxa8qZW43diux#;)Z7mJ!IPmMW5x_&Q6Ke`A&Vx|zq!53;A%S%HCMU2IbMx^6vz#b6Y0xC6@Z4^E^l;2)k?Tj0irsTT8cKaaM6e>kBnuq+&}^Z zi;Q2u^4w)RD6hNxRV3c4@*{pCH(L+oZcaghOsrQO>sMo2C#HY38u`huDLwpkM1?lx z__QhSCDKyu5MylmS7mzr>x8wnaCOsXVU}SfExq}+rNqWiLhRa9QQ-;jOwin!a9lKu zSt<^`lo2&cooT$2(5#r%9cCQDM(s=3v58egJE7(UksWmdZwJpfR4b;Q3@ic4)rDsw z&IoY?GVXG?Nw%)7S&bd2T5Y6pChj}6kw}^m%YGkr^c|+RH#sKG)#aEmj)^jti+D`q z?M(;~4}gqc)AS$KzW=k@+qp|d!>pdXrP0!0&Y%}8!KmVaA90$N+M??Rx*7TuKf0mjtto5Qi z>M!?}pLsu!r-^VeJ-PBki6$De_2>IF5pmPA8!>b}0cYYJIyCRk@M!|oKcerwqf-3(#eQ|@5UaA*0TU$U%nT|b<+LMv;n?9p$%bJq-Y}ywr3?9qJ1NtiLyMH+Hg@wYE%& z?_Fn9c2nN!i#pJHX*=PLn1F@#ia7v2fL_r>obrl!bP~vld}_f8(yc3`d}++)`4m@J zh&I_(M(pwN=J}Kx!j<_AB5gs9)|*H7RS@5A#ri%8Kn=g);7avTGN&Tt5`08 zX7kpq2Ku}$6*7JI$RUZal~9*y;C(`Ge}Yf3z^N&1H|9SCa5k%UzHb99D8hKY-$)GM zmy?)Q4pn97`qi~g7RR!%2@38pAQ97PFRI6U6w^JT$=4W}tUP$Ls?+?qF6CDTrH0qC z5-KsTDxphxwU7lUec7GY)TPXVj4G3K7b?0)wNDdz~YGG$&>vNEM_Cp56y$177Nr<$8JR+-Yb-%`8os@jy7 zu1lNpW2jcJO4ZFOBSBQ}ytq!~UD?Sxl?Bd(PNn`Wu2V_h2!|QHNCA);S{W*JD&xoz zBYqJyg>{rDe#rqw#}if1?v!=70{_G;5_IEmjmseVt{gWB4#8NsFztzy^AIS`4U<`q zgTkc>*zD$-)i?m-GR`UXT=`692V_5l3B2DH{uMT@sleh+M%GkJ|QAeF{BS`prs}SNcuq zPIB&jNaqQqAw^%}+qe?@l1lV&iFwD1EGRNpFQ_l6AX8?L%6hI`LXw8C9oJQ%G&K5B zqOg*_D+AE!9H4x#ZQD*?1Nep6jw!Q9wUa$lWYilNh8EZw?Pr8t2@Ottz>waD{M{(Ub>iVG9%29M&caFL~=rwX&4}^&k&k2{@ z1M41FR~ZQ8bwkHWo8`MQfPVSsn#a|`NzhkZaT}bq@8CGCP+m1!?#f=~yVC3RT<7jL40!8m+y~c|Z>oxv+D}#>L1-rEPgv>%uGWWQx-?6nErmKVqS`GOLgf4x(6EJL_I)nv_9`KO{4qmt?-6y#Tul~ z(3QI@8*GbD`A^_;T!bD{UG+*I5&We?>sDh`)(1M&cS{9O(Lryw!0)s^LAa3%>Hcu+ zubekc4;!#;Ec}QqsTol)V``W(lireN_%K_-<+v%%_^+XhR5Pm4>_tW57)Za=i?n^< zwI}Bj`j}$M?P%p9gafHzVI%GOx#6No@_2&EJLZE@Z&FGxTBQnGGu8;jDhV|)!BOq} zkW3*zoJkbKQzCp>>$fy*5MR8F3vpc%@mO3D3c{IV5p9qPfg=B)c`9I|SUp?y9b`=2 z-f6aL2)U6t*?SsaGZ4C&i!{xFl&30EI+j7R2-fjwxI1vC(^K6V&vHq?NeSnT18qv! zNnzcXXJO2PryP)P$aNHJK3h<6<)Z3Bo!twnu3Utu(~Z`|jHe;6M46`LqFg>Wn}z;6vT0 z+c(4)Js$Lw zk{Tgq2Pnq@{jOY8(0(-=??YkocF>cHutIEOCZ6$aG-L~6&|zXfHoiVo14{=m>4A`+ z82FMMS2mD2$dwJtA*Hv#)Bv1Y)+Fh+s~^p3g@Bv;NEKoa^4S#1;e1-JY|wF?aL=L* z%9!c~!T^cIh`k}s<+pz< z@5%(Y2Y4D-QtU=8NS0LZb+BbOep zLfCwfmLEn=R1XVV3qlfR1;>;U&i6b{xhpmYLh$bNz*_)?EWYfAqzvjh4*YEXM&YtH zYEfY={x*G`BXkx*BcFM~+1zP}Zar?}K)_ZTU@<12131vGTA} zG(y^B1<)6w4i?lQCx8^;OuVJw&2bkH6IRjoyIL(8?pzmk9Rg1WdM$J~lgd+ySP%g* zs=S@`+U$3m5X`(Z# z5u-6fL2Tj{iIIg;uS0dIPT4uLkBkR)ij5RNs5YFMCuUh*JUxtaJdYC|Oa3#rbF775 zq6V@Zy2--FcuPgAT<92uJ4T2T)WXm_*(D)JRII!!a_412j*tT}9m1;GakmMpj0Hg7 zBxkV|=@g52#gbj2nT{pGj;ANXE|NmY^(mttb+(<>xnwE^E0F~Ts@(d-`qg)V$q4{X zkt|muHh)}PrdKah)-szQArWINER*4f4XU3_kHgPjw$zRq1My`0Ek-MAxXqPR7vAxb zjinJ0Z*ZY(upAR#Jq997pzxtunZVXj$r0&jKwT=tX#+Tzct>xm5H^LzmxC)zy4()^ zd)7`1L{xDQ&}bxAch^FDh5Gw!fpz2Xw+K;P|vY37w5pJA zSHzX%4Eq>J=0L@?5aL@VNRVkXA-OSQa4iP$wnxfiYL~*AN|(YwB|i}kcMWB$-ZS-iLq!Xs!1}ySuYK6mX(e9 zZW!Pcp*AM_mW5CA{F@`oyz@8!dCNFJPH37#2LkE_Q~>KW(1vJhotHF87wVd%#R_)+ zSd(<20rh$3F>stfm1Mor`K(uZ5*=p=pQcGD{JzvH#b~xRICQNjIX<%xrnSXrb>iPJSl%37$Dl8Q5ILeK?PD0LQ= z|3bX}{lBYo;$+(_$cPW912B7-_5tXUC~V)&9cLp&P?b8&Bh!Jtz)FR!I56I2XBaB3 zNyFod7&aeFI&3DiU|UvV88br2{De%{&?(m#Lm_mR$%t)&F@znUF~q14xm%D9#Ltbn z$(X~507C3NF3eyV4T;WVc4muO$Jm+efMthaXV$=WBZM?l$JGZjAim-dE@^p2NWEYu z+m9?lxY?@2%b|*4du92r8c$uN5`M` zC_FQ3|Mn~XYYYGN_7O~)PPE;hM(Ff+K%qZ5N zpgnplFg{58#=KSIW6q3H9C(IHfi~NW5G(i*VYpe<(^`=>+cg8eW8Apj5AQQG;sPr? z$@Hj+4e|03V_ImAo-zd?85A438sv{EUb~scFy+hoPa22nFLoX0mf_U7RJqq8w0tpZ z0Yc9d5>0_{2@-c$;gi^3N40}UuFzeevc_PjJ5JJo10E#oAgD5MUb>&oEf4740|*q zGsH=NBYKdfZkTx8c8Q0%(|@~VZu59c#R)tAs+NngjsGDm7eSiGSS})DV#`Gq53=_K ztSud6O_t~TF|U?QwuJfPlwNGuX@MdP?@h4VG{dG4c4IIFRGNy}jBqiT1%?Z+ojf<$ zobVW%6Z+%kgp1jn@bly&%?eMrZiBea!lrHuu_ZFr#1LRHnHb{jS|)}QN_0p{odz^S zIZ|GoyohEYh2cNtD&~Sl2N>cCdjCV;@7QdR1-5{uyPo*6@l&bCo7x2=FzSF-36k|p z5Hn#qXcFEocUd5Rb%4ckfz?X3!3>#fFac_^!Q5eqiv(%T}_hDP$0-BjQc9kc)(rn@g-#X}+W=mn}r)n9>e2a52#O~&81&Buw^Zs%unx;nK zz@iwM?g5Iu8ICE6aNo$PE}Qwfk-Ss;LwR)FoL_SsQsa$qqqxr3iKlv7-nZ2p@}hSF z`E>7|=fjqQt-btC$dKoKJMXc(%3((XHCg{=W!n0vn*D=c({m^dwy9b0#WW3w8CC6h z_vF{8FY{Du>ar9U)$)9+Sl(Oyi*lBj*`=P=(xSM~lF}>6v|yC!;%L4v@17+n({o_` zcWTpl+kUfzls9TI39{I_^Ba%LM*ZNuO|~C=RG0A$U3T;@ehG>m1j zXOHH6gSH>xwHX@G$PXB9r!7%Pui!9dvZKf z^5*I=cEbkZey7P}EmBuge56a{B2!b^WN{~TSH-*UgO}GdM=DOTwg&g-m;Z#id{}Od zOnIV{_HIaI=qBw<|L{-0PuI9sh2H(Voyi+4ozUnEr_;Vqz|F|w;+>!i1O;>Hmbkqx z(e%!YP+H(7rh4hY1JHu(p-@YDM#b*-5*;6e2_522ALiXN^IX`fju;hMY>p+1xCh3- zBs3dVT~ovSm9go%O)dmDM$OSC-V=y}B~~ zCAhMrRH-L7{mKIT6)X4?_XY2+SvfBBkHreO<0l9GI zQ{F6s+HA=Z;__Rf~4;&D@&)s zP8a3EYPq?kDck~|0BARZ80RsxaBbK+89+u21QjMYTj9*xu!1UI;$I!CxfOzpl{IUE zl@vlvAowVumZnB!?j{PGyNPVbVQG$Pt%=mt!-BcK4wmBtFaQ&u?v4WfZm8e1P46z)P@6zKNetO9Y_3iqgTb>>!ysX+^=X6y{5Q8w;Jj;8iN7vYl(}^X zuSRK2E&K+B#V^3beP%ljs$7iUc^p<5#r**8UJEYt0UXaw7xfQ#pScjfS25h?;#Z2_ zO8m<3Bb$1%rT=66HsJ^B8&QuRjab93Ubm^wIU&R!u7V3?-1)f%@9Tw_g**Mme&aBF z&pDw?g$)q>p?2{3g0hCBVWhKfp;tTdEP}L>GSBjw;gxS~p2Q#2nQc?1ktNE}Eh7B$G z{@)s%-O91jCJ6K3_ycH%Hg=Oi=hi4$jJXkc>z-RM^KadQ9~-1rzCkOit!=cj+Ij#Q zmoMUX$RE*KNhCk(ZO;=`-_iZq9@6hG>i1UC{NBnQzF~xy_fwQ0GE`_Z>bA$PBJ?=; z!dHEd+RHF4_o%{hQqSi_s2d~9Hni?Z zguZ@#HIivkH*l>ok#464CDsb(0G=ay&WDT^XfJbXd#k8~DvC+(%2B-e^|-B+BZcP9 zAv1S$`R(3o`Bi2hC%Vxxyqo_g*8E;uj@pd`hK6ua7Gz(7Q09$MnGiQja?n1;a zBiXz>yuA+Lp(WlWdKbv5h2O_1CS_+%`EddgG##vJ4s;yI*;odjr;rgB4B{y>8axol zu!PQ2M2vB)>2Lx7Jfh+}f($y3;CNYM@9{DzI#XP{bnlWC1Tf_}INSA(d!-<)iXB4~ z4B{9UUx+=k-eHH(4Pyu6x>L=<(z+9J=E{Y5`{C&yp8oLkEj}$8#G4Cxfm&zdd5%YV z#d=6XA&oj}{2dXuH_;SVEE}Pn6FAffxOxa!+s`rEK-qDNh$DM1J)2Ay5Of zYm4w`7q0p}P3zL@;6Sb3AanbzQSEiU@6itPy-hp1jKU9S#}`DjS7;DvFX8tBe$V4~ z5Wi>eYsc>Zer@>e!4I2|pmFWo*?FK+uQ7TR>uA@Zy+%)WKf|F_GE}z6i&i8kuo;T8 zw`doH=c?bkM4GupxAbYRQ=4!me-bnp*jSv?x;AQ=eo z+AVycwWc?3<6=Gh&WMMeh^#{F+$|k1$Vp?tW&nOf!H@L+#Q#9!hg1`qSc%HKN^%x< zqLAFJb4d2Xh_Dohz*Z8lsTwh-w_FAq;he6p%i)3iw15#vN7kV+NW)|3 z4m(iwC6)G0Of@u@8%o4$MXVtp<7mZO?eg58A*8OL8ZMd%^cR-nNU(jb;YSt9Mxlb@AL(Aw0F_NbZpjLgG zo=|DWTyF;;U8MCw%^q<}yBa_H9PPltSV=8-551HqI7eGQTgEB?Je@1Ws|jdHkV@&P>he*13v%oCj}KGC_%6Wsz-RO>-e zE)2*%qK#Eu+JHZTqwZkai(T^`RQ)b!X~0GjD7L!_DBG6e}sja;$?EIdTUY~(4j^rsO)T|jO?E-8N@9E`jd zzTSaZA%b6rc8Q+94%DD`pqZjPMe&ix1!0Rn1?b7YS&$`CrjZw(vlGwSC3GPS&iKCA zAJNXMP#MuK72=7HX9IgM=6wl<)OifA8?^I{AL%K_ zY88k4F9Qjn?N`hp>@11nY**)V$j5q|IyGC(!q5<-+nHFrX2H!GK7wmX_-*wgiZ<(Q z#*b_?FT?W++4V_koMv11;QogPK!#)!h_QrPal@{#^J>|8n||9VHJdOyXcxP=_oi-R^O?q5Zd zVlAY6fXuYB0-rai>tND%V{X{Pz5N=lw(xu2RHFK@y`qP16p4(7gS$I-ZxY%%;{W2z z^krTbc4)mG0H>-ei9E@1-%Ch>HPtig41#4MmY@qHsmIEM$>?kXF_E_2payi3Mpf5r zP!x<^es)!Zw`A=4q29kG-Jt>~_7tydmb zB<5(n3Wa3JSb^q)INbxhD-4{7R!Q5B;3(A+ivZ3q@Cr26Ss|^Oec~3J)(61b*xC`+ zXJjm@mCQ5uR@xoJl-kRLm=-m?lwZ}0RZpUfK{{8iJ)#Zbc_cXok!r92y~+}T3lr@* zc<%?@>WASFdTDa#Td``Sv=hPEAJK+Y+8XNzGWCNiAN=q%ZIEgG77!uY2^;PNf6{nf zpE*$cR$iW0RdSVk;!R8g^V!qc*0cy|deDfGimu%;IwlXc=E)&Gj8yE2QB$_IR!7m; z9`#RTa}&80dXNM7ssc9Jq2_zoHJ6A^7KeZc2QX#C@qp~0m~zm|QUR|1$-yNq zPYf>9a~QgT#9t2M(Bz1)!GoR+9%0Fxa+r|TPUAlc?@y`K`vcL)LF^n3$+^G!W{Eb0 z7GjsI86$KhcK~<=jAY~jgWWX0&+E-}bhW06a4vGV9M)0X`2GP6$r2#dOdzo{nCPXR zrXvJtPyz{A4B19DSgK|(P6emwYtjIwvvNlzFH(r7GpC530uqdVc>2aI7GV*yk^Lx| zYSl)YJ^|s!{2w&fEm$Nir@eNUzihh|vpD(4*V(q>ebn5-XAzRe4R1qQN1;8@JOFdF zs}<+xxDcmC#!(AF;87BX@oB6D&{JokFT?zLJYquGflNUgO*GYabNFe*w8LbMa%3hP zsVU}KnTlhsk}(st@pNW#oeQJr&Q!*uf?8|y2!s$o$p;KYk%ggGkwC5=?)9gP0ehSxY3N0ClkBNsV1aS4F-6!B_X*rn!!`i&Fk)4Rn^@=8BfG?3rn=o8X)Y^602p#_p5ZN%r82l( zv#PNF|FKLTrY@DTkTyMp%HNEfspIud;Evb9N+=uvn-+3GEcp<~=Q~Y8%frYT4X5iV zDNjAN*CS7j6&G}F#Sn4;-ESr#DBM%U+n=WRmTd;>JL>ibX#T=?8=Q#~Vq@$I(WiP6 z?|{X5IFQd~3UE=)z+77rzJRMg+=J^q;Ib}B1V+p^bOglIDY`&0UiX*nw5ZL;Fo+tQ z-ZG$|Gt;eF{We0v!m@>_e~TXa@WhAM2zT8G1eiZAY-c1hIV}CgirpX3sha8I!{LC+ z>R%Zwvv6nFaAes&9Ct?ia;BH8q%&mae9$4%K!`wupuP+r>jrQ~FZz9qRr>C?7Hb~W zf!Q}^{=&>VkhDq87*Xv>Y}zHD>KSaTf8kA>IH24gyiZp5ePMsm?sPkl4Vw3aGK3&abX|#~{HV z!0bS<`U6=eV$GW{_W>Z{d~G1XTv|qh+zyPz5x6nsT%rA!M*NtZ8oPJXv3Bsy0tga4 zgFt3}n5@JHSTy25od;lejCTxx5zuf4rt!m4v|^H{8E5H^6^FR#>@wR@v!+1RJJbpm zkwlVfr1-Ed8iM+{SILR{ z7&4N}6zA3x7d3*RJz_A~h<8Gz)6Pc>=qWxB3z)Cs%OP{g;rR^f%;dP%&DxvLKS7QZ z-U*n1e4JC4jwxF;mCSewC{>ItSLUV8)1jD0Yc3`O;tCx{SP{kny0`~%->iO;z<6WX z#D{k#j~ExpAFJNh=veR<;?O_M_>d>^u_*BpeoU||Vh1E#6B4GeGB{utQ`b!pw^YK( zB3D4+MKnRE3JM`n>}X^| z&?*G@s)0m@P)CNgO@czgdJYs)Xup>7j_S|i!|QY$2xeK|z?k)&us%;@VrwiUtWPJ( zqy@0`VXV;xaNj9og#U!li5*K{RPX1O`@Lx0nUmzQuVEiA6XwehJ?tF?$4+CdH5AIw z!($ZFU*+dA2{ssx3eE>V9IplTTC4=85x74j7cQgAu%hH{Jv**6%n3vsw#H~^Y>feB z+)XoOjtyzG;#ZfcBV}0xdCWxZ31l+oR*WOC337$c5@D?2)6Kypa_fw?kY{6#0|p5Q zP{WH?P*hZ)>Yc_#$hZPLNF$w$Saq_1u3hZSZBBAFbP_kJ)+slM5+L9M;n59RcA|>F z@X#sQtwCB#4<6jFf?-7tVtOQ?Cg@`UswT>(ujL?h*HK*K)xHGyGT zqE3x%#!eyEqHJs}Lf-K?81*7Ccf&haau1;c(Z%Ds{B<3zcrL2pBcWFE=p%_l3# ztX$}nI^R;4nA8L3+^>C?2s7xRU?jN4Y-G1=n+wav*04PUj z`$gH__ObU^fT$d;xQ=w9R*ff(yjRh|&_~o9b8OzKIYQfA-oMaJB&9oxk|E@i5Tum& z9af8s)Docp-A)-|qB8c9E zAg<71u*Ap1LN2sOaM;W7g?L*pn>*iC1<9L3r&H;c;tuUdtw@U`GD$?T2Yb(IRg ziP{@R`Xx~JPku+k-jHHL+L(cqGXpt8_6wwV%9vf_s6+zG#5U7Hozi6&V^mhXW2SI4 z`qBlqqj`~C^C$ZF6&CP8;{=*m_9x{VNzgmuB`B?VlgJ30RfGD{@fU*qMOHo$r^oO9x!CQ8)0xbF2&O_sb~y9fe^4%X zSzhzaf*W{JS#MAleJ3X`saY(DtNG7*+{H<8A-0U$>El4tRLGolCKw#U*v<+~ywey< zl1b+?2a+s}hWy#YT7%UeCylmY1*y|M+7=g=AbgCFj`}W35_%Am%(CT8=Gcd^Vurk! z;3sz&#Y_6qWI}l@niFhnxoTJW7pp*V&ARPCvy&B0i(jJgrTl{KzGj)oy8R^c4Vfz_j{QD`;17VOf;S$`Zv697J0>@Qx5$GtA$ zz5u&u0{`T~eSHE!2PCiM5j8Cx~Xc8BYUlEa&q=~-9oMnnLVM`E!;-Xz9!uIok6rH``m9z_t-YvsnyU)x9mdV1O! z!6v76h!{8)?16ccZ@IXWcQEY`g}_GSZ6g;+gLo765Tg*Q=8PF=!$wM!p@awYJd$^{ zhIv^YLO5&Q4TI(hh6G3t-`%-LIc6tpCQIBbSX%GIddV7o5m#IIq}=PGb=H;7 zk_4gH+L|tSas3W$VjF`SG!VLN@@>|0>z<^&ONQ;36=ujWeno5EJ4^`%Fe)Ifd5BhU zVTZAA3J06Skh}8T%E}`5vDOLrwf}7p0&C1`?`qZhJ6kJ#p`4n%ltNiKhLKw7-3K1K z9po5H0LK@dt+f!l^K%!{MnfCu89t*N%K#ItUtN`m$6;24Eq)IMXdvi|8)xFWgv0F! zw_Ef?nTW6$pWN{zy8_&e)O{$UZQ( zeazVQF=HDGAI0#Ag;(h*X`)K-hRB^6=Y8M}ZO|$m;6;5J0X>vuFtgxg`>;1@;v11; zKNjFMVCvz0^ONX!kXGh_YF8{&x6iG~_^g5l;-_ z-V<+o&$zZD!nE3btWKm$uEYzJC z+q4>5lQQwdZ4%6`OUk*BMk}~lYglI)fE0@;44Q6M?JPafc5^r8ziL|ae5BUJOC+Xd zl}Vf0aVPca-LXLKhGiqP~u#{1=VO zUm2f+UJ94!eF`+d$m@gw0ip@Q!JE=kanHcJ6L%Nx({Lv_5wsU%Y`J@w0}q_EFNke< za#9nQ865}H5=y836VuG$=1GxrU{|bI#5nbXU|$ZFTd-Oi@TOAKxHGRFI>;H=4{_71 z%^;RN%;WTgvv6Og_3+Lc_Wi?7ywBEppeqR;hecFw7)0|^@NwmyY}pLn?g&$fcMg9;d?)bZ9leO zG(DWS5*!x+$yGjoCvBWTNOWSPxsFn2hcDym2_MCES(vs0eBpNxGlr>S5lZRxms8F2 zp#T#sCxcm>zbiz9d8gig+RZl0y}`%zFADgKv(b;{c!V;)}Zud6Q zX%I`AXw$fapUYUl2*erJ`GU}g)1*@x9Ad^>%oeR%b*g;w2H4V5lO}UE82-P#Mr?8C z*x1rSx5y)0OFbe@^?tofNiDQre1TcS>D>5NGQ|;8oHi-3FKG*ug`9FXzE)hxItH$z z;WXzO-+$zNa#Hei)IPU9PH8w4k|ZF7qxRu3;SOx+^3h}kkXvh^_*ZNLr!W{m9yI_# zVUX>@0mvTd(|i^*8$3^}`A)5fb(`BJcl6h+Mfee8{4%}#IznD1N{4c4h#uj+#)v_? zH!ATItWHfGA9JFEX{q3bu0FofH!%F?%;Q`)178z7K$`p*WEmJdL=6g6s~$ES$Y2cs zg}*tf59A+!G#F;$i5N1B+F%XHl`%t4s*2fwYXp`}Q1)KV*cvkleitNu1cSA>b= zNJDT`MOlT_#eE^$E~}b`LRaC*rrLH{s2I=VwJ%B>^+pqErS$_E=z}( z-Ttzi47K3HfrFy77{YyE8kEz*Vq&8~yDxQs+ z9im*r2XS2ac;+T-(#a6{R|Sc_fo64s86lU~ z9LnyCDHK>~Q>}jAShVoo1Xhc8QPw=sskKy93k)N-Gim49Noh^*gnn*+1Of+bpo+o zh7hWxMnKcF0rX$rZPPGs*Toai$j##oS7D~7gvzKxt{Pf)=dw|K%XwjlwtJoor|@P5w)9+&xi|0NAbVSmiv?_a*NVaOJe%n=61n2y$3fO~D;>d^$bwg1~H&yc$qp5t6GU=PUk|RKG!DEzog;PLMPYvp%+h40Po4 zK*NRZ49QjgDqYPh1_2uyP!%F%Lm$z(5op=_Oibj-qUZ5!3tvEfK(>EAI*X*Auj)&> zR{>+Jgt1FNv>Q>-P5*o_+oOH2VqX)sJ1}j%57Fmq5Kn#&Le3Xi$oV3GDTSQ$B!!$W zCJ8zDEjOaQ$U@E+!9c&L3pqI#z3`WH#{Wf>+0LVV1D3CN8#;+51kvz?ScASSg^hXe z?~-^ULrC76D6!J3ka=(WXLSTQ;r9=7NDNJE6 zn8s@S7>!yna6p1>U=QXheY_6r0Httx+JVp^I<)&ZCi9R(kGEd8rT$35a$ptZZfM{$ zKNjz7q<@Xe7KySG4uNn0qBD4aI=XXKcmPW_x90#-bO17TV~!o0I>qK+g2A(1q3hqHKY4aV+^1f_2w9@*0JSpbKO&ANTigUxfSHxIc^gF^ufRxW9q> zYq-CL`zY=&VS;JK{dwHq!yOo$ashWV)aJ!~5AF@PLjr1h9rtax!vIM%V48v1x2VH? z5AN%6KZJV??%nFDT44{UAZ_+`)mJN07pfqMsYlg?xDKnHT8P6{5Mf8UifP7CsAl6j zO4Be9y}s7=dcEj+*|zIi*ILVUT^78&F4CBJzrWw_{N{Pi%mi`Oe!8DEaL)NX zzyHtg`E#B>=bX9PjKeRvKL?*?iB{_V#~+MM^U#Mx0$nMaj)XK z`An>u-OV`e`DDsYuGz(|dZQkh{;I36xq{@&ZnW~^Wvq^FNL}+eBtMJI&S>NrPQ98D|YB{zmxdqlKjTY@L~p+~GwfC4^? z)n2Z=+mk<6r3PAgL9c76=kdgYc-}tFBY>_Ig3H%A{<$@~4h{v4C%Mu}ma62Hf_tw# zh2{s$SgvFAMMYD31h1EIHer%~UjUoPUM9!A;AHYKTOY^ey}4iDECOIVI{df{1$BAj zPV9A*E#U91B^&T=!!}?W>hOLPzM1$A!E4Ay!y3YOaL})kEYV%El!wRKp1hFe1wQnB zUlp7WJ-L=ec^%6-w2Q_^$iP87iOE{|D@_0RS7S7pNAE%%J?76L<3u6f;yhnYjoT_q z=Q?r)zLZYNFDQH=^D**9+WgoSEBzjkLUhK;c*wcEoSj#da}9ai0#pE)`Pq;;iT5EI z-s5Hm112Xc!S8cndN0{Z zX6kWI9lO>oaI1TqQD^J$BY%|!t0605Qw|K(0lE>-vmY1=6I4P2wXv=K)?T{Ttpcit zJJ+}tav<}1o)+4-(V$S=MCoFsJIG)uk@I=)&-voPkT zEl^vAc~$~rZ!YYj>^&loJ~$Le$ET?|+bYJKv`Qso3oGkULB`zX7Wf$aLRP@Ur&-=2 zn)bN?;mYIP1Y|j`t5X81k|rx1@0iGGwXTzD#3OdJ-C#p5tre1{$a59TMaNIkU?YOt zC~k?elxa#1+bVgsk=!ou6=VI_=Z4PCE*$&p&@qEgt;TViJlpG2mg9%Q5tou@9B;?r zSApoZwNY}0uc}b0*GutILf3$o;+G`4ws@(T%=sU^6xOCOG<+CUAV6!Dkd{pPC1W>=O~Y3%~{AFDu3W@*N%G=98iOn!HAc952pYcMU}o<(DiV4wTC#7w;2LJ!!SYFX0Jr^7Ss!=0VX@^>iH~O{l3Kx_y@1GCPbscUIhP21b^gEtdy$7 z$i42}KyKE>`aw80gSFm5QrWfdSBlm?v}4H96YpM-vCCG87vf};^^o|D-kL&bM(BY& z@7`87uD_ga_qgSvTgcX6G2<+Go4D%{kpiz*l&)|1g;s1a!Ac3N@LSNy25ch@yIq>( zmo}GNEJyM&(M=CP!JkXCk~HEqHZ+3}J+JY41K!^Zp|Op_3MqcniQ@BaGa$a_yxWz- z-5WDzgsCqAI>8W4px%Jy9h|xush0>Ep$XXwWsn2L#qGyn@=@jgf&D8@ok=`FZo zf<^tMj>RxLd-o2A@cXf6npIo4lF@fp#uh>kFK2Zf@Cu~{T$ONbVl0f}!IH$tz25vR zXy<2b2l$IoGH)B_;1BVGGbWD~vCNDmM*V@g-zUnS4>9y734Z@X2zMRE(IdE^- zm@L@_7*y)#Hug0ST>LA#PN#FS@g17EZJaFHR(h%CcVKN$_!{2{Fh_XEnC^b?jj#R> z58a75^`lollRdf8ql&ia{{yX;wW0#<9e~|uZXPyco&=Q5{`x;XM6cAAwme4MFA()R;U(3T zus0q#S%`GEz*O`%l;DMVekuSTmiQu5Q$k(&t1oA%D%?=Q)vXHO1>`rtqf4V-twk>~ z3%Azz6#b&|#^>aV%6RYD#4!Fy2AAzRDFp|La{`O`oIA6@`OvXHh`-djrSYsPSm$fn_*aaHMby8GIH3 zS32&&fiG@RnsI1{d_4?2o@gq8Y{^_4YjE6vBYjnBW2$#cD!jC}r>8B|QHD?E;={7< z^RLV-TefEQrSmQidw&sX6=_)hGrteF--nWLs z^jT*(*p>>X@Y&-2&bAKy3^9}7$7QL3P4Rg5hHm=!a!+SZZ~wM1zUABwP7)4xL8i06 z3}%7h?>v{8D8T;CWbX#~9CLg3;6RztLQ~VpUMtYt8(zJwr@c1`z6R2Y&mnsX+VC~v zG6RMIWf0ErAW`T$#cc!lAT>&c=^i@1DVZ!YpP6Ysvmk83i^2$Jcx5j>L%eiVbk)k) z1B2TjD;mQ!HKvS;Z)tA|Uyw%7lHK$v>BQpj%x!a0pP_1kk4Y!GQ}_z?AihfMwU=07umL#cUw&6p} zgAiNO+Z#r;-xls`gG66%cWQ88_UvSLPdC1fJwOg#jEahnNN?!fL?4pIXP)Vk)t9YY zxqQWvm0{##uz%AA`tGy%AYnk{5rf=;DnT`(x34qhRgy9;m_ZnC?@pj%No|3u6pFdC z16Ab=O`efsz>nsp+O#rN1$Em7v4hK88g0rJ-uq|xb z5qyJoFwjY1OLnFbgI!$J$aO~dwI%Rva<61j2SK2}?o{_+cUvGC9vH+|!leK^`>B%R z^YQ(I1TY_c7#wiRQu=?@>J~m$*(hLt9~wDk+rMVBn3K~&o@K-g&k^e@?LnczkMF|K`VHrsTH zdh+&iK)+*X5};v*re^VT!VJwohtIO@GXaS#o(yX4W9lV<2FL{8X}>CavgH{XGPYlvJ$a=-U&J?=1loWfrVywrdvc9H zJ=v323DloGxmKVp*^^fbG?YELPN18zC%+)jj_k>61p3qL$!i7Lojti;pl@VPUMJ9Z zvL~+>=r6J-zbMeX^kBcKfPa4pD8tYXvL~Bc%-O*G6`+{;1fU-S>IyD&pA=yH6OfAF zTTZ4OL)7MV4E^`)vF3>R55T>U&6MJ^#DM-5P=ukE0i_xGO*Vr?E~35(NT~lCkWf!$ zGyjk=g9lh+M3NYi!WaQB>Jw)W_~TWwru8AfjVI= zL!;yk-Pz1Cf%>wU27$I@GZBGq%w|@m@hYO(@Krz=hHlShP$q=?1|Y%xc{Wplk30i+ zAD{?B4+2Uv^jF|BoVWi6)&zPIP=s;M07^6T9PA49MLpvzcoI zx-6TyR-h}gne_r)nax}$&{f&Y^#Y+-zbFujHOLw6K(PjqVdSU_kmR>Fn`sih&43K& zcL-2~p_>7v8M-BF+KmZ8_KqxlbDyBEW$DZN1bs70-`^+bJ6ZY)KS6h8=?gRj-IK-l zE*RRAHQfSzKWlCfXkXTB6zHL>Nec8xmKJ+R_QzS166j#o^a}K3*2DyQI&0bl`q}Z5 zPhijriRS=?82X#zC!ZJG&jCdk_bWhYhF%B6e1VRC0@%pN6M$}E=yy;P!86RJvjk8h zL#2RjVW{l*$$v1W6x0epc-ailBtU6~ssM!<3ImEUbUvWF8Jczc$HX zs2)(5p=E$#3^f6|o1vEDCw~|+XTjQ9K#dGt2j~`tI$$Hjd>a8ZGV~=tw=lE?5MBg; z?Ee9%i=jUOw3ng(1REiSb^&T+=o^4;Vd(z?G?StK45*8t`vL7`=)vPB10iz`H2(-t zBSVh^x`mlk_$(47Ru#{ing(0D*w89E!#qYRx3EtL%YF`yQPssZh0=raL;bqv-4>SO40fc7&) z1yae-azHH%tpv22q1Axu7`g^fA46?`_A}IV{Nzns1LM7bxVFUykDvTA!EFP?wKARt z#I-WM6Oi!T0f;MQ9L4ZwTq)z!{scIIo;#kwv=H4x{C@(9F!U0jG(*2Wp2--Ncmq&`p<{s34846k^Mp``0WmdE z0*I-J(D6)wZ*hqVKzxf!oCAn&afvB__!gHq?|5cO+Kk7uRn^Bc`&nP&d_baa79i0# z7f^=mCgvT_{7|69$1^u&ShnGKCN0qApc>|D0Tf|qEub_*>tRh~+mC1JBJ`U8i8y=- z3z&lYqGmI)DbRm}YEhU5BnrO@NEF@*7lgVCkWjx4NT}aFp4lzby8sFGUO+(EmtpFYzzOuz`b&J3$Cf&J|m2D-eNGN>>M=xgB>_J zarEODFav{N!!H!|Z8kl#m{j`l$uaU5OUI3)*g+CbiiN;n+dm>aD7Rf zdWbne)FjC#=#=aP&z{=Pi5&x-+p=P+J)nKoZ#A zK|!CmPK$9wyGu*x+Z>!ht_>C#p+eFmUe1kN(E2r&zU8D)3tv=sQC)aB3b+lw zIX6R47hQCbMbYBmj0t5kWR!45=PnFCx}L>>+kV$k9PeUt36r?)PvW>3$5I^pIo?&( zyniyvIWRhzro-MrKYu0v>iY?^V+$x8pT^j^{P%f*()y&?| zZ!$P+*QuLyYek(0succdx8(Kd$-;PL=&l(czy=oyU{Uc3!_WNPw z-QR3G6Ii^Hvqp}55u2((^9>hrJ`hywu#po;eO6x8slQ+6=EQ}?lH}agAv}6kisc(; zvmr=Pl&{XES!Kdy9k+#I3y669I<0P{xq%XH#gJWBtCc0ZriyVWO|28Z6pT<#PbaGS zKys8G?J9gCq28bVs=kX>TOB1Wy`vwSp9`BNNNr2B%B!@<2~FwBYq|5~)dRhfq~#GJVWq5x zgtMFi5l#=Wpeg0_rzvG66%roHsgUT_%I(Jr&7UjcQ2k0*KQt{o_N+dzCM*hg84`Az zlC&~gaS|(DoWwJl>())RU^R*jl5}YHUoVS{7+X0J4#S1s#`~h+GDs25$|NSyH zHi{QM$}3%M<)_tZz9r=oy~0H})uTS^EsA}W9>5KNVl*py z)n3Ay5sIc&N1;jOkgGqXq4i@wc*<(9P;py|wO56#q=l4rW>?EakgLU?CW_^C`CQnR zgdGv&SAzHAk?Lk`VGLl6OZ~OVUE{VEQ3W9dYT94lmCrE&Zi^KM{Ao?8J(3l#T#EHh zbi9|Qe12^=`QErT$f~9lQm@1#^-Dc;u>`9X<@4X-+^D#cf+vqHR{bE1#abT0=5x86 z1S{RIL%3L1aFOpx0m2Ed^0*o;MRaRtVXfGH$I1z>M8Z#ZDXvBrCV$+zCXx4JG!{}9 z#Ve~rcquJ7(I91|7_~uZ{U@+mBLA%>g(c_O8q|V~i$Y2vonq5pGc4XhmP36|n&d!J z?;U;OR4$bgKWvKAc0fP`5)x6mX}Ah(AcW5<6NqH3YUL4)?jTk5YnUvjTC+Z!j>q*? z`K$)fs{UBKzcN~niBq{$)_-;LM_PnRSk1o{S$-j^9_6I8#aW0v(3}+VD8|n(ktNNp zb(hEHaTLg{0Di$jhph??mRw2BLiyRVT2)HJXXQwy7@z9(XYb58-8_i((KHdK{Il8> zqh3hPY%Yi{+{)=sxmcq3B~=?0x>5uuye{6AwpOh*3#nGBhA!5o2&)Gmt#cOX5OYcd zM`!t`JnmIB2p66G*&<2B2#-H2DyLWFhPQ0hUX>yiMJMqHA5k?|qe&{>=0<&SDFkcU z!Y-#!HRsB$9GX@gYE5;yIZ{n3W3M9R*O||)8r6d3cJ+vqm1S-n5sIj?TUHARhYjxN zMzocYtR8OBE1hbo;B6sl+SY&4P@Jws?aCCxgnk6x^SWPMMC|etF~IPQ+T!-G>0mqS`@FEtb{}ZbBJMU&M>mWW?0 z5@czr$BmJt3buF@sn-%+6rHhniI^30f??O3(B!NprPx%Bs8U+K!`6^;h;}zCig9to zt$4|nrd+)BT&N=D@{3i~W&@kwMxowH^r)klw z+!(`>T^^BkEqS%VofB%P3z>^!+^}2M^Uc}-=2Hr@t{At7Tq~r(>QmTn zn`8w;SIez>2uB@>UNvM^w@Y)YwADwD=Emx^8cq+XwDnE+i*>%jV;3{5jNcnd4y?Ix)l@P4gmW!wo(V6s_o^7mr#-bu8{%={S#zk|bfrV>eM%7?$s@t)6=7^jrSz)W^h%XQH1Szig(#slRLH8{GFwQMscU{& zSJIVHDc4RuZy~>Oh&0jtJQlAMi=nzM+!`Q%N<%jqmhf~~9|Tf7QD^{1T+*&A#m2^J z@U=Zp&U!80s0M43Fv_J=#R$z(-L%T-)pCh6<0(Le42sdKh*HX8H1jUT#VKB;TB zfNGRLx>OCVwe9D%c#`rLjOZa7YA2tE((d7xS4(~#(JJRce?Qv1tFPjbc@fC}u zaOboH>+_xzD5lNoA}XcykZ5Si=0*Lq^^16f?)TH`^5l11|R(DA9})mn%+?LWny`4-)mpS%e!AsQy!FKDba4)!7J_ATowiuFN{F~Bp{uK0T`rD& z|9YfyxfZN_H|vBwU0SJjgrPZ5iq&v>p5l2ZwC!U2(NN2DwK;RK?}s9GtR6|{Yj)EP zul4|bXI*A;<%6bGhnq#w>c`k|JK@DmJ*y6yXKAJ2l})6DCg=Q|6r)O!6TcpW5iFfW zzv7B%P&u_}WtF1Rn%3)Rc-5qQn$EW_@=DFW`u%WaMX&JN3XUfQWa27hS3p%MMQEbH zk5f*S)~n@mWi`0g37aL+Zqv#u@-~&9&X;pN5N%qh%3176I2S*9S}DSs!tk^PCKglhi} z?W*yW9G&@DSr;pT^aZGNO-X=g{j4(y{wzh z_d~NW)VNs>)KAy0P%V$QENDZkLd7yCCLCd3maGmnqPi%p8C9BfoG^L_)}F1T$XQO+ zr`aYMmq%0nz`7iM-KtNo`IaoV%}X&J!JSUanQ&-s#9!C8+SF+4Rq?KO7DpOHm-Wn} zY9}FNGMvxi4`DH->aM-2HZ`nOL9W(mwI%%jIw|XsXhTks3(ALW(Uym3YL&SB6u*?q zo9~;oqP>ZmH#dhwSDN*R^cCt@moWzovyu#oaRWnUz-!nwdBF#)g#G=OBEiqrxJQ4 z@6@*BUnz2x{HxD&l|!jy$%Xx?LSDjHeoeVo7+@=McDW^zV}gr)PYU>DMYl*P#myo4 zTbLFpjf1@kujE<1c1uL%)Jwn5l+t)vU(`d35k42Ma;|0Jmo?GCQXvn>Gtnhyf67uU zL{get&7Un%;!~`4yV~wVhfB3SyWRjs>kb&Cr1wwV z)bx8@)u^~D+!j`9-A=>{Z5M{^%rLp}e4ia5Pe{&Cy;cN~L%$65cl;#1=f zM)IB%_yg;qKJK7?pLY!E4*sBSP`{_*|0tFSitD8Kj&_W`RN?hi|LRL|Uy9hHC&!fe zUv2GU!GF6E&;h}}-5h-E`3H)?#}(iMh40_K@W&P4-(nfksO?M++8m+%q|==3-gQ3H z?=3J7-in{}yp?_@>ztp}ZN@x!Yhp6to=OsK#x39sTTa1V@RjE4n>RJD z%?@8YjGv~5j9l-3_TpjsecZjxq-k$+j|ohzn@`X`MjA8WNHu;K^hXDp`tGD(kUkl` zx)odx-ntkZ53)Di+t;ijTgfnaAh_u-)Th}KN7JDLq^CB$?ps9Zc?dp^_iHJ%TEG8J zL)^25nj(pENYqfO`$()zbJ%^vLZi!n>S^)k^J#ET9L=hFSo$p#>ICtU&Z#x4x1k5v zi=V9@dHMYYfE0ASPUp`*LJmH7>;7%V-2Ze>DdEPvrG*kD>|r`n!T1U!T9`2|j_N|Z z4cJYrX*JI9`w_2_RMw&p{`0+Lx$Y=J8j>n-SCi+(tDYCN*<%RQ*>fsNzm?5qk1bwk zCd^p~$tOtib6qbFn=(k7z*9}&OuSfohwyp)oZH2N>sBeAq@pLh6jK*g<>j%-=0%Dj z9BFDv%*w~srloMyGt&I$4eM4>Uc9{SBV1~YROX}!RJeA}dhy~6MZ~M>&B*0=^*Wc! z|LM=Ad6_f>Bkq#|_{r72e*Em;gtET=?$ltoeZh>2Y6m8iRsFuY1KC-ZUdzI?5iDEE z(oJbvx1Z@+2n$BeG!K*K8bkwW^LKf6Pv6h!Y9YJ%RO_pHm9JYZNgmWH*&B`1wW&E) zIekLF^;d9e$4V6PsAlW6>SbPio2Zy;s$PPiZn)RN>}W{*W?dN@()_@ZLuymAq<%@p zRF9idi=#=BOujZ3XY-(%EVqR$m*VuQ9=bYRoFBGQf-ltTdTY5Yg9aZOq-*rTcsC%c^=h`UF$qvJ9ZQJ=*(O|t0>lRBC^~JTO zIT;;i8z@KdC*7r^;}q0ymF!naQXn)nymqn z+LNC#Q7DG;IYmM&35SJ?XSlcq8V0MkBu7<10;(ZZ?OND$m7rNkp(#Z?5u6)3i&q;i zRV$wjy5>$UI{%VoYb*Y?;z+rXvs!n5PJ_lIXE zy%9ioLRqrcqPK=;_lIZq3h~l;8wKe7(8dWoNd5C$)~&MRBptBpNU&n9I|{qto~B5= zoJWDDXq0nlJq_CTHWPeSoX+ES>xh)bNPE7SD8Kj}8kqv#9xEq~PnFUbYR`72Z;xXP zNh{KOw#(R&IL6$oIs`}d?ioXr`IAW&(-mW0gdBdeGB*}8=E=Hkl%6{u=azq5()h#+ zJY}e?n=-XAO{3-qZ;c!CH5t40wioAa0(YW;rEhpG3}5r1wleoa2V4wZ>3dg63ct`rsQ%`)P?v_8g@lesrj zDu0T?d{+qH>9p4DMV>_KI_B<+amBl*OJp@xlrKDX#Y) zZi@7Vh^KK@>Y?^0`ROJe}9k6Ky6tiTG{4dA7ZWaG$=!tK>YB4rGT3 z>32SOPci3PTgds~4t2huZ4LR_)({7or`OU#WwQVIv}-;)>^erCeDXDET`rzAeV3@0 z)(ekLg_-g_!u334Ly})r?bMn1d3M$F5J`Qi)Tik&(L}ao5#aN@1fX+YqM|~1OAwTD z;?^kh(7lZ$egD%$wMz)fOL@EhY3AU#U+@*S^);ej@D+;8!*>8-{zMF6hx%CTt){BcG*^#DHb|hKDLH;Fi@C04b|0G%oTlST8tBAX&vVLE7gfQ>f zZSVC}t-WmFUr5rcT6+o3t6HPx=zHUcJC`G@2%RoZNnUXH9`}=%_MvC{SzT>*gj)LE zmUytuj6CI}h4(`CjCk)Nn!5(2w>0iOg*!sr9H|sRPL--u&3m?zrFU-|OG2zrZk^q$@*pUt~%8l;U`|pVQqlTD>e&;3AD(o6?10{5q>er$aDKJ~{6mLT=7!7Bk4e?Lx`Lidw&s>w*7CC#i zo)gY3bj_vsuT)pEkV7%TrSbNAE?CXETJ-x@7&EIe--esExgiZ+;S(f*vfH>y;iR*h4ZkyzQL$n9M2q#y^+9=k8DSeXb5_#z!TRRvE6fjJ#A}ie z*iE~6S6<@NLK9wz0pYAS!Xp&ThpYMY+K6hcoF1|j$<2%F3)?TcDDZo`|0BvpC(S&6 zia!~fW>^$rb=G5j7T+=I7LilMLRU|)yPi?-3& zE;~Xas6AU{q=%im$8^wqR{Y|l*%3;~fZYzeY1cBFB`?mtjR*F(5Ikc6!#ouN2QV_Z zxZo?i4A7VeMkBG3z5os4_cj(E{`aOxE`M6#$%kaR7W1ylBF}GA-tLF4^Jb+ zYXD^!_hUd$5wz@KK+g~~=3YS0G9N0@gNGRE2lOIA?90y?hgGHrU&`TLA!tPqxYro! z19XI-WlsZolb}ZO0CC7xB8xxZKwVJ_ zh%yyG&5!XtVn4i_Ayma5 zKEUOK(*7Yz8$G}}DyByX`32P8A95S`!YM#p+}9ie^a@e0Js%L)<7=-6#F@DE89-c* zuSH$_A=lpZ*j9dMB}uH00lI~t>j<}wq3wXyQ%J5mLc#bESBHnVI$Zx_#&DrM#D#YK zAY-_wAL63^;;W3|qI>8W(i8g*V>sjw9U>cTap*1ATSas}I`A9Y%P0mt_V-xTv}BdMml;KQ8^JqL&j_VN&*y^MPU5Ety_ zQvq?~y*veo%k}cR0kQ4N4+46TB--9YjDocXf=k>d1DVe;P1 znX5(Z>Q%>XI%<|tsOVQ7y;@%7az~e%2eMY^pFg4=U4M{F)Q}konm^-y^R8-DN^nT6zC2Zx;EPRZy5jeBheuxG7e#=v* zt7lU0`~`oe5;hngb_Ed+Gvq0@Up;6uKiq-TX>8#kw#p7-pK0y z^=+o~=QOvh#MtisCD?BV+&h&G725aLLJTZTYQhOdq zG!x(bYoKo~a*)M!D`VCI3P-QTxr@{509CT3m5u58G*WNTLdD*-q?w>S7{uTIl=^w` zQG*fR-nF=v5l!*z$=c>GxoJ>yX|{kULHv>W!;@d1DC8K=k`2M%|*kHFs!9V7^;^{ zOvj8lDEcx(CX3YF%)6Zi<9i-xeBw{u!F7A%lHE&m$1zcXaAMCr+rAnF9(xlqLsBr6 zkfDmOn%6+~uI&wxUwhZaN{PM~fe*xE&7oSf*zt)fXu*UaJ5_U2a&`90NSDW^fP!j} zEfGq8v6p`aZBtWFWe_NPG|L0aGcIcmG%YT*9mAit1<26 z?76yH6IvDl{w4Mlp-A~M*<$EyMWxHGS+lAYw!m46DNu>meBjGmwmOMo7;U^c@F!1t zLARztWa@be`lQ%IFA(!M5GH$m>{d`ma&_s{XqBPYnC+N@-P=Tlu1xTz^8GDsW=sWV z@p7qHV~)k<(ZbxG2e2@QYhJa254}`Os0JmeR?zQ%3Wa;Hm3%wIK`dI?v~5UrK`_>7 z@v%3n6Vu>X8MlH~XdYsZuJAm%J{IMr!nN5E&$D5sQ_sU5_D+PxQu1c+TCos&S(Xl| zwPuGYH=eyyQC^nY^8oilYuWm$L@QfvhUF60+$5GuUMuM3rsVf>(MrzyFGcVDUjG)u zHgdLFa~($2X{t<2qHATP=pLTdy3d4SuPIOcK2t_j1=0N7H`lBJYq=*6kK%ry@utiYh8}FZY5x+n3G3H5n(5Io&pS_ZC7yHO$GX1s#+p@&O>7!#|4V9# zqMfje`@b90Ph8DDMAodLK%RP4gT%V_B_^YNaX$#1LFRx%sq85&qwF=U`?9CF ze^jqeQcrUpdJeX?9F-Q0IX;O~OB>UNxY~j~5}U}lWx=TXq(EnXn}5Tg-`8>cbf7` z3XSzs1yB{%pkgdd6v^3DtukuJawtZFLTTa_yya86Uz4W%{8p!UmLD$lTluU#3n`Ci zR=i$`S}1KX0_mcgUzbWMxAH1pxm{ZXD_vkpYfO})8kK{tE^K8KD|F=(tkU$#JlG{* zgVv}RlgY0rwrAokMlZx!PH{!`X;w&&Os}?ey)9SfOi4DbCYql_mLp>VHmdKhO`H*lcm9B*t^+%|hlIv(VA6FoTRsQ+Q z@U@{^j48)vsQ!&L*=+QyGyB-XHWDX9`K3Cmk zru@wjGj;k;k$PeI5tFX0DoMk3cCndL_UF%$-STwvJ7{W8lT%+rODmta@|o-~X(AeFYO0I}DZPJ6{6sjknr&o{VXM2ugpw0!99qAhyqmyVMODGs zL%`5HMZKW-{bd=io+fPod!BBrD#_;9mn%RkP?d`OTQvXXjFMf+XySrtV zKEqHIjIC?Ez4F|~bZh}_m(_R08qeVuCF*a8)f0pspgtM9#6zZHH6GL#3wuz1Y%*TJ zrfhEQFWrCV)jvgMQGCsZn$C^$jIX{gF^QGmz~>~NQ?VIMWblSWg%4Z7*kqzqxH#3H zs6BsW?EK1e8q+c?UUD)V300b4qKt5dhO)23f&@)YxBh9$~l!pDL;SRE~+F;x8m*K??fA-%W3XbzuC*tAY1K=&*bY3@i0l&?&d)Lj^roY zxNa8}^U_BtT9$6bB;qF0x^#%Nmff*_7o@w`YJZ}UV!CvwvMz!}mArgUbZMObau?%T zj7?T=qHil6TK}wdnMgE2fBZJst!-@}O!RHBxc{8^U%BhEuO&=Q$9Ej4~hJC9QOeA zwWb`sK*jl2#6ne19~d%aiAk$h^j1pKn2=d$4h&_p@zeg~ z`dL$Jd=kk-6JksB#3*}_riLV4=S4S~@=JF_(-&az4M)(C4Sf#P+?2#haV;?=O{j43 zQnL}AU|w+0)~}v}5aYnQ$;gYg3-;j;SUh|VI1=|Lg~B|hTsv(K%o z?5Z~hsi<&ki7E>Td6=?Ph*hX(se;uXHi?2gB51a3SL8A)I#qHwx zpGGUm3-q(N9k~5XFzP-jfW})!9EXNX7`-l_s&wn^@ar(*&ha4YlcMW(k(XiPRq9K) zG0gM6Vla<*7CwVsbe{?NaCdn<>$(E0e7#{F>d|A1xSrU#L7(%meflamuY&?1mov}G6sC8%O$)FbwTNcsEhFsI73te zaSfUh;Yw80ohv00{W)zQD2gw+Vh_P4fE3Klfxxsq|w((m!Xm2};*i zadiEz&quJphuo#A%6ssMm2$RO=h+l5t0?yuk_Vyu2m}hVje-wRNM=7=6A4f7vVJq% zz^)i>Kp z2wGJ%jUKq7Hf`x=e-rd6vB`y$%GX-_)$eUIvfRk1w$@b6UXgtpx9!R>v>&B0)hR%s z{a8Uu;En;CrLft65LQz)qOOap%_RtBNW8mv=C4o;hIR)6i7Cj}*n)iFO`?*kvVRRN zpUTrxn>|%TONF`0gu}Jjw|DPE%iam%$WgMFuZv239(Oqb?9-jl+YD|oj4j+J{Uq&$BLW%-A4EW9uE3knl zM-A+7k-&~pJb@vEczBc$ho<};!i13J1?foB&iIrfAv%HTGz&|x!_gh#aa^TNHtoxv z>_19_mByf{&V_yvW4qiX*&NRlW*eyv?a8PoZu>Q0KSA!)Ua*# zd$C=1#+8;DV_~I@zgJ`fzM5a|)md_AmW1`FFTqwvGXx>sESV}pG^x|Zh3XZ3%Dg^&F-6GwN)>z#_(ZvYGk+x z*A1mjfZCrExC);pYQ4?nr)bpa&GKb5uktAGL|pjj^bC5+H~4&%rYX@QJj+~-?X$^r zql&?)SP9*N6O;09-DYh3b>L0OT+9ZmF+e)kTo7-VdTwPY?N!W~(8^!A8vEwDT{9!$ za(NGW@%A|rupPB_-L7zXV`lg5^(K79+!ZuDXkAfzd+WEbO;mCh>iW+yRw-#+Aw+B# zO|JZGU;a#GY~tl6U=w9l1-S_69g@AOJs7iiZk&fvn-Vi8{?i zTD7NqwyDRSZiFy%CamEMkR)}(7-`DLaG`M1*l<6MovhApL+225(pbr}`$sQ`v}1WM zxDWues<)tVvGgburlvH;m-xV!i$TA(fA$cb)ULwl0&Q7t6sRm!S_vWXi8&L1;cckT zy}o|eRC53o*bDf7p@5s$VefkHD+n)B0b!{F{RKR^X8kV3lg5Q_)TdjyaxA)aW<)7- z_^Sszrb67zFl@ypmG#B3p^Vw-WT$Mw50lb!g>pI|I!-rXNXL7PYD zRSZ-(SdAX#-0Yxu1`tqm?~9-3VtTTz2J@wF&6!X2bTOTe5Nm1a`dzYrR~6*i?X~sn zkTdAx{XK6WSndt^1g8VR7YeX45KJSS1p~pVpgSn0))=uJD9r?;N64Gp zz;r}M2Gek#q#09mQWP^@>c1+-HKys!-oMQ>Vf2!?q!MR((twr~(A$*Z{pR45VRKPk zEgn3{+=MpW7&$a#>ZW9XU9boh5)T{CHkFAf^wxBuWc6*(fK6EN#9W@(n(*aw!SVc0 zu{sn^MCrlg%8S!zOmf$!d$hOYF(xs|Plc{K z!d0vOIt=r8P`PLd^$PJaP{!1ai?zn4arf7rM-PEM7Ib>HO=d=7tZqs?4vJOpPR7z@YNO%djUrxWGR%(s;N3S);S8t#h~w;EVF1T z+{K4$xzblPx31th^lKDJ<3v*CBz35Oi2ImCjm$xKtY1PivRd47$==MbM^RxhM+nh8 zA&OCaNl!LyO6tGC-t2L!K6!F>5DNt%uS8_{PGhCQA-XZgq78ND!g?u|P#y_*qw-5} z9fOXyR`2jhot*R17&MX@TfBjcQLU#G*$1q*=DxP-@H8sRb>q=vjW0Q&vgg8{M=)}_YE8}>2 z=oLj7td(Fr7en0LD1wCs!@V7Lx4NOet_>D<~ zK9Al4PgsXnsYqpF7LBln8S7cm=5|PPUC`Xhxw(bj zqv6r`jvAgZJKUxhT-umK|&6TJ1Dy`x(LGg zzPb>1x~4laY#XB6bVpvZc#5%Yx+6bR3N?&CP#dl{s~xRbY^GUhtl>i34=}rGq1AgD z$j2H~e%fX<#d6e;@L@iWsq8$+l=vn732fUVQ9$cvZ8J-#^t&ncWxfIUK%py<}?&*@mgaU>Qy`JLIcASN^tRs2Tfh=Y*V*-Clu4v-I&8oJ9{u0KKP&s zA@$)+ufI9UTxDF5IbiYGPV0p$Fi05p&uJ={%W%`jjsIbcYj1n(zje^+Wfiu0%Bv^5 zfL_{Mvil}3+F+ClxGX%bH7#;7DdvoCwJyh_Ja1tXT}D?713n!;(zLvHDh-tuk3}=$(cO$4>vzot-IV_w zv|-v&PMnbpJ)E^H6F0#MSb2l+^ia?=gGw|zN39_Iv`XS_1=o2PIAq^GxX{$aE6&4W zh@~zDlbN1UoagucY$%IsZM;0%;G@^Xr>L=ol|EB7v8gl?n_DW{7n+x# z-zTfO@o4b7N1z?sM>wyHS0JNDEa#G=@4hv=G5Z#2!>ozIa0Hn+k_geGbv0j)mD2UX zCZ21(Rf~EaeG7M&0FE*lg}(ciRIHk6Ui&F$>0n^$h$x|BQ83o=M&VlzH<4iV$0!+2PqO*|*l+4opT1wXTwG&gVtmeJfh~?*Cpx zw0o%_>eGu${RYbFIk;u(ZXe2m>&8*IS{<%+qwvHXo=d1L5uXeQXk{HCpht-h$ENHa zGE31~KHL7w-$d#nw09SIB;3+`2=h7KG+p?{0&`$_vb3q8r({8C9jf~7<*4FEQ32kF zufx(pUH0vGjn{VZwY}A}1s0+-wM54v^s&_`>tjM)`BQPmP{SWqfsC|PL^%-{v}wK9^5<73J0f;zhOP;OCut}Lp{ zVEFu7akr)A_6U}~r(oPQf^IYC8~bI<+XMAq z^^f}&nkeq4u@pE;5#oCENM#9LZ>AxCiNOkMsJ$9D3?4ZyFop8oIFGcQbu$cjx)^*k~J;RSZm7HMfUfYU? zlFOhFzRBA*9k`cW(&!oTo@mUO=TG37Kr zdwIw#esje?Vc+$)5gC+S_-IY!@nISe(&H$xn(&0ybmjn(BQ=qkSIl4Gw_ST%%eUGp z!}G}sTku5|O*3@m?c%vFsx+136|0&mv~hg!LCWCqXFG$Bzt~y%*o&Q^$6wqKdi>dr z;LJ6#BLNWRh9|I!;BPN$ToPT+z}KHFYyh@Ogw=9FtIm*VOEemDGGaTn;OwGiT-TOq}-U5!C0C{>;z(MyzD! z?P|{rFrH2Dwq9vLY~(HK6m!+myn73Fg@!r2O>|3}+0t^`_luD??9EK_|sHPa4RhRqfc8psx>d*PZmWr(@)gx88LOoGSJrpYsk3&Clc2(xc&ehAC zb|!*N%j0jxy1)?v$BgY~5k~+lRJ1k%;Ex}YSn~g0*uqGy|nsz2>!Mr@&QhC74 zt_IZlXW?EM(`|jZH*>jY~h>7^$M715|ICR>a@%tYw@& zi`!x2Po85Np>f6}N?Lc;pihdvFmuH((7!}qkVh-V@(O93W*g`WPC_4SdTPZ7X#pb;u>9`CF-dGP)`o+=V-uz_kmVzu&Y~oMJqv^Ku!sMI;@u8|Vlam9UX-^^D&z6~ zyrD0yquQ2nyg}3rZmY$)OT4<4_G&h|0C|9inln12N~)Kr;U}V{m|Wm9%|^DXX^&NR zRUd+d4`sVLFoovRWP|S|>FU|0eDzIFQYVw%e^V-o7!_`0=j~`>6zy$?V^JWl`Wy4; z=o_wHMvq~~dXg!Nmmk2-c_d1w;v5T3ow|C(twgAOO`v%BmExs*^u^$#fUhoQz0-NtSinoa8qikfC92%|A_?5YI zuDbI_W2xi8`cy$-if?nw`>?x?DvZeSxR|RBs{5Cb*OP(zg(iI$Ru2y1MzW!lYBN7W zmd5RBMbnB6_;?rH8gVa}5WQ(GcE}Iiq=~GVNl=*@Db(cN~UOzP5BMx(^ys*%NfjubgSH3#V(7RL>T{ zQS5G+08NbPLBrg}EAf9Sg&T2Q`9A7|&7@um^L+G7cVVy+i-$0RfoyLp9;F%!>|Z3N zFlQw=gME0;0PDGvsNKe@7@r27Cp9K*X{Z(_Xa}zL7TBJ}Hx8_i(&XLSp{T{<&m6A5|7f!4ZmIY2LYN(Ws0R0S_W zQZ8~&Z{6)h^X?d)@iN;?2Spa}jm-bO++!G$mDmih;BU!YxJH{GVHv9pp#y2}=*Og&1qH zgB~Y6xH1iuCPb5bJZ2WjCNYjp(qtwxRBlj|ebBpoQOZg>pi*g@m5ImC06!@(3ft1 z5@T_GfqpA#KrgwKbzG0sRy4@%v5AhZu;?NhULf6yg`8Juoj4X&9vY{A;!1DHnXrD+DsPx$FO_Z8hCT&W=hrKW5t2gyKtXAz^0&8|b!6!^bg1Xv?G>5@#p&aAq zF)5nOpw$%&t_<#NA)f2-Q^R=a2jg;Uh6(}0r^yt|)#&25n&jxRDX8;{_ zGL|4&s;p4TtB$Ye)4vEM%@Jy4--QNDz{vanI4{J44SN&zS7_}jaC6J9ng|}VS`fd~ zdot%0(gMnUdddjvH9VgS7_y*}t+%smgC~ov5Ku$N^)>>~Tyx>$8>sbd|cEMt8 zd`+QF^HxqLZ7GjYoqS`GYL8s7-Z7+C@HyS>toieCda5GNTXQFAR)6G1my@e$*~QO! zVS_P%sbwW<;@jwc$`Z$Lo{)G$3SAcrc|@Ii1fGY9GYg(%qnCa7v2%Xe2M``UxgF!~ zbFmh&B7TS}kvomHkJPiiAl7S$cPic+K3&?$z_iI^z`zLvyafUVjBd_f+tQTHZdvY2JaZokehu;4+{KU3aOjgB0g)IsB=9$;|bqaF0*A@2O>$YYmK zibn#BX9z1r_|jwu2QP4nv@0bIf=Wi7%fxgv6vMV?)1>&RDSsbl`y6vqjML=^E_0t0 z@Gq{`KBP&wfHEOpaNC4O`V(D_r%!BRvj5Sw_gG|5{M zi09AY?Tg-yM8^6##-L8n%Peg@WjJq71yQ1}xE)9Mix{td@|tugZA>){7G7BTzXE3I z@sRoJpSG7azk{*dqkoZE`p+g99*^P1TJrCcrWRUf)nZj}M||@1VTj@{x;4CzpfvjU zSmS}68_K5tgs`+seQ-y-bbBDWGd6Q;;NXtVig4+#(+AS+rN7?s>#xL)M!(whl|%*b z!CSv_*N#_jd-aakQIQRgr5G80|EcM#c=(4V=-EGoh2~AG2irDm46oYU*&k2#Zke$( z+`lO`*xl1%x6)gM*#@Dd3Zx17&7*YMW`eta;h& z*_S1goq+^i0TtG8vU^}~LHN_)={IE!m#tjBAk3-R_$xDIpB@0QgRVF_%%?xw0XiI7 zJQG=K8^p&Q@QDa~i~+aOaO;|t;o11ILvNzLtp}fV7=-fF#?Fp#ythAWCX}^!6gY;@ zT(R(kvKjbsF8e9dA*7ev0asdo_ZYDRuV5M(*J&tx9JBl9xB2-8H#A?(l z!hh zUE==>=KefO=Hs0Z$IoR`=S>d&v{R3#u;freLI&X7_z1O)f zK9kqEC94Hz`TY_3V4nNVI>Azt{a3|Xtc5H;L4v1tLa2jn%4p78XJs_c+oCI@RABy< zQCS4}=oUu5JrN5bqb!V?y=!*Sl%e>-=zY_QEsWmx$q#2?lx)}T!z<&;i4;} zFwHBYdyIc&bdULHS4O|xj;D}{tc-H_imr?jCD#jtQN);K-WQJLRz~le2H0B}rMV~Z z6VD!_3#0crTNwRTN%4izz{e}2AI`!kS0UMc{KytY$%cPnlrXvkdZr7b>}hW4Hn_}vQh+`( z6gY?mk(N16U^`&%uX-WT`o`lEJ(o2%U1B(Wn9`w}&De(*nlB_uac+(uCiv=~F#Q*& z;a{C71Lv~%;h~aP$xwj#-#HEc7ZM@XZ?c=&!v9MW!S#J-H%FVy4Hc9snMCq^_>9mM z?;urQUC~$79R2%YWFhTwPXc!&@%rUV-^x}?X0TMCIm$k8p8Bi$N}8jaP187hmShNa zt{W_yIE8SnORxMHI>@n!+QEfiUpjH22@@8$Q*(n@>pynnvYYXcHQ_jYwx+D^!N6uS z@w|tyJ(j4zxjb7dFJUej$=SzDI zkVfnK{)J{t;-Ix6Ip`1kG=R4W=e6J)jDx%q5KguAbcV0pHYau6;_wX2i&tX;pX>}{ ze!eWwyQv-EKwsMi%)hT4nA1T#BHM>GhA@3n5)+b~cuh^Xc~zK}48k=v(AC&I7;Z~# z3vcY)hR;3XbCFo{NNwt@onhJrHe!Be%*|Y#km`%4jQI*ufrA_RlW{_G>M;E-CefI) z2Ap$=#;H1_20E1U7XyjpKp$32n07sA7w0%*WFesz-XWcoV$R$8J7`J7OYKYbN{XzP zOlsd0k9YPPa}%ZN!AUAb?qSl2D6pRhJU(BU?CtGiohJqdtc5_uK&k^_7P&x4YU^MU z##u`s0$R@NKow~1+pu&(S^~}O+dA>zOLe3=x3E2?eGRK19lfbe;p_s0l@%|wbwk(2 zxnzPlcWi0v9_&+{X`V#s7X)RJpc5^bbU2d&nt&3EWq1z(=00(|+I zR;9Bkw}q+h3Ei)*o1^_MX2F}CPW65_kO#ebNnXTyftOXqE*uM-36rR%1F?hWYv zIf2gw_q3(x^T58}EIREL+!js~d6; zfqI*b*+0l_T4y75(zNrYPW3iUtGtcViM*vgDgGL5Ur(IWc+>7Byd~>wpxP~Accb@% zZtVu>k>`(oZx>&24K@wOhV%D$?;FnF<2A`qA%di z4TrC2>)#mejfV%jI>T3`x;OOpr)GsOOKqsd*8xbhc3?}NX_J{I7+ytNkgK<} z^@ST~`q0zXoifXouUx)ndF>U;O>^fK!Had>x0zdeX?Ujj3~f%DHNCVwiRqC{GO)jU zS!#1z^8at|UEt)Zs=U!t-PMn(u6`uxgpikq(1cFYUFi-=iSps=yXySLJO1YJDKmQK<@2H+4`GlGz2a2{!C`b99c0j- zlR=I2U2CuNueHyq>IM|QctAX8OT{3+Bu9J+8 zQ51YCRZi16k}-aLDMw#+?kJUtB_WKYlPPa}1wH*g@9s|0v+=X;70K!Rl!)*dj+>dz z=g*-pX@hxL>y94uEFhx7au3XkPjMmRyL9MOmbBzXim`{;-JpsOs<)iTTJNG#|WCmOY^ z*iyCmA|W<`{Bl~56D{%1{si5Y15M>Xsg`1j$qRmc03vp}7zpQPHk8s;%jQcTni{Im zp#v$Iayv<|s`9{iC72?ENmpFxq6H@WkQUUr^fbZJv;Aa>jl_NX4PBfKLRPgPp)F)= z9Q0L6dV;Ib+x%KMO(*~n42syG)h^BzM9@JQ3x1HN$l%zm9YSqMmVk!#lmfo;fCCw{ zwuIOP2d(W5(}1L!wIpq=>b~IAMws2k+&J(I-oQqcmjB{WkPS5(Mrih@odjqI5|8vr z_~2n1R1AL)Psdj(ECeY$_Df@ACjd0r1+b2-r-_Fgw~(?WLDSfnqWbVfsQzuy#uhn6 z4%)MEU=x^pbxbsQV*CA>6bLe|BFY#q( z=dHMm-h7|aK$oM(vN8J1W!oSeZYi5C6w)QSM7?xiX{3MK(#XI%dhb{oS-Wv* zX_@h-6^`mEmQPHgTx^}6ppNTum(j?0Vr>4}1yE4$8azA@3I=K;C-bRj!6Zn|T_XX*r> z3eYifj&2&{!)!Sa2j1m!Vr@uhL?_g*_M+Jh7ux932R~)?IbB1WREd#WE>-KOSM3v~AhaqQP=< z9)h--q8z~$zpxLUor}G#wDu?45KqxlZ~S!d#R|00LQDMOT?D+btyOcGBDzj^hkd8O z%*;Rhr%ZI+SLln<&pA#cN$q#(k^6Lsp}v*gJL$ci-Z#_xhMAd1&u4jR*N9%^JOX~R z<1`b$iB__vKd0N->0)FP;WhpfwS?6~_e@8osU0A_tfx;qVS{sv;56Jt2Q!zD+||^k z>HRHwKTH@6)c%OtK6;-`c0SH;!ud;2|L;V<{wVp!Z{pW~fZk8g`wJx7O6~Va{uz;L zCYk1=H2!x_-^5R2+R)jbFLS22ZTH%ZjEBF)EwMhzZyFOIzanHHLWWvf`8_l9NQ2OwyQrmiD+Lz$Cf)TOk#`3rqLq@> z{xG#SQ_Hxk=|1nzQGxxr7H=L|6^*;rg6@37La`1 za=Jf!HPIg?xr0O}nHJ*ldja`Y_hzy^K>WWUIZA*-?|EOLp8_KPI zK>F7b{x%vDZvpwve^@a81JqtZ<0Q3YqmyV3$uF3umgP24o2GUi`9N~~6?wGA{SY=j5yN&4q|)Z@4W+d-94J-MKFZ%xR`AT;-Ssu6XdhG{ln1aGi||nxfK5mj)%8^ zd!hd*W-=y)My``-^mj$+G5!l7vAa-cxlHr4`G}m+;a}y0{=P)gL$q4<$2)`abY#REg`^w0G z^bO4vFa2SXoZ5+;6z@+*PZywoX(M*v?9vB&rK#ZIz-US~T8IV8>%@l9_$43Sv5JQvV z9T*vqKn%?kZ~YS^1MAeTDb&t|BLfnMku!zb+`7HrOOPQNmGHdnRS67#b9+?+!<)8O zC9om1UF=H0CV}DP_NoLntlnOg!0)lC%Aj1n%6k+nP*6YdCoM4(>L7bdQiE zFY}nz@W&-PHYPa@ca`ke%-qb2c-JLF*A#EV-*{IbgeJv%b;*v+YXz^xc#%fjn_dJ5p8o zi%chN|D<@&OWOXK;%&M;Y5Ql2xB2Fz?Vl;$raw>G{>j!KN!tFI;%)j$()Q03Z$~a^ z`)3NZ{o(Q?`%VS$_+e@d(Q(GcN=y}62lwWEr7R?&ndJi8Jg6TvapdV`&!Q074(~BM? zTGDh+f=0TjRL;=ePHT|qw0?kSH=FLe9r~3Weudh}{(|S&_>_ztu$N49b`8a1L+eh=ND^bS&oa8Dt zyvUtVITkbiO&Gk6Yey&4zncuL?SWA_jx%x@LyHZJ7QB1=$!DRp{Kx2|mwTe!XyoSK zFuGs!JT7?Cqx<1s_zL?@0ml*B?SDKvHZI9NMk-s4nln0q6su@8bWJbPqa$a#zgLHqR9jtcbrd{^}6+F3MKjnj3y-j?1B8BoM+KAA;Pqd29LZdAXrA%_aYvej|snL*Ew?y1yi0wZjL75Pu z-5`PuDby&@e#g+}eJ+I>CE9hO`!La@Mk}8d(M9&-QA|=M^hoYMm}aanZL83kW)_1#A{*Z7!8B9(_s|!CheIl8wx##b*cfpf7BqX0_tNjp zikP99(jq`PQeN=RiD|EhDEVKw&%>L}S0>~>LtF680(Nd6Aj2MB!8>{8t$MqmE%*e{ zWM4$ItwQ@yq3C&Vm;y0Q&09`iZWu1>ULidPbIyMZLZaq{IhU{Sm^AOrlbDbXkuO`B z*151mzpic&50eegT&d`-ukWCJ+hUemu!-;DGB2Wi+tB8(FBK1nAj@?ycm7eLi6F}v z+PsO+)WJ87c5wL>kO5#QzhDUhPEJC#!j_D>%4^SgmcV`Xm2rc6o=_Z>}ZL$ zuR`-CiD+*IZOW@&o^)?s%hRKdc~POhOL`8`lBP?$E{j%KvBD~6HUa0|<|-vo7yK|K z+qqG^#>jQ9CcFctO9yo%O0Ujq%5*cN>3$G}AL_hjDydEn-)Gp)RLK*(o1EUtw9Yis z_H*|z(M*T_Ko^;LzvB!uk6zP-yew^Zk=#C^&GFepJpRH*TK^Xy%wY<*A|*Y$4^1|~ zefgq9C0?yQQ0y;VY*g4`IeBX@NKxM;4vaApTS}F&KL_%47ry?1Em&gRAezc3vR@u{ z$&%iFAR_knQQ`>TWCZ7s63DO=`hJ%{6{8qQi_t6B5Igcs9e<-{`)m8aeX$5?^~g^_ zve+l+*fivat@2Cb|hxHi)A3!BJau^^QtJ zCq_qh4Yz*SQL^NnB7@1qXzs= zXoabS^uz(BvNJkT84XqgoJ$hvhaa}Aof_r)6Hz@K>J=pYz5*4NwN*Jx`s_T-hu>E?VTo%XIh(`%VG#R}}PT16>30sRL85(H{ixD)-7?h(_Y$ zk$Q|iC}=?!Y0a`^L?RbipmK}FfVJeGNMa<}wX^Ey>uBztACEJkvk1?bhS`+9z3aC% z5Hq*4(G|azG%P{e8uKXu5A9?@j9b8gW~mxYB zOC)vwXL~G&(6;^HLjvUjgFWUlRg7Q{#V0btHJ|dJL52*f_|57rROFOP9vN*7MWzBK z#bMSGO?)Z>X!#{aAHJCgJn6;G^NTHnv6wG5d9u73OuxXehqs%rLVGn zKY@i7I6D1eQOC%_Y=si!i+z?>4aBMxj@ur=A3qIVK;QPZ(&s&({PTlAKoi1n`VSL{ z77l3wz(Ff+V1%~XW#$0QZgm$Up4P@=?YS{k!Y?UyC2sLREiw;p8=Vm#rT$1yqri3x zd%?EaBk@JCYuiyh+4^f)toB>Aj2}_}aJf1Nbpkv%htlA2brRGWKemiOgL}Y4%_2pR zLvb=Hc-*oN5|H*dBJnB6Q%UFwo?l+2fFgXc3_G?a^I5i5D{|_oT2^$?6e}93>i9iU zdax(9fLjX*G}UYh)6cuth3e|V4UJ9BbU@%eHvk6$+^&uP?>iuXhZ2i^&Xxnsr}i{D z)lx3IKtQkv@N_K?K4Dqg0l`o9Wu; z9vrO2VZI-SrTr8?2C#(+o@&&xV$(ztK8e24&_k=)}58oUr`jbG^UX|E49DmEfr z{lqptg>L%`YyP(ONG%B-e5o_f6bL;?Q}rjby}q3);!n616GLl?NKvHToWC{D;K5up;>`#>4}S z>sB#l<$=bZ^*zw|Y2O2lw~g8lG=9$aK;!S&k1!53(rt14bYqE@^J0c{FBlb{@A1Z4 ze2+I?>wCQMxbN}CL%zowPx>Bc{Na%AiN^2nJ<<5RxdJ&(rcHYDW=XC-xR50cOOq^Q zvLoO{(v}a7Wf`(RU%9+2X|GhCZD7%pHmJ{I_%3~x!(J28vJ68`t=o}7*0xjK7mEF9 z?>q&AKdUvBsyyvM!+(~}I`Enx?H3;d{C2-2*_=Y`ZS}lB)2Rs*d7ERW*T!H>!PWgY zw9%>z4w%&wmU(4-nOyr5mL(RA2xTBGp@*-u?-bx)AL#9(zj);vCY!Y|8t9Lac{jJ^ zT`uhix4i#d@5s_E%5OXTop4yNRy@wxa+MIFe0h95AOy4z4 z>t(vIpMJNlNc#bL^y5T&qF6dee+pZZd|vqy`mwud`B^=B^dbwnyS81u!==YHPN$t+ z*S&OV=zAZGnV+Jrr{6VQ%)iUfFvWJ;|77R@J;|MV^H%OV*+q}i+;_ZhWac#e#O-OO zE_$k`sf&JPXYu@@BSZIR`?)_ty!i31?N6L`oPqR;`9sHs9%|-aFphR@-|>T)Z^xsF zx_Efy_4AJ13Qx*wS!9SInv7 zgoe8gGD7^gEw}RemB)mB?pF=>XvKT;Q`U>_+nI$i6f=^POfQ^pJ(Mz*jz@YWs+) zOT8as#8`f~k$wqcv!frot~>Q0Z9vNg8NWAf@V|R3)OF>R&%fwA@eee$Oj^f=>|oD| z%H$fi)|p^>M+74J-DA+!$sBwiZyn7KGfvlc_MPM{(@^dg%5J6n-=MHFTkdH*M(fY* zJy$MSK6G^Gf$XBL9f57LKD#CHEF71VoMnDebf90UCW`){!ix^0&!bh|0<*y&++I$JW`u{#La&A1~cx^AP4rdM?G+VaFhl{Kb5yK&@1;@McIb15Be z{fQ^3nr0d5YG0O?rJ=%qzC{c#f1Z~Q+74eBJhmeK zpKqb1vx$OvmL=H5wgdEh>tnQ(btN3kR%WWY769XC>kMB7;Ih;nQYgCZgsh zbK>PU7s8yscL{16Wz`w6c*}-iMpmK9zXRU?Z{}gefs#CCibXfrSXU+3Lf*MB%Ghq(GLA} z$M=qyC#?@2HEUH%J{DW=T(&QiX*(23)D0fH>KXSO-XV+}O*}2~CzhEXm8PSWRr~|k z3$l$%{xRE?_}Q%?gAmEPhkk$Ax_u7M;bV7pH^ulw(+y?163t6*b2iV+B)(1py-q{~ z%(mcWdzYMc;)zvNhf2IK(xH;KFou^rM2@`w)`&3`%P*>BDia-CNXzj6yZwsrJ}H46 zuKfOW{GK%nIdvD%Ps-CCG$eaaO_sOw=-)#!n|?O2h$nB;Dc)giI@Nhpmf%DOPtc}Q zYZ@47X_!*}B~N~_PyVw`)YCBA&Zbi|O=fFj9i)HPbu%yUew9<-L%%joPjc^!-|NH# zz5gS9*U$VU9(Q8T($+>-ite3xF}sV7gI=`wr}+rz>7&GdA>R5l9V4x}vO7NW!r$LJ z^OMn@c=*Hj&b+XyY50zbo_NdCcf^m8%pFuf_wWi^Sd!?(4vtV>6f24Mf8%K4K3iI> zb$ny@$@da|g7W(Fm#DyEg`dx?Y2~!=o-=-QO{*+#-YCX=a4G$! z{=8asn7-_bUbS}SyLY_ktRln%&R;X9|0D6Uo~HKVLr*+3Jd#}&Kg!gz_9y03vdj^2 z!#et5Z&dWB)8=98lw5NVdhwymDxS2q4x?rE`WMsB2@V}->)<{9#pdAYg5$fb-{_#= zXi6w94zh#x?~6Y3Xe#!P4}9~1v(MXeH1o4W)k_>G%=sfC|;m5iWdgwdj-?RvV(uh-YyMOCRjpitBpF+!iV}3b%)&LSI)e|DO%J|wg0mUKc1N{nibxuM0oJtnNu_wKki;$k;`XemHt(k zM$!4eqa^wK;3o3rZNk++haQMGZ2Q?uhxk|Q`yZ3*r~_|{AHjCL@NPQRj%7;SG~okV z6E_-;DNg1jzGKFw1kLzs-P;q7i|pbflcBz?GtVdPGd5pE{(1^CKTaH{b>aC;kp9;4 z()q=m7S=29vxaAXMTP#XS$}CI>!x+K$IRXEkxVn~xB3ScCZ>i>Eo7Ih3J>3r56jMz zj$Nbi`t8TMn@Fl}$MZAKb`R4b$L9DEZ(aWOs_Ww|W)B$6$KoyK#`x4D+3=F@Bz|J{a^Be;@0(6IgGWuI-bN=EBFyf$e`2L+Hx-tc#Zr#u zXt6YxAs&DFcu!N}e%?C`Y>YS10%`W0-tIoIz|qeT9ZPgCUdR_Y%lnv0kg|#O^h6FK1|O?aUTCmCoKIKjkmm?E^2St_V1?`|J6H29cS&i_pvPL z5JEs|QAH{yQillpTwe2N9lZF~NqUU+67P8EM3`3c=0Qrv#kUS0ose_5&WYG$gf%a| z_0UYB<{qc#%HauTRc5}*(azfoe#JsQb;&jlk_4sVUj~m|+UKkyT3vQsr60<6(-J`^ z1X3JwIzSY2@^sdeP`z`l&ywf9gY5366@5+@r`{Z{SB|VJ==It7(1f#&@G8g8@w;fW z(ky>;L`cONn{24W=o+qBhWL2V6zL2_SCK$;X1P*(5+Ut9&K@Ek>5tOSUPo<`+Qrm* zf7g8W?p@c>MPhG9XwGexJkot7t%_V-dj~(}gf|uF%0rt})3%?@d{S1^=I02cHP+`` zK<7{E>hd$Eofy%Y=qIvPdC8;6EGPPBvEQH)f-UW+o|Q9{y&~3Cpr>eqeb^;d^MK0M?QM21lyElQ#7&U zt{p&KwtxAKnV;_u#qXdaqo3O;=v}w_WOviw-$92UR2-y5TXOariQeuBr1=YG&0)FnbIvl_D)L_F@8`f0^st@y!VjP5Zdw&C7J5$5VZiD59q||+P_JpK zX>rK1cwJ(%o!agzFSv@5yUerT%xt)T(zO0xDBjO<%NOy8N9i6svMS8HdYZV!5A>Y) z+auXd;!wJ2J&L{e$T#_bn|?u;mv3D1;|+|mN9*jNMpHVm$L=)Sab0Fa;?53pEIm!d z!JZS0PH72~r3Mqxk?MGQn&|4)A}b#C!JI3K<@X+?6NAtCCthYc)e*moH_l}*@Ep^R zR44uwlP=Yxiw-c8?I_sy%x*JA3!Od9!o*n`pS}x?j+l zk~zPN@d<~sN=}gYWP?U7y<2GcHkTtVI4&pjPBUHkHQOj(lcsCiPT#Q8ESCf6)Vx`a zzI>Mi8%OS?NT2E^?xN12JBI#ewyW#%zy(nLa^mvJmlO4LH1ai;A1wUhrAy=FrR-oD zIaB=~>AIe^FCHA8pBZ+pCR+0fgEzWCJJpQh^`iLZ~G zSaNjfcBdZ{_Z(evf8w*AUW^Xl znguKI+>YmFX5vvCx_Oq(&TN=AtbCX^ugXS67ii*rPM8mJ6C13}_U+l>!6Ox^P<9FF zHfK94l)6lFd|~LrMC@*&utS4?YFOSLOZMJ9O~Xg?} zmCLC0UMrW02OkW32a2>^O+;h&61$Un_Q7IzoOl#r-~vU>!$os6PaetPVr+7G<#6m- zy1LUr$3ZvBaS+8Fqug{&E~-e}N7K;#^u2U$(nRNweNL~}|HcJ7obE%v|JYIbc5B_! z$7yfgZ}M>1Y{7fG&mviuR$4kHpd)!&HxrY*i}D{{uA1fWk_y{*NNMJf4{YnRYpV_~ zUD_>M*M<2|lG4gY)HJy!bT?f0aazD>1E@R94&DB7y70$Gspqh>d>rbBAZKaWHW%hl z3ah+QSTR>AWb6rAMv~ojY3Mbi_e)A7SHK0&|u z?dLwqWB#u7;^RCv#c^lPUP^KJ^GDM2rOkA8zbDb(eRa>ZiGMNs#p9VD$B%G?T`TFU z$kxnvXsciL0ouw~{(Hy%@u3U0J7K}5No)>on@3_)9L*!g_8jYJiZ^`k7{0Y)Ebprg zUPl&pU%h&V6CTQA7f9LM#GcZYZe3$LY|ySb)^nvq_nAk>+|PV1wM=|@`mWF4lX1KD z(ifuhpCJ#s_V(PJnE$D-rJFzV=;%|Q`C9rL-Fp*{_S_TiWzU~J@%g*xf&)eI3>{cg z)OFo=NgOyF4-eUQ3YaXL#lYUJp7$5D!|RY;Fn{0f?V3M5^VNOcj(O(v;QQ#j$=Ycf zomgeJO_;pM@Eg1JD%55=u=pCRn4NI7yg_uFRs6UjS{hdErj}}W6)zRuYgK{{B#b5&x%aqNm_n7 zX#;M`hU4MHz12&>C3HEB_Qf+!SEljo0-Z>7t>~?F=1JB%vWsZHcEDMHt(UHLE~4Yq zMrzw>CQn=%pE*7BkesCO)*Uj3r!$!zV&F(aPc8G#Dh(T<(z#;yj^~_ptA}Y_V`JyS z7?q&6u9;I}S?@lw`g*6=B*JkH4}Z+*%^si)!ncO0-kxK1AM=(Yvp$~u7%fL^qp}>) z(ac7+PWLptNI@N*IYpkI8hWVf$~}ddQ*<3`30;YLkuKW4NLM76WS$l7$gw{n%fL2X ztf=zBXQx&^;$h@~enx>GJa#*^d1~KIE$^!i)0auNgP;S0->3M`Mrw-AyG}2U#dtlBcQj+Y@e-}p2Uj8tH;bN>2MkEFZff564q(@kZv4p&a-YnjtjLY1L&^$K7(m#RWhIQ!kh`^e`VHa2EJfhNw@rM!UQ# zZ67pO+Gv%GbvICX(7tHP$q;=H%{!%&pT9G`ohR+$Kcr-t>y>8rPn4bqi4wt9E{YeQ z?7EVlqJQy8b3XE}PWo1jug-5d$%pnAzYFkBJhW&&pZA#CA(ogrUAg3cvgVePkg+^y zqwmFzj_{YD=J13j-kI4)%i{BrV!Bl5E%Dv7RZ&tJ%|y|cJ#wt-O+@7i>XLqr>DBk?U)#1Hdabv8+4MvH>zA`_`-_+Jd5_s{qI6F9xV7at&KDP-c3LZ2 zq2qi~w!?UyZx(UBF~^oTYT<+r)zOJZBkk`_`K(=G$!w-lZ1t}y^i6$N;xSr3!nA%o zNNoePpRZm=;z#^?`%Y4Mz1OTOPc6Q`;{688_pUiS|1)o`xL;Z>)t8>CwO;V5ITogs zqnB3>mj2WuV~x%KX0~%$NBpaZx!loQbLF_=m8=}qYk+?(;d5ZQ>gPCXK1dZ?qQj{* zd#RJ8b|basxu(?rTW_1wEulcyVOq>Kyp9e?_=>Q14o4Tm&FxUMzxkLP0MWN7<_qUF z&+R*D&MGI(Wdd_XNvFOt)l_;S#Wy_lH076=3te=Wck!)s^6W#PX%AeePy7XN2I&CY z#!1lXlel~Ee>mZbb~tT(qD{%>E7qNK@u8IA5nprVDWFT5X3I8y1=ko}4MTq`$mea` zN0&2c#aT9dWMZ+LJe;+ky@F-F+{s4>vJy?sD>dx8Jl?!(dgyy}6ULSqr+baFIN!Pb zNTP!&gFDPPy#2@(4Xf5T%ktsvcU;jh`1aBp1`q%9@qhkL`kR!x?T6_k>C*Tgt=Z~?cTLl;zc=6a?@r@oTb*X=N2wqFO0m*!94tD~ z_#b_RzR1}%J^cP`^z-k}yy%Y4ytwOeclWNx*_RMq$ZIrCHLz3c&a93!z!BR8N@w6T z??8Ys$8gL09T%_WW|#g~y_y5RnHR3SJjOQj3e|Xt0RPBd?HBXiIlTLAV9^Tj`s=qj z1L2+aodUnjnRq>RbA9FYH2gMa;Pw3h&Hli@NC{9I%tu{-(#V%4|0}(M0sm65UA(Hc z+VbxoCdTsbn9pZ!=l+xC^9eeac9uVGKL5ddK4?C_U_S37W{uZNHE6$8By+v=wT?Kn zXUE65tU*pKD@Cl;8%gQ& zr}Top`L*Da-%Hk%f4~vHY(!*3IW|T0{5m{RWU&faw9FSd{zSp?UmJ_>!joKLs>KVD zQAwfN8BmLiCiphrPXjtpdEzv6A{JCvK6CJv0Q`XSSo$^cxE_siJ2%&E>*wHEB66-0b0BJ-{mfo@~@WkjF-m!6F+ zR9JwFe^#J}*4D3O)yQ!HR13ltI4w!F&5IGhDgq>dfU&l->A-DhLQXWX>#N2QO7*9W z!(8CmNFoDCNZHXqOYouVr}D_w5m}%@)*c6Ag=NuHedzk-1qpM55zD|o8xI(0)rRqz z9yZ(>O>Rz>H*9qKGW4Kfw=eI~uMw47qv=x8otQ4?#`3vQBU2)o(*6p~&EyUgOQZ3k zJDD3BOXkPo#hPN} z?nH8GoZ^eqPw}=!AX-YdPV4h%-YC6WZ+C2tKlQU>yjd)@Vg+JyGEYhy$|%1|`>STn|vsN-aDiRi(-f z28qV9?X`~p|4eK_)wMM(bI_2iq!|YIQ20!}c>Um)u2Qm93td+iNCfFvAN=})fmOkO z%BCwsLx|4hSn-vKSDS#V(1$ZT_PpOqNiaQpI{VG zFW&55A254y-vI%3jC@$|EAC@ocAfpLo{Haq;9p-3egh`qOuF!T0i4O~{|4B8y#Rg# zCgDuFFvmrKi~UyxE~ZNd!OH^l*!NPhkmWOb>(pOQ^6kq7we)|L^L@G=k()~9&FMb+ zvz_gG{8}gb>(`X0C%Tirle=McBp!+Mv_^X(@{(?HdTN{=+JA{Vk-I7FmWt(EAxnH= zx~b$;+9hU^p5~u-2R8N6d*ekFz5!y<*XGq4ZH-3a2U6*bcR|JsOEfGLOB4Ct%w#IJ zpFSt1=?X_{R4&?Vj!YEyrzhh1NU6WCG_bC>ue&_C+HfxCe`q;!|e3XDMG9c;lSaLFb8PP`z=?KL_2IyD6ojx!{MZoivEW7z)A?w~!EYYu$Mv|$NVHiEK zP6eMNvQ);}_3L|6>nW`C6e$%aX)dSvH!aM3tdqivoJ&bsM>fd?ijh)6+gk;Jcr+ud zKRv153OYqWzOM7~Vjeh7=Oi?T>o>Dok?tg=`NGwVP6g*C<(cH-GgXm69-W@Ba8sk1 zNNQ~_Ly*zw372X^vk?~W$NZXym(#%OVBsyNY`q%F&vTVi-|5A=2?`&Uze zGYr#s2G;ei6>5equuhR7;*I4?#M&TqGn+&lEthCJq2)jUO(JOntePf+9x_uz(?IoB znFCXyh2kx|d78>gC&$L!!t}%_RqE(L*IZ-drPD2uH{__9nTs}?;3z93X@WD}swb7u z#(CQ_@nRa+nJ~lx@hG;47jg1;ZoEM#h?Yinn4D0uIgvcjo1_w^rCndfbUrObL5 ziNI;1+7m$Xv}op1=@f-k(IAqk5RX9HNih?NWOMt|WtS3328d(ar!~NfATmkCO&AvG^^KuKxak{@$*OGPEXlZKUg?y+rBn4-eaS3Ye=_a*q+NFX0N4 zUQyyJTXHQ?uan7jEx8IMUr#6n*QQj9DZ*C-xpJkl?1e4IeY{oMzCNbh>YiMKgH7hc zvUtU#U{9rmqkPCRjz}pFJ-+Jbzq?Dk^84nut2qXWKL_wxaw-YOZSFb6blAqkovT@fM4a?}s`ZXN`Pv@qcx zsR5y5jMg?F+X^^}!|uq)P65k7Td_3|=Gk9t0~b1?UyBMFY>K2Nr8eEKr5-^Vt>VBF zZS9Dp$VIFA6FN3WXhLCcq^H?a4ty0~RE~A9vf2n0P5qT}A*s0bVAuu#u+3Ax=-NEE zBo0EGHSF|h9|#BtLHOySUkS!aklOLD9#T$-RaQ61+P+9EVpZeP9%575;tPLDPdT!J_Ezipi`Uz&{$R%ai$8I zKdG30P%U>WNPb;Sj##oi4NgIjXKUCzv97lLo~nJsCpelHj5U8kLCnze`!2Bqoq6a7 zeXGWSuk1PZF=k8BuhHU80cEj45tp8Zq*Rt*GiV{B5^y`%YJl29D1wNQKLEy2zx*Sc zqk$p~g2x)w-l-44o-M8Tpo%op)ms^f4V!P5yzL9}r-fi+A#WNFrcon-Eg<;gvo(Px ztxpfPi`vBMesF?q2?o`~z)etu_ez|G25jkAdx~TCv>!aWm*Zsh7Lr22^fA?bt31=8 z0~!BVWJSu4!4oX9{+>o-mkg+O>8K?;!%{dxnQb+NuZoHyQH~dV_>K0R0+p45ZNq;( z+km!m?Vj{?Q~KrffugZVtjMC|8lG^=8vZv%h=IqLbM9j#eMkukcsjB@QDp5w186n} zDC(hFgC0{rmF)Q|P;_k?OWTr?1Jt5$G2@_$cNp1d76*S%D9RRtEI`$7+V2KJ5{E>e zKUueWEaCpgfkjW6>BO`ySE<<>#JvO47N=}3UobP$+1@(&I`Lv&;W8YJz#iQ2MD z(WW8@q49dbcs8>1As1}L6OCNGv3sx%ZPv2;D$7(|t;H*QEzt>wjoyPgDi!4NnBTRu zYh}Kc+*}y&fc+NVy&TCw;OwS#IfO|-aSM~&dVnSf&_T8Nzt(Un9@VxiB?eE?YDDnc z?=O!Kt>_3}RxQTle~KnO6rXTFtDR39Rq(3i)h7zl*u#pezUjJL%c>&C%o!VcSr8%E z&L|)&D}eO;T-DQbAPiemXeb_A3pU`1trfHmSy+&%1**RVo>FZsrZSpxA#Y2mFCr&A z)qy{Lv>=jXO!Ff>e;&mW(-hO*Xkb}d+b`Q+lpmy3PS(nbZ1|17I|VBA%6zMLHjh2$ zfACT8RTez|N-CMQb)+xaGKXTtrl=Kopmspf4NLXa4)+uVblq$CdB~k;X`C!2xQaEaR1b_TAcmaLeTYq2h)HaWU`Cv5t z$6Wgje>8rZ`*PHZ-&_DJ3^=>h9gc)6Nr0LR}}d&CqQ+wQ9!)swBimPMT=(Gy9(edGbH;?}YY-=tiC4|FaQkpPRMI_KRPbEQRG&rHHqKRYj2_1}}sR1AmZ3SQPfT6a4 zV*3UurYU{yo>=m0FimYs&!)h(=&Gb2OY9=6KoJ>6n~kF=imW~O!BW7a7GN5zvXKl~ z*m&xtJXls?)WqC9#T7Y}njoQ$ZJzBDOYu1PhCB*Wd_zHqpU|x?bod}BkoHs6i=b`g zXl$@$^L`zD_-fCQKRfJ`?J5n!kcB;ZH2 zbxe+;uugE|Wei-{!IYys5TV~wO$zkHEBJy|sE8IGsON$sQtGWvi|viwhgC!+IP5bh zj0t-}x938++|!Z24+OMc#@K!7&Mh8Dc}SrJo!j8Vs|T>J8E1X_U9BzlYT*J6r7gbLnFq3B zfFiP<2455aNNoo+B#{K504NPTw6+{%xedNqPX4JSk%yLl8xwtOL2{(bG_i|Mp;!AL z_CcR*1iqlb4?9mU-` zTF@B%c^$hwA#} zY(3>Dy6RQiP#$|{YX|)VPcUSe5dU}{Y;BPgIjwWqBGd!5EZLDy^;$4l3Z9Szn+=Kt z$D*Q2=t0xIEP$Xm^x0j7rXY!qhEto1q}X91!QvroqYe6rF-yayp!)S~ui%SFsHR`z z*JlwvORHY6Ux)&}`1ds6+7bBuH0Rb@cdURZ)5!q1pJS&;wbaR=A%r1l>Kf#j&TkpZ zCuG4xYX_t>e@_v##}Yvgp@r7=Q)#Lt7(prJg9A&NM>|Wk<;7DQ!KR31{zOEA2pPn*eCr5J-Sr{%f8=55mket02$jIl!j_(5Riv9YzeMkQ=LN)a8mI6BlV2+sz?4S zNAN@C;1T-(uCy!zOqB;!Yz67URVsW{is}JdWJH3!2x4HW)hp@YlXF?!w{fJec3@e( zqMqym)IGnr(#1W7KyciLIrJ3THZGDX?{`}lE}*Cd!9$@4U9?qJrcl$N9H!}LZaF`y z#-TmU4Ezv$jDq+=SNrNAY^j9w*cQM2xr3Cn&{Zk5>n{jMXat}LhKH-^2U!65lmDrC z+mN`Z(AukMq=NJ6ZTOEb)CW5qHmdj>ltXF|k7&SG@t$?0r#a!VBKoz1R$&7fQ$6^q zxYa!Mn0ajXwed<(X7P*9316LK3M4%^3zwzR{ac^XByHjrQ?-YL`ZaZ0xTi_hgeijU z3HKolx=0G5_B9IeMzqvV9*d`-!Bg?bw!${~Ul1KRLkk^2f(8Gm7LMv6OR%ML2=7<| zof7M|KfI@p9=HSup3xXorPQlXL@(56Tc)9R^?+dNQA+0|$ ziK99un-c6ZLNG5%vk}D?OaeT#CA9BH;E`m9d$7mSVp;W6N;%pC7p;xTQf3^!%6F%L zSX2$MshFOY(f0eMI(})}s>;~0sC=y+tSHacoeP~cL`!E;;sa-Pu6SzC8e6h)AW>&+ zIY9|qzE&pLKH{@=HBUhg{T$X+KWr?2wZKNTbU>RoG%+bf#-C~g>S$|8`a{xE1+JYE zJ7jfHQ9)A*!mp-O%ZiNJ<1wTJMYluM^f64`^+ErMPfZ-^ks;nPb=!$L!W%q$m zjTua^*oLkk^C!+AfuJ6V*VP)3v^hEn%C$ELi8P1}SvwDcI-8_z6Iq3yQmVBiU`I7f z{P>e{zoNPgU`dup`CSDKz%UeStHZ&>!CkQ`cs80&6fi|YNAN*x*uL7>Y)^cjP1E+E zR+Jh8kZeEwUf5VFr3kfXwoUk`Uf0r9lv+JogR{b8#sbMO=F}AHClG$mhCp|6%wS)LYpCw>L zWU7k@+KMBk#kreJU#!e!753?rKn;tUu$T(hW)D`w5vS}=nOt!batKCwn3#$~l>>QL zw>_yHF#Llpv|7Zh$ClVX>D%bAz%9S+vt;3c!@BtLSX#yOkL}UyF(PWg6~E!x?3Qc^ zEe7$_w(HM}&F8)srCt}7;9(Yl)dEzbvnNE1i=kj(wkw(f^lXb7s-{RVWh(u$m7vT- zBYg2zU=GXJPAHB{qwsXA<*{hPH`ukO9kd{t zPM6;sOf-B|k8HVDkE(vN&w?s8fMr|Kh(rdls*LvR9Q-Po62z*w!&m$66hMC9p{@1H zMIti;T^qkT<2G0GC^g5P+k8O;Me{Edm9;sD3f1C|PAu5+lC4@cs(n)b)N|;IUH`%m z^wXC0$7b6?1b)wj3PeN)zr`~_v9W5J6MaG_Z(STh{ z8zjY=I4TLUJ&-_u)zT6h8e1?T<=2jhz3}U(hIng_YsuPq6IsM+OG~DNgP3h(?(@4g z8aU8Ikq9bBZ+h4tzyUkmwle}FCZ(?wd#v!{Ky98-#RZnDEoCFHj6W5&cZ?)BwhWLJ zeXbsBDj&L_p%pKJTeiRGtIGzswhiq|9$=w%EZ}MuY<GqGk7`T!(92?Y5 zsXqXg;(rK~$JOZvSCfO#Se9QH3zqGq@PL5pusl{zUhloKY#_^$@v6Mb3V_M{bthhH zQ_BJq`8wq_nNaVXS~i|nFrW5SAxy<9bL7{tJ^uO%L}J6%AR|tXzO{$-Ox7g$B+2AY zJM!AcGLnA#)35bfXSmu6L>i1r{KslbdUgTmQY@|`bR+~zzobHwr-h>kFpR{DjwYTZ zfiFD%1QI(aRJ49gm4yyk`^dmXQ$B)+4aQPDvFaZS4*LtbBKvvRnWD9IBw`@c8Y#YT z?XmbJ6mo-n;XYcS3(X&?dI}kM>~U}qC}~l*{LnTG48WXUQb&Fr)$%(4d9(;|Hcv!O zxwaQUo+bz!Zl#Z&j^Gz0fGl*8^UGjlV+HY)ryL+xQ`k0BZDbv3)IhDBEk7651XDi6 zvgwDf_T4D}U3j4KpdddyW@(|T9Qb}DjQsM7DY1#Jjb&5pzFJ0nf($xZ=E927lmc6z zznHx7&LN^eAJQjy||W0~s2DzaiI&Gx(&Rdpon;8^vc4GDW(i-sI1g548qY7=OxrP9g+ z*QO|vP;DOf?VO?XgEAtg79mI4_EV;63Yh8vpr!bV=+I*~xetAtUMoPBW|`{tSCdw4 z@yGuu_CSLy`~X+z5&?M9LPHRO5xg3%+R&a@d}U*JfLLnjdNTG3plaGfXn;VAa4^Qy z`nPQ6z8r=5K;ahuB!NP)=|Dtqni6QDg_d{#`MIdItOe09=2o$EhoNN-NwE)EwSk<8 z97d4SIEAlt?kNiTEXC`maC9XFuF65*aJT?`1aAzr+B|64Qs@hwj9A-GXNunyOpnU> z`S1X(1j-3Vu(hp-Jb$VWG7@~@`};a#E&k`%2TgILhtJts#!(%h03A~eiJ-qqXH6}q zV8&R^eybg&3r#+azN`Q+VXG@mdm4z)_*2~A9%%kn-9!@5ss49R~5jo|fr(S^~lJG;;2=PZ{VS!~elduN_TT0ON)0V9+4qHz8 zc1B1S+cE?Nf)DnvWwNuXWSe8RYRNN}$Z4;3$YPaw)gdaCrSKN2j^U3=!!{7*z*Q{q zXLXX)I``)0s~>*LhWSKe79$CoN`a>o&AifBOGnZZtl6o|!CPc?j9IcVKr@KANF0Rc@!T86%kkAE7!)Uv z;_9hE=>8Ts>LKtjeHt!XfIRoAZ7A3F#@4b^rP9?sridQ=_;r_}SW{ow1KXyKL6=zI zr(cstq#=jncF-_m(-<0WPtlB37Tj8`>Z-dzIgxqoQ^|HX9dZN-e`hZZk>^kNqCKTZ zZh*!k#KS%G(P}1{;+N&IdIzrEavx*pE3&_5%Rx5iztAf-Q2@14qOKxzX#)@@V3n=q zgt{rgh%`P`7jm<=unh^U27asHB6uFFq;jEENryLm@QfwppZ4IbQ1nwK9`Ygun=B=7 zk%ttIAOj7RK-Pt#xrYWMAtwmHkt0yZz#`fTop%8k*e&<*_Cr?7`z7aEc5MrOEpbfv zYIioON}z{UP~kCC?IJ+BZRy$lWhq2!YbaH?u<~kF8O0WD9jnI@y&Vzyc3#w*R}*yw zTh0kZ6|QiLJ_|};Wx%&vh6GxF@)?b-fNQtH@!PXK zvc0nPxX<>hw>H(#0+?NL_84qy;-APOo(bSrImm+wx23f)9hYXnR1h-E-S z6`_TG?aV+6NEnNjVt`&P2M%PVo$XWow0pMyf(KM?fy`2NACYNmYjGcMkq|CsC0J8B z28vn(1$aQhma86U&+jQT!4HltUj@`J05CCZ30Fdde6VGML0WLk5;n~qtG4!77PvxH zo^nLW##IWmR8KsRvAvlxo=h36@)+wl`s$61s8+-){RCFEcPdl6_ewNt$pq0U($RC&3vLRO#*B+>xBjydVCzkcH~zyYu~H-CmR@OlB9;R!g?=EHBY?-a-vH*9qKGVbVR zx9@=4S91G`)SpV1r%K5}D!yUkP4T8_-9UdGHU3jcMY2MMdl}+(8@%3=zB9SZ9nZe%^gltHX0pwTAfB3 zcYOC>okn_x>0S5T$ItzeQx{veYG^97lTce0C!M-m-$=ds8|nwS%d^(^UK_L)0- z9whFm1D>YnbbX68VB^1$&rW}$@&7UHHUBX4L9rqzg#RQhSs7obXl8{Qk_YY0l27A=Ya;G8H13Bdi_Xd}t#_-E==u-of0W(_KSrpS;Y) zGc6RJ^MXmtTW>pS}YbKrV?_L+W|2C)ni?=x) zZ{PaQJCAJZxX^X3dZuFqdm3xrv;9lAIhQquordckXg=aJOgh8MvUQRBXxd&JZpbvQ zbS9ld+krQfg#HDllXgFAe|s?@huo#5H`F`VJ$22)Ge5iLk(nP~^~~ZX=GHs6IeV^L zwtmvtbH!PIogkcR{ugtd`*uw)y~K5UoXu-{RxX(zt=qD$w`*BvEPUyP_^K6)+8VcR z?C*9LcQkJrSbfgf^CF>(FTCK~r3+f>FInGr-tvX54VPWC=KMFD)!x+I+~2Wr@mBZz zrZw#sopsq8RyD@kHY~by#d!^(zSi{%FInCd?v1VM+_LQ4`U_evTyXKym32MQwevSG zIVZF_GB9t`*>0$=KHLy)Xl!bZG)JN>vDR2?TYJa6j(PJJbS~^%xah3KXD>c`$TU~32hAokX`sQ$`t+}zdnQ4nag(8l1MKmMGb1 zXpS{T>g(EDo1>xn_HbQGV-tzDMWRlmt+BqnA=DacY6;ghw>CME`fww~(a;uaX%DqF zh9k}G^-fEuF4hojYYIhaxr;P6h1=WeTN>(OO|5P9M2Ln+p(Pe3{Fa8scBekvR2K_H z3BNJo#9Erj&-%88y5?|wyVDpAwKhk>B;HilMpEHWQ?#YAxuL$j)oF{gwbaGJP2{lC z9<7fwH-_s%Ez#Dd=JrUep|Rd+YiW)(g(yR0BoYlb)RUF=NL^#I(^?;HqqIaRxTaX7 zp)u6j=Csr|N7~xSZmhn^36tHH#&CTdaoeLUZK0+{r@1xUQrFf_Z9OHpAxc_KOA{qH z+E(8Xt7~s=424@-NxLoDPBt3IQcG)dC>(8ykb`Y?^|4k8sH*sbmL4fMl1ZB5~5b1O}#Q%^EG3%RLWGVhL<-I}{6olb3byIP}N zPQ==$U7jqsh2oT3oJ<$oa&fvemUc6_eA*>J@Wx8%ySrGt}(O_JMJr!lr?xcJ`-vte7``9ih+qW2NFPI=VAk zoGKnT=s1RVgh$LYdRNG9+i^a^r1$bDN0IX=)EZsW)8i)dQ}I-3I$PfCu8nVWdwSNi zMu~hqc|AozyPGy&xWS#AaNTXwS$FNaUUy*ArU7^Kpqo!l6bn;XH&<}SQj?o2I0Vre z-C1yxrK#K)rD_W+kn-BK@qr81ukT+MXTsX8lM~5Iu9S}F3h8`2Tik!CTbeGHtH^Hm z2$9`E3c0Y_Br{#!+#0>KwuSz6>jy6Ej}P>3+%&LtBA1^k7UI+KTax8*ngSlAQ`48i z_1Og6?yF2}?v<3Uo2PT-DckU+drQ;lUUzhQ%FSim+*H{eD;CDm1v+w?N~bs-Q{!nj zpHA*im)(5srnEa%98Hdm6ylA9Vg&Lsg`1^Ga48{F?&E2i@bUaX zqfw+>OiYiByJO?&iQE`%R^#dXWSq8=OX>f%Qo3+Hp=ee{r%MG&6(N${{kfF*TAnE0 zl)lV$uOH_vjKw(}6v9CQ;SiFP+i`L{Z6fkgPTO1AEoO}T-l5A)_K^LF=`uN%q$!x5 zWC6mFgiKO#LTRixF-medioZ^xDvesy8bX$I+NamCIygTM)(={PhYUJ8ITn;y~lZcia7^1nO z0Q1S*1SOqjw>7$H{ds+xHk}8L%Tv=C4mdgGX46!EKrKtcZdp_G5a;Z~Wkr)3GE-2Vo}4UFIv6h=kF)E0DfiRmG}}v3+*9PwWNwm*p4?4R`SJ{8 zl4Dd(L4T=Q()rv3FNEoGYjoxQTxn{WQgD#-u#yr{8p{=m*>r(Zy_YMIR#mPpv!MXH zxSxu6iXbLvvof0+ttjVDxRhHi42rv4oG|W@E0lDiikIbLemY4LN#JkFP}xtHC<@MP zt}sSrM&VOTtx+#FjjYU(@isupuUNu*n7g(p!~XpK@GQH7P=ZeAr07N^;J z+WM1uLmlNJCb?XJHkwgh3v=o6IjecH%z9+zfzq4L^L9l6PsC~CF7%a>sa%m}Dz`sv zoZU%TK{1XesQ?N^iiegi*GLwo$MTdX|GMQZNVJ{MW<&e3{pmbyk>rdN(l{-2?(do^ zPL9$_@Vji7XJ9AACL4aPaFbWoxky za4`QGQ{h{P2@YP z)BDXdxs_Uz6qy`S1(4rKDN=*N)nqIY8tHE%ywXiv--I%LaFRE~viM;(ib9%JZ}NuH zFBQmTWRjIF7E^AV{&5CqL6u-zqv1E%cM4ou&SeX^3@zXkNGdsz%yQAN%X_^{v#R)7 zb0OvhgK|onNh&#=9jA4}tY8J#EE$9|nI~wo%2ImRS8IEy;0#Z|nKmEV zO*>BBo%XtP!axTXbeh0}snYb+c(02WUGkvA+Jl>2H?=>RN|(0MVfbVp9rwq_)06RJ z!JN>yMz_=X!33WH&-ogsV|hZVye3M;G9CGB&1J{p#Zs1!n|5Bkv)A1ne^cBYeA7O6 z?b>x~d)@7HFiLyVomaUV`q!`DMCx=pTp*;2`ZxA%T)(NWf8C}{ulg&BGd%%k+WzY+ dz?q(bGi?9$0yx7HaHh?_UI1r$2F|ek{|{GtqqhJ6 literal 0 HcmV?d00001 diff --git a/SAGE/FILES/eprom2bin.c.txt b/SAGE/FILES/eprom2bin.c.txt new file mode 100644 index 00000000..ca2dc97b --- /dev/null +++ b/SAGE/FILES/eprom2bin.c.txt @@ -0,0 +1,61 @@ +#include +#include +#include + +#define CRLF "\r\n" + +#define BASE 0xfe0000 +#define RECLEN 32 + +int main(int argc, char* argv[]) +{ + FILE *e,*o,*out; + int c,i; + unsigned char eprombuf[65536]; + int size; + + + if (argc != 4) { + fprintf(stderr, + "Combine two 8bit-EPROM files into a single merged one\n" + "and output it in 16bit binary format.\n" + "Usage: %s even.dat odd.dat output.dat\n\n", argv[0]); + exit(1); + } + + e = fopen(argv[1], "rb"); + o = fopen(argv[2], "rb"); + out = fopen(argv[3], "wb"); + + if (!e) { + fprintf(stderr, "Could not open %s\n", argv[1]); + exit(1); + } + if (!o) { + fprintf(stderr, "Could not open %s\n", argv[2]); + exit(1); + } + if (!out) { + fprintf(stderr, "Could not open %s\n", argv[3]); + exit(1); + } + + size = 0; + while (!feof(e)) { + if ((c = fgetc(e)) == EOF) break; + eprombuf[size++] = c; + if ((c = fgetc(o)) == EOF) break; + eprombuf[size++] = c; + } + printf("%s: Size = %d\n", argv[3], size); + fclose(e); + fclose(o); + + for (i=0; i + +struct dir0 { + unsigned short dfirstblk; + unsigned short dflastblk; + unsigned short dfkind; + char length; + char dvid[7]; + unsigned short deovblk; + unsigned short dnumfiles; + unsigned short dloadtime; + unsigned short dlastboot; + unsigned short padding; +}; +struct dirn { + unsigned short dfirstblk; + unsigned short dflastblk; + unsigned short dfkind; + char length; + char dtid[15]; + unsigned short dlastbyte; + unsigned short daccess; +}; + +unsigned short swap(unsigned short x) { + union u { + unsigned short x; + unsigned char c[2]; + } u; + unsigned char s; + u.x = x; + s = u.c[0]; + u.c[0] = u.c[1]; + u.c[1] = s; + return u.x; +} + + +int main(int argc, char* argv[]) +{ + char name[17]; + char cbuf[512]; + char buf[512*4]; + FILE* in,*out; + int i,n,k; + int b,e,l; + struct dir0* dir0; + struct dirn* dirn; + + if (argc != 2) { + fprintf(stderr,"Usage: %s diskimage.bin\n",argv[0]); + exit (1); + } + + if ((in=fopen(argv[1],"rb"))==NULL) { + fprintf(stderr,"Can't read %s\n",argv[1]); + exit(2); + } + + /* read boot block (two sectors) */ + printf("Extract boot record\n"); + fread(buf,2,512,in); + out = fopen("bootrec.bin","wb"); + fwrite(buf,2,512,out); + fclose(out); + + /* read directory records */ + fread(buf,4,512,in); + dir0 = (struct dir0*)buf; + dirn = (struct dirn*)(buf+26); + printf("Directory:\n"); + printf(" firstblock=%d\n",swap(dir0->dfirstblk)); + printf(" lastblock=%d\n",swap(dir0->dflastblk)); + printf(" volumeid="); + for (i=0; ilength; i++) printf("%c",dir0->dvid[i]); + putchar('\n'); + printf(" lastblock=%d\n",swap(dir0->deovblk)); + printf(" numfiles=%d\n",swap(dir0->dnumfiles)); + + for (n=0; ndnumfiles); n++) { + if (dirn[n].dfkind) { + printf("\nFile="); + for (i=0; i +#include +#include + +typedef unsigned char u_char; +typedef unsigned short u_short; + +typedef struct direntry { + unsigned char une[12]; +#define d_user une[0] +#define d_name une[1] +#define d_ext une[9] + u_short d_fext; + u_char d_fill; + u_char d_last; + u_short d_blks[8]; +} DIR; + +#define UNUSED 0xE5 + +#define DIROFFSET 0x2000 +#define DIRBLKS 16 +#define BLKSTART (DIROFFSET+DIRBLKS*128) +#define CLSTSIZE 2048 + +typedef struct fileentry { + char f_name[30]; + u_short f_fext; + u_char f_last; + u_short f_blks[200]; +} FENTRY; + +void makename(char* name, DIR* dir) +{ + int i; + char *p = name; + for (i=0; i<8; i++) { + if ((&dir->d_name)[i]==' ') break; + *p++ = (&dir->d_name)[i]; + } + *p++ = '.'; + for (i=0; i<3; i++) { + if ((&dir->d_ext)[i]==' ') break; + *p++ = (&dir->d_ext)[i]; + } + *p = 0; +} + +FENTRY* lookup(char* name, FENTRY* files) +{ + FENTRY* nul=0, *p = files; + int i; + + for (i = 0; i<64; i++) { + if (p->f_name[0]==0) { + if (nul==0) nul = p; + } else { + if (!strcmp(p->f_name,name)) { + return p; + } + } + p++; + } + if (nul==0) { + printf("File table full!\n"); + exit(1); + } + return nul; +} + +int main(int argc,char* argv[]) +{ + FILE *in,*out; + unsigned char cpmbuf[2048]; + int i,k,n,s,ls; + char name[30]; + FENTRY files[64], *fe; + DIR* dir; + + if (argc != 2) { + fprintf(stderr,"Usage: %s cpmdisk.bin\n",argv[0]); + exit(1); + } + + for (i=0; i<64; i++) { + files[i].f_name[0] = 0; + files[i].f_fext = 0; + files[i].f_last = 0; + memset(files[i].f_blks,0,sizeof(u_short)*200); + } + + in = fopen(argv[1],"rb"); + if (!in) { + perror("open file"); + exit(1); + } + fseek(in,DIROFFSET,0); + for (i=0; id_user == UNUSED) continue; + makename(name,dir); + fe = lookup(name,files); + strcpy(fe->f_name,name); + if (dir->d_fext >= fe->f_fext) { + fe->f_fext = dir->d_fext; + fe->f_last = dir->d_last; + } + for (n=0; n<8; n++) { + fe->f_blks[dir->d_fext*8+n] = dir->d_blks[n]; + } + } + } + + for (i=0; i<64; i++) { + if (!files[i].f_name[0]) continue; + printf("File %s: (last=%d)\n",files[i].f_name,files[i].f_last%16); + FILE* out = fopen(files[i].f_name,"wb"); + + + + for (k=0; k<199; k++) { + n = files[i].f_blks[k]; + if (n==0) break; + fseek(in,BLKSTART+CLSTSIZE*(n-1),0); + fread(cpmbuf,1,2048,in); + ls = files[i].f_last % 16; + if (!ls) ls = 16; + s = files[i].f_blks[k+1]==0 ? ls*128 : CLSTSIZE; + fwrite(cpmbuf,1,s,out); + printf("%d ",files[i].f_blks[k]); + } + printf("\n"); + fclose(out); + } + exit(0); +} diff --git a/SAGE/FILES/s133.hex b/SAGE/FILES/s133.hex new file mode 100644 index 00000000..a1879c9b --- /dev/null +++ b/SAGE/FILES/s133.hex @@ -0,0 +1,258 @@ +S00B0000733133332E68657882 +S224FE00000000040000FE0034600003AE600003A2600007B060000334600002DE600002B68B +S224FE0020600002E4600002EA600016E4600016E6600002204E70203CFFFFFFFFB0BCFFFF73 +S224FE0040FFFF664E220046812E402A412C4F4E65284E4E6B244C224B204A2E092C082A07E9 +S224FE0060280626052404C741D2826A266524672252816B1E641C661A691892BC8000000053 +S224FE00806810B2BC800000006608E38065B6660201C16676018157C9FFFA0141676C223CF7 +S224FE00A000001234C2FCFEDC82FC1234B2BC0000FEDC6656428008C0000008C0000108C07C +S224FE00C0000208C0000308C0000408C0000508C0000608C000070880000808800009088071 +S224FE00E0000A0880000B0880000C0880000D0880000E0880000FB0BC000000FF660C7207B4 +S224FE0100034057C9FFFC4A8067044E7227004FF8040011FC0092C02711FC0038C02511FC5A +S224FE01200092C06711FC0031C06543FA00066000012611FC0001C06749FA19574BFA0006A3 +S224FE014060001858307C000072014841323CFFFE224145FA000660001798663047FA002407 +S224FE016021CB000872024841D3C1303CA5A53280B051660E46403280B05166064640D3C15B +S224FE018060EC93C145FA000660001766303C00BF41F80100429851C8FFFC548921C901007F +S224FE01A04E6121C9014A21C901426100032A11FC0000C0676100011E41FA18B96100013A41 +S224FE01C032380100E2415341C2FC000541FB100C61000126610000FE60143132384B00326C +S224FE01E035364B003338344B003531324B007228740208380006C0216702725011C201C67D +S224FE020011C101C7423801CA11C201CE11C101CF11FC000101D27206610000861038C0214F +S224FE0220C07C00306706B07C0020671E21F80100014A21F80100014231FC2700014E41FA71 +S224FE0240001221C801466000057A42676100160860DA4E4F60FC41F8C0734200108011FCD4 +S224FE02600076C007E01810801238C021E0181080706E080100036702707E10BC0040024173 +S224FE0280000711FB1014C003108011FC0000C003E01810BC00254ED10280402010080402F9 +S224FE02A041F8C0334240108011FC00B6C007E018108011FB10E4C005E018108011C0C00508 +S224FE02C0E01810BC0040E01810BC004EE01810BC00274E752F00700D6170700A616C420051 +S224FE02E061686166616461626160201F4E752F0070206156201F4E753F0010186704614A2B +S224FE030060F8301F4E75E9186126E91861224E753F017203E958611851C9FFFA321F4E750B +S224FE03203F017207E998610851C9FFFA321F4E753F000200000FB03C000963040600000737 +S224FE0340060000306104301F4E754A380104662C3F01323CFFFF08380002C07356C9FFF89D +S224FE0360670811C0C071321F4E7548E7C0C043FA00066000FEE24CDF030360D64E4A4E7501 +S224FE03804A38010466262F011238C0730801000167F61038C071020100386604221F4E7511 +S224FE03A011FC0035C073700761A060DC4E494E7508380001C0734E7561C6088000070C00BE +S224FE03C000616D0A0C00007A6E04088000054E756116611461126110610E610C610A61087A +S224FE03E06106610461024E7148F87FFF01064E6821C8014A2A1F41FAFFD89A887016BA8020 +S224FE04006256BA3C00046206381F261F341F31DF014E21DF014621CF01424FF804000C059B +S224FE0420001467000B486E000AC00C050012660611FC0001C06746FC270011FC0038C0255C +S224FE044008B8000601504238010470FF51C8FFFE43FA000A6000FE00428560C249FA159206 +S224FE04604BFA00066000153449FA1694D8F450004BFA000460EE49FA169A4BFA000460E465 +S224FE04802038014630780152610009FE6100FE460C050012660611FC0000C0670C050004DA +S224FE04A06200032041FA16F26100FE4E30046100FE6041FA16EF6100FE4020036100FE620E +S224FE04C041FA16EC6100FE3230026100FE446100FE04600002EE41F8000843FA14EC45FA06 +S224FE04E0FB204280301967186B06D08A20C060F2424112003019D08A20C051C9FFFC60E2E8 +S224FE05004E75225F02800000000FD080D089C1893251D3C04ED148E780B02478000847FA97 +S224FE0520001421CB0008101121CA00084CDF0D01B0004E75508F321F46C141FA14C2610047 +S224FE0540FDB8588F2009307801526100093C21CA00084CDF0D01000000014E750838000101 +S224FE0560C0734E752F00703A6100FDE0201F6100FD7E4E752F00702C6100FDD0201F4E7592 +S224FE05802F0070076100FDC4201F4E75C03C007F0C0000206D060C00007E6D02702E4E751A +S224FE05A02F092F01224842816100FE0E0C00001B6700006E0C000012670000680C00000D34 +S224FE05C0674A0C000008661AB3C867DC6100FD7C6100FD1C6100FD7451C9FFF25389528234 +S224FE05E060C40C00007F6614B3C867BC61585389528210116100FD54544160AC611A428116 +S224FE060053826B0812C06100FD42609C610A421912C0221F225F4E758281673C4281602C0F +S224FE0620224842812F0870236100FD206100FCA6B3C86700000C10186100FD10B3C866F6E4 +S224FE0640205F6000FF648281660E72013F00103C005C6100FCF6301F4E75428010188000B5 +S224FE0660660253884E7561F28000670A0C00002067040C00002C4E7561E067080C000020BF +S224FE068067F653884E7561D2244942411219B011568957C9FFFA6600011C1021E158102137 +S224FE06A0D4C04ED2428161BE6736040000306D2A0C0000096F0C040000076D060C00000F10 +S224FE06C06E18E999484010010200000F660C48408200848267D0B48164CC428053804E75EF +S224FE06E0C1414E752F036190428395CA6100FF78670000480C00002367360C0000246708F9 +S224FE0700347801525388602A6100FF5C6700002C0400003065240C000004641E244093C914 +S224FE07206100FF44670000180C00002B660C6002528342826100FF6E670257832240D5CADD +S224FE0740D5CAD4FC0154D3D2201FC14380804E752F0242826100FF22670000520C000027C4 +S224FE0760671C0C00002E674624016100FF386B06241F92814E75241F428153814E756100C7 +S224FE0780FEDA6100FED6670000200C0000276712E19A4A0266E0D480828167E6B28264E2EB +S224FE07A060D46100FEC266CEC14260C47001241F22004E756100FB38703F6100FB8E61005F +S224FE07C0FDC04FF8040042B801546100FB080838000601506700000870546100FB6E363859 +S224FE07E00152670C70246100FB6210036100FB42703E6100FB56742841F801886100FDA26F +S224FE080043FA09FE6100FE8060B843FA0A1C6000FE766100FE642838017E3878018210106E +S224FE0820670E6100FEC0668C2809284A31CA01826100FE46327C01001010670A6100FEA624 +S224FE08406B00FF726704D3C45389528921C9017E2A09611C6718280B6100FD0267F4610019 +S224FE0860FB580C00001367F60C00000366E44E756100FA6220046100FAA86100FA722004B5 +S224FE088090946100FA9C6100FCDC760F2644C7496100FC84C7496600FF1C101B6100FA68A2 +S224FE08A008030000660000066100FA44BA8B57CBFFDE6100FA3A760F2644101B6100FCCE01 +S224FE08C06100FA88BA8B57CBFFF24E7543F80154323C20247403601443F80126323C2041B9 +S224FE08E0600843F80106323C204474076100FD6C6718903C00306B00FEBC1800B8026C0056 +S224FE0900FEB461226100F9CE4E754284611852846100F9DC0C04000466046100F9D2612E30 +S224FE0920B8026DEA4E75616842833001E0880C000020670000066100FA1210016100FA0C3B +S224FE09408683660610046100F9E86100FC182004E5804A836A0A303100006100F9B46008B3 +S224FE0960203100006100F9BA4E756100FCEE6600FE446100FF646100FF6A61186108613256 +S224FE09806104611E4E756100F9666100F9624E756000F94261FA43F80146323C5043601C79 +S224FE09A061EE76FF43F8014E223C00005352600E61DE43F8014A223C00005553760142846D +S224FE09C06100FF684E757C00600001566000FDF443FA08726000FCB06100FD0A6600FDD6A1 +S224FE09E060046100FB9C2809284A2A0454856100FE806100FB7041F80188243C00000028F9 +S224FE0A006100FB9E428110106716223C0000FFFF6100FD3E6BCC6E0A13400001E08012808C +S224FE0A2054890C01002E66BE4E7543F80154323C202474047A01601643F80126323C2041D8 +S224FE0A40600843F80106323C2044740842856100FC0A671A903C00306B00FD5AB0056B000E +S224FE0A60FD54B0026C00FD4E4282610E4E75200561085280B0026DF84E7542832F023A0158 +S224FE0A8028002C00E5864A82660E6100FBEC4A10662260046100FAEA32056100F838610058 +S224FE0AA0FE8A6100FAC0742841F801886100FAF21010671C42816100FC986BD866000012CF +S224FE0AC086836A0833806000600000062380600032051004241F4E756100FB806600FCD6B7 +S224FE0AE06100FF566100FF5C6106611E610E4E7543F80146323C50436000001843F8014EE4 +S224FE0B00323C535276FF6000000C43F8014A323C55537601428242806100FF624E757CFF45 +S224FE0B207A0242806100FB3467144486903C00306B00FC82B03C00026E00FC7A3A00360078 +S224FE0B4060046100FA3C3643D7CB284BD7CB4A866B0A675A6100FB224A106614616A6100E3 +S224FE0B60FA04742841F801886100FA366100FB0A101067320C00002E660607B8015060262A +S224FE0B806100FB626BBC6100FAF0243C0000FFFF6100FB126BAC426C01723940017807F82D +S224FE0BA00150274901605243B6456F9A4E75611860F4427265616B706F696E742000496E01 +S224FE0BC061637469766500006100F70A41FAFFE46100F72610036100F7586100F9880738B4 +S224FE0BE00150660A41FAFFD86100F70E4E75202B01606100F72C6100F6F670286100F74C3D +S224FE0C00302C01786100F70A6100F96A302C01726100F6FE70296100F7324E7543FA064247 +S224FE0C206000FA64243C000000FF613A6600FB861A00E1401005600C243C0000FFFF612671 +S224FE0C406600FB723A00484030056008428261166600FB626100F8C06600FB5AE19812C042 +S224FE0C60538466F04E752F026100FA7A661828096100FA72C9896B0E6E0498895284221F8A +S224FE0C806100FACE4E75225F4E7543FA05DE6000F9F643FA05E06000F9EE6100FA48660040 +S224FE0CA0FB1420096100F67A6100F8BA10116100F6564E756100FA2E6600FAFA3C0908064E +S224FE0CC000006600FAF020096100F6566100F89630116100F63C4E7543FA05A16000F9A881 +S224FE0CE06100FA026600FACE223C000000FF6100FA606600FAC012804E756100F9E8660031 +S224FE0D00FAB43C09080600006600FAAA223C0000FFFF6100FA3C6600FA9C32804E75610000 +S224FE0D20F95874076100F97E6B00FA8A22006000F57008B80005015043FA05486000F948F5 +S224FE0D40740261000120426A017251CAFFF661226600FA6208F80006015008F80007015075 +S224FE0D601038015002000007660608B800060150604C6100F9041010670A6100F968660C7C +S224FE0D8021C9014608F800060150B0004E756100F54443FA04F56000F8EE083800060150A8 +S224FE0DA0661C4E7508F800050150600608B80005015061BE6600F9FE08B8000701502C3821 +S224FE0DC00146284608060000671641FA00706100F528307801522006610000AE6000F9E43A +S224FE0DE0224C6100F7326600F9CC3C38014E08380006015066207400616A6B00F9B8670C1F +S224FE0E003551016C32BC4E4F0886000F52420C42000366E4600408C6000F3014B07C4E4F37 +S224FE0E2066040886000F2078014A4E602E7801422F0C3F064CF87FFF01064E73496C6C659E +S224FE0E4067616C2070726F6772616D20737461727420616464726573733A200008B80006CF +S224FE0E6001504E7542803242D3C92449D3C905380150670E226901606100F69C6600000632 +S224FE0E8052804E7553804E756100F4966100F4602F0070286100F4B470246100F4AE3008E5 +S224FE0EA06100F48E6100F6BED1C8D1C8201F90A801546100F46C70296100F4904E750D0A20 +S224FE0EC0556E657870656374656420747261636520636F6E646974696F6E2061743A200095 +S224FE0EE054726163653A2000083800060150660641FAFFCC6016083800070150670A08B85E +S224FE0F00000601506000FEB841FAFFD6203801466100F3E62840307801526100FF6C6100E8 +S224FE0F20F644224C6100F5F0660630116100F3E2083800050150670A41F801884210610061 +S224FE0F40FA2A6000F87E0D0A556E657870656374656420627265616B20706F696E743A209F +S224FE0F6000000D0A427265616B3A200042854286283801465584760008380007015066068F +S224FE0F8041FAFFC4602C74026100FEDA6F1CB3C4661476023A2A01723C2A0178BC456706FD +S224FE0FA052453545017232AA016C51CAFFDC41FAFFB220380146908321C00146BC4566003E +S224FE0FC0FD946000FF4C43FA02D26000F6BA11FC000101BB49F8C031606E423801BB49F870 +S224FE0FE0C071428574016100F6BC6B00F7C83C00243C0000FFFF6100F6AC6B00F7B83F004E +S224FE10006100F6E26600F7AE2F0942826100F6966B00F7A22F003F064A856706610006F68F +S224FE10206004610006EA6700000E41FA000C6100F2C86100F2D24E750D0A4469736B206512 +S224FE104072726F723A20000061720C000051670000AC0C00005366F0420561601E006100EF +S224FE106000A81C01550642816100009E6100009A26410C070030660E4A0667066100008ACA +S224FE108060F6616060C20C0700326612220B6100007826414A0667EA616E16C160F60C073A +S224FE10A0003167F00C07003966524A06664E613441FA095D6100F2426000F708082C00013E +S224FE10C0000267081014088000074E754A3801BB67EA6100F2DC67E46100F2DE0C0000518F +S224FE10E066DA4E756122460566024E75588F41FA093D6100F2046000F6CA508F41FA091BD4 +S224FE11006100F1F66000F6BC61086106DA0153064E7561A80C0000306DE00C0000396E0A5C +S224FE112004000030E989D2004E750C0000416DCA0C0000466EC45F0060E643FA01576000CF +S224FE1140F5467A016000FE9E6000F67843FA01566000F53453797374656D207265696E6933 +S224FE11607469616C697A696E672E2E2E2E0041FAFFE46100F1846000EEBC42801010670A98 +S224FE118074016100F5206B00F62C3F00610006C84E754E7542801010670A74036100F506BA +S224FE11A06B00F61231C001524E756100F5386600F60428096100F52E6B00F5FAC9896604F9 +S224FE11C09889600253846500F5EC26496100F5166600F5E27201B7C96406D3C4D7C472FF54 +S224FE11E06100F3346B00F5CEC34B6100F32AC34B6B00F5C21293D3C1D7C151CCFFE44E75E6 +S224FE12000C440AF653D0F7461CFA2494FF4DAAFF508AFA548EFB4732FB573AFF4CC6FD0094 +S224FE12209AFB494CFF41CCF7084DEAF55242F744BAF641B0F6506CF75378F75588F724A4D3 +S224FE1240F6429EF7084D94F75294F844FEF741F4F750ACF853B8F855C6F824E6F742DAF87C +S224FE12600242C4F957D8F94CECF9024928FA4F6EFA53B4FA014226FA5740FA014265FA57FF +S224FE12807FFA014FBEFA43CCFA024223FB45D3FB521BFB0141B5FE46AFFE024134FD5440F4 +S224FE12A0FD4648FD0346D6FE48EEFE47EEFE53CAFE00441BF7005453540043484700434C52 +S224FE12C05200534554004F524900414E4449535542494144444942000000454F5249434D81 +S224FE12E050492E4200002E5700002E3F00002E4C00004E454758434C52004E4547004E4FEC +S224FE13005400000000005453540054524150545241504C494E4B554E4C4B524553454E4FD9 +S224FE1320500053544F5052544500344537345254530054524150525452004A5352004A4D97 +S224FE1340500043484B004C45410044495655444956534D554C554D554C5354004600484975 +S224FE13604C53434343534E45455156435653504C4D4947454C5447544C454F520000535571 +S224FE13804200454F5200434D5000414E440041444400534243445355425800000000434DB8 +S224FE13A050414142434441444458415352004C535200524F5852524F520041534C004C53DA +S224FE13C04C00524F584C524F4C0048E760401219143C00AD1038C0510800000756CAFFF618 +S224FE13E0671A08000006661411D9C053740951CAFFFE530166DA4CDF02064E7511FC0001B7 +S224FE140001C560F248E7604043FA07B461BC6624720243F801C36174661A123801C302016A +S224FE142000C0670C08010006670472036002720211C101C54CDF02064E7548E760407207DB +S224FE144043F801BC42116144663C123801BC020100C0672E0801000667267205103801BD7F +S224FE1460E208651E7206E40865187207E40865127208E208650C7209E4086506720A6002BA +S224FE1480720211C101C54CDF02064E75343C10FE1038C0510800000756CAFFF667160800C7 +S224FE14A00006671012F8C053740951CAFFFE530166DA4E7511FC000101C54E752F0170026A +S224FE14C0484008380000C0636612538066F411FC0002C02711FC000401C5600C4A0266206E +S224FE14E012F8C053534166D611FC0001C02711FC0000C0276100FF44221F4A3801C54E7523 +S224FE150011D9C053534166B660DE48E76040720143FA06A96100FEB46638740248420838BE +S224FE15200000C063660C538266F411FC000401C56020422C00036100FECC67160C3800032D +S224FE154001C5660E0C2C00500001660651C9FFC270034CDF02064E7548E76040720210388A +S224FE156001D6B02C0003674C43F801B032BC030F42290002137801D600036100FE4E6634FA +S224FE15807402484208380000C063660C538266F411FC000401C5601C6100FE6A660A197827 +S224FE15A001D600034200600C6100FF60660651C9FFAE70034CDF02064E7500000000000044 +S224FE15C00000423801C54A2C0000670000D23F077E0111FC000FC02711FC0000C02711FC50 +S224FE15E00003C02743FA05D111FC000EC0276100FDDA663270064A2C00046702540011C09B +S224FE1600C02770FF51C8FFFE08380000C06367086100FDF2423801C56100FEF067120C38ED +S224FE1620000301C5670451CFFFAA3E1F70014E7570024840538066FC43FA05866100FD8C38 +S224FE164066E4343CFFFE1038C0510800000756CAFFF6660E11FC0002C02711FC000401C512 +S224FE166060C86100FDD666BE4240103801C267260C0000026E2067067210742060047208D0 +S224FE1680740EE1483940000619410002194200053E1F42004E7511FC000901C5608C11FC2A +S224FE16A0000B01C54E754A2C0000675A4281323C020082EC00064282343801DEC4C142815E +S224FE16C0122C000284C14241082C000000006604E24AE31111C101D711C201D6B42C00010C +S224FE16E06C244842122C00029202C2EC0006B2B801E06F04223801E0520211C201D831C15A +S224FE170001DC42004E7511FC000B01C54E75423801DA600611FC000101DA225F49F801C616 +S224FE1720301F670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C0006660000FE4E +S224FE17406100FE80660000E24AB801E0670000DA11FC0003C0274A3801DA672C0838000113 +S224FE1760C063670A11FC000C01C5600000BC102C0001E208B03801D66F0811FC000DC02779 +S224FE1780600611FC000CC0276100FF1C6600009A6100FDC6667443F801B0303C09454A383E +S224FE17A001DA6602524032C0103801D7E50812C012F801D612F801D712F801D8302C000678 +S224FE17C0E04812C012EC000212EC000512FC00FF43F801B06100FBF46630227801E44281E8 +S224FE17E0323801DC143801DA6100FCD2661C303C032051C8FFFED3B801E493B801E082FC08 +S224FE18000200D37801DE6000FF405307671A103801C50C0000016700FF280C0000036708F8 +S224FE18200C0000046600FF2270074A2C00046702540011C0C027103801C54E7570064A2CEB +S224FE184000046702540011C0C02770024840538066FC6000FEF46100EC7E6100EA7841FAC2 +S224FE1860024A6100EA946100EA6C4267307C04002F082F083F2F000E6100FE946612307C29 +S224FE188004000C58424F663C0C584F5466364ED06100EA42103801C50C000004673041FA6C +S224FE18A0019B6100EA546100EA5E41FA01AC6100EA48102C00046100EA786100EA18205FE1 +S224FE18C0548F4ED041FA01836100EA2E60DC41FA01EE6100EA246100EAE06100E9F80C007E +S224FE18E000516600FF7241FA01F76100EA0C60BA264842804281468126804A93661C2681B3 +S224FE1900B293661C26CBB7C963EE2648B7D3660E588BB7C963F642804ED222006002220B80 +S224FE1920201349FA013F4BFA00066000006E2A0B4BFA00066000007049FA01454BFA0006B1 +S224FE1940600000582A004BFA00066000005A49FA01344BFA0006600000422A014BFA0006C2 +S224FE19606000004449FA01874BFA00066000002C49FA01354BFA00066000002070014ED249 +S224FE19803E3CFFFF08380002C07356CFFFF8670611C6C0714ED64E7227001C1C67064DFACF +S224FE19A0FFFA60DC4ED57807E99D7C0FCC050C060009630406060007060600304DFA00044F +S224FE19C060BE51CCFFE44ED503D003D203D4800203D603D803E403D403D4800B03DA80068B +S224FE19E003DE03E0800E03DC03E2800F03DA000007455843455054494F4E3A20200007200B +S224FE1A004E4F204D656D6F72792061743A20004C6F616420446F6E650007426164204C6F2F +S224FE1A20616420436861726163746572000742616420436865636B73756D00074472697634 +S224FE1A4065204572726F722000074E6F7420424F4F54204469736B00206F6E2064726976CB +S224FE1A6065200007424144204D656D6F7279206174200052414D2053697A65203D2000202A +S224FE1A806973200020696E7374656164206F6620000D0A5341474520494920537461727413 +S224FE1AA0757020546573740D0A00426F6F74696E672066726F6D20466C6F70707900507562 +S224FE1AC07420696E20424F4F54206469736B20616E642070726573732061206B65790007E8 +S224FE1AE0426F6F742041626F72746564002028546573742041626F72746564290000001F5D +S224FE1B000027002B003300470052005C006A007A008F204572726F722061742000556E6B68 +S224FE1B206E6F776E00427573004164647265737300496C6C6567616C20496E73747275632E +S224FE1B4074696F6E0041726974686D657469630050726976696C65676500526573657276A0 +S224FE1B606564205452415000556E61737369676E6564205452415000556E61737369676E92 +S224FE1B80656420496E746572727570740052414D205061726974790046756E6374696F6ECD +S224FE1BA03A200020204163636573733A20002020496E73743A20000303D1070207000108B4 +S224FE1BC0024A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S224FE1BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S224FE1C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S224FE1C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S224FE1C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S224FE1C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S224FE1C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S224FE1CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S224FE1CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S224FE1CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S224FE1D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S224FE1D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S224FE1D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S224FE1D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S224FE1D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S224FE1DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S224FE1DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S224FE1DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S224FE1E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S224FE1E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S224FE1E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S224FE1E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S224FE1E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S224FE1EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S224FE1EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S224FE1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S224FE1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S804FE0000FD diff --git a/SAGE/FILES/sage-ii.hex b/SAGE/FILES/sage-ii.hex new file mode 100644 index 00000000..10bba9ab --- /dev/null +++ b/SAGE/FILES/sage-ii.hex @@ -0,0 +1,258 @@ +S00E0000736167652D69692E686578ED +S224FE0000000004000000003C600004286000041C6000085E6000037E6000032860000300FC +S224FE00206000032E60000334600018E6600018E86000026A14D801026000025C4E704FF859 +S224FE0040040011FC0092C02711FC0038C02511FC0092C06711FC0031C065700072FF343C6F +S224FE006042D741F8C0FE3080308151CAFFFA43F8000045F87FFE343C34423011301030125A +S224FE008051CAFFF8343C06C541F8C00172084A10D0FC001051C9FFF851CAFFEE43FA00060A +S224FE00A0600001FE49FA1C514BFA0012200D4840303C00FE48402A4060001B3E49FA1C436B +S224FE00C04BFA000660001B321038C0216B64E60802400006303B00064EFB000200180024FF +S224FE00E0001800084238010449FA1CE94BFA078260001B0649FA1CED4BFA003860001AFA8A +S224FE010049FA1CF04BFA000660001AEE74FF720070001038C023460008000002670272FF30 +S224FE0120E308024000064840204030C151CAFFFC60DA41FAFECC343C0FFF42004201D01870 +S224FE0140D21851CAFFFA4A00671449FA1C6B4BFA000660001AA44A38C0216A0000D84A01B6 +S224FE0160671449FA1C614BFA000660001A8C4A38C0216A0000C011FC0001C067307C000082 +S224FE018072014841323CFFFE224145FA0006600019A8663047FA002421CB00087202484140 +S224FE01A0D3C1303CA5A53280B051660E46403280B05166064640D3C160EC93C145FA000627 +S224FE01C06000197667084A38C0216A000068303C00BF41F80100429851C8FFFC548921C96F +S224FE01E001004E6121C9014A21C901426100039611FC0000C0674A38C0216B1611FC0007C4 +S224FE0200C06770FF51C8FFFE11FC0006C0676000FF226100010A41FA1AC161000126303802 +S224FE02200100ED48610001A4704B61000168610000EE60044E72270072287402083800060A +S224FE0240C0216702725011C201C611C101C7423801CA11C201CE11C101CF11FC000101D2F1 +S224FE02607206610000861038C021C07C00306706B07C0020671E21F80100014A21F80100CA +S224FE0280014231FC2700014E41FA001221C80146600005DE4267610017E660DA4E4F60FC7B +S224FE02A041F8C0734200108011FC0076C007E01810801238C021E0181080706E080100038E +S224FE02C06702707E10BC00400241000711FB1014C003108011FC0000C003E01810BC002532 +S224FE02E04ED1028040201008040241F8C0334240108011FC00B6C007E018108011FB10E48C +S224FE0300C005E018108011C0C005E01810BC0040E01810BC004EE01810BC00274E752F0004 +S224FE0320700D6170700A616C420061686166616461626160201F4E752F0070206156201F53 +S224FE03404E753F0010186704614A60F8301F4E75E9186126E91861224E753F017203E9582B +S224FE0360611851C9FFFA321F4E753F017207E998610851C9FFFA321F4E753F000200000FC0 +S224FE0380B03C0009630406000007060000306104301F4E754A380104662C3F01323CFFFF7F +S224FE03A008380002C07356C9FFF8670811C0C071321F4E7548E7C0C043FA00066000FEE2F8 +S224FE03C04CDF030360D64E4A4E7548E7F000720032007400343C2710420382C266044A033A +S224FE03E067061001619450C34241484184FC000A66E84CDF000F4E754A38010466282F014E +S224FE04001238C0730801000167F61038C071020100386604221F4E7511FC0035C0737007E7 +S224FE04206100FF7260DA4E494E7508380001C0734E7561C4088000070C0000616D0A0C0078 +S224FE0440007A6E04088000054E7521C001067002604E21C001067004604621C001067006F5 +S224FE0460603E21C001067008603621C00106700A602E21C00106700C602621C00106700EA5 +S224FE0480601E21C001067010601621C001067012600E21C001067014600621C001067016E5 +S224FE04A048F87FFE010A4E6821C8014A2A007016BA80625EBA3C00046206381F261F341F8C +S224FE04C031DF014E21DF014621CF01424FF804000C05001467000B686E000AD20C05001289 +S224FE04E0660C11FC0001C06711FC0000C06770FFE01851C8FFFC46FC270011FC0038C02510 +S224FE050008B8000601504238010443FA000A6000FD90428560BA49FA17364BFA00066000F2 +S224FE052016D849FA18E0D8F450004BFA000460EE49FA18E64BFA000460E4203801463078C7 +S224FE0540015261000A146100FDD60C0500046200032041FA194A6100FDEA30046100FDFC84 +S224FE056041FA19476100FDDC20036100FDFE41FA19446100FDCE30026100FDE06100FDA0F2 +S224FE0580600002EE41F8000843FA169C45FAFA724280301967186B06D08A20C060F2424123 +S224FE05A012003019D08A20C051C9FFFC60E24E75225F02800000000FD080D089C189325101 +S224FE05C0D3C04ED148E780B02478000847FA001421CB0008101121CA00084CDF0D01B0001D +S224FE05E04E75508F321F46C141FA16746100FD54588F2009307801526100095E21CA0008C1 +S224FE06004CDF0D01000000014E7508380001C0734E752F00703A6100FD7C201F6100FD1A39 +S224FE06204E752F00702C6100FD6C201F4E752F0070076100FD60201F4E75C03C007F0C0070 +S224FE064000206D060C00007E6D02702E4E752F092F01224842816100FDDA0C00001B67004F +S224FE0660006E0C000012670000680C00000D674A0C000008661AB3C867DC6100FD18610029 +S224FE0680FCB86100FD1051C9FFF25389528260C40C00007F6614B3C867BC6158538952824A +S224FE06A010116100FCF0544160AC611A428153826B0812C06100FCDE609C610A421912C001 +S224FE06C0221F225F4E758281673C4281602C224842812F0870236100FCBC6100FC42B3C873 +S224FE06E06700000C10186100FCACB3C866F6205F6000FF648281660E72013F00103C005C69 +S224FE07006100FC92301F4E75428010188000660253884E7561F28000670A0C00002067048A +S224FE07200C00002C4E7561E067080C00002067F653884E7561D2244942411219B0115689F6 +S224FE074057C9FFFA6600011C1021E1581021D4C04ED2428161BE6736040000306D2A0C0055 +S224FE076000096F0C040000076D060C00000F6E18E999484010010200000F660C484082002B +S224FE0780848267D0B48164CC428053804E75C1414E752F036190428395CA6100FF78670011 +S224FE07A000480C00002367360C0000246708347801525388602A6100FF5C6700002C0400CC +S224FE07C0003065240C000004641E244093C96100FF44670000180C00002B660C6002528308 +S224FE07E042826100FF6E670257832240D5CAD5CAD4FC0154D3D2201FC14380804E752F0280 +S224FE080042826100FF22670000520C000027671C0C00002E674624016100FF386B06241FC8 +S224FE082092814E75241F428153814E756100FEDA6100FED6670000200C0000276712E19A26 +S224FE08404A0266E0D480828167E6B28264E260D46100FEC266CEC14260C47001241F22005F +S224FE08604E756100FAD4703F6100FB2A6100FDC04FF8040042B801546100FAA40838000651 +S224FE088001506700000870546100FB0A36380152670C70246100FAFE10036100FADE703E50 +S224FE08A06100FAF2742841F801886100FDA243FA0AF26100FE8060B843FA0B136000FE762B +S224FE08C06100FE642838017E387801821010670E6100FEC0668C2809284A31CA0182610018 +S224FE08E0FE46327C01001010670A6100FEA66B00FF726704D3C45389528921C9017E2A093B +S224FE0900611C6718280B6100FD0267F46100FB240C00001367F60C00000366E44E75610071 +S224FE0920F9FE20046100FA446100FA0E200490946100FA386100FCDC760F2644C74961001D +S224FE0940FC84C7496600FF1C101B6100FA0408030000660000066100F9E0BA8B57CBFFDE04 +S224FE09606100F9D6760F2644101B6100FCCE6100FA24BA8B57CBFFF24E7543F80154323C67 +S224FE098020247403601443F80126323C2041600843F80106323C204474076100FD6C671AB2 +S224FE09A0903C00306B00FEBC78001800B8026E00FEB261226100F9684E754284611852848E +S224FE09C06100F9760C04000466046100F96C612EB8026DEA4E75616E42833001E0880C0064 +S224FE09E00020670000066100F9AC10016100F9A68683660610046100F9826100FC16200454 +S224FE0A00E5800280000000FF4A836A0A303100006100F9486008203100006100F94E4E7585 +S224FE0A206100FCE66600FE3C6100FF5C6100FF626118610861326104611E4E756100F8FAE3 +S224FE0A406100F8F64E756000F8D661FA43F80146323C5043601C61EE76FF43F8014E223C4D +S224FE0A6000005352600E61DE43F8014A223C00005553760142846100FF624E757C006000F7 +S224FE0A80015C6000FDEC4E7543FA095F6000FCA66100FD006600FDCC60046100FB92280933 +S224FE0AA0284A2A0454856100FE766100FB6641F80188243C000000286100FB944281101006 +S224FE0AC06716223C0000FFFF6100FD346BCC6E0A13400001E080128054890C01002E66BE77 +S224FE0AE04E7543F80154323C202474047A01601643F80126323C2041600843F80106323C3C +S224FE0B002044740842856100FC00671A903C00306B00FD50B0056B00FD4AB0026C00FD44D3 +S224FE0B204282610E4E75200561085280B0026DF84E7542832F023A0128002C00E5864A82C6 +S224FE0B40660E6100FBE24A10662260046100FAE032056100F7CA6100FE826100FAB6742878 +S224FE0B6041F801886100FAE81010672042816100FC8E6BD8660000160286000000FF8683C9 +S224FE0B806A063380600060042380600032051004241F4E756100FB726600FCC86100FF526D +S224FE0BA06100FF586106611E610E4E7543F80146323C50436000001843F8014E323C5352CA +S224FE0BC076FF6000000C43F8014A323C55537601428242806100FF5E4E757CFF7A0242805E +S224FE0BE06100FB2667144486903C00306B00FC74B03C00026E00FC6C3A003600600461005B +S224FE0C00FA2E3643D7CB284BD7CB4A866B0A675A6100FB144A106614616A6100F9F6742878 +S224FE0C2041F801886100FA286100FAFC101067320C00002E660607B8015060266100FB5470 +S224FE0C406BBC6100FAE2243C0000FFFF6100FB046BAC426C01723940017807F80150274985 +S224FE0C6001605243B6456F9A4E75611860F4427265616B706F696E742000496E6163746960 +S224FE0C80766500006100F69841FAFFE46100F6B410036100F6E66100F97A07380150660A3A +S224FE0CA041FAFFD86100F69C4E75202B01606100F6BA6100F68470286100F6DA302C017833 +S224FE0CC06100F6986100F95C302C01726100F68C70296100F6C04E7543FA072B6000FA5628 +S224FE0CE0243C000000FF61426600FB781A00E1401005600C243C0000FFFF612E6600FB64A8 +S224FE0D003A004840300560084282611E6600FB5441FA10646100F62C6100F8AA6600FB449F +S224FE0D20E19812C0538466F04E752F026100FA64661828096100FA5CC9896B0E6E049889C1 +S224FE0D405284221F6100FAB84E75225F4E756100F5E86100F5E443FA06B76000F9D843FA7F +S224FE0D6006B96000F9D06100FA2A6600FAF620096100F5F86100F89C10116100F5D44E7533 +S224FE0D806100FA106600FADC3C09080600006600FAD220096100F5D46100F878301161005E +S224FE0DA0F5BA4E7543FA067A6000F98A6100F9E46600FAB0223C000000FF6100FA42660070 +S224FE0DC0FAA212804E756100F9CA6600FA963C09080600006600FA8C223C0000FFFF610009 +S224FE0DE0FA1E6600FA7E32804E756100F93A74076100F9606B00FA6C22006000F4EE08B8C7 +S224FE0E000005015043FA06216000F92A740261000124426A017251CAFFF661226600FA4440 +S224FE0E2008F80006015008F8000701501038015002000007660608B80006015060506100CA +S224FE0E40F8E61010670A6100F94A660C21C9014608F800060150B0006100F4C44E75610095 +S224FE0E60F4BE43FA05CA6000F8CC083800060150661C4E7508F800050150600608B8000530 +S224FE0E80015061BA6600F9DC08B8000701502C380146284608060000671641FA00706100E0 +S224FE0EA0F4A2307801522006610000AE6000F9C2224C6100F7106600F9AA3C38014E08386C +S224FE0EC00006015066207400616A6B00F99667083551016C32BC4E4F52420C42000366E8D9 +S224FE0EE00886000F600408C6000F3014B07C4E4F66040886000F2078014A4E602E78014283 +S224FE0F002F0C3F064CF87FFF01064E73496C6C6567616C2070726F6772616D207374617218 +S224FE0F207420616464726573733A200008B8000601504E7542803242D3C92449D3C90538E8 +S224FE0F400150670E226901606100F67A6600000652804E7553804E756100F4106100F3DAE1 +S224FE0F602F0070286100F42E70246100F42830086100F4086100F69CD1C8D1C8201F90A8E2 +S224FE0F8001546100F3E670296100F40A4E750D0A556E6578706563746564207472616365A9 +S224FE0FA03A200054726163653A200000083800060150660641FAFFD8601608380007015068 +S224FE0FC0670A08B8000601506000FEC441FAFFD5203801466100F36C284030780152610032 +S224FE0FE0FF786100F62E224C6100F5DA661430116100F3686100F3426100F33E2C496100DF +S224FE1000FA86083800050150670A41F8018842106100FA0E6000F85A0D0A556E657870658B +S224FE10206374656420627265616B20706F696E743A2000000D0A427265616B3A2000428527 +S224FE104042862838014655847600083800070150660641FAFFC4602C74026100FED86F1C09 +S224FE1060B3C4661476023A2A01723C2A0178BC45670652453545017232AA016C51CAFFDC1D +S224FE108041FAFFB220380146908321C00146BC456600FD8E6000FF3E43FA03A56000F69627 +S224FE10A011FC000101BB6004423801BB41FA0CDC6100F2906076428574016100F6966B0059 +S224FE10C0F7A23C00243C0000FFFF6100F6866B00F7923F006100F6BC6600F7882F094282D6 +S224FE10E06100F6706B00F77C2F003F064A85670E41FA0CA56100F24C6100081C600C41FAD9 +S224FE11000C8A6100F23E610008086700000E41FA000C6100F22E6100F2384E750D0A4469E5 +S224FE1120736B206572726F723A20000061740C000051670000C00C00005366F04205616212 +S224FE11401E00610000BC1C0153064281610000B2610000AE26410C070030660E4A0667061B +S224FE11606100009E60F6617460C20C0700326614220B6100008C26414A0667EA610000825C +S224FE118016C160F40C07003167EE0C07003966644A066660614641FA0AD96100F1A660003F +S224FE11A0F6D04A3801BB672408380001C033670A1038C031088000074E756100F26E67E263 +S224FE11C06100F2700C00005166D84E756100F22A0C00000D6700F1486000F1BA61224605DC +S224FE11E066024E75588F41FA0AAB6100F1566000F680508F41FA0A876100F1486000F6725F +S224FE120061086106DA0153064E7561960C0000306DE00C0000396E0A04000030E989D2004F +S224FE12204E750C0000416DCA0C0000466EC45F0060E643FA02046000F4FC7A016000FE7A55 +S224FE12406000F62E43FA02036000F4EA202053797374656D207265696E697469616C697AFE +S224FE1260696E672E2E2E2E0041FAFFE26100F0D46000EDCA4280428710100C800000005294 +S224FE128066063E3C010052881010670A74016100F4C26B00F5CE80473F00610007E24E752C +S224FE12A04E7542801010670A74036100F4A66B00F5B231C001524E756100F4D86600F5A45E +S224FE12C028096100F4CE6B00F59AC98966049889600253846500F58C26496100F4B66600E1 +S224FE12E0F58241FA0AC06100F05A7201B7C96406D3C4D7C472FF6100F2CC6B00F566C34BD1 +S224FE13006100F2C2C34B6B00F55A1293D3C1D7C151CCFFE44E7543FA01456000F4183F3CEF +S224FE132000016002426774016100F4286B00F5343F00243C0000FFFF6100F4186B00F5248A +S224FE13403F00427801CC427801D411FC000101DB3F172F3C000004002F3C000010003F2F9D +S224FE1360000C4A6F000E6706610005AC6004610005A0662A702E6100F01C08F8000101DB36 +S224FE13806100F0A867CA6100F07011FC0007C02711FC0009C027423801DB5C8F4E7570589B +S224FE13A060D40D4416F553E6F64636F92400FF4D16FF50ACF954BCFA475CFA5790FE4CF6AE +S224FE13C0FC00C8FA49A2FE41E0F64574FF084DF3F45253F644C3F541B9F5507DF65389F63D +S224FE13E05599F624ADF542AFF6084DA7F652ABF74411F74107F750C3F753CFF755DDF72478 +S224FE1400F9F642F1F70242DBF857EFF84C03F902494FF94F95F953DBF901424DF95767F93C +S224FE142001428CF957A6F9014FE5F943F3F902424EFA45FEFA5246FA014108FE4602FE02A3 +S224FE14404161FC5469FC4677FC03462BFE4857FE4757FE531FFE01442CF6522CF60152C769 +S224FE1460FE57C1FE5453540043484700434C5200534554004F524900414E44495355424982 +S224FE14804144444942000000454F5249434D50492E4200002E5700002E3F00002E4C0000C1 +S224FE14A04E454758434C52004E4547004E4F540000000000545354005452415054524150E2 +S224FE14C04C494E4B554E4C4B524553454E4F500053544F5052544500344537345254530077 +S224FE14E054524150525452004A5352004A4D500043484B004C4541004449565544495653CE +S224FE15004D554C554D554C535400460048494C53434343534E45455156435653504C4D49C1 +S224FE152047454C5447544C454F52000053554200454F5200434D5000414E44004144440063 +S224FE15405355424141444441534243445355425800000000434D50414142434441444458A9 +S224FE1560415352004C535200524F5852524F520041534C004C534C00524F584C524F4C0056 +S224FE158048E760401219143C00AD1038C0510800000756CAFFF6671A08000006661411D9E1 +S224FE15A0C053740951CAFFFE530166DA4CDF02064E7511FC000101C560F248E7604043FAC4 +S224FE15C0090461BC6624720243F801C36174661A123801C3020100C0670C080100066704CE +S224FE15E072036002720211C101C54CDF02064E7548E76040720743F801BC42116144663C35 +S224FE1600123801BC020100C0672E0801000667267205103801BDE208651E7206E408651801 +S224FE16207207E40865127208E208650C7209E4086506720A6002720211C101C54CDF020607 +S224FE16404E75343C10FE1038C0510800000756CAFFF6671608000006671012F8C05374092D +S224FE166051CAFFFE530166DA4E7511FC000101C54E752F017002484008380000C06366125C +S224FE1680538066F411FC0002C02711FC000401C5600C4A02662012F8C053534166D611FC15 +S224FE16A00001C02711FC0000C0276100FF44221F4A3801C54E7511D9C053534166B660DE70 +S224FE16C048E76040720143FA07F96100FEB466387402484208380000C063660C538266F4D3 +S224FE16E011FC000401C56020422C00036100FECC67160C38000301C5660E0C2C005000016D +S224FE1700660651C9FFC270034CDF02064E7548E760407202103801D6B02C0003674C43F8E7 +S224FE172001B032BC030F42290002137801D600036100FE4E66347402484208380000C06379 +S224FE1740660C538266F411FC000401C5601C6100FE6A660A197801D600034200600C6100DF +S224FE1760FF60660651C9FFAE70034CDF02064E750000000000000000423801C54A2C0000B5 +S224FE17806700010C3F077E0111FC000FC02711FC0000C02711FC0003C02743FA072111FCAD +S224FE17A0000EC0276100FDDA663870064A2C00046702540011C0C02711FC000AC02770FF89 +S224FE17C051C8FFFE08380000C06367086100FDEC423801C56100FEEA671C0C38000301C5BB +S224FE17E0670451CFFFA43E1F70014E7570080838000001DB667070044840538066FC197CF7 +S224FE1800FFFF000243FA06C06100FD7666D4343CFFFE1038C0510800000756CAFFF6660E56 +S224FE182011FC0002C02711FC000401C560B86100FDC066AE103801C1B02C000267086DC406 +S224FE18401940000260BE0C000008671A0C00000967100C000010673E0C00000A66267418FC +S224FE1860600674206002742A0C38000201C26614397C0200000619400002194200053E1F13 +S224FE188042004E7511FC000901C56000FF5A11FC000B01C54E750C38000101C266E6397C01 +S224FE18A001000006742060CE4A2C0000675A4281323C020082EC00064282343801DEC4C1EA +S224FE18C04281122C000284C14241082C000000006604E24AE31111C101D711C201D6B42C48 +S224FE18E000016C244842122C00029202C2EC0006B2B801E06F04223801E0520211C201D849 +S224FE190031C101DC42004E7511FC000B01C54E75423801DA600611FC000101DA225F49F8E9 +S224FE192001C6301F670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C0006660083 +S224FE194001146100FE34660000EA4AB801E0670000E211FC0003C0274A3801DA672C083839 +S224FE19600001C063670A11FC000C01C5600000C4102C0001E208B03801D66F0811FC000D55 +S224FE1980C027600611FC000CC0276100FF1C660000A26100FD7A667443F801B0303C09451B +S224FE19A04A3801DA6602524032C0103801D7E50812C012F801D612F801D712F801D8302CFA +S224FE19C00006E04812C012EC000212EC000512FC00FF43F801B06100FBA86630227801E4EF +S224FE19E04281323801DC143801DA6100FC86661C303C032051C8FFFED3B801E493B801E00D +S224FE1A0082FC0200D37801DE6000FF400838000001DB663A5307671A103801C50C000001C8 +S224FE1A206700FF200C00000367080C0000046600FF1A0838000001DB661470074A2C000489 +S224FE1A406702540011C0C02711FC000BC027103801C54E750838000101DB6600FEEE700659 +S224FE1A604A2C00046702540011C0C02711FC000AC02770044840538066FC6000FECE11EF19 +S224FE1A8000040105422F0004427801CC427801D46100EAF246FC270011FC0025C073423829 +S224FE1AA001046100E87A41FA026F6100E8966100E86E4267307C04002F082F083F2F000ED6 +S224FE1AC06100FE4E6612307C04000C58424F663C0C584F5466364ED06100E844103801C53B +S224FE1AE00C000004673041FA01B96100E8566100E86041FA01CA6100E84A102C00046100C5 +S224FE1B00E87A6100E81A205F548F4ED041FA01A16100E83060DC41FA02136100E8266100CB +S224FE1B20E9126100E7FA0C0000516600FF5C41FA02286100E80E60BA2648428042814681B7 +S224FE1B4026804A93661C2681B293661C26CBB7C963EE2648B7D3660E588BB7C963F6428063 +S224FE1B604ED222006002220B201349FA015D4BFA0006600000842A0B4BFA00066000008628 +S224FE1B8049FA01634BFA00066000006E2A004BFA00066000007049FA01524BFA00066000FC +S224FE1BA000582A014BFA00066000005A49FA01B84BFA00066000004249FA015A4BFA0006C8 +S224FE1BC06000003670014ED23E3CFFFF08380002C07356CFFFF8671411C6C0717E0E51CFA3 +S224FE1BE0FFFE08380002C07366024ED608780003C06551CFFFFE60F41C1C67064DFAFFFAE6 +S224FE1C0060C64ED57807E99D7C0FCC050C060009630406060007060600304DFA000460A8F3 +S224FE1C2051CCFFE44ED5044A0452045A80020462046A049A045A045A800B047280060482BF +S224FE1C40048A800E047A0492800F04720000070D0A455843455054494F4E3A202000070DF1 +S224FE1C600A204E4F204D656D6F72792061743A20000D0A4C6F616420446F6E6500070D0A57 +S224FE1C80426164204C6F616420436861726163746572000742616420436865636B73756D8C +S224FE1CA000074472697665204572726F722000074E6F7420424F4F54204469736B00206F10 +S224FE1CC06E206472697665200007424144204D656D6F7279206174200052414D2053697A87 +S224FE1CE065203D2000206973200020696E7374656164206F6620000D0A53414745204949DD +S224FE1D000020537461727475702054657374205B312E325D0D0A00426F6F74696E67206615 +S224FE1D20726F6D20466C6F7070790050757420696E20424F4F54206469736B20616E6420F6 +S224FE1D4070726573732061206B6579202851202D207175697473290007426F6F74204162A6 +S224FE1D606F72746564002028546573742041626F727465642900202046696C6C696E67202B +S224FE1D806D656D6F72792E2E2E0020204C6F6164696E672E2E2E00202057726974696E6771 +S224FE1DA02E2E2E0020204D6F76696E67206D656D6F72792E2E2E000750524F4D20312042AB +S224FE1DC061640D0A000750524F4D2032204261640D0A00427970617373656420496E697460 +S224FE1DE00D0A004C6F6F7065642054657374730D0A0052414D207772697465206C6F6F7017 +S224FE1E000D0A0000001F0027002B003300470052005C006A007A008F204572726F722061F1 +S224FE1E20742000556E6B6E6F776E00427573004164647265737300496C6C6567616C204908 +S224FE1E406E737472756374696F6E0041726974686D657469630050726976696C6567650075 +S224FE1E605265736572766564205452415000556E61737369676E6564205452415000556E9D +S224FE1E8061737369676E656420496E746572727570740052414D20506172697479004675D0 +S224FE1EA06E6374696F6E3A200020204163636573733A20002020496E73743A20000303D13F +S224FE1EC0070207000108024A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S224FE1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S224FE1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S804FE0000FD diff --git a/SAGE/FILES/sii.hex b/SAGE/FILES/sii.hex new file mode 100644 index 00000000..066c7d57 --- /dev/null +++ b/SAGE/FILES/sii.hex @@ -0,0 +1,514 @@ +S00A00007369692E68657847 +S224FE00000000040000FE0044600004F2600004E66000095E60000448600003F2600003CA02 +S224FE0020600003F8600003FE600029A2600029A460000334E4A70201600002F66000340098 +S224FE0040600034FA4E704FF8040011FC0092C02711FC0038C02511FC0092C06711FC003152 +S224FE0060C065700072FF343C42D741F8C0FE3080308151CAFFFA43F8000045F87FFE343C1D +S224FE0080344230113010301251CAFFF8343C06C541F8C00172084A10D0FC001051C9FFF81C +S224FE00A051CAFFEE43FA0006600002C049FA2D054BFA000660002BFE41FA00362278000874 +S224FE00C021C80008B1F80008662E11FC0090C58711FC0090C50711FC0000C58311FC00CD66 +S224FE00E0C50311FC0000C58511FC0005C50560044FF8040021C900081038C0216B64E6087B +S224FE010002400006303B00064EFB000200180024001800084238010449FA2D744BFA08527A +S224FE012060002B9249FA2D784BFA003860002B8649FA2D7B4BFA000660002B7A74FF720009 +S224FE014070001038C023460008000002670272FFE308024000064840204030C151CAFFFCB5 +S224FE016060DA41FAFE9C343C1FFF42004201D018D21851CAFFFA4A00671449FA2CF64BFA05 +S224FE0180000660002B304A38C0216A0001004A01671449FA2CEC4BFA000660002B184A383C +S224FE01A0C0216A0000E811FC0001C067307C000072014841323CFFFE224145FA00066000B9 +S224FE01C02A34664647FA000C21CB000808F80002C5034FF8040047FA002421CB00087202EF +S224FE01E04841D3C1303CA5A53280B051660E46403280B05166064640D3C160EC4FF80400AC +S224FE020093C145FA0006600029EC67084A38C0216A00007A303C00BF41F80100429851C8BF +S224FE0220FFFC548921C901004E6121C9014A21C9014243FA000C21C9000808B80002C50322 +S224FE02404FF804006100041611FC0000C0674A38C0216B1611FC0007C06770FF51C8FFFEFD +S224FE026011FC0006C0676000FEFA6100017C41FA2B256100019830380100ED48610002166F +S224FE0280704B610001DA6100016060044E7227007228740208380006C0216702725011C222 +S224FE02A001C611C101C7423801CA11C201CE11C101CF11FC000101D27206610000F8423825 +S224FE02C001BA2278000841FA002A21C8000811FC00AAC58311FC0005C5050C3800AAC58357 +S224FE02E0661011FC0000C58350F801BA31FC023001F04FF8040021C900081038C021C07C3B +S224FE03000030670CB07C00206724B07C0010672621F80100014A21F80100014231FC270081 +S224FE0320014E41FA004221C801466000064442676100280860DA4A3801BA67D420380100CF +S224FE03404840720C92406F12C2FC000A5341303C6F9A51C8FFFE51C9FFF6426770012F0002 +S224FE03606100332260AA4E4F60FC41F8C0734200108011FC0076C007E01810801238C02186 +S224FE0380E0181080706E080100036702707E10BC00400241000711FB1014C003108011FCAB +S224FE03A00000C003E01810BC00254ED1028040201008040241F8C0334240108011FC00B66E +S224FE03C0C007E018108011FB10E4C005E018108011C0C005E01810BC0040E01810BC004ED2 +S224FE03E0E01810BC00274E752F00700D6170700A616C420061686166616461626160201F2E +S224FE04004E752F0070206156201F4E753F0010186704614A60F8301F4E75E9186126E9182E +S224FE042061224E752F017203E958611851C9FFFA221F4E752F017207E998610851C9FFFA57 +S224FE0440221F4E753F000200000FB03C0009630406000007060000306104301F4E754A38AD +S224FE04600104662C3F01323CFFFF08380002C07356C9FFF8670811C0C071321F4E7548E7F7 +S224FE0480C0C043FA00066000FEE24CDF030360D64E4A4E7548E7F000720032007400343CED +S224FE04A02710420382C266044A0367061001619450C34241484184FC000A66E84CDF000F1E +S224FE04C04E754A38010466282F011238C0730801000167F61038C071020100386604221FCE +S224FE04E04E7511FC0035C07370076100FF7260DA4E494E7508380001C0734E7561C4088000 +S224FE050000070C0000616D0A0C00007A6E04088000054E7521C001067002604E21C00106B5 +S224FE05207004604621C001067006603E21C001067008603621C00106700A602E21C00106D4 +S224FE0540700C602621C00106700E601E21C001067010601621C001067012600E21C0010614 +S224FE05607014600621C00106701648F87FFE010A4E6821C8014A2A007016BA806270BA3CBC +S224FE058000046206381F261F341F31DF014E21DF014621CF01424FF804000C05001467004D +S224FE05A0199A6E0018B80C050012661E11FC0001C06711FC0000C0674A3801BA670C08F887 +S224FE05C00002C50308B80002C50370FFE01851C8FFFC46FC270011FC0038C02508B80006F0 +S224FE05E001504238010443FA000A6000FD7E428560A849FA27164BFA0006600026B849FAEB +S224FE06002954D8F450004BFA000460EE49FA295A4BFA000460E420380146610017F66100E6 +S224FE0620FDC80C0500046200034841FA29C26100FDDC30046100FDEE41FA29BF6100FDCE01 +S224FE064020036100FDF041FA29BC6100FDC030026100FDD26100FD926000031641F80008DC +S224FE066043FA268045FAF99A4280301967186B06D08A20C060F2424112003019D08A20C023 +S224FE068051C9FFFC60E24E75225F02800000000FD080D089C1893251D3C04ED148E780B0A4 +S224FE06A02478000847FA001421CB0008101121CA00084CDF0D01B0004E75508F321F46C153 +S224FE06C041FA26586100FD46588F20096100174421CA00084CDF0D01000000014E750838BE +S224FE06E00001C0734E752F00703A6100FD72201F6100FD104E752F00702C6100FD62201F1D +S224FE07004E752F0070076100FD56201F4E75C03C007F0C0000206D060C00007E6D02702E06 +S224FE07204E752F092F01224842816100FDD00C00001B6700006E0C000012670000680C003B +S224FE0740000D674A0C000008661AB3C867DC6100FD0E6100FCAE6100FD0651C9FFF25389C4 +S224FE0760528260C40C00007F6614B3C867BC61585389528210116100FCE6544160AC611AF2 +S224FE0780428153826B0812C06100FCD4609C610A421912C0221F225F4E758281673C4281C6 +S224FE07A0602C224842812F0870236100FCB26100FC38B3C86700000C10186100FCA2B3C87F +S224FE07C066F6205F6000FF648281660E72013F00103C005C6100FC88301F4E7542801018C6 +S224FE07E08000660253884E7561F28000670A0C00002067040C00002C4E7561E067080C00DE +S224FE0800002067F653884E7561D2244942411219B011568957C9FFFA660001481021E1589A +S224FE08201021D4C04ED248E7180042817801E89C61B667540C00002F660E383C33334844E2 +S224FE0840383C333461A26740040000306D380C0000096F144A04662E040000070C00000A9C +S224FE08606D240C00000F6E1E26014A046708E799E39BD2836002E999B684640AD280848222 +S224FE088067C2B48164BE72FFC1414CDF00184E752F036100FF66428395CA6100FF4C67002D +S224FE08A000480C00002367360C0000246708347801525388602A6100FF306700002C0400F7 +S224FE08C0003065240C000003641E244093C96100FF18670000180C00002B660C6002528334 +S224FE08E042826100FF42670257832240D5CAD5CAD4FC0154D3D2201FC14380804E752F02AB +S224FE090042826100FEF6670000520C000027671C0C00002E674624016100FF0C6B06241F20 +S224FE092092814E75241F428153814E756100FEAE6100FEAA670000200C0000276712E19A7D +S224FE09404A0266E0D480828167E6B28264E260D46100FE9666CEC14260C47001241F22008A +S224FE09604E756100FA9E703F6100FAF46100FD944FF8040042B801546100FA6E083800061F +S224FE098001506700000870546100FAD436380152670C70246100FAC810036100FAA8703EF2 +S224FE09A06100FABC742841F801886100FD7643FA1A686100FE5460B843FA1A8C6000FE4AD6 +S224FE09C06100FE382838017E387801821010670E6100FEBE668C2809284A31CA0182610045 +S224FE09E0FE1A327C01001010670A6100FEA46B00FF726704D3C45389528921C9017E2A0968 +S224FE0A00611C6718280B6100FCD667F46100FAEE0C00001367F60C00000366E44E756100D4 +S224FE0A20F9C820046100FA0EB8FC0154670C6100F9D2200490946100F9FC6100FCAA760F93 +S224FE0A402644C7496100FC56C7496600FF16101B6100F9C808030000660000066100F9A419 +S224FE0A60BA8B57CBFFDE6100F99A760F2644101B6100FC9C6100F9E8BA8B57CBFFF24E75CB +S224FE0A8043F80154323C20247402601443F80126323C2041600843F80106323C20447407FF +S224FE0AA06100FD3A671A903C00306B00FEB678001800B8026E00FEAC61226100F92C4E75D1 +S224FE0AC04284611852846100F93A0C04000466046100F9306130B8026DEA4E756100F90A99 +S224FE0AE042833001E0880C000020670000066100F96E10016100F968868366061004610077 +S224FE0B00F9446100FBE22004E5800280000000FF4A836A42303100006100F90A0C4153521D +S224FE0B20663C48E7704036006100F8D870286100F92E428243FA18D21419670E1019E57B94 +S224FE0B40650270206100F91860EE4CDF020E70296100F90C6008203100006100F8D84E75F4 +S224FE0B606100FC7A6600FDFC6100FF226100FF28611861086148610461344E756100F8840D +S224FE0B806100F8804E756000F86061FA103C00506100F8CC103C00436100F8C46100FB4892 +S224FE0BA020380146307801526000126861D876FF43F8014E223C00005352600E61C843F8B1 +S224FE0BC0014A223C00005553760142846100FF144E757C0060000C2C700072104A10670A7C +S224FE0BE06100FC446B00FD7C12006100000E5200B0016DF66100F7F24E756100F7EC41FAFA +S224FE0C0000206100F8086100F83C41FA001B3438017C0102670441FA001B6100F7F04E75AD +S224FE0C205452415020230020204E6F2074726163652000202054726163652020202000003C +S224FE0C4043FA18A26000FBC26100FCB46600FD142A006100FCAA6600FD0A2800D085610079 +S224FE0C60F7882200103C002B614822059284103C002D613E2205C2C4103C002A61344A4415 +S224FE0C806746220582C4103C002F61186132103C00726100F7CA103C00656100F7C2103CB9 +S224FE0CA0006D48416100F7B86100FA3C30016000F7746100F7AA6100FA2E20016100F7761E +S224FE0CC06100F7406000F73C4E757C106100FB2C2838017E38780182101067106100FBB258 +S224FE0CE06600FC802809284A31CA01826100FB0C327C00141010670C7CFF6100FB946B005B +S224FE0D00FC6267062C096B00FC5A52892A092C446100F6D6200E6100F71CB8FC0154670C46 +S224FE0D206100F6E0200E90946100F70A6100F9B848E7060061304CDF006021CE017E4A8624 +S224FE0D406B065386671E2A0EBA8E650000186100F98E67BC6100F7A60C00001367F60C0033 +S224FE0D60000366AC4E75300EE2086500FBF67C07610006F03E00E9586100F90E0020010038 +S224FE0D8001080104014003880428046E0512060606CC053A05A60606065206CC08070008AC +S224FE0DA0664E43FA176C3207E049E249610006F659016F5E0401001067585801660642458B +S224FE0DC0611C60063A07610006C4610006FC6100070216076100F920610007364E75428535 +S224FE0DE043FA171E3207EC5902410003600006B63007020000380C00000867367042610069 +S224FE0E0006AE61DA610006C23607EC5B6100072860C030070200003F0C00003C66A64282F3 +S224FE0E20263A084C080700066704263A0846600000F2203A082A610006767050610006707B +S224FE0E403A07E35D08C500066100064E6100067A08070007670A61126100F89C61144E757E +S224FE0E6061106100F89261024E753607EC5B600006C6360708C30005600006964285600607 +S224FE0E807A4060027AFF203A07D6610006223007EC5802000007530066067041610006108F +S224FE0EA0610005F6610006223607610006646100F8463607EC5B610006644E75080700087A +S224FE0EC0660002043007EF580240000732006100F7B8001000320014001C007C011800B2E1 +S224FE0EE001527401600A263A0786428260064282263A0780283A07683007020000C00C0025 +S224FE0F0000C0671843FA16366100059A3A076100057C610005B4610005F64E752004610025 +S224FE0F20058E7A40610005A228034A026614610005DE4A84670A6100F7BE200461000570D5 +S224FE0F404E7561F66100F7B0610005C44E753207E65902410007080700076624203A0718A4 +S224FE0F6008070006670C203A07124A016604203A070E6100053A61000550610005924E753E +S224FE0F804A016756203A06D861000524704D3A07E35D08C5000661000516610004FC610035 +S224FE0FA005287A40610004BC31C001880807000A661E6100000C6100F73E610005524E7591 +S224FE0FC070236100F49A303801886100F4584E7561E86100F72261E84E75203A06AA080743 +S224FE0FE00006678E203A069C60880C0700FC6612203A0698610004B8203A0694610004B06A +S224FE10004E753A07024500C00C4500C0670A3005E2588A406000FEEE283A06784282428352 +S224FE10206000FED608070007660000983207E6590201000714010C01000667520C010003F2 +S224FE10406F14263A065E024200010247000F004700C86000FEA043FA14FC61000448610041 +S224FE10600468E20A660E70236100F3F430076100F3D44E753607E75B610004C008070003EE +S224FE1080660A6100F6727A40610004484E75320702410007340143FA14CC610004080C029A +S224FE10A00002660A610004227A406100042670544A02670870560C02000666046100F3A038 +S224FE10C04E754280600270023207EC59C27C0001D2407A4043FA14AE610003CA610003EAB0 +S224FE10E06100042C0807000867186100F60A3607EF5B70200807000667027028B1436100E3 +S224FE110004104E753207020100C00C0100C0673E203A0588080700086704203A05826100DC +S224FE1120038E3A07610003666100039E70236100F32E3007EF58020000074A006602700848 +S224FE11406100F3026100F5B0610003C44E7570533807020400380C040008660808870003ED +S224FE1160303C4442611C610003A60C04000866106100F5847A40610003603440610003FA3B +S224FE11804E7543FA1440610003263207EE5902810000001ED3C142803011610003126100DF +S224FE11A003284E757A40320702410F000C410100670A704243FA13EE61CC600C203A04D87B +S224FE11C0610002EC6100030230074A0067106100F24AE158E040548E6108558E4E75610017 +S224FE11E002F83440610003924E750807000866000258203A046A610002B67051610002B039 +S224FE1200610002C670236100F25610076100F20C6100F4E43607EC5B6100031C4E753A07AF +S224FE122043FA13C2612208070008670C61106100F4C6610002DA4E7561F86100F4BA36075B +S224FE1240EC5B610002F24E753207E95902410007610002524A456704610002326100026A56 +S224FE12604E75428560023A0743FA139A61DA3607E75B61086100F4803607EC5B08070003C6 +S224FE12806606610002B24E75610002C04E753007024001F00C40010067C8EC4872045740FA +S224FE12A0670859406600FF787205088700068E7C41006000FE1E3007EC580240000755401A +S224FE12C06F00FF5C43FA133E7A4053406706E35D594066166100FF72610002346100F418CE +S224FE12E03607EC5B610002544E75044710003007024000380C4000086600FF24203A03A8FF +S224FE1300610001AC3A0761000184610001BC3607E75B61086100F3E03607EC5B610002264E +S224FE13204E753007024001F878000C400140671078030C400148670878020C4001886624A1 +S224FE1340203A0368610001686100017E3607EC5B61086100F3A23607E75BE21C650001DC79 +S224FE1360600001D4E8480C0000106700FEF67206E44857406700FF347207594067F66000EA +S224FE1380FE9E3007024000C00C4000C067123007024001300C4001006700FECC6000FE80EA +S224FE13A03A07E25D43FA12563207E55902410001610000F2610000E26100010E6100015092 +S224FE13C06100F3343607EC5B610001704E7532073A07024500C00C4500C06744E65961503C +S224FE13E0610000AA610000E2360702430E00080700056708EC5B6100013E60167023610038 +S224FE1400F05E3003EF580200000F660270086100F0346100F2E23607E75B6100011A4E7598 +S224FE1420EF59610C4285610000A0610000E24E7502410003340702420100EC5A824243FA19 +S224FE144011DC610000604E75702E61000062203A02126100005A6100007030076100EFC670 +S224FE14604E752F09224E6100F2346600F4F6301E225F4E752F09224E6100F2226600F4E43A +S224FE148054896100F218201E225F4E75024500C00C05008066027AC03205EC5902010003C3 +S224FE14A043FA108AE519024100FF203110002F017203E1984A00670000086100EFA253068F +S224FE14C051C9FFF0221F4E756100EF3851CEFFFA4E7570236100EF883205EC59C27C000371 +S224FE14E0B23C000267206100FF7A53016C066100EF2A4E756100EF2E53016D086100FF648A +S224FE15006100EF224E75703F6100EF544E7536071003E60802000007E70B86001003024069 +S224FE152000076100F164001000140018001E00240076008000C67244601472416010223A08 +S224FE15400112600A223A01106004223A010E7403E1991001671C6100EF060C000044670637 +S224FE15600C000041660C3003E618020000076100EED451CAFFDC4E75705B6100EEE2D5CEF4 +S224FE1580200A558030780152D1C8D1C890A801546100EEA2705D6100EEC64E756100FEC4D6 +S224FE15A06100EE8260986100FEBA38006100EE6C70286100EEAA61826100F13C3604EF5BCD +S224FE15C00804000F66066100FF6E60046100FF6C702E6100EE8A70570804000B6702704C09 +S224FE15E06100EE7C70296100EE764E75E61BC63C000710036100F0920012001C0026003E6A +S224FE160000540010001000104E756100FE566100EE144E756100FE5E6100EE1A4E7561005B +S224FE1620FE4234406100EDFE223A003C6100FF206100FF464E756100FE2A38006100EDDC3B +S224FE1640203A00286100FE686000FF6E6100FE844E75284129002841292B2D2841294D4F21 +S224FE16605645574F5244285043292850430043435200535200004E424344504541005357DD +S224FE168041504558544C45585457494C4C4547414C005441530042535200414444515355A6 +S224FE16A0425155535000434D504D4558470043FA0DB56000F1546100F1D86600F2A660045B +S224FE16C06100F0402809284A2A0454856100F3506100F01441F80188243C00000028610018 +S224FE16E0F042428110106716223C0000FFFF6100F20E6BCC6E0A13400001E08012805489C6 +S224FE17000C01002E66BE4E7543F80154323C202474037A01601643F80126323C2041600861 +S224FE172043F80106323C2044740842856100F0AE671A903C00306B00F22AB0056B00F22416 +S224FE1740B0026C00F21E4282610E4E75200561085280B0026DF84E7542832F023A012800CF +S224FE17602C00E5864A82660E6100F0904A10662260046100EF8E32056100EC6E6100F364E0 +S224FE17806100EF64742841F801886100EF961010672042816100F1686BD8660000160286E3 +S224FE17A0000000FF86836A063380600060042380600032051004241F4E756100F02066000C +S224FE17C0F1A26100FF526100FF586106611E610E4E7543F80146323C50436000001843F8BB +S224FE17E0014E323C535276FF6000000C43F8014A323C55537601428242806100FF5E4E7589 +S224FE18007CFF7A0142806100EFD467144486903C00306B00F14EB03C00016E00F1463A0032 +S224FE1820360060046100EEDC3643D7CB284BD7CB4A866B0A675A6100EFC24A106614616AF9 +S224FE18406100EEA4742841F801886100EED66100EFAA101067320C00002E660607B80150A6 +S224FE186060266100F02C6BBC6100EF90243C0000FFFF6100EFB26BAC426C017239400176D3 +S224FE188007F80150274901605243B6456F9A4E75611860F4427265616B706F696E742000CC +S224FE18A0496E61637469766500006100EB3C41FAFFE46100EB5810036100EB8A6100EE2848 +S224FE18C007380150660A41FAFFD86100EB404E75202B01606100EB5E6100EB2870286100E1 +S224FE18E0EB7E302C01766100EB3C6100EE0A302C01726100EB3070296100EB644E757600FB +S224FE190078104A10671C6100EF1E6B00F056160018006100EEE60C00005467460C00004E76 +S224FE192067386100EAC441FA004C6100EAE010036100F2C86100EDB0742841F80188610059 +S224FE1940EDE26100EEB667240C00005467140C00004E67066100EDAC60C83238017C0781F2 +S224FE196060063238017C07C131C1017C5203B6046DBC4E7528542972616365206F7220285C +S224FE19804E296F2074726163650043FA0AF86000EE78243C000000FF616C6600EFC61A00C9 +S224FE19A0E1401005600C243C0000FFFF61586600EFB23A0048403005600842826148660032 +S224FE19C0EFA241FA146D6100EA4461000942E19812C0538466F821CA00084E7548E7F00027 +S224FE19E06100EEAE661A28096100EEA62449C9896B0E6E06988952846004D5C9538A4280FD +S224FE1A004CDF000F4E7561D4660622026100EEF04E7561F266142C0098876D00EF4670FFD6 +S224FE1A204A10670A22026100EED66600EF3641FA14E96100E9D8610008D64E7543FA0AB4AD +S224FE1A406000EDC6243C000000FF7E0161C41219C200B206670453846CF46100009660F6D9 +S224FE1A60243C0000FFFF7E0261A81219E1991211C240B246670453846CF06100007660F6EF +S224FE1A8042827E04618C2649548B1219E1991211E199121BE1991213C280B28667045384F8 +S224FE1AA06CE86100004E60F66100FF326600EEB448E708606100FF266600EEA82A492C0474 +S224FE1AC04CDF0610C34D41FA14516100E9406100083E9C846518284952892E04264D121C25 +S224FE1AE0B21B6606538766F6610853866CE861024E7148E7FE7E663E41FA142E6100E90E98 +S224FE1B00538920096100030C6100EBDC7203E198101951C9FFFA6100E91C41FA14186100CD +S224FE1B20E8EC6100E9D80C00004366126100E9304CDF7E7F4E7541FA13D06100E8D04CDF1E +S224FE1B407E7F21CA00086000EE286100E8B66100E8B243FA093A6000ECB043FA093C6000C4 +S224FE1B60ECA86100ED2C6600EDFA20096100E8C66100EB7410116100E8A24E756100ED12E0 +S224FE1B806600EDE03C09080600006600EDD620096100E8A26100EB5030116100E8884E750E +S224FE1BA043FA08FD6000EC626100ECE66600EDB4223C000000FF6100ED466600EDA612807C +S224FE1BC04E756100ECCC6600ED9A3C09080600006600ED90223C0000FFFF6100ED226600D1 +S224FE1BE0ED8232804E756100EC1274076100EC386B00ED7022006000E7BC43FA08AA600063 +S224FE1C00EC086100006443FA07B654894A516700ED523014C059B05966F0D8D121CC016835 +S224FE1C2008F80002015008F800040150600261387401610001BA426A017251CAFFF66002DC +S224FE1C40612608B80005015008F80006015008F8000701501038015002000007660608B867 +S224FE1C6000060150600001506100EB901010670C6100EC1E6600ECEC21C901466106610048 +S224FE1C80E7684E752C380146284608060000671241FA001C6100E77620066100017660001C +S224FE1CA0ECD0224C6100E9F66600ECB84E75496C6C6567616C2070726F6772616D20737411 +S224FE1CC061727420616464726573733A20006100E71843FA07DC6000EB30083800060150C8 +S224FE1CE0670461A0604E4E7508F8000501506040619208B8000301500C100049660808F834 +S224FE1D000003015052887005083800050150660270104A10670E747F6100EAE06100EB085E +S224FE1D206B00EC406100E6C2600C08B8000501506100FF36700111C0015108F800060150FD +S224FE1D4008B80007015030140240FFF00C404E406664301C0240000F3C38017C41FA002C5A +S224FE1D600106661C21CC016808F80007015008F80002015008B800040150673A41FA0021C4 +S224FE1D806100E68A6100E662602C2A2A2A2054726163696E672054524150202A2A2A002AB5 +S224FE1DA02A2A204753207465726D696E61746564202A2A2A0000287801463C38014E08383D +S224FE1DC00006015066060886000F600408C6000F2078014A4E602E7801422F0C3F064CF821 +S224FE1DE07FFF01064E7308B8000601504E7542803242D3C92449D3C905380150670E226957 +S224FE1E0001606100E8986600000652804E7553804E756100E62030780152D0C8D0C84A7892 +S224FE1E200152672E6100E5DC2F0070286100E63070246100E62A303801526100E6086100E7 +S224FE1E40E8A6201F90A801546100E5EA70296100E60E4E7554726163653A200008380006B5 +S224FE1E6001506700FF52083800070150672608B80006015074006100FF766B00EAE6670826 +S224FE1E803551016C32BC4E4F52420C42000366E66000FF2441FAFFBE2038014621C0017E16 +S224FE1EA06100E56A28406100FF6AD0FC015431C801826100E832224C6100E7E266143011D2 +S224FE1EC06100E5626100E53C6100E5382C496100EE96083800050150670A41F801884210E2 +S224FE1EE06100EC7E533801516F1E083800030150671A6100E7EA67146100E6020C00001380 +S224FE1F0067F60C00000366046000EA666100E4DA6000FE280D0A556E657870656374656467 +S224FE1F2020627265616B20706F696E743A2000000D0A427265616B3A200042854286283890 +S224FE1F4001465584760041FAFFCC74026100FEA06F32B3C4661E41FAFFD876020C02000237 +S224FE1F6067123A2A01723C2A0176BC4567065245354501720C514E4F670605B80150600466 +S224FE1F8032AA016C51CAFFC60838000201506728B8B80168662208B80002015008B80004BB +S224FE1FA00150661421C4014608F80006015008B8000701506000FEA620380146908321C021 +S224FE1FC00146BC456600FC824A436600FED028440C544E4F6600FEC620046000FEC043FAFF +S224FE1FE004E46000E82411FC000101BB6004423801BB41FA0E516100E41460764285740121 +S224FE20006100E8246B00E95C3C00243C0000FFFF6100E8146B00E94C3F006100E8746600A7 +S224FE2020E9422F0942826100E7FE6B00E9362F003F064A85670E41FA0E1A6100E3D0610016 +S224FE20400992600C41FA0DFF6100E3C26100097E6700000E41FA000C6100E3B26100E3BC8F +S224FE20604E750D0A4469736B206572726F723A20000061740C000051670000C00C0000539C +S224FE208066F0420561621E00610000BC1C0153064281610000B2610000AE26410C0700309D +S224FE20A0660E4A0667066100009E60F6617460C20C0700326614220B6100008C26414A0610 +S224FE20C067EA6100008216C160F40C07003167EE0C07003966644A066660614641FA0C4F9C +S224FE20E06100E32A6000E88A4A3801BB672408380001C033670A1038C031088000074E75A4 +S224FE21006100E3F267E26100E3F40C00005166D84E756100E3AE0C00000D6700E2CC600027 +S224FE2120E33E6122460566024E75588F41FA0C216100E2DA6000E83A508F41FA0BFD610011 +S224FE2140E2CC6000E82C61086106DA0153064E7561960C0000306DE00C0000396E0A040052 +S224FE21600030E989D2004E750C0000416DCA0C0000466EC45F0060E643FA03436000E68A25 +S224FE21807A016000FE7A6000E7E843FA03426000E678202053797374656D207265696E697E +S224FE21A07469616C697A696E672E2E2E2E0046FC270011FC0025C0734238010441FAFFD43E +S224FE21C06100E24A70FF51C8FFFE6000DE784280428710100C00005266063E3C010052886A +S224FE21E01010670A74016100E63E6B00E77680473F00610009464E754A3801BA6700E76421 +S224FE2200428042877C0110100C00005266063E3C010052881010675C0C00002067140400E6 +S224FE222000306D00E73E0C0000036E00E7368E0052886100E5C64A00673A0C00002366004B +S224FE2240001652884A10672C740F6100E5DA6B00E7123C00601E740743F801F62C09429128 +S224FE226042A90004422900086100E572670612C051CAFFF63F072F066100140A4E754E7572 +S224FE228074186100E16451CAFFFA4E7543FAE2D621C9002443FAE2C621C900BC4E7542801F +S224FE22A01010670A74026100E57E6B00E6B631C00152E540D07C015431C001824E756100A7 +S224FE22C0E5D06600E69E28096100E5C66B00E694C98966049889600253846500E6862649E4 +S224FE22E06100E5AE6600E67C41FA0B756100E11E7201B7C96406D3C4D7C472FF61101293EE +S224FE2300D3C1D7C153846CF621CA00084E752478000849FA000821CC00084E7541FA09FCB8 +S224FE23206100E0EA548F201F6100FAE821CA00086000E63E43FA01B56000E4CE3F3C000112 +S224FE23406002426774016100E4DE6B00E6163F00243C0000FFFF6100E4CE6B00E6063F002A +S224FE2360427801CC427801D411FC000101DB3F172F3C000004002F3C000010003F2F000CA0 +S224FE23804A6F001067066100064A60046100063E662A702E6100E0C808F8000101DB6100D5 +S224FE23A0E15467CA6100E11C11FC0007C02711FC0009C027423801DB5C8F4E75705860D45E +S224FE23C0F0FF60000004F00060000002F0F850C80004FFB84E900002FFB84EA80004FFB852 +S224FE23E04EB00004FFBF4EB80004FFBF4EB90006FFBF4EBA0004FFBF4EBB0004FFF04E4033 +S224FE24000002000000000000015402530958014E015A0156014300000E44A0E55396F2466F +S224FE242072F52486FE4DA6FE5032F754B6F847E2F75760FD4CC6FB00C2F84972FD4128E87A +S224FE2440451CFF5824F6094D7AE5521AE74450E64146E65044E75366E75576E7243AE64265 +S224FE24608CE75492E7094D51F25255F344BBF241B1F2506DF35379F35587F324A3F2429B3D +S224FE2480F35499F402420EF55722F54C36F50249CCF64F12F75358F70142CAF657E4F601FD +S224FE24A04209F75723F7024F88F7439AF7535CF703427AF84536F95238F84E40F80141C9DE +S224FE24C0FC46C3FC024122FB542AFB4638FB064600FD482AFD47B0FD53E0FC568EE143B211 +S224FE24E0FD54BEFD0144E6E75264E7015257FE5751FE034252F5576EF54C8EF54DB6F500C3 +S224FE25005453540043484700434C5200534554004F524900414E44495355424941444449D3 +S224FE252042000000454F5249434D50492E4200002E5700002E3F00002E4C00004E454758F0 +S224FE2540434C52004E4547004E4F5400000000005453540054524150545241504C494E4B35 +S224FE2560554E4C4B524553454E4F500053544F5052544500344537345254530054524150BD +S224FE2580525452004A5352004A4D500043484B004C45410044495655444956534D554C5511 +S224FE25A04D554C535241460048494C53434343534E45455156435653504C4D4947454C54E9 +S224FE25C047544C455400460048494C53434343534E45455156435653504C4D4947454C541D +S224FE25E047544C454F52000053554200454F5200434D5000414E4400414444005355424194 +S224FE260041444441534243445355425800000000434D50414142434441444458415352001D +S224FE26204C535200524F5852524F520041534C004C534C00524F584C524F4C0048E760409C +S224FE26401219143C00AD1038C0510800000756CAFFF6671A08000006661411D9C05374094F +S224FE266051CAFFFE530166DA4CDF02064E7511FC000101C560F248E7604043FA099861BCC5 +S224FE26806624720243F801C36174661A123801C3020100C0670C0801000667047203600250 +S224FE26A0720211C101C54CDF02064E7548E76040720743F801BC42116144663C123801BC34 +S224FE26C0020100C0672E0801000667267205103801BDE208651E7206E40865187207E408D3 +S224FE26E065127208E208650C7209E4086506720A6002720211C101C54CDF02064E75343C69 +S224FE270010FE1038C0510800000756CAFFF6671608000006671012F8C053740951CAFFFE77 +S224FE2720530166DA4E7511FC000101C54E752F017002484008380000C0636612538066F476 +S224FE274011FC0002C02711FC000401C5600C4A02662012F8C053534166D611FC0001C02789 +S224FE276011FC0000C0276100FF44221F4A3801C54E7511D9C053534166B660DE48E76040B8 +S224FE2780720143FA088D6100FEB466387402484208380000C063660C538266F411FC00042B +S224FE27A001C56020422C00036100FECC67160C38000301C5660E0C2C00500001660651C927 +S224FE27C0FFC270034CDF02064E7548E760407202103801D6B02C0003674C43F801B032BCFE +S224FE27E0030F42290002137801D600036100FE4E66347402484208380000C063660C538201 +S224FE280066F411FC000401C5601C6100FE6A660A197801D600034200600C6100FF6066068A +S224FE282051C9FFAE70034CDF02064E750000000000000000423801C54A2C00006700010C3B +S224FE28403F077E0111FC000FC02711FC0000C02711FC0003C02743FA07B511FC000EC027C7 +S224FE28606100FDDA663870064A2C00046702540011C0C02711FC000AC02770FF51C8FFFE97 +S224FE288008380000C06367086100FDEC423801C56100FEEA671C0C38000301C5670451CF75 +S224FE28A0FFA43E1F70014E7570080838000001DB667070044840538066FC197CFFFF0002B1 +S224FE28C043FA07546100FD7666D4343CFFFE1038C0510800000756CAFFF6660E11FC0002E2 +S224FE28E0C02711FC000401C560B86100FDC066AE103801C1B02C000267086DC419400002EA +S224FE290060BE0C000008671A0C00000967100C000010673E0C00000A66267418600674208C +S224FE29206002742A0C38000201C26614397C0200000619400002194200053E1F42004E7537 +S224FE294011FC000901C56000FF5A11FC000B01C54E750C38000101C266E6397C010000062E +S224FE2960742060CE4A2C0000675A4281323C020082EC00064282343801DEC4C14281122C1F +S224FE2980000284C14241082C000000006604E24AE31111C101D711C201D6B42C00016C24E7 +S224FE29A04842122C00029202C2EC0006B2B801E06F04223801E0520211C201D831C101DC3A +S224FE29C042004E7511FC000B01C54E75423801DA600611FC000101DA225F49F801C6301FD2 +S224FE29E0670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C000666000114610053 +S224FE2A00FE34660000EA4AB801E0670000E211FC0003C0274A3801DA672C08380001C063BA +S224FE2A20670A11FC000C01C5600000C4102C0001E208B03801D66F0811FC000DC02760065B +S224FE2A4011FC000CC0276100FF1C660000A26100FD7A667443F801B0303C09454A3801DA3A +S224FE2A606602524032C0103801D7E50812C012F801D612F801D712F801D8302C0006E04858 +S224FE2A8012C012EC000212EC000512FC00FF43F801B06100FBA86630227801E4428132381F +S224FE2AA001DC143801DA6100FC86661C303C032051C8FFFED3B801E493B801E082FC0200E9 +S224FE2AC0D37801DE6000FF400838000001DB663A5307671A103801C50C0000016700FF20F2 +S224FE2AE00C00000367080C0000046600FF1A0838000001DB661470074A2C00046702540082 +S224FE2B0011C0C02711FC000BC027103801C54E750838000101DB6600FEEE70064A2C0004CB +S224FE2B206702540011C0C02711FC000AC02770044840538066FC6000FECE11EF00040105B8 +S224FE2B40422F0004427801CC427801D46100DB0E46FC270011FC0025C073423801046100EF +S224FE2B60D88841FA026E6100D8A46100D87C4267307C04002F082F083F2F000E6100FE4EC5 +S224FE2B806612307C04000C58424F663C0C584F5466364ED06100D852103801C50C00000409 +S224FE2BA0673041FA01B96100D8646100D86E41FA01CA6100D858102C00046100D888610049 +S224FE2BC0D828205F548F4ED041FA01A16100D83E60DC41FA02126100D8346100D92061006B +S224FE2BE0D8080C0000516600FF5C41FA02276100D81C60BA264842804281468126804A93C4 +S224FE2C00661C2681B293661C26CBB7C963EE2648B7D3660E588BB7C963F642804ED22200D3 +S224FE2C206002220B201349FA015D4BFA0006600000842A0B4BFA00066000008649FA0163F2 +S224FE2C404BFA00066000006E2A004BFA00066000007049FA01524BFA0006600000582A014F +S224FE2C604BFA00066000005A49FA01B74BFA00066000004249FA01594BFA000660000036E6 +S224FE2C8070014ED23E3CFFFF08380002C07356CFFFF8671411C6C0717E0E51CFFFFE08382B +S224FE2CA00002C07366024ED608780003C06551CFFFFE60F41C1C67064DFAFFFA60C64ED509 +S224FE2CC07807E99D7C0FCC050C060009630406060007060600304DFA000460A851CCFFE46C +S224FE2CE04ED50514051C05248002052C0534056405240524800B053C8006054C0554800E1A +S224FE2D000544055C800F053C0000070D0A455843455054494F4E3A202000070D0A204E4F14 +S224FE2D20204D656D6F72792061743A20000D0A4C6F616420446F6E6500070D0A4261642026 +S224FE2D404C6F616420436861726163746572000742616420436865636B73756D0007447225 +S224FE2D60697665204572726F722000074E6F7420424F4F54204469736B00206F6E20647298 +S224FE2D80697665200007424144204D656D6F7279206174200052414D2053697A65203D2038 +S224FE2DA000206973200020696E7374656164206F6620000D0A534147452049562053746199 +S224FE2DC0727475702054657374205B322E315D0D0A00426F6F74696E672066726F6D2046D9 +S224FE2DE06C6F7070790050757420696E20424F4F54206469736B20616E64207072657373AD +S224FE2E002061206B6579202851202D207175697473290007426F6F742041626F72746564E4 +S224FE2E20002028546573742041626F727465642900202046696C6C696E67206D656D6F7258 +S224FE2E40792E2E2E0020204C6F6164696E672E2E2E00202057726974696E672E2E2E002016 +S224FE2E60204D6F76696E67206D656D6F72792E2E2E000750524F4D2031204261640D0A00A8 +S224FE2E800750524F4D2032204261640D0A00427970617373656420496E69740D0A004C6F99 +S224FE2EA06F7065642054657374730D0A0052414D207772697465206C6F6F700D0A00426F50 +S224FE2EC06F74696E672066726F6D204861726420447269766500436F756C64206E6F7420B9 +S224FE2EE066696E64200057616974696E6720666F72204472697665205265616479203C51F8 +S224FE2F002D71756974733E000D0A4E6F204D6174636820666F756E640020205365617263C2 +S224FE2F2068696E672E2E2E000D0A4D617463682061742000202D20436F6E74696E75652073 +S224FE2F40736561726368202843203D20596573293F200000001F0027002B003300470052FA +S224FE2F60005C006A007A008F204572726F722061742000556E6B6E6F776E004275730041E5 +S224FE2F8064647265737300496C6C6567616C20496E737472756374696F6E00417269746835 +S224FE2FA06D657469630050726976696C656765005265736572766564205452415000556EFB +S224FE2FC061737369676E6564205452415000556E61737369676E656420496E74657272752F +S224FE2FE070740052414D205061726974790046756E6374696F6E3A200020204163636573B2 +S224FE3000733A20002020496E73743A20000303D1070207000108024A00006100000C423885 +S224FE302001C250F801BB4E7548E71C0011FC0000C50708F80000C5037080740011C0C5C15C +S224FE3040723251C9FFFE7A0411FC00B0C60711FC0000C60511FC0000C605323C174051C91B +S224FE3060FFFE11FC0080C60776001638C605E15B1638C605E15B444386FC000C31C301F2DA +S224FE3080967801F067226E1244430C4300026F185202671C530066A460160C4300026F0854 +S224FE30A05202670C520060EE51CDFF9E50F801BB11C001EF11FC0001C507303C174051C870 +S224FE30C0FFFE4CDF00384E75223801D67000103801B934004841B2406200006E484182C0DD +S224FE30E04841303801B0C4C0C0C142414841944048C231C001E8203801DAB4806D0C9440AE +S224FE310031C201EC31C001EA600831C201EA427801ECD27801BC6530B27801BE622A43F8B7 +S224FE3120020030196708B2406504524160F431C101E27000103801B882C031C101E44841A8 +S224FE314031C101E642004E7511FCFFF501C34E7511FCFFF201C34E752F02343C07D00838C9 +S224FE31600001C58167305342672611FC000CC58772016100011C4A3801C366000092701434 +S224FE3180484008380000C58167D45380670260F270FD6000007611FC000DC587720A6100CF +S224FE31A000F04A3801C3660000667014484008380000C5816706538067D660F20838000168 +S224FE31C0C58167CC343C07D008380001C5816728534267BC11FC000CC5877201610000B273 +S224FE31E04A3801C366287014484008380000C58167D65380679A60F2303C251C51C8FFFE40 +S224FE32004200427801C050F801C211C001C3241F4E7508380000C58166604A3801C266064B +S224FE32206100FF3666521038C585020000F8807801E611C0C585323801C0927801E4673204 +S224FE32406E0A444111FC000DC587600611FC000CC5876100003C4A3801C3661C72FFE0196E +S224FE326008380000C58157C9FFF6660E31F801E401C0700011C001C34E7570FD60F610389A +S224FE3280C583020000F0803801BA11C0C5834E7548E7E000E349534111FC0036C60711FCB6 +S224FE32A000B0C607303801B211C0C601E04811C0C601741851CAFFFE11C1C605E05911C1CF +S224FE32C0C605741851CAFFFE08B80000C503343C08EC51CAFFFE720C484111FC0080C60717 +S224FE32E01038C605E1581038C605E158670C6B0A538166E611FCFFFD01C308F80000C50396 +S224FE33004CDF00074E7543F8C7C1247801DE08F80007C50311FC000FC50711FC000DC507DA +S224FE332011FC000CC5074A114A1111FC0003C78311FC0041C7851011E148101131C001C4DA +S224FE3340343801E8670853424A1151CAFFFC343801EA534214D151CAFFFC343801EC6708F1 +S224FE336053424A1151CAFFFC4A114A1108380000C7836610303801C4B07801E2660E423868 +S224FE338001C34E7511FCFFF801C34E757400143801B880C231C001C011FCFFF401C34E7524 +S224FE33A011FC0002C50711FC0008C50708F80006C50308B80007C50311FC000DC50711FCFE +S224FE33C0000CC50711FC000EC50711FC0030C60711FC0070C607303801B411C0C601E048FA +S224FE33E011C0C601303801B611C0C603E04811C0C60311FC000BC50711FC000AC50708F8F0 +S224FE34000001C50370FF08380004C58156C8FFF8660611FCFFFA01C308B80001C50311FC06 +S224FE34200008C50708F80006C50311FC0005C50708F80007C50311FC000FC5074E75225F0E +S224FE344021DF01DA21DF01DE21DF01D62F096100FE2E4A3801BB66046100FBC011FC000A38 +S224FE346001EE423801C308380005C581660000564A3801BB66046100FBA24AB801DA6700EB +S224FE348000AA6100FC44660000426100FD864A3801C3660000366100FF084A3801C366005C +S224FE34A0002A6100FE62660000227000303801EAD1B801DE91B801DA80F801B048C0D1B88D +S224FE34C001D6609811FCFFFC01C3533801EE6F00005A103801C30C00FFF967260C00FFF86B +S224FE34E067200C00FFF7671A0C00FFFA67100C00FFF4660000360C38000301EE6C04423888 +S224FE350001C2303CFFFF51C8FFFE523801FF103801FF0200001F670A0C38000501EE660063 +S224FE3520FF426100FB046000FF3A1038C583020000F011C0C583103801C34E75225F261F1E +S224FE3540321F700003C011C001BAE90911C101F42F09423801BB11FC000101B811FC00134A +S224FE356001B931FC020001B031FC004001B431FC004801B631FC177001B242780200427883 +S224FE358001BC427801BE6100FCF6722F484108380005C581673441FAF94E6100CE706100CD +S224FE35A0CE48600808380005C581671E6100CF46670A6100CF480C0000516704538166E435 +S224FE35C011FCFFFC01C36000FF6270FF08380005C58156C8FFF86700001248410C41002FCE +S224FE35E057C048414A0066AE60BA42A741F804002F08203C000004002F006100FE426600BD +S224FE3600FF2A7010B6806D2E204343F8060076002211B290660A22290004B2A80004671604 +S224FE3620D2FC00205243B67C00106DE411FC000101C36000FEF6873801F4E54B41F804002A +S224FE364031F0300001BC31F0300201BE11E801F601B911E801F701B831E801F801B031E817 +S224FE366001FA01B431E801FC01B631E801FE01B2D0FC004043F80200701F22D851C8FFFC19 +S224FE36806000FEA82C5F11EF0004010508F800010105422F00046100CFC446FC270011FCA6 +S224FE36A00025C073423801046100CD3E41FAF8106100CD5A6100CD326100FE82665242A717 +S224FE36C0307C04002F082F086100FD74661C307C04000C58424F662E0C584F546628700037 +S224FE36E0103801F43F002F0E4ED06100CCFC103801C3440041FAF6676100CD126100CD1C55 +S224FE37006100CCE64ED641FAF6636100CD0060F00C38000101C366D26100CCCE41FAF7B837 +S224FE37206100CCEA41F801F66100CCE260D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S224FE3740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S224FE3760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S224FE3780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S224FE37A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S224FE37C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S224FE37E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S224FE3800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S224FE3820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S224FE3840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S224FE3860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S224FE3880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S224FE38A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S224FE38C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S224FE38E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S224FE3900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S224FE3920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S224FE3940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S224FE3960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S224FE3980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S224FE39A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S224FE39C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S224FE39E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S224FE3A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S224FE3A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S224FE3A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S224FE3A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S224FE3A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S224FE3AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S224FE3AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S224FE3AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S224FE3B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S224FE3B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S224FE3B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S224FE3B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S224FE3B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S224FE3BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S224FE3BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S224FE3BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S224FE3C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S224FE3C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S224FE3C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S224FE3C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S224FE3C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S224FE3CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S224FE3CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S224FE3CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S224FE3D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S224FE3D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S224FE3D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S224FE3D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S224FE3D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S224FE3DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S224FE3DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S224FE3DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S224FE3E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S224FE3E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S224FE3E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S224FE3E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S224FE3E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S224FE3EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S224FE3EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE3EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S224FE3F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE3F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE3F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE3F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE3F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE3FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE3FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S224FE3FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S804FE0000FD diff --git a/SAGE/FILES/sim2bin.c.txt b/SAGE/FILES/sim2bin.c.txt new file mode 100644 index 00000000..e28d611b --- /dev/null +++ b/SAGE/FILES/sim2bin.c.txt @@ -0,0 +1,29 @@ +#include +#include + +int main(int argc,char* argv[]) +{ + FILE *in,*out; + unsigned int n,i; + unsigned int c[16]; + char buf[101]; + + if (argc != 3) { + fprintf(stderr,"Usage:\n\t%s txtfile binfile\n",argv[0]); + exit(1); + } + + in = fopen(argv[1],"r"); + out = fopen(argv[2],"wb"); + + while (!feof(in)) { + fgets(buf,100,in); + sscanf(buf,"%x: %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", + &n,c,c+1,c+2,c+3,c+4,c+5,c+6,c+7, + c+8,c+9,c+10,c+11,c+12,c+13,c+14,c+15); + for (i=0; i<16; i++) fputc(c[i]&0xff,out); + } + fclose(out); + fclose(in); + exit(0); +} diff --git a/SAGE/FILES/system.imd b/SAGE/FILES/system.imd new file mode 100644 index 0000000000000000000000000000000000000000..b905e01144be06af725449c9dcf6b7e4b44c20c0 GIT binary patch literal 658774 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

;bu) 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≪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

C)|IdTtReKXvax_fGWUXn=zl}{OHzE2m?u`D z5_Fb<0M5R%CkZu-bz>C{qf~B6VB4~lW>@Tio}x%tB6}rijcUO^95fJ3CSFi5SfWb} zDhAF&REJQA2x-M_CW|TjrywfW4@xNanhYvQ9g{dOeSI{E8rko)Y6{?Bk%3eu^S+X{ z(*#ZfZbcQhf!-u?HY$`*VH1s_N`a_J&>IAI>ZaE>LN~l#X!)2T4^RS}h1a)xz(;|j zmCYx18Y-1y&=Aa;1Y5dN=j9>r10#z?PC1);YOlo~qV_Qe33XY$q?pl49)R>PG+?m1G8skM)%{uaH zp$F6mzD_QjlIMWsM0SXt8wYC;Y!GJy1LVX?sBfL$%%MP{4t-11fNwHyty*{bk~JO# zk8I^cOhtV|bF{XO)b=4LglGavEkYqsXy5}V4f+8u%D`B=8ax8&TwFpsHra3mlwu8# zsRk@JZo-Zs-y}hWr!j0NbfK5F)4b4uGE}ZieRQFfVDLvq>JQU4q2y(>jXo~XHrm+~ zg&Ry7>HH=&YjUd+lv`r57;!|zG3vxt?g#E5Ly1H0Ai zoT$OSqXpKjrU`1$$kYl8%b5-DB>v};z(^YT#)nmP(6YMMPc;+sUhEGCJxq)wLq2rtl#slX1sk&kECg2s!*mN*UEYHZkOr4J= z2VDoj1Ojx*lW4BK{gjwx(FR$+MM?Fe9Z3Vd5tYr^DW(A;TIX5Y2jQ6@ZU&hLku$~+nrZwJtHgy^B@(eU zh(F~kq$H3<)9h~*{28g~y{xhuf^;E%vd~dvWT3)&I=7~eLrl682zmuNNia7F{dqb! zQ;1We;9lgl=13$K@+i$X3%0OiA?=i#6#;W9IY2WTaJRK8 zwSMSn%EbDz+bkN1lZ&px^ES07~ZOS7uAQm(MBD&C|^hGVCxhqaA2z47=b}x^m zQGZZWBGHLMLNrZCAR6!$O9g@bfPZ3}g;qdxTtn>ABZYBfu?%xEY1-4qznQHbC~`LP zUGLkYiflvpQ9Xpx+EfS$%t zFk`kMAR67VPAGVjW}^`JAPsi(X|k}yF;RiwEMr)5HDv`}f%wZdv|_h}I#<%@cARAF z1cx*k;)I1L%q}2%4x% z_6w8G_=zKahz30>$nY(;DFi|i0*iv6m#bFM(QLwbV|oSgHzJU#k-3=+R%Az0EA205 z*zdJ!3ZTl6=U5^_ZI7~tev8GE`T#;bI#-Jz>`zHnAxTRa0aRkOzIWOK@hbLEalp9f z7Acd{XZEU!2P-#Kf(+_soAoZ4zjz^$5!!hmfSaK*HtE|SRLWr!p<+vR(H)7PaxT?J^LV;o?X7<%8bvNCFWkz@a%ZP@a!bBvqec}X9tDZ z+3AMq)!(Vv+3yOov)`Cxc6RWCo1Jyu&66z6ism{Cjpn|GrP=IBmS*39rP=5eTAKak zHA}Ovb7D>MwY|TbrgRR*)@0sUkD1yoM zeTLd}ttnRk0egj2QvfoP4`g_D&8OY)?36}RNkN57(_YT-EF@^soGra|g1O?eV|ezC z(u#H%o-N1DLXzQG61*7AmGZzvi%LJ&)l5-0L6Ao_B27J35+XqWm6S$II*V?X7JbXr z6|h3N18IyCk!D)max6(?r^-gmS>?BtR{7egXlbxkY^eEt-Ns(KE_yWbwAMrKG4qAJ z6x5=_C*)obMNXAQKhH41O0H=i*Vy0};?4<{axG9Zi_{%bl~Ff~Vbom8ObvUvs;J#% z@-VG^q2|UJZe7#}%_PzZCOASf_L9Od%Qn%(3d;6C2q`*?OompIvD3>z)96*Hh6^)f z!e|YhUVz!i#x`k=k;Im2dD&u-5jF0kvJ{zQX8I#D2fV$xtsTcsjq5xh)vv}**92dI zt5Wn0og}L{;KZ=`WE%G6RuwsOh?@pZC$v+x{$nujyT*d`q%KA_&Qzesl(X zv2*hNjOe~!p1?u@^bH}o3w0?IBR~OttB1BDEF{y?V?rbQqqnwej6rLumo~PW7z#svBlw$ONv0j(QP-vYl7RI{iF{A%*JmKTCuq#Q0aiEm2?R^>A6&NjTCmINC zwo|C&Q}f7tiE$3?<3r}Da9P^gG3xTZOb8^O{g9ehq=Ih9#6DXFdbw#DTO8gniNQwm zxX4Fjp_lN0PRMO>JPmmE_o@_Z;$8})#Rd0p&lWBw( z_5czm(oAc6!kC&tj!bS)9Ir7s9ARl|!tlo@gaY|G=R-!gkeJM<3p>5$bRbOw;OMWo zP^?p4g$A>RSCI|h1Yd4g%P_1Y8GIfNIT+`P4CQT0j~K^KO_=H@yeD&q)_im((MUA$ z4W^`H_fd=qc_3De7daf zP9F40KKA9wngRyTPRy?`bEB_}t~yh_I4yZ;Tf(1J8@w<*ea#4OJ>A)>TLytx%TN~3 zDS$BbL3V=iZRMWLB{8TgEML+ct8&qAv6%}Z{E4%{n?w!B&YZ#XUTV@3OMNl~BTse# zLZY2G9GHN|L=(85T9dp90jObE?lW$Om;Vk8@fth7z$A;%<-P3iCQ_L;X{^SFtmhgN zN8{h88Q!bU@GemR!$J%W?OUmuVUmZ;hJ1ES?^+1p)oE&%L(+9M+uHrDnA$aVP{i)z zCDvkBycB~*;|DaUn>^`H_#z5$W!EP9clkPn)i>fDh(Y?a+T2CUFJ@fVtJo&5g)O++tnYH%A$iUGuEpr+XW9DhBw7Fu ztMc$wZ;}@*!c}L4SJ;_LvMfqMuEdRJSCtiBQ#c4Qg=vu1G&Ty&!q1xBT|og7P5tcK z-o0j67t1)>3{Du<W4S3JJ|~DMDu>MLv~fz))g#) zg$KBzUNWqMQa2m+|IKX^Y!lpWY(~?J^1HOKYtiz%W=nSpTe^G|<~yr>UHwK)L*(;5 z%-?^qjpSQrxq<#u}QfI7HDxI>9=H87g>KoEa~Fn6^wunVo6sdl!`0A1xvb|v;Xy> zY|U<}T!DqAJd{Pq^l|^V0z+w+`$s_}6i>Nyruz3Mwho>nx)<$67qi4XeL zY7c1@2T!PDjgg-Z*jOQYf;D^d&SW&@v5`7YH#_PXRqX5}J9@w~YGX&(u@|Hx<=6qw zITt%lPi@_?1F?A=rBIY(c&b!Ts?+)UftZ8xKC1_fE4(@4ru^9rtbInLMbG`%3)106 zu1UpY!K261O~s@Im_mi7$vUK`xKC;g$6q)QE1Fbt_S7X0*oQf1djl@Uv~@o{lhLTM zVRe){@jx5dtLmt&H!$OEmZFZPEF6QcYj5BNiaPuaZVPJHx%M-E+Bdk;8@SQ$-W#|P zZ7e2WzJp+Yru0}u9=DWJA%S;N6xKeCwcpG}azzeH^c)a7k}Z7hPWTM)KT=XryOhC^ zS-pXjlukR`y#e>zEDerP=iuVlL(6Zn;AGh z8_rRu$jJGmk(2XD$|}-~Z+66WJeCay{twphlrDSC+boL$8f(Zat4pZ~YE`cN*>Lm* zW)DuoTf~^Hyu;z4ymRE>3HjER92>t*IJJf3#YF^85iU3fQvV)!wP@@xK<5r>)o*hu z#re*n)aSH?l!H43?tfu_`P1j=8wnVD$mV9f_F@)@^Pe8k)DdU#STr>iP$QFi?f7)n`)8KR>=1#l)=dY_S!j>D=F%c)=R^Krro)DS;1li#KU@cd> z?6qhp)qJ;&VH5)QII6=~`*m<0r9M4+V0eJ{+NZJb%zX+EPY+)=Hq099*uVV1{VzZG zc?SNn@rS}&U9O-1p)KVfva^5wlk6{NBj)t(vEg#$hOFRb?YY#-=(HwJc-pbp%wD@k zwz>{UUdNDW^o%t{{uMF9Gmfh-#(t>AQbZ=_hxa|psNmr+pCVK3-X=3ERAV=w6?0Hl zZ+WyI9&c2~@8FGrm$;?qX=Z$ON@1edQ8kv6sOlK%T64i|R^^#QRU)?6v?m5;o^@n0 z-h^>8*66|WnCf}?Kx|ex2Lr+*M_u=^nBCJDu~AL_he~l`vlk#()q{`6GAv)wY{XD^ zHhH|qV>eMIV=`JIzgJj>=X_J-pA(68dc!%x-ci0_3{Q;gvRCm+L+1sU{ioyxp1fLS z8@U0U&34sOmjl)7gPP{rKOGMAe3>#i^yx&Xdva*68R{i6f?=EG9VME@@%K|yB>fNh z%2yZ{!~XY-VNYcXq5}Hztl=5XVSX3lX{Btp4etf=)1Ntz!+zh1b~Lh=K&W@JUEaXG z7>7CR$RYa*tERy57xK;?IK3Ab>y@Ykbkwo&_Y>IodTcoZig-N-WhCU}8GGl*QIC@b zia?b&5bR6@r-;y_2VyCFmpA3$yROJ=vj}#|22!u49~*a}Ry#SW=pEa+uPHvHoJDP7 z%DX88cJ^b`zpmgFfW;}NrR(Zc?)>TbpV{pv-N(jl`5?(OVGKCCQfw@b4@(T)*{FJt z#isY#F%*d)ps+j{b2P6zc889k1%#iy_P}qrh}9dgGh2IB!o!9+C+~tADL_B%d3~91 zWf^IegGk($k=N}(Wp8E$`MrTz7gF~IW)&P7vmcMS3*fX}NQ+RxdEI9{FUB(AGEyV$ zfRi=2USnbH3?J6+1r^fkim~^C7<<&Pw-Bsi_zmOTeR_y#_g-+ZU7!V`#y%E!k+)~D ztf=-{qZ-y;I~J?;sVwWKXO!-px}!&Vwkfn-cyb#%>Ey4+vOFPeK={~uQlCB81YA>EgU7XeQ+K0isV4hU_ZK^)EKIH{ZPzdxkJVtGTpyuTn9#0)~Ur6)t zVNe1#JYav*Wn+97$7q*$0dN~6VdoI{b|1&1hww55Xy5Y^=T!CA25gVG70ik^XzPy0 z9EyXr6Q$AX(33i1Pi>4S&PH|NvDg~cmlIpAw?IYx)rGZv>7H>1y|eUpwkL*J^9Dg= z4hL=!86O)rGM?2)g&rGF*qB=|5{>2PW2Ru5&!s8h6l#o5U|G3}H-!*Jil9{8#|TuO zrC@<{B0QbKg{Kk2_AEFEc-o#lq}T{KMZ8>!X9+^=0nWNo855M{uuepXBN;qQ48-i9 z_MNwZDKz=!1hu1Y^Ar*DyLwEe*XDc}>LpTQg>0Mv6aG z#08@i)Lwg&GeDh^;JaVJw7n_K#`>oB23&z(+dA!i(y zRoARkaaZ4lO{JxDqnEmFb5*svyb>31t=h0@T}5?uOHFJgvh88H?3KJ--eA&wz`s6Y{Y6(buieJSOH1W20MclsLIOq8#daQ(SJsX*WRB!2=Fwv zUP)nZaW^}Q3kaUP;uad{QdN0h)e2neC*BxW;*C4K4J7()y%ohK{(+!P`Oiw?rfQs` z*))gd(%2>b4YOIy&79`2Fx#sSld1Cjt@$a>R2x#Ech9{GsnFX04Kg6exZ^%t>s3Wk zq3c&L_NN@}R)3sYi3vkWh1QRzVo9?KQlVHK`BkP|Ogl(YAqXq+zrL*%M<7*l($8PN z4d;fMx54tWdY8Ir(Xx!}eE9ir_#B^$ahP2uqx(-~P<^8x7w+o6yHxtXsYAMgTu)0^ zgKz8b)r%;1;g;k2U7+9aXzRcQ_jfe>vEPk2#w6wJv^;lF+)o8%Y*<^?u6B2x#}AsQ{%65};nDJ`T&y@_u(|_y=ZRef5oP zUqVg-)>H|ZzyN)6CCP@_Hh(7<*EXV-vLX)y>W?5IbvFRmy3Meie3x1TFPKAV!ErLU zd>ys^ZGO|~BjgZY^<~;`7(nwp$YUn$3tn7c(!y74acciAoxQvWCW2Yg;GUu%i|TDdS3h zF_D$88FyFGC$$E*;1afD>@?N;ObSK~+TjD4p*KuY8tvZG)C#OMqv>?4wxa{|;bG8% zg^x@id}wNWTZc{??@Ca-4x(lCG-#~9$5CE~4`jE)*Ie6)a%ns#5l1sVqTjCJNf9LsUmZ zac3>rxe+ANZ>5oD`E4D|bWf=j1bWTdIt-hbOVux;t8ou*qOvFfyW3veCQ$Ed=pv@Q zej6(D+Gulf*T(>1)F0lIXFF$aZU+7|>!?F&nQ6PEZ606f2g9HnAh>NfA)Q z5-qFi+D^5Uq+1SCcwvAx__|BzrV_uH@{Ec>Q(>uD;>4`w1h=QQsk3N%bCD+n>;K34t+QTcFb7Madw*9vBr3&nl_4S>c6e@ zHjLW5XK0U4sli_FsdRWK-k)W2{%R!EaI;qj9PDvObb5Olv3u%4@X52-LG>JAwAItA z{od$2@xbnt@Ww6}?R!CL`U0Bng_N{+mKXAV_0`^BNM#`7w+p#Lw5^9{~N z7l@qI3wHH_4gN=LF4o(?w0RJC_VzFcLuW88F82j8dS|J~F!fau)Saioi{)kuIhVSy zm%`5#oPSk*K~Bog70Rz=98DwdWq^zBuv6hTar;UA8#^%cZ8N?V`K=h=4*Bgoc~&Ht zhkce*G&u)<6f(!fPU_B5=_Fu?kez6ca-z3^--w5zJ$xdF&H4STPYG%^*M3fKyKBEf zZ-;BYjovA){dRi0UHcvMPIc{1p?8{VzpGF5pYseh{gL0O4KAKaF2xDp%I5KT)Y^II z8mgmFlY*U8pX+z^_IO8Ks3dl)oOq?NK8JVI4wp+Im&@fknQkLj3S4fxbg`4E4st1o zr#Pj{b<&nXF7(++?vgIoN#^czuu(aERoSgv_z;~B+3B9DA8a_Qc|}}DxhM3 z2AgI74}qpv3$pAJy;~t?Yo8%|jGE*+nRYCe4sZE!BI1BM?F1qK$qvsPJbZnx_VlQO z4b#gmUpC4cn0QinD)I|}rYKxQ!Gq)L6$m8QqnQIP3^4lf&++?}^84}kxzF(mzLKxt zDvpJ-dxiM#iwu_xU(pY;L!AOZlEc{$R&a=E z55rl2z4L?3hyvWED53Ox5h4H3nBN{sN0OZdV{P+BIfh=$&UQuIz5KEB1>S>)c7?UR zK>VpUPR)QLtUdpzonqNej$`QAx-#cNR|R{@tTj@fKle~8lvp%uoqcsK%8R-Siw?EU zEjrj%n0M@jMm07wPdUW$-ayr!r6_p^ZHK5@t%b-zWpf!aFv8$J)~B?2=8jO-HvR@8 z9gk7fc|o780AviMYbu2Nlv81!ZEoSg{Nv+L5W!w9#w`GZfP8PCjUiNN3u|9NdhD=$ zC9L&7ni5O=BRQuWhibB8erTh^El4dyR zr_BUD7BL}amp)hY^{=SqHYetw2Rd|I^8i+%TgZAJxe{j z4Bhf#OzN=^mFl8~c4bCxWy+(uvCLlHQ`miIte1B`YL9pdyU+9HCQttH*mZL~(B8oI zDPs3-Bdnp#`m-F7ck-w^vXROOfDFGLtHgIpDPCCE?L9bLP|)o?G^~#z`<*K**RH*G39rNx`%0^( zz&c174Z$a8vlK}V?!>^a32DFo?KrCmYXf2J>tXF{z~+!32A~0*JgWV{fHuhPr%b&b zbr0W#NxB*z9ejYbl4rN)__)LC8OE-2w~DQOuR1(n`xY?{4PYD;F}=r9iJXDgNN=CU zp?~GUoF!knU+-29>MFv)K>Qn})}H=SFaOd}yr1ahPaHh}$K$>Hap8CjG~?(2=IPHp zfYEOA^xvSK1tI%Sr1N-RW_h}Q9{ii3jZgqJ3LtkQl-=B3I9_3QMsmGPaCzYb58)Xt zhRz0J-i?vyVIwZJmxDw{oV{Gddq7zYf8c)O0NW&7-Ei&Ws3nIgkos8vtXif%-Y>YK zWguCx4D|``LG??XgI{wi5lO$mM0tl*4}ili%KBiiA!=POZ_4xbXL=s4;*=h|33Q;z@NQI7Pu=J_n+FFS zV@hhH+A`pn4r1D$&g}g+Vj5xn83U|{$gA3)$!x+;#ilJ^M}D^cT1yrYjRZFJl}n z1bC+2y-u&jet~+YSVG->cRER$uEp5k8fVTrn>6x9L{!^GZy9WQ{LVC^J%X*vxA}eyXTSn{Inm; z{qlv9>%Y5{qsg=X=vU@Gp%?3c6_qPDZ>q#qg#M;&BsPQ8Ozkc)#ab%K_Go($sts!^ z*Hx~suBcwKVSS>%KM@eRR*5Tx0RKEv7^9f82Qi!&@azDV1hnccXvV^4oEAZ;h50>L z9_II)Z!HjBEs@lM{BH8LDeS+Yj()I~gz4$53U$Oq zwgUC8DYjf`hfjj z3m`kTcH)}}+m1>s)l{Zp#V=My)gp}Lh$8#-+lK|JY(j4HW6=;nuk6s|{ zwlP85?TmHOvVss8qSfRJgsugwP^ z`*{20707=JQ@~x?s zhp9bdnq2l?E|X7`ROq%9ZS6fm^;a#bFIE>VxnofYJ^a(;@{u|;2uL+4i2u5FJX*k=G#1Yaa9R2=?xr#|H?9?{EM3bu+ zf?yl8L5pY-aB3>F{9HxS&t0rbhl_OSa547%+VFV3wFs^jJf3f^krHF<8Y%^34ywkM zFJ5-qEOg8jZfBu*rN}+P6e&nfWl;;~_`o&J@uS91&RK&4=Z-V4WB>Jm@_u0Rnicm~ zRab1RTzOw56bDwUzQ1box(ypYuH8b8jY8Tg`=CE)ThUhGC4WV%6dQ%~qc^!`G3N(X z)fE|i@W=JCk?9A^?od49w?C*we5> z6V^gnd^cI7*_{D5DG!dXf`dbkxyC=;eySXL>+s&y zf6(C`PYG(!th?YC&_a%Cejyb2NhmP>?Tw+pO`+f#{ziwLMFXq&8&R~M^`X&Wz0pDK z1}Nl-b|Z}rfuNQrJZt)#A?^1oP#p=*Di1BD>>`$B>H zY6i796i(p^Y71QZjgLXjI$*5`hKte=w?=$MyfsrKD%TTnWbrnOi!`bpFR0z>+Mh17 zPZTuR=U8<5*Fc@*R^2HY5YoQc=fqKfRj&PT4t~w;j0R?h1GCww`S^x|1D;A{?kQ z0=PY_2kK3u0t{dUwT1-b2nJJ^zJqe0R{JwJx)%M(N1PH0tcKb%7!JI3z_tInDFD0gZxT_SbM4QXD$1WEqI})8|K_Qp^d_RfY*gk{ zQR)*>hC~!jNR-se`|eG|`7<1{nV3yb`(6TWz>0l1ixd@D8PtC0+Mhc){)y!Hzko8E z9)AQO`4baRo?&_>IB>6;m}P zurjG~k(Flj%{YQJv1-A<=aZw)2nL!&dFjExlfq$pE$|f@s2#R}z`rx6iV*|V=fkkq z1)ak^3Kt|W7{WA^|4lZP0OSLVGEC~kABfEZEq&yh-cbr0ltH__a=y<7oR6E-`3!xo04&YhUfGA$$9Xy$$pc4E>%~LrLMx%N=KJGHH`DOI1$?E zE4!|;qXSm5Vdta)=0I==xvrxY_u8vj(jOFH`S9JlP)T0UUgd=hoX0zG>v7ni{P!Byz206$D!a>oUm_D5n0BQvL}%R znIzq-}w9uLf6@OrWZ>2}rfAYFnKj z_GQpuQ5z$_qBX7luI<~K>YI?e+Tv@Wo5)bhx~`_?2G!TPyQ!nCRg_#Qt}D{hmZ%RDb)mBz4_A~wqKeVW8C&RLY4n%U&ShRs z*{dx~W&Zg8F$ejFaKwK$F>(AC@i)mYJ{*4+&%c`(p8Wkj(pR!Vb`uUIr^BGH)3BnJ zY91?an>w*B(}-FMGnOt+wqnD&buh`d#$g_yva?ld)>e|)wW~*SiD$%_2^7ZDe~;N6 z40ae7GR527RO52h;?&ZsH7-_*)32|JGhpm*nWJE*_na2zFQ0yvu`J1+Z}sBzS95-! zJ%1F3for^@H6B<}Rr~DT(RR3mm!_G16sp@ly}>)G^?A_fGhoWT&{oi(E4Xj<^T?I9bz|x zW`=J3mL00mCqgq>4JBeNK5?$ry<73s4Cde&)LfYJRk#K(xCdr4K8~_*3aiVmwifJE zcjXlf;~>=FF!Mg1H;NPE`P{EG4c!68et75(9Ix{5mtTyzy^rIAvkNJC=K`Fcav*BI z4KT7VXQ>1O1%`;;7k|_6H-kH(?p=9B z$6}e!@ayuCou|F9*&B7|N2Vbe4mM`FE;u8pC>3s)zn-B!(HQx|XJ7&p zRdc<>-SkMMM;e-)KIB5NR5i}=Q0QSBx*Ja?A68!CUesAMLG)756VcS6MXVTo6JSbv zRHyTYCp*1BD+X`Q>3?KOj$cm}n3Ft`mz0fyX-!lTT! zf41_L$`#MeajwN7+Ufz zyN|}zEzC#bN{q3EdR^`qJoSa}9Z?)~PYi7%i>8Irg4zQz-!z#oJhtfhrs?^@Ya6`oLc%m^ z!ksDSmHj*#OlP5Bsgi+S>F|3DUYKMe)a^+1lH%TX z?&7{bz8DUs$Ch3;FSjL=pr(O-TQVUG>9Co2rSO-O^nu`h=E4;PFblzsKse?NbKyEP z)(Ee`TGg@Jjv4S7A#Z^Xz9Ie!rdB(ag*2>ne@G}9(*6P;!$T?2(D!LctL?+8Q%rM1 zu0iPtY7krqr&6<8@0Q~^pDuzx-FH{^N&uG43DC^sDX{^OྦQ?aK|NhH@bn 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�Ia9)aa|sA5-Sp;0B+myTc}~Kh!9T5tKBX=K)5`|xv_lI~l$_o< zowZVwPoF`QE6%6D&_M_6n2DKfs%T8QSzT5wZ>}gW&9_XB*QNK>Y%P`5p-|pjR=rIw z;nenoPHzBK74ML%c9vJuWMF$~b+ufxwYXeHB6$9|d}mE*e*OZHyu7)pY*#6i)o{mr zHT~d`Qpi?U64^_KK*|jlMDP$6g$vYQ}`Db${c5 z4rr2*;u2QPDvcuH8?c}**;cw)#^SM}YI9-=bayFfO0EbN8%rO+qFjYSccKYXIZ_@k z+JxmbhH8YYdf3(auxtPREl}W$25U3Df+8%8*Q_K&N^%P{xn1rewL#(cPykV%=&gde z?xi4*r?I`ev=xeyQ*+eKB~}-D5D2VrHo+C zNg78}hL~-$v)R!d-P~Fc3#s+6tw9-XuCCfkxKJ;er7|lCv!L)EV6KR!wNTc=df+Bh zo-X2a37|)vLHCt4jV(^1=_G%yq>>Rh8dmPwz9p)tE2HVI7Ih_cQI)n@e?|FqJW+YU zx&_fS+S2T5!z;}*JC@Ea8p4cXuYk^LH^>LAe@_%$s~e$U9p!(((I$wgk-ZuUQZBcr z(&?^&8HA=NMB;|+&ej9%4N<`ACg-6j@1}0_F~n6DBLZizbulC0&2xxQ&e14RlJ9`Cs#ct zS8Tx=Nf*^x_ro-rL><;pn@OMi#_U?%dLFx>C)$AYr=_<%TGmYRM!^l`0cJJMwrK*ipt{+4Xa)>;CGGC0 z<}V=WP>omZo1N2}l z5?4oS^bk-0eyc)=fIFua5G;Iypc{%;QL89c07a+ChXPey8KdfCs};=Bkqc()$OW^> z3=w;)!(BhE*CQuq(@q*V_G9`LO`wvhk|;0ANRwnLQ53mKyI{3pvW=pHc9RLR0nKsZm)nwllSS4GFX-d3eQ=`jM4fWwDf(qEC zj{Pu^5zWT{dtBA+4tI3B2;5z&;f+ZKT0wV^(Di2o==(sCuR6_GQ6xl->Y-Apu7c@c zeZsH8bst4gXSXU`bqlCEDrjKULvU?UrouH3!KvpL*B?~js*ohGE-+QN?xT>1a8!dL zUJBFNSq*`Q6C+W;!|I$}tKDR2HF%*KV+MTX4dAP$!-X`}QWtK@R5-MxrvkNfrvkM^ zqk&WEqjRySXh%y+_a@TBpX5c1jnkMhU+-Di6)h>12AOCvCbNjbzNKy-wJzW@3#9Shv=V91 zS&LM&SC2DUrfB?GYOQuA`(}4z=VUjRr_x%*xj~MzCoq|RRODH**XBmk>Zn0)kfR=F zGLLBdSu#;O>$E&n;0?0SVoc@`g*{6Kdas|Bg$}+!CVH@4WW%RSzeJRooDDXOh>>ZT zMc_BcEfTI~H+A}U-a^{koKFSH4XQtD z^vU*}j5cck!iF;YwMzPTHZSN2AS)@QBAFb^p;LM zOcEAWv9OEib{vxHAz8`33~rpb<^7J9#^y!`99Z4amYTd}XL(6YSw*=fmh1Pbk;$ai z4A!73i+Qi$F>*mh-zx~A&DnAye1xR&e^gm!$)9ZL=p~$476|(fyDX}?FSHj~G27v2 zlZ!o`#sjS_u*&BFHKw(a8fd5fg-y0RHCi4fI6H9%MX#t%cG{ZrU|Yf|&rF_c>CfZ? zH42S%Xf|3x2xCFwIJ#`tEbUYMK-sRM$qh^*vHE}6j>_$&^n_orXw1k=D{3IR?flp% zV0xjg9J2LWSs7!B zBBLg}Ev+9XPM>8`t?dmaDN3yXrsG}b79A&6#ewUm%$iot zc#%FH;WE``y}?W>Ry>em_*@-_sW`ce*IM6TT*YC)k@z|d2j;D*zPv)uSs($L-k-|& zUJVO(4g^*QlR>yQm@KdWO$X`t3Ea!D^(}5VVwDrm%X7{hKYqk|g`6pHeub)NMU8Dp z!oa_Oi@2aS{}+``al_F>!rhuhwSmQNuth8&_brYa)(IqYltz|PwIbu8TPm`&WJ<*V zrHV=SXjm~C)(&=mZJ_uKcE6|?py~a^%m5Wb>(TEqo41FfscK|)ZZyS4kH;EWQ_$#D zvYLV$&WfGj*nu6)FmmA%4g!se2!mnu5!`XN^t4B_bEA$aR6Y zHm)f+*ZZBcreLy2C=Q7?!Tz)&1rrommYzQ;d~^B@#=EILztHP*AJvCyQYa&-VPkqz z&@LnCVdGpXxYCM}eHK}#%Ss`f+z?gpqc4I70995r9reSx4HYYB3O+%xL>1d)r5~t&vsSt-4ri`-KBWRLztA7jbk^WoRRe*uN}??ylI3IDtJhi5*~ zlX$o&{7dnT55JwQ3rbwjY9Z6fm`2F7&mb4(i(4~0cFHUBSFV({u>`4Dx>ri&eLROR z;&FEyyH z0k(xjT>NYxL&J32w+{AdwYV*fNWkr^6F3`SHm=?&a!pP&^de@;=)sM6$ zFaNF)S8hdJFd22;q&zLIR=perbU}D+J?=5X(jgU09Hgx6c4G1h2mtHW0V67HvfQ|r zXhW5qSyvE3GZl;Ys-aTK0bnW=!BiI&PXu6}cQ27r4HBeYFCWHiP&Mi8feBDDqbcLI zpbN9twSv}E2sMIE`l*F%cC{YZ>uKl0PAWB7JGmaAjT0bJbAy1bdv#N?xCQ{wp$6Du zMMHoW+z!uPPsHgY<`BL*T(oxYZN@QuV#+;0RQ;a1RuS6Kwim{yJucW#M;JAe?w@VF zg1&eA?<1xF7p>In+~2OZ1htHK^H2lO!h-mr$%&q)8IA?R5I^igHx|}2DNt?Fx`K$? z>DoW(ZtoIql_^yFtdYQaXLH024vC~i>>)gAEKx{3P%WYELl1zoI^X~gs<@59BI#sO zFp7!}4|J-{J-X0x(eg|EQ!8}93CV(r9l&0dUhhLVZFU`splPCOQnf+V5Qvg>sA`)F z=1|4ohDjmkCh-O9%6VE^>gO=>bCcO}H|`I#BVX#mQ{-U;AE?+W7bZEoL=N^RoNkxA z4~L2MITQ_jYi}3wz^7YA@1In+C_Sw9JGsr}5%zbnCRg+0y4h*DT}>1TX~Jv`=mdoj zEE?%hS6-E$@9Fk{1wNZkW{Df?q5j}*UsfQj=8DTbh$;pOw|j4k=fGZ-MjLb$55&hg zE5?P-YElnrJL+I>oJ?zHRxP89aquB@F(?^PMIjC~ifWA5M$b&pk)V)@o@lWc$=~G` zR%D||pp^{!4akwqwHKivB*~%*iyY|W5ehXh0NjB!G!QV*?gQNxP ztS7w@xm|=3G$Qzkb!H|)^|^5(6iSI`b)A_6iCpL2b{C0SdsiOSuSjd)naI>vW)wp7 znHf4KI2oE+-?kYMNl?!KqOTAk>_mgQh9c1cz*Jc-x#Zr}-f!#B={3PT-=3Pkxul#7Tr zV9mOIZueQ0Jx*_CM z2`*Z#3C)LgGj5B%Dd2GDP^(2HI-}fRmzK76yV}EmtIZ{706=Sx+*&)g^kj7-Axnki|?;1PFf1QMqn!@xHx2Wd6j{Q_4RgSBD z79jN2dS_SOKDyk4v15O`Ua*|Rl%hzE)00+5yF-q~cKiP34o`!QIEC<2x)a$u2L&@R zWo~R~Yj)BepL&rnG7NmgL;U+op1*_5oa)jC$k=chXO}tDN2KR!N}&NzTlb38Q$J>~ zy(!hc%OrXSbtC}*$@YU3&MyTmx|?0X#?E0Z<9fOqcu%q)5N^4^y=AJukKQJ2QOFi9Vl5D$x50{aQ^%7R4|DACD zfb+5CB4zoyQNC^f{EWfOdg_^y%i8Albh9*ku%E~!37zHHUE9?w7t@Oscib3j3bkKN6U7d5{@^&50Qo*1NXN%xyn zf6T=zB0_G;+pk+to|D%qZlLZ4Aa`FUGT8lWoihmsuj08R|m`26Dy16=zgk?4rd) zE(v&2jOsF9G{lk%ZFZ5HRhRi9i|aL!3Q|%$ec8q2gkDpsnq%r&-fQH&hMxL^NGXMad2=b;hAbF%ZpMp0y4RB0?P4KrwU&Q;EStptD2%K50?T!=8Kml(Pia#M!AY`5#_Za;Nh;lG%+?6}V(e=beTwD)- z;#!vN#L1?B((4UB^VY~*I0DLxj~fZgaB%`%&(M*yq%lKm-L(emGMAieW!c#ILdr{! zUnnlyezJ9m{e&w!Xy9)F>HH`aooDqLvLMEgyCSnr1ErMRYgm$fBJ=zNz3(piEeM2wOk1ykAyje& zlrJE@8J~dC_jnSXhn`6HTLQ}GAt#~U7GpG`KRzCpqilTja$-0qqlkA&mjv1t%@Z?mB~aQR6rSQxmIwe2!_@!D1gz zyFx9z9?kNVQBn?6rBnx1v?D3Fnn{nR;RRCOo!xbEyoYx^ZVXzpyRPx(Mr-Ez(L0t{ z@rdU6QBt?-*-Knwz1A4K!hw8{hvI^jl#dr;_=lsV@Mm}Na}!1Ut%H>B#GNvtPSDf5 z%3jbp7z-B>Ja`9+dQGI8@HjDnXokm4L5UsA&hE0E7|P1(vYi~#dXe$o&86G7CulwD zgOTmi6N~S_(Te^+0%vzhssy+feZAJN{2pF`tPLpr0p-g9uyN;?HK45Ai09%Qf)0vG>|az%IOpYO+~}f^oJk>^>W8@=(9wWtuD0W3C{H5q;D` z5)9Legtl}pj~T2OrqquH>)FF0P(?WA4F5v0m1m#o;ZL2#_sJgqQA*yhkI7Hq z5l|){?h_NC^^j7diSm=S6Y^8m6JLsxf~v^Eyva5sTR|N5o?0ICFQD%0;f)!#z9j1t z)+bL;uPeeZd6r421N3e2JZW(qvm%Fm%qnv5aqANqC&v}}#08u6DJ_Qi;&1|nE)hf_ z)bkXdBy}WE()~s*OQNtWR_CO;Th`SI$6DnGOd|5sapU zm`RdfG8o}+%IwPMI-Ai&v&#i|6g9IWuIJ9oF3k5XT83j(0B=OsZ`8pJvSnm}^-6|1 ztGsyJs=Kb>{7ten$SwV*Igp=y2{@xzfU$=4CH6BrNmRKni5Ub;?lboD9RxG9$V`1{nx~Hxd7BL21BO@_y7BI7JQx8aWkWI>LM=`hBu0d192nWusG_MC z0%o*9U>;WACpOD{@icw?|I|kMA#z6D0;wHw^zDclg*$O5klKZ@LLyb@xIij=ihPoQ zwHQQxIQsqm)LbLje$>F*Fo#|@X5d3;eKAdhDU~NRbjYL5;N?agelUS#94O zBQ(3m5vL;wkXO-*p`C*Z9}?^ZZ#p!dLN3o(AcEfqj`NY@W1`Jy20o@$ep5j$=Xr zxU52sjhvOlFtT}4{y;^gk;&TM)N#x^eZ{T13HKZm)En}vgblmF{Ralq$$vCRS$|-N!I#(aYYQ&aO4qQl zQERxStjHR-yl~<|txjhp*_H1$eBo;^OjL{iC zae4x)Mj0p1()HQwM|YO~@iffuDpyRk*!{mvW*`3$aMKY0Yv`NTPWcUE0AgFP;{FY( z+&qsDIh4x6$KM%$N6P;7c03Fx>KF@kMl#HTMYsX*b2U`*-Ph(Ax zdLd)+`H8q%EGlYGTnHNBz@Q-32v{5#=|~UKgcFiF~4Vh1Se4JzXG7PZ!Gjx@DNtA(PYcjz;Lx;Hr1Kvjr+1WvzAjH>w{F z5Tf!mt`H)@QJ1x}N|hku)#KYj^tdtVq*oK4*q=D()t z-|cokoNhMaC^Z zvt5P7Qc5SOT2j_k+{Jhv|hpPoYFE-bz+s8OHl(Li+w0oQ>K1Mn$G%XSCm~8Qh zRnG`x)m>!^3q{QwAG$qr{IHo6GlF_kEMrM`u>bf#Y2!73l5Kb$pt5xH19&t*F4?-R zdgqRc%HP$M5iZf+2P(RVgsWF{RCvQbJ6nc>Li(dGx$a~!ANZ=SNa%zAd^uoVR#H*9 zr>g9Mtu?Z}E=PNYq+&}Ao=3tP5hYa>>Pwu}mu zI5_Sx*Lvm{M+$Lo9pI)$YsR_J47jal=&m*0pGzU1fGCcWO7V#c*73&R4}vCBNP#mpiVXT(i4w z>R0@x8h+jH{cFE>;+0Cj_in$hjKAeJvXFNRe=CIgvtCp>pjFzZ+$9K!dLxcT0iTi~ zfVI6be&ut1#rrNx_A6iZD}C>>Sa^L(7L^EjW}A=onve-nf57j3pmsnB(#r~+&;AA@t?OK~wF@4|q0Asbl=KO7wNL=^|%Q^N3nDb4_NJkv6X z9{gX7Jg7Ws?)NVA>-63#>aP3|LfM%!O8&4cNb`_JnyTnv$|txQ;b5I%(CrZ|P^%hc zpcBid)K5~5XfS*32Pg%qwI`9IY0;j1I7X!ctEKu31iU{lC|v1R{;;+~IvVDp*U-~3 z8j~Nr&Lf2NnvdNv3t^A`?Ig+z=3~jTp?qx;<;&({i)KUVnM65dK9)2aO5G&Npg`fo zL{nP%=>3y8-++?M^kjU>Ym;;XR~&^dlFm5aHXloyiGN`#{*Q5)O=GlSgk(;SKxw`{ ziF4%!1o?e1&^R>?thM;OP(p$02wZc>6@1d?6@4b?(KGWF&sG`l<|%~>ZjPYugbLR5 zqWQd^nTkHw=WP`ECHTBg3y0w!ykDS>>NfOyf5Bp8^cdWOK7|*XjEoG5NgTMb5=25V`+fxVH%R0Dp_W#n`iw_o~_a z*C|YqJ#$YH53XQevKUqb*ZI8HkX)Z3Sm^Wq0$ONr**%tmD|lQ<_E-w9@Kc81e2-=2 z6+HQr;<4c7VOwf2)??EV_GfEj1GkJ4ITXSO_nJ%Fx5#`(( zmy6?~w@Yquw01}8Mf4VVk>LTD_I0*G!@gbyvWll}H;E*sVA#rCk@qbdTXB0_OGX$x z>2lWLp)}_z)pll7V7&|W3aHiTwz&iG9P&=QO@;fb55PFh0n)*3R|#WPt@-S8k{USK zr0HyQ$lL93BW??-P;ahQBgpbXB9fz3cJ1@vJxNqpltxd_Ue@Y?)#ApwMx-vc;C&1< zCt7Gw>KWyC`La#{u^?UE7 zzPIYV-S0i|-m&+-^WM+Ha(Hw2K=|?S;jlmaLiqLYyWwBXt8pDTfL4T_J+-+9W@%`f zPfmg52)(WA2p}f_vO_h0;F0CxNhU3lEA8qlqIq()U2Og3$t89~$|GtB-prGC*tNKM z@kD1nDe`(G?6V5w(K2$Te7VMCkzP2ij^S1_t$Z>?khZ zTxNZFi0?;mkPst z_pro3YQx|?48mp1G7#G-IfRO&84h`D?!Y{JF<%^9yL@Qbs40+&gz~S)kU_yJm`rrO zY(!M^g<3Xv4>z|ZXCf$;H!-Cav(i_>7@4vDIYjH9LrMM6>N?5p^3U@xc-e@n(HH#l zSS>|jEl#0V8`mj0YX?&C>r>1a^JTaOuE+H+WPAd7K_#ohD7R)El$$cLhM*NSFvM(! zGsd7Xp2sO=lGH6$1r#weq;EMbeh{xW>E#vO70*`KB1!ylo8xS#`s&H@YHR%`+`4X7lXHhDp z7ih6OY)JljOu%QseBW)v_Yb-9&jWlwEcZjc&j);;XCpfSXCdE>bQb*ze--}~&jO?Oe!~y`qV))Nv0lb<{KWQf$ zC8(VH;sd_;E0-VQ3^;xZlVpgagAhh2s!e*8QiM3t5{N|tvUH+Bww^^q){^B78_vIU zIhAKMGdMF(vP8cn6YBd-_+*?olXx~1myvm5yv2U`rwjlBpGg@uW=b$ekdb*3<^ojw z*34{zyrqFMt|5)qjO-IlKyocn!cb^d!mcI!{N)o2G5o$nzN9S~AGYKIr_UMGH{^RE zK>xpZZgd%7aMO-c8|^sFQT-ZJ+jRoMIN}5^0qj${Xp;haLcWAQiGvjRlejLGgaboF zM+iy~=*2NK6Ec%t7^jv#H<19?698e52~x8o)@dp3=+*a*e)YY8FJZLkrfJ1RCE`;Q z$nU5`h(p|l2wzG3w3N{AJI2gb=7m}~JA=(JTYwAK$?*n&1{|`f(})r9IkDdY2>jUo z@>yz3>-`GWy5A<2^ecZ3&(L6O$p0-`(ke%>>J-D=pjjL5dOZt6Kv(Sr2>Xl^uK=47Vy6glMwzi8#Ui~$}r(*`ZcB_3+?7`O_#1+Lnq}oxlwuU4~r!_&*IB zPUwgJ*L})gpqHy|R4t(Vx!RXOxU>PL_GE@mrTjViiG)5OYW$s9$oPg1qlns6g1KPm zf#`;QNWW<(VX))e#J(&eRK2oVgOah8QGj3h7Rz3O-q=KYey?U^qaVgo0K6QTV$%~1 z$$?~N9;sO%WfD?U!C)A}WzRklip$DA*%JJH#NcjN)j^|Ur$;T2ogE@`8a`!2ha5@* zf6%VTk@YNP4L|Ake#P%S^|BG;umkS4>;@PMF1Lofiv!-p&#>WjgX!2^P9IEH3eit3 z*JA)4iycgVYiQ6gFk&7wjKyG-HexWB@Xs(0$(@55{mtUxO}n!B)Q_$YHgq;8>!|P&Sgk z#HaiSonj)3FtBeV`@QlKwYj~rPoYg3YHqJQ8E2))2Hjr8_9<7*$1uH{8u9vM#Orav zc8X$T*$gv*!4-V?G5DXns$6En)u{BMNJ{@|K6dxilrU2iaWMhGUJ+X|Fu1l|!rm}| zG!Haj9yqvuRO(HQ%7L7iXmH33LGmXqhlos1hT_;k+Z8*e9GAby?I=AC1Z`JxFzL9w z8wm2)z8o>%2*u~JS1)hixdCtJEWvF#ZyM1s-(<{u{PO2OOnFT45pLo|dRnkW9A+Oju!)TjFxwi8AB)W%%Ekmu zFfXMKW~TJP+>}0MNqpk$;$z7f${HA!@>&LCiC<&KV)DSRd6@L#Uo4sq zWLL>EK#ZGxxHoy(z=)BGmopx+9R13Bwux+@bPo*QiI12Urce~l2&_&GDLfQ+wEn$i z1H*U2Y|cb1rDeKq&K@+M9Za}#9LOg+XCWqQsf2PJGX?J%DN*e9X>m{{ zvsRQO?oXfzxrvHy8jD$qqA$g~9sf)+e``1vlmN^GN-P~(s&*+v6+{995m~^r>IXy` z%)qi?FatS?h8oNO1kIK~KC{}camz#;Oa9QZG35*SZyKMFPJ~hh)0Sfikp{j$JGhF& zmO+~6pz+Hw$Sofs9u3+DR}L1Q9A7Rye|{8%T09m%STI;9y?}M)U?HHi1PK~a1UFxe z2j_xj%OzM@5TsmwO?n>Ipo9k*`|^d+e5_%R(lbM-lFw_TdGQ3q3P{fpG6=a7OTni( zSZncELWU@LV%E@LY6fzn?j$nG796zrYTOu(ffir2yeWme;8a@|{&jm9f8j(3xWf6O z^n8e_W)Z=dX$-90_V5Xe+otn&kvm66Z$i{CASuKZjW`d6`cK zA5!p;e~!;o5e3Ij*EkAK2t&ao0!D6tn19ZIbUhJ^i-}~4mLQ@TcSPS5FmkN( zD4S4P@QYf8$QA`SDT)zDJK2`3`a@}f)bUU%ySyRX?>)^@PB0^yjxH`i~Vrz{J zgkFPHSYa?GbCg=Q-<0wO&LjmdNVu@Tucu=PPMpw|O!)&9=a#7n*v3FNS+63}m=g=k z!Ik3;HW?$O4TeW#*q@?^R*Gn)h;uHxijr(DKmI zz|z3-b2typAFB;4)mDtj3|<*tqllarSUS!_OM{mK%eq6k!EXlVFrPPt4A~`ytds+% z90o#5GD6t_478X3j0LhOm#c}PERIh?C_j`J$P4738+{0+x-*cCQyOBjK$g!tpB%?w z4J9Ka2eQUu1L#f5uEvk?Ko&X}^Pz)jKb+ zf(>uba+ycDP!SFzf>KGCl=i=9CA>of*9dcwVO*-fUKozr=d5FfTI?0kMpLtV(1snR=Xi__gAmW4Ehg+M zi8&&K6CMCq^c?s8WZ?RI+g0@A5fjj`y<}u_8eq`^{Y15lbGJ>#9NfE*=HLl789r?W zPUdp{soyZ?7wE@(&`F;j++#UE5j(i&H2+M{Xu&V#Jy_2MKQp)snV;s53_ddWnb`^e z#C#QTH)P0Z{^;PNQHa>+qmnkFq=UN#KZ7p5YjC&t?jGDT_?eTZ`JSUs;^1rkze^2% z?@#=`$6pEiy^VgK3*UUd_cOHOar(W5>SDan=gq`23z)rk0j>8gtoJaq@j< zgWuU9A@R%2oQHN}PxY$u_iQBH%E-}s=a99lF|d0)v^#j!U+-nupJSniiFIDRoX%|^ zLqPe-7!N5wg#=RGZN^=Uch6n^Z&-NzbgVX0h#<@$zZC74&Qf3-0)^Em#L#@9UAi-{ zdx)G$Z|0lE!=XLB3*gIqQ|b~JaA@IL2DHh%SjFg$MC-16hB|b`4r7M=27@E?nE$hwlVCBi7X$INP%RHR zsLkX3`~3Msf!(1xEJXJ?hcaljFk+?;8YMok4{OAISRsaX6AlaP3;0_7j|F_qD2ac6 zz<1E!&}RxM?*x2}{sysBeFqyrJixHStTmr9DhP^7Uk>b#kO-R^Eu%|810do`>P-mX z&&QH6xXNj88=N{PGv`gC5l1_*fDF1R7n46GW0@W~BGE8KLmHcX3X;pdY zb~$pysrzGgdc+ZMjJzKfn`N07>5w@pBv-xLm0ww0T~fS#y9HPMn>)mDH1c(L^rKR; z**=-Z&9G)q*OXs_b2RlAHH`d)-{Z02WW5mE%QjUNSM8bZS5Mf}#DQi<8$FRxubo*( z8N6iovC-HD*h&u;#2SClqOfdx6jC6V{&(ZynlY3dV z+mq#e^x~)oN5E~3u)aTgsZ%4(s2{^dpTpmc1LJl_GtQk4$gR#p(+>9aM$}E%RFxKQ zr!zzyu7CA&?ddgwu_tklBKr4()eS6}50)OYKpqqJB6g8$KeOP@QoD3e!?EFgDuIXf zU5tceg3D|e&Yo|{fc?dg@l#Zfn%5peel0Z82_yK zUFizUk`GMv-u%DcP&G+mH~p`~yof=);*;^WYPEj_O^?LGGP?S}Z%`#w6-wh1#x7iy z_?CY&u-u0k`>y3nvG2vpusF&82+glIB4?Y;Mp0EBxXg%i|Vy#-fgNkUh`I{-UQ8C18+Y&3(7plbFHl1&^AvV zO@Le3BRoOe?8#Nig}Yy}8eZf6T)%gh^j3$FpYkR7ls)ESq9JOPN)H{WdJ_G)XfB4^ zKq0T<_bNUGm*5lWY)QeDg~x=$r?g^2g0~6JKwr!eU()ESIPccd@_TnvYHjmGdTsOI zr&HRAyZpJz!=fluh}|kv_;WpY2NEG_>6Oiey@^WsO8o3xg`euxy(p2gMT>?_VKZTC zacVU1JyXG(H1OJ~;7Sd=ZYsD;1NX#FD^Z0Wpd6hRvQ-c9PLHG3!k^1K&=me$hV3@* zYwRK8Q5XDgBW!Ox?@k)zqja#1w*$IFfsSJ8;8XtiU0zB10XPspCVGvE3{rv& zQ>dED&KPm#gE%3?;h~*qTby_A3RMTH1G~;)t92(PF4aGyGw-h(jXyjd+8L-G4^;<$ z9M~zMy@qJDqGgt_&@TTjpMt|>YU*8DO9S$^Xy}6k8o=H0B9s-!gP|JAh=;hA72O(8 zUZ8pe5JEXBD^5OtVkl5!c|KGVsJ@0g-_)z29Sf5@h=3v_=vQ8N31UPg)ei)zWFpkW z92mBK4%`V@VP%6-pHbO!7F$h%fIj6djZ{HZYYAtss=SfdKSff5CIJX9QX5SGfvsJl z4TEnc-W7@x?!UcW*u4M+Q64gKiztj7@7 zn{w38dW@Fdl;Bf6G4c3x_LvgzarML|^(F@!dd$iAIC|nz@cB%SB^96Q9x1&yHMqTp z&%vj(CtmV-)6K_x-n*gXkQQ78DT;kVY!PywcLRYSV!sny1etn=&s#%?pCxEd&+h?5 z8BJ^v5?%l}9lMmdA!r0KZuIeap`RkCIEmr&{?#n7AI}2&^$Zvh9x3^J$uoj{ zK6w@x?THeHMrH5YHUkz(cK?hZpRauu*pXRa12bTeWWPBh$mjc?Q(?6}-;b&DqZ@~o z(zHLY^xSB2Z6Nn&XLw&yAa@*RHb3oOS{DcM&!oD~H#RjnBGR*Xk!O14pDmaLwhIg} z1M$fjhD4|mlW%-S9-o2kJJLTD<~xG&^cninvDN6qX&}Uj?+7l`&}eO}C4nW=`vmXw z^B2*$z9T=QAmF|em&+XfrLRCi(9bLouIs^z#J9{bYc*1B@9| zPoNoh1jP(Rm3;s!vXH3)q1j}-C`LT^d_D16z15)DI5jA^7O5tQROKUqV!TO%q;ZK+ zv>IMzfKMBGgA`OCQkOaIU-k3scn+EP-BGD8*1Gce=zN49@g*8)<^ZR!2RfW08B8YU z4cKr*gOlKqOqq|QBG@({Un9=2ars)O$<{Y_5-a!v5ia7wMJ;^97e9W=7mv>oU&8n> zN#S(sXbQ3eII(avrl+T$_08)yw8UeZ6SL9PqjA0-2vfA|9L&Jt@h_3zqn?e$tH{(O zKZoQ*Jp4k6LWF9`NbGA!XVoaxKS3S8s0i!S_|z&?C`#b^nsJ&CYZ)M8$lkLFK4xs_ z@g?IhPPU$Z2`=ygUWPcXxoi>F65K8pyzwRwCsym>XEnzXT*i>u!F|3SV|nyVffbl7 ztn8Hb0Zklq?Zd30Z;mt{qgix@XSKxN#h^*3`(&$pa=g>H?_E|25dYbkQ-S;8U}qX+ ze(oi>P)@87M4_%V1b-@v!1EKy6f`b8lz<61@CZMcoK_V}#INn_SB{V3Q0G}<5FLYf z1$pdCR2Vp`?@pQ!_Z(@&lnuYcYn*1mbgZ_BzzwwoqvN|;U(bW;fgEYs0tYjK9!Q>K z1V!OMhfrXv6Xc0l5aKQn0)u5S{%vAN)MIL!cjZW6)A7-HBF|)XT0kL*ZS(p}!5<1t z#Gn$;l(Jt@*xgB9lo+jOIDh$TtQN-*e?xwWdN=HHX;f@Odn63`g%@2227_`8HZ#evsxsI9nC zLYRwdeY~ez1kKfhB&8HV=x0!xsO(p~FC{HzJhT|*=SBX8333BJ~SMMLKRC3KvzK#q%{`~lxhV!<9xjH15e*P z{oB8otxC@2egzwUOYt~T+al`vPdj`)&tnvogInQx0j}UCIKD`Zb#NRb#|k)3kz)xQ z=g6@Lj&GA=E*zK0kpRa(ki+l~J#VqlQvXuqq@MULb!cB-&o5QJ@GnK@VBooaZywu^ zwY16<&n8DR#k0w%fW{OE(U_v2c~Y&ev@-(-t;BdiXh%ES#_)ri2j~5k#%NJN^=7Qzn5xBm1InM~EzW&za&((^INWs&reZvG+-%t4=r%ss(du;Kx4FAJrnuuk zho`+guG-lK3tju1?%0aDb{D?pa;Odxz-`{_tW#YJN|B#i=+DwIo~mmo4$z9^#A=~= zs2-=;(rt2`qjgEU3|&Z9o3qtfUnDP%ioG8iijA$Et|mIK5;ZQ8bJcL@L~1V)%dH($ zfINA>s~IYcs447<-HTU&@4F9l0!h@rMXgZ#bh+{LbOYk9lIt4}G`2&xQjL?JuM#Bv zluGAoMaP@kt)x6j&&4|GKr45Q8X~XV0Ww4R6jhTwcx|}7foi_b2|_sKZdZp~Y_IQh zK#vve8vV{uetw!>&oX;!TSxn{W%tSQ(nfNswDz<)>l&dcD&B#eg;wc${0e(VyOuzn zOE_;Wf%_sUY_&td*y*MsEGNxgVuA(%67L?Po$!LStBt_KwRva}yhScr%!+-rDroL~ z(7zps`)K&3@Ylob;lXfUI6wS04iDATT;V6fe;Ym>UIYKL;el{4T%gza0lQ1@C{!4< zF(|;*dZXJANF_ynp&n(jA*!1i+lWS<9?^4IBccGw+F^u9Og-l~ZcDKr&Y zdO{s4%9Ml~n&;pOPkx3TQ>eb8h})fxPU2v6aJ=|?0Ehr;f1B;D4!lslOz@*90KJy% z*|_m89i!YXdP;QIT0N}VPEDe5n$rQ3e4;9%fGW3o8t{OY-0Tv{;~O`w)?@Cpdz>;( z^UKPpWn1<;(E}r#?Lm_5hn#3%O3pJ`mM!*1H?ca=OYOjJtDa&Flz^e4?LGi4YVrI$ zzM?LfI>siutGylf3uZ&|6zf=(c1nFp3NosR18{nzo$ei=i>gVGl6Ae{QdBl)iAaIt zx76;bbKpHOkMr>k(jS-iH#H zt>$*{f=5<+t5AR!9HEv2ZCl@gSL$W0Ge(C)d_l(?B5a>?E2!7lO4k$A7sZ#Ugd{Kc zsy>Px>cJ*uYBWc)$0a-JBbD`lcU@bFU$s6NX?(<~0a!1C(ArlsmK`97yV21MRq{@} zN-x_{;(d;N7%Cpr2c{eNXej+M$5%79*E?iAS!n zyYbW$w9?%hHFbDVU6hdOEO&UoU+8WcjRZ5p&;rUL#3llv%kF7(wdUt+!<$e-0tzW4 zI7oItkal=FAoigtkBlfE#5vU1-heJnE!zs7LHfv#>%CsCXmxIOcGY3@L&7w?YAVX2=E`6+9`IR}bUCYi@3+g)y4eQ{vK#fXz{%K=wv^`X8|=W6a~ zY1LX`zvwRQhg_vmDS%t{(@=}DPGd|o3<6pxUkcO;k_UZ%*a^U3^1zf-Ac>=}6-uyDCR6#RaKK zwY1b+kpinRVZwpr(u|0!b7b6G*^K81r`1zL+d<F<1 z)lh&nC_wqx_32lmP42F~W+ z-baE1GtUlpYkq!#D&fdnMUh*a*q8m%K}qD2*w zkjx;mD1!DvlmRp)Iw^ZYN1yXZ}2dcsd}>R6h`w zHFL1%WPnHp@$?89B3Z$4F2m^5js|zu=g)1_j0%ZjX>*-?=y0%agufk`>i%{3@529x z$?D|97e-dX$y50N735t-)v&{(32c4tg626u#(Tt20D6iZK=Yny#5Cno4_c@WilY2r zq^Zj<`R>4U^1%?dFsH;1X_Hocabk&Q35>vUZPkM;T_mL_;Mf6Pp z_IBtfQ<$F_5=bu!DrG|T>>rThv?amVYe}usmjr1~C(lnvi7_u^>@gY-;uBJ6La<0I z37&>HNRW}x7~mGigWC-7ak3RLz|vcj0AKz3Oa@qlveS~_F6@+$1klC< zRRY{*fRD3fZ!vFTfaY6cfF8@tAwZP?F^~Y@0Ac`D0!;1--NKCUwgkAvw)#lW-p3Gd zf7vV&Kx_&y>0K= z6BZ@Co??tF35>KaJY`$ZI&)w6ySK70{PyY9(15wXqNX-n;WFhKmsO&DMYjKKeP4DeMn*{-tc)rI+y zlL_|rnSW(p#Xa`fS>xhttij#}(@bHFPg|3Hxb=A-3@|r`7$9;oBqYF1cZKL==oaPx zXfl!jU;up?7~z1oPdD6%0nYpsjPZRYCGEydma3|Xs%lkmL85&V@L^`K;BXn@tmeZd J*rzSE{|lp#G*|!t literal 0 HcmV?d00001 diff --git a/SAGE/FILES/ucsd.sim b/SAGE/FILES/ucsd.sim new file mode 100644 index 00000000..114647a6 --- /dev/null +++ b/SAGE/FILES/ucsd.sim @@ -0,0 +1,15 @@ +set cpu debug=int +set cpu debug=exc +set cpu 512k +set debug debug.log +break fe1ad6 + +set fd debug=verbose +set fd debug=cmd +;set fd debug=seek +;set fd debug=irq +;set fd debug=state +set fd debug=status +set fd debug=rddata +att fd0 system.imd +boot cpu diff --git a/SAGE/FILES/v2-04.hex b/SAGE/FILES/v2-04.hex new file mode 100644 index 00000000..57b6a077 --- /dev/null +++ b/SAGE/FILES/v2-04.hex @@ -0,0 +1,514 @@ +S00C000076322D30342E68657853 +S224FE00000000040000FE0044600004F8600004EC600009646000044E600003F8600003D0DE +S224FE0020600003FE60000404600029A8600029AA6000033AF58A0204600002FC6000344C30 +S224FE0040600037144E704FF8040011FC0092C02711FC0038C02511FC0092C06711FC003135 +S224FE0060C065700072FF343C42D741F8C0FE3080308151CAFFFA43F8000045F87FFE343C1D +S224FE0080344230113010301251CAFFF8343C06C541F8C00172084A10D0FC001051C9FFF81C +S224FE00A051CAFFEE43FA0006600002C649FA2D0B4BFA000660002C0441FA00362278000861 +S224FE00C021C80008B1F80008662E11FC0090C58711FC0090C50711FC0000C58311FC00CD66 +S224FE00E0C50311FC0000C58511FC0005C50560044FF8040021C900081038C0216B64E6087B +S224FE010002400006303B00064EFB000200180024001800084238010449FA2DB74BFA085831 +S224FE012060002B9849FA2DBB4BFA003860002B8C49FA2DBE4BFA000660002B8074FF720071 +S224FE014070001038C023460008000002670272FFE308024000064840204030C151CAFFFCB5 +S224FE016060DA41FAFE9C343C1FFF42004201D018D21851CAFFFA4A00671449FA2D394BFAC1 +S224FE0180000660002B364A38C0216A0001004A01671449FA2D2F4BFA000660002B1E4A38EC +S224FE01A0C0216A0000E811FC0001C067307C000072014841323CFFFE224145FA00066000B9 +S224FE01C02A3A664647FA000C21CB000808F80002C5034FF8040047FA002421CB00087202E9 +S224FE01E04841D3C1303CA5A53280B051660E46403280B05166064640D3C160EC4FF80400AC +S224FE020093C145FA0006600029F267084A38C0216A00007A303C00BF41F80100429851C8B9 +S224FE0220FFFC548921C901004E6121C9014A21C9014243FA000C21C9000808B80002C50322 +S224FE02404FF804006100041C11FC0000C0674A38C0216B1611FC0007C06770FF51C8FFFEF7 +S224FE026011FC0006C0676000FEFA6100018241FA2B2B6100019E30380100ED486100021C57 +S224FE0280704B610001E06100016660044E7227007228740208380006C0216702725011C216 +S224FE02A001C611C101C7423801CA11C201CE11C101CF11FC000101D27206610000FE42381F +S224FE02C001BA2278000841FA003021C8000811FC00AAC58311FC0005C5050C3800AAC58351 +S224FE02E0661611FC0000C58350F801BA31FC027001F011FC008001F54FF8040021C90008D7 +S224FE03001038C021C07C0030670CB07C00206724B07C0010672621F80100014A21F80100B3 +S224FE0320014231FC2700014E41FA004221C801466000064442676100280860DA4A3801BACC +S224FE034067D4203801004840720C92406F12C2FC000A5341303C6F9A51C8FFFE51C9FFF6B7 +S224FE0360426770012F006100356A60AA4E4F60FC41F8C0734200108011FC0076C007E018AE +S224FE038010801238C021E0181080706E080100036702707E10BC00400241000711FB101450 +S224FE03A0C003108011FC0000C003E01810BC00254ED1028040201008040241F8C033424061 +S224FE03C0108011FC00B6C007E018108011FB10E4C005E018108011C0C005E01810BC004091 +S224FE03E0E01810BC004EE01810BC00274E752F00700D6170700A616C4200616861666164DF +S224FE040061626160201F4E752F0070206156201F4E753F0010186704614A60F8301F4E75F4 +S224FE0420E9186126E91861224E752F017203E958611851C9FFFA221F4E752F017207E9984A +S224FE0440610851C9FFFA221F4E753F000200000FB03C0009630406000007060000306104C5 +S224FE0460301F4E754A380104662C3F01323CFFFF08380002C07356C9FFF8670811C0C071A6 +S224FE0480321F4E7548E7C0C043FA00066000FEE24CDF030360D64E4A4E7548E7F0007200C0 +S224FE04A032007400343C2710420382C266044A0367061001619450C34241484184FC000A90 +S224FE04C066E84CDF000F4E754A38010466282F011238C0730801000167F61038C071020129 +S224FE04E000386604221F4E7511FC0035C07370076100FF7260DA4E494E7508380001C0738D +S224FE05004E7561C4088000070C0000616D0A0C00007A6E04088000054E7521C001067002DB +S224FE0520604E21C001067004604621C001067006603E21C001067008603621C00106700AB4 +S224FE0540602E21C00106700C602621C00106700E601E21C001067010601621C001067012F4 +S224FE0560600E21C001067014600621C00106701648F87FFE010A4E6821C8014A2A00701668 +S224FE0580BA806270BA3C00046206381F261F341F31DF014E21DF014621CF01424FF80400D7 +S224FE05A00C0500146700199A6E0018B80C050012661E11FC0001C06711FC0000C0674A3829 +S224FE05C001BA670C08F80002C50308B80002C50370FFE01851C8FFFC46FC270011FC00386D +S224FE05E0C02508B8000601504238010443FA000A6000FD7E428560A849FA27164BFA0006C1 +S224FE0600600026B849FA2990D8F450004BFA000460EE49FA29964BFA000460E420380146BC +S224FE0620610017F66100FDC80C0500046200034841FA29FE6100FDDC30046100FDEE41FA0A +S224FE064029FB6100FDCE20036100FDF041FA29F86100FDC030026100FDD26100FD926000AA +S224FE0660031641F8000843FA268045FAF9944280301967186B06D08A20C060F24241120052 +S224FE06803019D08A20C051C9FFFC60E24E75225F02800000000FD080D089C1893251D3C09F +S224FE06A04ED148E780B02478000847FA001421CB0008101121CA00084CDF0D01B0004E750C +S224FE06C0508F321F46C141FA26586100FD46588F20096100174421CA00084CDF0D0100008B +S224FE06E000014E7508380001C0734E752F00703A6100FD72201F6100FD104E752F00702C18 +S224FE07006100FD62201F4E752F0070076100FD56201F4E75C03C007F0C0000206D060C0092 +S224FE0720007E6D02702E4E752F092F01224842816100FDD00C00001B6700006E0C0000128B +S224FE0740670000680C00000D674A0C000008661AB3C867DC6100FD0E6100FCAE6100FD06D0 +S224FE076051C9FFF25389528260C40C00007F6614B3C867BC61585389528210116100FCE627 +S224FE0780544160AC611A428153826B0812C06100FCD4609C610A421912C0221F225F4E7513 +S224FE07A08281673C4281602C224842812F0870236100FCB26100FC38B3C86700000C101890 +S224FE07C06100FCA2B3C866F6205F6000FF648281660E72013F00103C005C6100FC88301FF9 +S224FE07E04E75428010188000660253884E7561F28000670A0C00002067040C00002C4E75ED +S224FE080061E067080C00002067F653884E7561D2244942411219B011568957C9FFFA660091 +S224FE082001481021E1581021D4C04ED248E7180042817801E89C61B667540C00002F660E95 +S224FE0840383C33334844383C333461A26740040000306D380C0000096F144A04662E040053 +S224FE086000070C00000A6D240C00000F6E1E26014A046708E799E39BD2836002E999B684CB +S224FE0880640AD280848267C2B48164BE72FFC1414CDF00184E752F036100FF66428395CA7A +S224FE08A06100FF4C670000480C00002367360C0000246708347801525388602A6100FF307B +S224FE08C06700002C0400003065240C000003641E244093C96100FF18670000180C00002B46 +S224FE08E0660C6002528342826100FF42670257832240D5CAD5CAD4FC0154D3D2201FC143F6 +S224FE090080804E752F0242826100FEF6670000520C000027671C0C00002E674624016100EB +S224FE0920FF0C6B06241F92814E75241F428153814E756100FEAE6100FEAA670000200C00D9 +S224FE094000276712E19A4A0266E0D480828167E6B28264E260D46100FE9666CEC14260C445 +S224FE09607001241F22004E756100FA9E703F6100FAF46100FD944FF8040042B801546100F7 +S224FE0980FA6E0838000601506700000870546100FAD436380152670C70246100FAC81003F5 +S224FE09A06100FAA8703E6100FABC742841F801886100FD7643FA1A686100FE5460B843FA73 +S224FE09C01A8C6000FE4A6100FE382838017E387801821010670E6100FEBE668C2809284AD6 +S224FE09E031CA01826100FE1A327C01001010670A6100FEA46B00FF726704D3C45389528925 +S224FE0A0021C9017E2A09611C6718280B6100FCD667F46100FAEE0C00001367F60C000003A6 +S224FE0A2066E44E756100F9C820046100FA0EB8FC0154670C6100F9D2200490946100F9FCB1 +S224FE0A406100FCAA760F2644C7496100FC56C7496600FF16101B6100F9C808030000660091 +S224FE0A6000066100F9A4BA8B57CBFFDE6100F99A760F2644101B6100FC9C6100F9E8BA8B9D +S224FE0A8057CBFFF24E7543F80154323C20247402601443F80126323C2041600843F8010676 +S224FE0AA0323C204474076100FD3A671A903C00306B00FEB678001800B8026E00FEAC6122CD +S224FE0AC06100F92C4E754284611852846100F93A0C04000466046100F9306130B8026DEA77 +S224FE0AE04E756100F90A42833001E0880C000020670000066100F96E10016100F968868331 +S224FE0B00660610046100F9446100FBE22004E5800280000000FF4A836A4230310000610031 +S224FE0B20F90A0C415352663C48E7704036006100F8D870286100F92E428243FA18D214199D +S224FE0B40670E1019E57B650270206100F91860EE4CDF020E70296100F90C600820310000EA +S224FE0B606100F8D84E756100FC7A6600FDFC6100FF226100FF2861186108614861046134B9 +S224FE0B804E756100F8846100F8804E756000F86061FA103C00506100F8CC103C0043610052 +S224FE0BA0F8C46100FB4820380146307801526000126861D876FF43F8014E223C0000535223 +S224FE0BC0600E61C843F8014A223C00005553760142846100FF144E757C0060000C2C7000F7 +S224FE0BE072104A10670A6100FC446B00FD7C12006100000E5200B0016DF66100F7F24E752C +S224FE0C006100F7EC41FA00206100F8086100F83C41FA001B3438017C0102670441FA001B39 +S224FE0C206100F7F04E755452415020230020204E6F207472616365200020205472616365B1 +S224FE0C4020202020000043FA18A26000FBC26100FCB46600FD142A006100FCAA6600FD0AD7 +S224FE0C602800D0856100F7882200103C002B614822059284103C002D613E2205C2C4103C84 +S224FE0C80002A61344A446746220582C4103C002F61186132103C00726100F7CA103C0065D2 +S224FE0CA06100F7C2103C006D48416100F7B86100FA3C30016000F7746100F7AA6100FA2EA7 +S224FE0CC020016100F7766100F7406000F73C4E757C106100FB2C2838017E387801821010EE +S224FE0CE067106100FBB26600FC802809284A31CA01826100FB0C327C00141010670C7CFF31 +S224FE0D006100FB946B00FC6267062C096B00FC5A52892A092C446100F6D6200E6100F71C67 +S224FE0D20B8FC0154670C6100F6E0200E90946100F70A6100F9B848E7060061304CDF0060E6 +S224FE0D4021CE017E4A866B065386671E2A0EBA8E650000186100F98E67BC6100F7A60C0071 +S224FE0D60001367F60C00000366AC4E75300EE2086500FBF67C07610006F03E00E9586100E4 +S224FE0D80F90E0020010001080104014003880428046E0512060606CC053A05A6060606526D +S224FE0DA006CC08070008664E43FA176C3207E049E249610006F659016F5E040100106758EE +S224FE0DC0580166064245611C60063A07610006C4610006FC6100070216076100F9206100B0 +S224FE0DE007364E75428543FA171E3207EC5902410003600006B63007020000380C00000852 +S224FE0E0067367042610006AE61DA610006C23607EC5B6100072860C030070200003F0C004F +S224FE0E20003C66A64282263A084C080700066704263A0846600000F2203A082A6100067606 +S224FE0E407050610006703A07E35D08C500066100064E6100067A08070007670A61126100B3 +S224FE0E60F89C61144E7561106100F89261024E753607EC5B600006C6360708C30005600004 +S224FE0E800696428560067A4060027AFF203A07D6610006223007EC580200000753006606EE +S224FE0EA0704161000610610005F6610006223607610006646100F8463607EC5B610006642C +S224FE0EC04E7508070008660002043007EF580240000732006100F7B8001000320014001C4E +S224FE0EE0007C011800B201527401600A263A0786428260064282263A0780283A07683007AC +S224FE0F00020000C00C0000C0671843FA16366100059A3A076100057C610005B4610005F69F +S224FE0F204E7520046100058E7A40610005A228034A026614610005DE4A84670A6100F7BE87 +S224FE0F402004610005704E7561F66100F7B0610005C44E753207E6590241000708070007AD +S224FE0F606624203A071808070006670C203A07124A016604203A070E6100053A61000550F6 +S224FE0F80610005924E754A016756203A06D861000524704D3A07E35D08C50006610005163C +S224FE0FA0610004FC610005287A40610004BC31C001880807000A661E6100000C6100F73E4A +S224FE0FC0610005524E7570236100F49A303801886100F4584E7561E86100F72261E84E75E1 +S224FE0FE0203A06AA08070006678E203A069C60880C0700FC6612203A0698610004B8203A00 +S224FE10000694610004B04E753A07024500C00C4500C0670A3005E2588A406000FEEE283AAA +S224FE10200678428242836000FED608070007660000983207E6590201000714010C010006B4 +S224FE104067520C0100036F14263A065E024200010247000F004700C86000FEA043FA14FC86 +S224FE10606100044861000468E20A660E70236100F3F430076100F3D44E753607E75B6100B6 +S224FE108004C008070003660A6100F6727A40610004484E75320702410007340143FA14CC3F +S224FE10A0610004080C020002660A610004227A406100042670544A02670870560C0200061B +S224FE10C066046100F3A04E754280600270023207EC59C27C0001D2407A4043FA14AE61006D +S224FE10E003CA610003EA6100042C0807000867186100F60A3607EF5B7020080700066702B5 +S224FE11007028B143610004104E753207020100C00C0100C0673E203A058808070008670431 +S224FE1120203A05826100038E3A07610003666100039E70236100F32E3007EF580200000730 +S224FE11404A00660270086100F3026100F5B0610003C44E7570533807020400380C040008C3 +S224FE1160660808870003303C4442611C610003A60C04000866106100F5847A40610003600D +S224FE11803440610003FA4E7543FA1440610003263207EE5902810000001ED3C142803011E4 +S224FE11A061000312610003284E757A40320702410F000C410100670A704243FA13EE61CC46 +S224FE11C0600C203A04D8610002EC6100030230074A0067106100F24AE158E040548E61087C +S224FE11E0558E4E75610002F83440610003924E750807000866000258203A046A610002B606 +S224FE12007051610002B0610002C670236100F25610076100F20C6100F4E43607EC5B6100FE +S224FE1220031C4E753A0743FA13C2612208070008670C61106100F4C6610002DA4E7561F884 +S224FE12406100F4BA3607EC5B610002F24E753207E95902410007610002524A45670461000B +S224FE126002326100026A4E75428560023A0743FA139A61DA3607E75B61086100F48036071E +S224FE1280EC5B080700036606610002B24E75610002C04E753007024001F00C40010067C8E2 +S224FE12A0EC4872045740670859406600FF787205088700068E7C41006000FE1E3007EC58B7 +S224FE12C00240000755406F00FF5C43FA133E7A4053406706E35D594066166100FF72610093 +S224FE12E002346100F4183607EC5B610002544E75044710003007024000380C400008660084 +S224FE1300FF24203A03A8610001AC3A0761000184610001BC3607E75B61086100F3E03607F6 +S224FE1320EC5B610002264E753007024001F878000C400140671078030C4001486708780230 +S224FE13400C4001886624203A0368610001686100017E3607EC5B61086100F3A23607E75B5A +S224FE1360E21C650001DC600001D4E8480C0000106700FEF67206E44857406700FF34720700 +S224FE1380594067F66000FE9E3007024000C00C4000C067123007024001300C40010067003C +S224FE13A0FECC6000FE803A07E25D43FA12563207E55902410001610000F2610000E26100AB +S224FE13C0010E610001506100F3343607EC5B610001704E7532073A07024500C00C4500C016 +S224FE13E06744E6596150610000AA610000E2360702430E00080700056708EC5B6100013E07 +S224FE1400601670236100F05E3003EF580200000F660270086100F0346100F2E23607E75B6D +S224FE14206100011A4E75EF59610C4285610000A0610000E24E750241000334070242010021 +S224FE1440EC5A824243FA11DC610000604E75702E61000062203A02126100005A6100007076 +S224FE146030076100EFC64E752F09224E6100F2346600F4F6301E225F4E752F09224E61003F +S224FE1480F2226600F4E454896100F218201E225F4E75024500C00C05008066027AC03205BC +S224FE14A0EC590201000343FA108AE519024100FF203110002F017203E1984A00670000088F +S224FE14C06100EFA2530651C9FFF0221F4E756100EF3851CEFFFA4E7570236100EF883205AC +S224FE14E0EC59C27C0003B23C000267206100FF7A53016C066100EF2A4E756100EF2E53013D +S224FE15006D086100FF646100EF224E75703F6100EF544E7536071003E60802000007E70B0B +S224FE152086001003024000076100F164001000140018001E00240076008000C672446014AC +S224FE154072416010223A0112600A223A01106004223A010E7403E1991001671C6100EF0675 +S224FE15600C00004467060C000041660C3003E618020000076100EED451CAFFDC4E75705B0B +S224FE15806100EEE2D5CE200A558030780152D1C8D1C890A801546100EEA2705D6100EEC6E8 +S224FE15A04E756100FEC46100EE8260986100FEBA38006100EE6C70286100EEAA6182610098 +S224FE15C0F13C3604EF5B0804000F66066100FF6E60046100FF6C702E6100EE8A7057080488 +S224FE15E0000B6702704C6100EE7C70296100EE764E75E61BC63C000710036100F0920012BA +S224FE1600001C0026003E00540010001000104E756100FE566100EE144E756100FE5E610007 +S224FE1620EE1A4E756100FE4234406100EDFE223A003C6100FF206100FF464E756100FE2A71 +S224FE164038006100EDDC203A00286100FE686000FF6E6100FE844E75284129002841292B1A +S224FE16602D2841294D4F5645574F5244285043292850430043435200535200004E42434402 +S224FE168050454100535741504558544C45585457494C4C4547414C005441530042535200E8 +S224FE16A0414444515355425155535000434D504D4558470043FA0DB56000F1546100F1D8FB +S224FE16C06600F2A660046100F0402809284A2A0454856100F3506100F01441F80188243C3F +S224FE16E0000000286100F042428110106716223C0000FFFF6100F20E6BCC6E0A134000010C +S224FE1700E080128054890C01002E66BE4E7543F80154323C202474037A01601643F80126C9 +S224FE1720323C2041600843F80106323C2044740842856100F0AE671A903C00306B00F22A15 +S224FE1740B0056B00F224B0026C00F21E4282610E4E75200561085280B0026DF84E7542832D +S224FE17602F023A0128002C00E5864A82660E6100F0904A10662260046100EF8E320561005E +S224FE1780EC6E6100F3646100EF64742841F801886100EF961010672042816100F1686BD8D5 +S224FE17A0660000160286000000FF86836A063380600060042380600032051004241F4E75DF +S224FE17C06100F0206600F1A26100FF526100FF586106611E610E4E7543F80146323C504397 +S224FE17E06000001843F8014E323C535276FF6000000C43F8014A323C555376014282428057 +S224FE18006100FF5E4E757CFF7A0142806100EFD467144486903C00306B00F14EB03C000190 +S224FE18206E00F1463A00360060046100EEDC3643D7CB284BD7CB4A866B0A675A6100EFC2B9 +S224FE18404A106614616A6100EEA4742841F801886100EED66100EFAA101067320C00002E83 +S224FE1860660607B8015060266100F02C6BBC6100EF90243C0000FFFF6100EFB26BAC426CBA +S224FE188001723940017607F80150274901605243B6456F9A4E75611860F4427265616B7043 +S224FE18A06F696E742000496E61637469766500006100EB3C41FAFFE46100EB58100361005A +S224FE18C0EB8A6100EE2807380150660A41FAFFD86100EB404E75202B01606100EB5E610001 +S224FE18E0EB2870286100EB7E302C01766100EB3C6100EE0A302C01726100EB307029610077 +S224FE1900EB644E75760078104A10671C6100EF1E6B00F056160018006100EEE60C000054F5 +S224FE192067460C00004E67386100EAC441FA004C6100EAE010036100F2C86100EDB0742875 +S224FE194041F801886100EDE26100EEB667240C00005467140C00004E67066100EDAC60C83E +S224FE19603238017C078160063238017C07C131C1017C5203B6046DBC4E752854297261639B +S224FE198065206F7220284E296F2074726163650043FA0AF86000EE78243C000000FF616C50 +S224FE19A06600EFC61A00E1401005600C243C0000FFFF61586600EFB23A00484030056008D0 +S224FE19C0428261486600EFA241FA14AA6100EA4461000942E19812C0538466F821CA0008F9 +S224FE19E04E7548E7F0006100EEAE661A28096100EEA62449C9896B0E6E0698895284600458 +S224FE1A00D5C9538A42804CDF000F4E7561D4660622026100EEF04E7561F266142C009887AA +S224FE1A206D00EF4670FF4A10670A22026100EED66600EF3641FA15266100E9D8610008D61C +S224FE1A404E7543FA0AB46000EDC6243C000000FF7E0161C41219C200B206670453846CF468 +S224FE1A606100009660F6243C0000FFFF7E0261A81219E1991211C240B246670453846CF0CF +S224FE1A806100007660F642827E04618C2649548B1219E1991211E199121BE1991213C28045 +S224FE1AA0B286670453846CE86100004E60F66100FF326600EEB448E708606100FF26660033 +S224FE1AC0EEA82A492C044CDF0610C34D41FA148E6100E9406100083E9C8465182849528982 +S224FE1AE02E04264D121CB21B6606538766F6610853866CE861024E7148E7FE7E663E41FA5F +S224FE1B00146B6100E90E538920096100030C6100EBDC7203E198101951C9FFFA6100E91CBE +S224FE1B2041FA14556100E8EC6100E9D80C00004366126100E9304CDF7E7F4E7541FA140D1F +S224FE1B406100E8D04CDF7E7F21CA00086000EE286100E8B66100E8B243FA093A6000ECB062 +S224FE1B6043FA093C6000ECA86100ED2C6600EDFA20096100E8C66100EB7410116100E8A221 +S224FE1B804E756100ED126600EDE03C09080600006600EDD620096100E8A26100EB5030117F +S224FE1BA06100E8884E7543FA08FD6000EC626100ECE66600EDB4223C000000FF6100ED4673 +S224FE1BC06600EDA612804E756100ECCC6600ED9A3C09080600006600ED90223C0000FFFF1C +S224FE1BE06100ED226600ED8232804E756100EC1274076100EC386B00ED7022006000E7BCDC +S224FE1C0043FA08AA6000EC086100006443FA07B654894A516700ED523014C059B05966F0E5 +S224FE1C20D8D121CC016808F80002015008F800040150600261387401610001BA426A01724F +S224FE1C4051CAFFF66002612608B80005015008F80006015008F80007015010380150020028 +S224FE1C600007660608B800060150600001506100EB901010670C6100EC1E6600ECEC21C924 +S224FE1C80014661066100E7684E752C380146284608060000671241FA001C6100E776200645 +S224FE1CA0610001766000ECD0224C6100E9F66600ECB84E75496C6C6567616C2070726F6720 +S224FE1CC072616D20737461727420616464726573733A20006100E71843FA07DC6000EB3018 +S224FE1CE0083800060150670461A0604E4E7508F8000501506040619208B8000301500C1054 +S224FE1D000049660808F80003015052887005083800050150660270104A10670E747F6100C5 +S224FE1D20EAE06100EB086B00EC406100E6C2600C08B8000501506100FF36700111C0015136 +S224FE1D4008F80006015008B80007015030140240FFF00C404E406664301C0240000F3C38E7 +S224FE1D60017C41FA002C0106661C21CC016808F80007015008F80002015008B800040150DD +S224FE1D80673A41FA00216100E68A6100E662602C2A2A2A2054726163696E67205452415080 +S224FE1DA0202A2A2A002A2A2A204753207465726D696E61746564202A2A2A00002878014678 +S224FE1DC03C38014E08380006015066060886000F600408C6000F2078014A4E602E780142E2 +S224FE1DE02F0C3F064CF87FFF01064E7308B8000601504E7542803242D3C92449D3C90538E4 +S224FE1E000150670E226901606100E8986600000652804E7553804E756100E6203078015233 +S224FE1E20D0C8D0C84A780152672E6100E5DC2F0070286100E63070246100E62A30380152A5 +S224FE1E406100E6086100E8A6201F90A801546100E5EA70296100E60E4E7554726163653A6B +S224FE1E6020000838000601506700FF52083800070150672608B80006015074006100FF766A +S224FE1E806B00EAE667083551016C32BC4E4F52420C42000366E66000FF2441FAFFBE203813 +S224FE1EA0014621C0017E6100E56A28406100FF6AD0FC015431C801826100E832224C6100AF +S224FE1EC0E7E2661430116100E5626100E53C6100E5382C496100EE96083800050150670A72 +S224FE1EE041F8018842106100EC7E533801516F1E083800030150671A6100E7EA6714610073 +S224FE1F00E6020C00001367F60C00000366046000EA666100E4DA6000FE280D0A556E6578D5 +S224FE1F2070656374656420627265616B20706F696E743A2000000D0A427265616B3A20000A +S224FE1F4042854286283801465584760041FAFFCC74026100FEA06F32B3C4661E41FAFFD8D0 +S224FE1F6076020C02000267123A2A01723C2A0176BC4567065245354501720C514E4F670650 +S224FE1F8005B80150600432AA016C51CAFFC60838000201506728B8B80168662208B800025E +S224FE1FA0015008B800040150661421C4014608F80006015008B8000701506000FEA6203847 +S224FE1FC00146908321C00146BC456600FC824A436600FED028440C544E4F6600FEC620041F +S224FE1FE06000FEC043FA04E46000E82411FC000101BB6004423801BB41FA0E8E6100E4149B +S224FE20006076428574016100E8246B00E95C3C00243C0000FFFF6100E8146B00E94C3F00B8 +S224FE20206100E8746600E9422F0942826100E7FE6B00E9362F003F064A85670E41FA0E572B +S224FE20406100E3D061000992600C41FA0E3C6100E3C26100097E6700000E41FA000C610071 +S224FE2060E3B26100E3BC4E750D0A4469736B206572726F723A20000061740C000051670026 +S224FE208000C00C00005366F0420561621E00610000BC1C0153064281610000B2610000AE28 +S224FE20A026410C070030660E4A0667066100009E60F6617460C20C0700326614220B6100A9 +S224FE20C0008C26414A0667EA6100008216C160F40C07003167EE0C07003966644A06666096 +S224FE20E0614641FA0C4F6100E32A6000E88A4A3801BB672408380001C033670A1038C031B9 +S224FE2100088000074E756100E3F267E26100E3F40C00005166D84E756100E3AE0C00000D4A +S224FE21206700E2CC6000E33E6122460566024E75588F41FA0C216100E2DA6000E83A508F40 +S224FE214041FA0BFD6100E2CC6000E82C61086106DA0153064E7561960C0000306DE00C0063 +S224FE216000396E0A04000030E989D2004E750C0000416DCA0C0000466EC45F0060E643FA86 +S224FE218003436000E68A7A016000FE7A6000E7E843FA03426000E678202053797374656D9F +S224FE21A0207265696E697469616C697A696E672E2E2E2E0046FC270011FC0025C07342381A +S224FE21C0010441FAFFD46100E24A70FF51C8FFFE6000DE724280428710100C0000526606B2 +S224FE21E03E3C010052881010670A74016100E63E6B00E77680473F00610009464E754A3839 +S224FE220001BA6700E764428042877C0110100C00005266063E3C010052881010675C0C0018 +S224FE222000206714040000306D00E73E0C0000036E00E7368E0052886100E5C64A00673A41 +S224FE22400C0000236600001652884A10672C740F6100E5DA6B00E7123C00601E740743F892 +S224FE226001F62C09429142A90004422900086100E572670612C051CAFFF63F072F06610017 +S224FE228016524E754E7574186100E16451CAFFFA4E7543FAE2D621C9002443FAE2C621C972 +S224FE22A000BC4E7542801010670A74026100E57E6B00E6B631C00152E540D07C015431C00D +S224FE22C001824E756100E5D06600E69E28096100E5C66B00E694C98966049889600253847D +S224FE22E06500E68626496100E5AE6600E67C41FA0BB26100E11E7201B7C96406D3C4D7C4F8 +S224FE230072FF61101293D3C1D7C153846CF621CA00084E752478000849FA000821CC000834 +S224FE23204E7541FA09FC6100E0EA548F201F6100FAE821CA00086000E63E43FA01B560003D +S224FE2340E4CE3F3C00016002426774016100E4DE6B00E6163F00243C0000FFFF6100E4CE92 +S224FE23606B00E6063F00427801CC427801D411FC000101DB3F172F3C000004002F3C000094 +S224FE238010003F2F000C4A6F001067066100064A60046100063E662A702E6100E0C808F889 +S224FE23A0000101DB6100E15467CA6100E11C11FC0007C02711FC0009C027423801DB5C8FDF +S224FE23C04E75705860D4F0FF60000004F00060000002F0F850C80004FFB84E900002FFB844 +S224FE23E04EA80004FFB84EB00004FFBF4EB80004FFBF4EB90006FFBF4EBA0004FFBF4EBB03 +S224FE24000004FFF04E400002000000000000015402530958014E015A0156014300000E4494 +S224FE2420A0E55396F24672F52486FE4DA6FE5032F754B6F847E2F75760FD4CC6FB00C2F8DD +S224FE24404972FD4128E8451CFF5824F6094D7AE5521AE74450E64146E65044E75366E7553F +S224FE246076E7243AE6428CE75492E7094D51F25255F344BBF241B1F2506DF35379F35587E3 +S224FE2480F324A3F2429BF35499F402420EF55722F54C36F50249CCF64F12F75358F7014266 +S224FE24A0CAF657E4F6014209F75723F7024F88F7439AF7535CF703427AF84536F95238F87D +S224FE24C04E40F80141C9FC46C3FC024122FB542AFB4638FB064600FD482AFD47B0FD53E036 +S224FE24E0FC568EE143B2FD54BEFD0144E6E75264E7015257FE5751FE034252F5576EF54C88 +S224FE25008EF54DB6F5005453540043484700434C5200534554004F524900414E44495355F5 +S224FE252042494144444942000000454F5249434D50492E4200002E5700002E3F00002E4C85 +S224FE254000004E454758434C52004E4547004E4F54000000000054535400545241505452C2 +S224FE256041504C494E4B554E4C4B524553454E4F500053544F505254450034453734525488 +S224FE2580530054524150525452004A5352004A4D500043484B004C45410044495655444973 +S224FE25A056534D554C554D554C535241460048494C53434343534E45455156435653504CBF +S224FE25C04D4947454C5447544C455400460048494C53434343534E45455156435653504C1D +S224FE25E04D4947454C5447544C454F52000053554200454F5200434D5000414E4400414441 +S224FE260044005355424141444441534243445355425800000000434D504141424344414430 +S224FE26204458415352004C535200524F5852524F520041534C004C534C00524F584C524F35 +S224FE26404C0048E760401219143C00AD1038C0510800000756CAFFF6671A080000066614AE +S224FE266011D9C053740951CAFFFE530166DA4CDF02064E7511FC000101C560F248E7604046 +S224FE268043FA09D461BC6624720243F801C36174661A123801C3020100C0670C080100065B +S224FE26A0670472036002720211C101C54CDF02064E7548E76040720743F801BC421161449B +S224FE26C0663C123801BC020100C0672E0801000667267205103801BDE208651E7206E4080C +S224FE26E065187207E40865127208E208650C7209E4086506720A6002720211C101C54CDFC2 +S224FE270002064E75343C10FE1038C0510800000756CAFFF6671608000006671012F8C053D1 +S224FE2720740951CAFFFE530166DA4E7511FC000101C54E752F017002484008380000C06386 +S224FE27406612538066F411FC0002C02711FC000401C5600C4A02662012F8C053534166D6D9 +S224FE276011FC0001C02711FC0000C0276100FF44221F4A3801C54E7511D9C053534166B6D0 +S224FE278060DE48E76040720143FA08C96100FEB466387402484208380000C063660C53824D +S224FE27A066F411FC000401C56020422C00036100FECC67160C38000301C5660E0C2C005043 +S224FE27C00001660651C9FFC270034CDF02064E7548E760407202103801D6B02C0003674C51 +S224FE27E043F801B032BC030F42290002137801D600036100FE4E6634740248420838000091 +S224FE2800C063660C538266F411FC000401C5601C6100FE6A660A197801D600034200600C4C +S224FE28206100FF60660651C9FFAE70034CDF02064E750000000000000000423801C54A2C83 +S224FE284000006700010C3F077E0111FC000FC02711FC0000C02711FC0003C02743FA07F119 +S224FE286011FC000EC0276100FDDA663870064A2C00046702540011C0C02711FC000AC0271A +S224FE288070FF51C8FFFE08380000C06367086100FDEC423801C56100FEEA671C0C38000341 +S224FE28A001C5670451CFFFA43E1F70014E7570080838000001DB667070044840538066FCF5 +S224FE28C0197CFFFF000243FA07906100FD7666D4343CFFFE1038C0510800000756CAFFF694 +S224FE28E0660E11FC0002C02711FC000401C560B86100FDC066AE103801C1B02C00026708F3 +S224FE29006DC41940000260BE0C000008671A0C00000967100C000010673E0C00000A662686 +S224FE29207418600674206002742A0C38000201C26614397C02000006194000021942000513 +S224FE29403E1F42004E7511FC000901C56000FF5A11FC000B01C54E750C38000101C266E688 +S224FE2960397C01000006742060CE4A2C0000675A4281323C020082EC00064282343801DEE9 +S224FE2980C4C14281122C000284C14241082C000000006604E24AE31111C101D711C201D6D2 +S224FE29A0B42C00016C244842122C00029202C2EC0006B2B801E06F04223801E0520211C271 +S224FE29C001D831C101DC42004E7511FC000B01C54E75423801DA600611FC000101DA225F81 +S224FE29E049F801C6301F670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C0006D8 +S224FE2A00660001146100FE34660000EA4AB801E0670000E211FC0003C0274A3801DA672C42 +S224FE2A2008380001C063670A11FC000C01C5600000C4102C0001E208B03801D66F0811FC51 +S224FE2A40000DC027600611FC000CC0276100FF1C660000A26100FD7A667443F801B0303C8B +S224FE2A6009454A3801DA6602524032C0103801D7E50812C012F801D612F801D712F801D837 +S224FE2A80302C0006E04812C012EC000212EC000512FC00FF43F801B06100FBA866302278A7 +S224FE2AA001E44281323801DC143801DA6100FC86661C303C032051C8FFFED3B801E493B838 +S224FE2AC001E082FC0200D37801DE6000FF400838000001DB663A5307671A103801C50C0018 +S224FE2AE000016700FF200C00000367080C0000046600FF1A0838000001DB661470074A2CBC +S224FE2B0000046702540011C0C02711FC000BC027103801C54E750838000101DB6600FEEEFA +S224FE2B2070064A2C00046702540011C0C02711FC000AC02770044840538066FC6000FECED2 +S224FE2B4011EF00040105422F0004427801CC427801D46100DB0E46FC270011FC0025C073C5 +S224FE2B60423801046100D88841FA02AB6100D8A46100D87C4267307C04002F082F083F2F63 +S224FE2B80000E6100FE4E6612307C04000C58424F663C0C584F5466364ED06100D852103824 +S224FE2BA001C50C000004673041FA01B96100D8646100D86E41FA01CA6100D858102C000495 +S224FE2BC06100D8886100D828205F548F4ED041FA01A16100D83E60DC41FA024F6100D834C7 +S224FE2BE06100D9206100D8080C0000516600FF5C41FA02646100D81C60BA26484280428116 +S224FE2C00468126804A93661C2681B293661C26CBB7C963EE2648B7D3660E588BB7C963F68D +S224FE2C2042804ED222006002220B201349FA015D4BFA0006600000842A0B4BFA000660001B +S224FE2C40008649FA01634BFA00066000006E2A004BFA00066000007049FA01524BFA000605 +S224FE2C60600000582A014BFA00066000005A49FA01F44BFA00066000004249FA01964BFA25 +S224FE2C8000066000003670014ED23E3CFFFF08380002C07356CFFFF8671411C6C0717E0EEC +S224FE2CA051CFFFFE08380002C07366024ED608780003C06551CFFFFE60F41C1C67064DFAEE +S224FE2CC0FFFA60C64ED57807E99D7C0FCC050C060009630406060007060600304DFA000432 +S224FE2CE060A851CCFFE44ED5051A0522052A80020532053A056A052A052A800B0542800614 +S224FE2D000552055A800E054A0562800F05420000070D0A455843455054494F4E3A20200099 +S224FE2D20070D0A204E4F204D656D6F72792061743A20000D0A4C6F616420446F6E65000789 +S224FE2D400D0A426164204C6F616420436861726163746572000742616420436865636B7386 +S224FE2D60756D00074472697665204572726F722000074E6F7420424F4F54204469736B00EC +S224FE2D80206F6E206472697665200007424144204D656D6F7279206174200052414D20530A +S224FE2DA0697A65203D2000206973200020696E7374656164206F6620000D0A5341474520BB +S224FE2DC0537461727475702054657374205B322E345D0D0A0A436F707972696768742031A6 +S224FE2DE039383320205361676520436F6D707574657220546563686E6F6C6F67790D0A4169 +S224FE2E006C6C205269676874732052657365727665640D0A00426F6F74696E672066726F96 +S224FE2E206D20466C6F7070790050757420696E20424F4F54206469736B20616E64207072E4 +S224FE2E406573732061206B6579202851202D207175697473290007426F6F742041626F7296 +S224FE2E60746564002028546573742041626F727465642900202046696C6C696E67206D6529 +S224FE2E806D6F72792E2E2E0020204C6F6164696E672E2E2E00202057726974696E672E2ED6 +S224FE2EA02E0020204D6F76696E67206D656D6F72792E2E2E000750524F4D20312042616431 +S224FE2EC00D0A000750524F4D2032204261640D0A00427970617373656420496E69740D0AFD +S224FE2EE0004C6F6F7065642054657374730D0A0052414D207772697465206C6F6F700D0A06 +S224FE2F0000426F6F74696E672066726F6D204861726420447269766500436F756C64206ECA +S224FE2F206F742066696E64200057616974696E6720666F7220447269766520526561647961 +S224FE2F40203C512D71756974733E000D0A4E6F204D6174636820666F756E6400202053650B +S224FE2F6061726368696E672E2E2E000D0A4D617463682061742000202D20436F6E74696EF7 +S224FE2F80756520736561726368202843203D20596573293F2000001F0027002B0033004712 +S224FE2FA00052005C006A007A008F204572726F722061742000556E6B6E6F776E0042757394 +S224FE2FC0004164647265737300496C6C6567616C20496E737472756374696F6E0041726990 +S224FE2FE074686D657469630050726976696C656765005265736572766564205452415000A2 +S224FE3000556E61737369676E6564205452415000556E61737369676E656420496E74657212 +S224FE3020727570740052414D205061726974790046756E6374696F6E3A2000202041636362 +S224FE30406573733A20002020496E73743A20000303D1070207000108024A00006100000CE7 +S224FE3060423801C250F801BB4E7548E71C0011FC0000C50708F80000C5037080740011C028 +S224FE3080C5C1723251C9FFFE7A046100004A967801F067226E1244430C4300026F18520208 +S224FE30A0671C530066D860160C4300026F085202670C520060EE51CDFFD250F801BB11C090 +S224FE30C001EF11FC0001C507303C174051C8FFFE4CDF00384E7511FC00B0C60711FC00008D +S224FE30E0C60511FC0000C605323C174051C9FFFE11FC0080C60776001638C605E15B1638DB +S224FE3100C605E15B444386FC000C31C301F24E75223801D67000103801B934004841B24094 +S224FE31206200006E484182C04841303801B0C4C0C0C142414841944048C231C001E820382E +S224FE314001DAB4806D0C944031C201EC31C001EA600831C201EA427801ECD27801BC6530CB +S224FE3160B27801BE622A43F8020030196708B2406504524160F431C101E27000103801B85A +S224FE318082C031C101E4484131C101E642004E7511FCFFF501C34E7511FCFFF201C34E759F +S224FE31A02F02343C07D008380001C58167305342672611FC000CC5877201610001204A3878 +S224FE31C001C3660000927014484008380000C58167D45380670260F270FD6000007611FC85 +S224FE31E0000DC587720A610000F44A3801C3660000667014484008380000C58167065380BE +S224FE320067D660F208380001C58167CC343C07D008380001C5816728534267BC11FC000C34 +S224FE3220C5877201610000B64A3801C366287014484008380000C58167D65380679A60F2EC +S224FE3240303C251C51C8FFFE4200427801C050F801C211C001C3241F4E7508380000C581BF +S224FE326066644A3801C2660A6100FF364A3801C366521038C585020000F8807801E611C0FC +S224FE3280C585323801C0927801E467326E0A444111FC000DC587600611FC000CC58761009F +S224FE32A0003C4A3801C3661C72FFE01908380000C58157C9FFF6660E31F801E401C070004F +S224FE32C011C001C34E7570FD60F61038C583020000F0803801BA11C0C5834E7548E7E000F0 +S224FE32E0E349534111FC0036C60711FC00B0C607303801B211C0C601E04811C0C601741872 +S224FE330051CAFFFE11C1C605E05911C1C605741851CAFFFE08B80000C503343C08EC51CA74 +S224FE3320FFFE720C484111FC0080C6071038C605E1581038C605E158670C6B0A538166E68C +S224FE334011FCFFFD01C308F80000C5034CDF00074E7543F8C7C1247801DE08F80007C503D3 +S224FE336011FC000FC50711FC000DC50711FC000CC5074A114A1111FC0003C78311FC004139 +S224FE3380C7851011E148101131C001C4343801E8670853424A1151CAFFFC343801EA534207 +S224FE33A014D151CAFFFC343801EC670853424A1151CAFFFC4A114A1108380000C78366108B +S224FE33C0303801C4B07801E2660E423801C34E7511FCFFF801C34E757400143801B880C2F7 +S224FE33E031C001C011FCFFF401C34E7511FC0002C50711FC0008C50708F80006C50308B847 +S224FE34000007C50311FC000DC50711FC000CC50711FC000EC50711FC0030C60711FC0070A1 +S224FE3420C607303801B411C0C601E04811C0C601303801B611C0C603E04811C0C60311FCBF +S224FE3440000BC50711FC000AC50708F80001C50370FF08380004C58156C8FFF8660611FC5F +S224FE3460FFFA01C308B80001C50311FC0008C50708F80006C50311FC0005C50708F800076F +S224FE3480C50311FC000FC5074E75225F21DF01DA21DF01DE21DF01D62F096100FE2E4A385D +S224FE34A001BB66046100FBB65D8F0C38008001F56700010811FC000A01EE423801C3083837 +S224FE34C00005C581660000684A3801BB66046100FB8C4AB801DA6700026A6100FC34660099 +S224FE34E000546100FD764A3801C3660000486100FEFC4A3801C36600003C6100FE5666004F +S224FE350000344A3801F5670C6A0000E8423801F5610001FA7000303801EAD1B801DE91B8F7 +S224FE352001DA80F801B048C0D1B801D6608611FCFFFC01C3533801EE6F00005A103801C31B +S224FE35400C00FFF967260C00FFF867200C00FFF7671A0C00FFFA67100C00FFF4660001E404 +S224FE35600C38000301EE6C04423801C2303CFFFF51C8FFFE523801FF103801FF0200001FF2 +S224FE3580670A0C38000501EE6600FF306100FADC6000FF284A3801F567186A00011C423834 +S224FE35A001F5102F000011C001EF11C0C5C1600001920C00FFF86600018A11FC000101F5D0 +S224FE35C01F7801EF000011FC000A01EF11F801EFC5C1422F00021F7C000100011F7C00022E +S224FE35E00003423801EE303C257F51C8FFFE6000FECA102F00010C0000016700007A0C00D4 +S224FE3600000367000086102F00026604502F000352001F4000020C0000056D00009C0C2F82 +S224FE362000020001671E103801EF1F400005902F00046500006AE208D02F000411C001EF23 +S224FE3640600000621F7801EF000411FC00F501EF1F7C00030001303C257F51C8FFFE1F7CC8 +S224FE366000020003422F000211F801EFC5C1423801EE6000FE460438000F01EF6404423826 +S224FE368001EF1F7C0002000160D40638000F01EF640450F801EF1F7C0004000160C011EFC8 +S224FE36A0000001EF11F801EFC5C150F801F511FC000A01EE6000FDFE532F0003670E423885 +S224FE36C001EE11F801EFC5C16000FDF0422F00021F7C00020003102F00010C0000026D223C +S224FE36E067180C0000036708533801EF67B060CE0438000A01EF65A660C4523801EF659E28 +S224FE370060BC0638000A01EF659460B248E75000303C258051C8FFFE11FC0000C507705008 +S224FE372051C8FFFE6100F9B031F801F201F011FC0001C507303C257F51C8FFFE4CDF000A24 +S224FE37404E751038C583020000F011C0C5835C8F103801C34E75225F261F321F700003C004 +S224FE376011C001BAE90911C101F42F09423801BB11FC000101B811FC001301B931FC0200C3 +S224FE378001B031FC004001B431FC004801B631FC177001B242780200427801BC427801BE14 +S224FE37A06100FB28722F484108380005C581673441FAF7776100CC5C6100CC3460080838F7 +S224FE37C00005C581671E6100CD32670A6100CD340C0000516704538166E411FCFFFC01C331 +S224FE37E0600000DE70FF08380005C58156C8FFF86700001248410C41002F57C048414A0011 +S224FE380066AE60BA223C00000000722F484108380000C58167146100CCE2670A6100CCE45D +S224FE38200C00005167B4538166E442A741F804002F08203C000004002F006100FC4E6600F2 +S224FE384000807010B6806D2E204343F8060076002211B290660A22290004B2A8000467166B +S224FE3860D2FC00205243B67C00106DE411FC000101C36000004C873801F4E54B41F8040090 +S224FE388031F0300001BC31F0300201BE11E801F601B911E801F701B831E801F801B031E8D5 +S224FE38A001FA01B431E801FC01B631E801FE01B2D0FC004043F80200701F22D851C8FFFCD7 +S224FE38C01038C583020000F011C0C583103801C34E752C5F11EF0004010508F800010105DF +S224FE38E0422F00046100CD7C46FC270011FC0025C073423801046100CAF641FAF6056100A1 +S224FE3900CB126100CAEA6100FE4E665242A7307C04002F082F086100FB72661C307C040046 +S224FE39200C58424F662E0C584F5466287000103801F43F002F0E4ED06100CAB4103801C334 +S224FE3940440041FAF41F6100CACA6100CAD46100CA9E4ED641FAF41B6100CAB860F00C3830 +S224FE3960000101C366D26100CA8641FAF5AD6100CAA241F801F66100CA9A60D2FFFFFFFFC9 +S224FE3980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S224FE39A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S224FE39C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S224FE39E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S224FE3A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S224FE3A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S224FE3A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S224FE3A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S224FE3A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S224FE3AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S224FE3AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S224FE3AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S224FE3B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S224FE3B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S224FE3B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S224FE3B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S224FE3B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S224FE3BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S224FE3BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S224FE3BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S224FE3C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S224FE3C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S224FE3C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S224FE3C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S224FE3C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S224FE3CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S224FE3CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S224FE3CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S224FE3D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S224FE3D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S224FE3D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S224FE3D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S224FE3D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S224FE3DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S224FE3DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S224FE3DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S224FE3E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S224FE3E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S224FE3E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S224FE3E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S224FE3E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S224FE3EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S224FE3EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE3EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S224FE3F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE3F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE3F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE3F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE3F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE3FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE3FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S224FE3FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S804FE0000FD diff --git a/SAGE/FILES/v2-2.hex b/SAGE/FILES/v2-2.hex new file mode 100644 index 00000000..514818cb --- /dev/null +++ b/SAGE/FILES/v2-2.hex @@ -0,0 +1,514 @@ +S00B000076322D322E68657885 +S224FE00000000040000FE0044600004F2600004E66000095E60000448600003F2600003CA02 +S224FE0020600003F8600003FE600029A2600029A460000334F1940202600002F66000343C61 +S224FE0040600035364E704FF8040011FC0092C02711FC0038C02511FC0092C06711FC003115 +S224FE0060C065700072FF343C42D741F8C0FE3080308151CAFFFA43F8000045F87FFE343C1D +S224FE0080344230113010301251CAFFF8343C06C541F8C00172084A10D0FC001051C9FFF81C +S224FE00A051CAFFEE43FA0006600002C049FA2D054BFA000660002BFE41FA00362278000874 +S224FE00C021C80008B1F80008662E11FC0090C58711FC0090C50711FC0000C58311FC00CD66 +S224FE00E0C50311FC0000C58511FC0005C50560044FF8040021C900081038C0216B64E6087B +S224FE010002400006303B00064EFB000200180024001800084238010449FA2DB14BFA08523D +S224FE012060002B9249FA2DB54BFA003860002B8649FA2DB84BFA000660002B7A74FF72008F +S224FE014070001038C023460008000002670272FFE308024000064840204030C151CAFFFCB5 +S224FE016060DA41FAFE9C343C1FFF42004201D018D21851CAFFFA4A00671449FA2D334BFAC7 +S224FE0180000660002B304A38C0216A0001004A01671449FA2D294BFA000660002B184A38FE +S224FE01A0C0216A0000E811FC0001C067307C000072014841323CFFFE224145FA00066000B9 +S224FE01C02A34664647FA000C21CB000808F80002C5034FF8040047FA002421CB00087202EF +S224FE01E04841D3C1303CA5A53280B051660E46403280B05166064640D3C160EC4FF80400AC +S224FE020093C145FA0006600029EC67084A38C0216A00007A303C00BF41F80100429851C8BF +S224FE0220FFFC548921C901004E6121C9014A21C9014243FA000C21C9000808B80002C50322 +S224FE02404FF804006100041611FC0000C0674A38C0216B1611FC0007C06770FF51C8FFFEFD +S224FE026011FC0006C0676000FEFA6100017C41FA2B256100019830380100ED48610002166F +S224FE0280704B610001DA6100016060044E7227007228740208380006C0216702725011C222 +S224FE02A001C611C101C7423801CA11C201CE11C101CF11FC000101D27206610000F8423825 +S224FE02C001BA2278000841FA002A21C8000811FC00AAC58311FC0005C5050C3800AAC58357 +S224FE02E0661011FC0000C58350F801BA31FC023001F04FF8040021C900081038C021C07C3B +S224FE03000030670CB07C00206724B07C0010672621F80100014A21F80100014231FC270081 +S224FE0320014E41FA004221C801466000064442676100280860DA4A3801BA67D420380100CF +S224FE03404840720C92406F12C2FC000A5341303C6F9A51C8FFFE51C9FFF6426770012F0002 +S224FE03606100338460AA4E4F60FC41F8C0734200108011FC0076C007E01810801238C02124 +S224FE0380E0181080706E080100036702707E10BC00400241000711FB1014C003108011FCAB +S224FE03A00000C003E01810BC00254ED1028040201008040241F8C0334240108011FC00B66E +S224FE03C0C007E018108011FB10E4C005E018108011C0C005E01810BC0040E01810BC004ED2 +S224FE03E0E01810BC00274E752F00700D6170700A616C420061686166616461626160201F2E +S224FE04004E752F0070206156201F4E753F0010186704614A60F8301F4E75E9186126E9182E +S224FE042061224E752F017203E958611851C9FFFA221F4E752F017207E998610851C9FFFA57 +S224FE0440221F4E753F000200000FB03C0009630406000007060000306104301F4E754A38AD +S224FE04600104662C3F01323CFFFF08380002C07356C9FFF8670811C0C071321F4E7548E7F7 +S224FE0480C0C043FA00066000FEE24CDF030360D64E4A4E7548E7F000720032007400343CED +S224FE04A02710420382C266044A0367061001619450C34241484184FC000A66E84CDF000F1E +S224FE04C04E754A38010466282F011238C0730801000167F61038C071020100386604221FCE +S224FE04E04E7511FC0035C07370076100FF7260DA4E494E7508380001C0734E7561C4088000 +S224FE050000070C0000616D0A0C00007A6E04088000054E7521C001067002604E21C00106B5 +S224FE05207004604621C001067006603E21C001067008603621C00106700A602E21C00106D4 +S224FE0540700C602621C00106700E601E21C001067010601621C001067012600E21C0010614 +S224FE05607014600621C00106701648F87FFE010A4E6821C8014A2A007016BA806270BA3CBC +S224FE058000046206381F261F341F31DF014E21DF014621CF01424FF804000C05001467004D +S224FE05A0199A6E0018B80C050012661E11FC0001C06711FC0000C0674A3801BA670C08F887 +S224FE05C00002C50308B80002C50370FFE01851C8FFFC46FC270011FC0038C02508B80006F0 +S224FE05E001504238010443FA000A6000FD7E428560A849FA27164BFA0006600026B849FAEB +S224FE06002990D8F450004BFA000460EE49FA29964BFA000460E420380146610017F661006E +S224FE0620FDC80C0500046200034841FA29FE6100FDDC30046100FDEE41FA29FB6100FDCE89 +S224FE064020036100FDF041FA29F86100FDC030026100FDD26100FD926000031641F80008A0 +S224FE066043FA268045FAF99A4280301967186B06D08A20C060F2424112003019D08A20C023 +S224FE068051C9FFFC60E24E75225F02800000000FD080D089C1893251D3C04ED148E780B0A4 +S224FE06A02478000847FA001421CB0008101121CA00084CDF0D01B0004E75508F321F46C153 +S224FE06C041FA26586100FD46588F20096100174421CA00084CDF0D01000000014E750838BE +S224FE06E00001C0734E752F00703A6100FD72201F6100FD104E752F00702C6100FD62201F1D +S224FE07004E752F0070076100FD56201F4E75C03C007F0C0000206D060C00007E6D02702E06 +S224FE07204E752F092F01224842816100FDD00C00001B6700006E0C000012670000680C003B +S224FE0740000D674A0C000008661AB3C867DC6100FD0E6100FCAE6100FD0651C9FFF25389C4 +S224FE0760528260C40C00007F6614B3C867BC61585389528210116100FCE6544160AC611AF2 +S224FE0780428153826B0812C06100FCD4609C610A421912C0221F225F4E758281673C4281C6 +S224FE07A0602C224842812F0870236100FCB26100FC38B3C86700000C10186100FCA2B3C87F +S224FE07C066F6205F6000FF648281660E72013F00103C005C6100FC88301F4E7542801018C6 +S224FE07E08000660253884E7561F28000670A0C00002067040C00002C4E7561E067080C00DE +S224FE0800002067F653884E7561D2244942411219B011568957C9FFFA660001481021E1589A +S224FE08201021D4C04ED248E7180042817801E89C61B667540C00002F660E383C33334844E2 +S224FE0840383C333461A26740040000306D380C0000096F144A04662E040000070C00000A9C +S224FE08606D240C00000F6E1E26014A046708E799E39BD2836002E999B684640AD280848222 +S224FE088067C2B48164BE72FFC1414CDF00184E752F036100FF66428395CA6100FF4C67002D +S224FE08A000480C00002367360C0000246708347801525388602A6100FF306700002C0400F7 +S224FE08C0003065240C000003641E244093C96100FF18670000180C00002B660C6002528334 +S224FE08E042826100FF42670257832240D5CAD5CAD4FC0154D3D2201FC14380804E752F02AB +S224FE090042826100FEF6670000520C000027671C0C00002E674624016100FF0C6B06241F20 +S224FE092092814E75241F428153814E756100FEAE6100FEAA670000200C0000276712E19A7D +S224FE09404A0266E0D480828167E6B28264E260D46100FE9666CEC14260C47001241F22008A +S224FE09604E756100FA9E703F6100FAF46100FD944FF8040042B801546100FA6E083800061F +S224FE098001506700000870546100FAD436380152670C70246100FAC810036100FAA8703EF2 +S224FE09A06100FABC742841F801886100FD7643FA1A686100FE5460B843FA1A8C6000FE4AD6 +S224FE09C06100FE382838017E387801821010670E6100FEBE668C2809284A31CA0182610045 +S224FE09E0FE1A327C01001010670A6100FEA46B00FF726704D3C45389528921C9017E2A0968 +S224FE0A00611C6718280B6100FCD667F46100FAEE0C00001367F60C00000366E44E756100D4 +S224FE0A20F9C820046100FA0EB8FC0154670C6100F9D2200490946100F9FC6100FCAA760F93 +S224FE0A402644C7496100FC56C7496600FF16101B6100F9C808030000660000066100F9A419 +S224FE0A60BA8B57CBFFDE6100F99A760F2644101B6100FC9C6100F9E8BA8B57CBFFF24E75CB +S224FE0A8043F80154323C20247402601443F80126323C2041600843F80106323C20447407FF +S224FE0AA06100FD3A671A903C00306B00FEB678001800B8026E00FEAC61226100F92C4E75D1 +S224FE0AC04284611852846100F93A0C04000466046100F9306130B8026DEA4E756100F90A99 +S224FE0AE042833001E0880C000020670000066100F96E10016100F968868366061004610077 +S224FE0B00F9446100FBE22004E5800280000000FF4A836A42303100006100F90A0C4153521D +S224FE0B20663C48E7704036006100F8D870286100F92E428243FA18D21419670E1019E57B94 +S224FE0B40650270206100F91860EE4CDF020E70296100F90C6008203100006100F8D84E75F4 +S224FE0B606100FC7A6600FDFC6100FF226100FF28611861086148610461344E756100F8840D +S224FE0B806100F8804E756000F86061FA103C00506100F8CC103C00436100F8C46100FB4892 +S224FE0BA020380146307801526000126861D876FF43F8014E223C00005352600E61C843F8B1 +S224FE0BC0014A223C00005553760142846100FF144E757C0060000C2C700072104A10670A7C +S224FE0BE06100FC446B00FD7C12006100000E5200B0016DF66100F7F24E756100F7EC41FAFA +S224FE0C0000206100F8086100F83C41FA001B3438017C0102670441FA001B6100F7F04E75AD +S224FE0C205452415020230020204E6F2074726163652000202054726163652020202000003C +S224FE0C4043FA18A26000FBC26100FCB46600FD142A006100FCAA6600FD0A2800D085610079 +S224FE0C60F7882200103C002B614822059284103C002D613E2205C2C4103C002A61344A4415 +S224FE0C806746220582C4103C002F61186132103C00726100F7CA103C00656100F7C2103CB9 +S224FE0CA0006D48416100F7B86100FA3C30016000F7746100F7AA6100FA2E20016100F7761E +S224FE0CC06100F7406000F73C4E757C106100FB2C2838017E38780182101067106100FBB258 +S224FE0CE06600FC802809284A31CA01826100FB0C327C00141010670C7CFF6100FB946B005B +S224FE0D00FC6267062C096B00FC5A52892A092C446100F6D6200E6100F71CB8FC0154670C46 +S224FE0D206100F6E0200E90946100F70A6100F9B848E7060061304CDF006021CE017E4A8624 +S224FE0D406B065386671E2A0EBA8E650000186100F98E67BC6100F7A60C00001367F60C0033 +S224FE0D60000366AC4E75300EE2086500FBF67C07610006F03E00E9586100F90E0020010038 +S224FE0D8001080104014003880428046E0512060606CC053A05A60606065206CC08070008AC +S224FE0DA0664E43FA176C3207E049E249610006F659016F5E0401001067585801660642458B +S224FE0DC0611C60063A07610006C4610006FC6100070216076100F920610007364E75428535 +S224FE0DE043FA171E3207EC5902410003600006B63007020000380C00000867367042610069 +S224FE0E0006AE61DA610006C23607EC5B6100072860C030070200003F0C00003C66A64282F3 +S224FE0E20263A084C080700066704263A0846600000F2203A082A610006767050610006707B +S224FE0E403A07E35D08C500066100064E6100067A08070007670A61126100F89C61144E757E +S224FE0E6061106100F89261024E753607EC5B600006C6360708C30005600006964285600607 +S224FE0E807A4060027AFF203A07D6610006223007EC5802000007530066067041610006108F +S224FE0EA0610005F6610006223607610006646100F8463607EC5B610006644E75080700087A +S224FE0EC0660002043007EF580240000732006100F7B8001000320014001C007C011800B2E1 +S224FE0EE001527401600A263A0786428260064282263A0780283A07683007020000C00C0025 +S224FE0F0000C0671843FA16366100059A3A076100057C610005B4610005F64E752004610025 +S224FE0F20058E7A40610005A228034A026614610005DE4A84670A6100F7BE200461000570D5 +S224FE0F404E7561F66100F7B0610005C44E753207E65902410007080700076624203A0718A4 +S224FE0F6008070006670C203A07124A016604203A070E6100053A61000550610005924E753E +S224FE0F804A016756203A06D861000524704D3A07E35D08C5000661000516610004FC610035 +S224FE0FA005287A40610004BC31C001880807000A661E6100000C6100F73E610005524E7591 +S224FE0FC070236100F49A303801886100F4584E7561E86100F72261E84E75203A06AA080743 +S224FE0FE00006678E203A069C60880C0700FC6612203A0698610004B8203A0694610004B06A +S224FE10004E753A07024500C00C4500C0670A3005E2588A406000FEEE283A06784282428352 +S224FE10206000FED608070007660000983207E6590201000714010C01000667520C010003F2 +S224FE10406F14263A065E024200010247000F004700C86000FEA043FA14FC61000448610041 +S224FE10600468E20A660E70236100F3F430076100F3D44E753607E75B610004C008070003EE +S224FE1080660A6100F6727A40610004484E75320702410007340143FA14CC610004080C029A +S224FE10A00002660A610004227A406100042670544A02670870560C02000666046100F3A038 +S224FE10C04E754280600270023207EC59C27C0001D2407A4043FA14AE610003CA610003EAB0 +S224FE10E06100042C0807000867186100F60A3607EF5B70200807000667027028B1436100E3 +S224FE110004104E753207020100C00C0100C0673E203A0588080700086704203A05826100DC +S224FE1120038E3A07610003666100039E70236100F32E3007EF58020000074A006602700848 +S224FE11406100F3026100F5B0610003C44E7570533807020400380C040008660808870003ED +S224FE1160303C4442611C610003A60C04000866106100F5847A40610003603440610003FA3B +S224FE11804E7543FA1440610003263207EE5902810000001ED3C142803011610003126100DF +S224FE11A003284E757A40320702410F000C410100670A704243FA13EE61CC600C203A04D87B +S224FE11C0610002EC6100030230074A0067106100F24AE158E040548E6108558E4E75610017 +S224FE11E002F83440610003924E750807000866000258203A046A610002B67051610002B039 +S224FE1200610002C670236100F25610076100F20C6100F4E43607EC5B6100031C4E753A07AF +S224FE122043FA13C2612208070008670C61106100F4C6610002DA4E7561F86100F4BA36075B +S224FE1240EC5B610002F24E753207E95902410007610002524A456704610002326100026A56 +S224FE12604E75428560023A0743FA139A61DA3607E75B61086100F4803607EC5B08070003C6 +S224FE12806606610002B24E75610002C04E753007024001F00C40010067C8EC4872045740FA +S224FE12A0670859406600FF787205088700068E7C41006000FE1E3007EC580240000755401A +S224FE12C06F00FF5C43FA133E7A4053406706E35D594066166100FF72610002346100F418CE +S224FE12E03607EC5B610002544E75044710003007024000380C4000086600FF24203A03A8FF +S224FE1300610001AC3A0761000184610001BC3607E75B61086100F3E03607EC5B610002264E +S224FE13204E753007024001F878000C400140671078030C400148670878020C4001886624A1 +S224FE1340203A0368610001686100017E3607EC5B61086100F3A23607E75BE21C650001DC79 +S224FE1360600001D4E8480C0000106700FEF67206E44857406700FF347207594067F66000EA +S224FE1380FE9E3007024000C00C4000C067123007024001300C4001006700FECC6000FE80EA +S224FE13A03A07E25D43FA12563207E55902410001610000F2610000E26100010E6100015092 +S224FE13C06100F3343607EC5B610001704E7532073A07024500C00C4500C06744E65961503C +S224FE13E0610000AA610000E2360702430E00080700056708EC5B6100013E60167023610038 +S224FE1400F05E3003EF580200000F660270086100F0346100F2E23607E75B6100011A4E7598 +S224FE1420EF59610C4285610000A0610000E24E7502410003340702420100EC5A824243FA19 +S224FE144011DC610000604E75702E61000062203A02126100005A6100007030076100EFC670 +S224FE14604E752F09224E6100F2346600F4F6301E225F4E752F09224E6100F2226600F4E43A +S224FE148054896100F218201E225F4E75024500C00C05008066027AC03205EC5902010003C3 +S224FE14A043FA108AE519024100FF203110002F017203E1984A00670000086100EFA253068F +S224FE14C051C9FFF0221F4E756100EF3851CEFFFA4E7570236100EF883205EC59C27C000371 +S224FE14E0B23C000267206100FF7A53016C066100EF2A4E756100EF2E53016D086100FF648A +S224FE15006100EF224E75703F6100EF544E7536071003E60802000007E70B86001003024069 +S224FE152000076100F164001000140018001E00240076008000C67244601472416010223A08 +S224FE15400112600A223A01106004223A010E7403E1991001671C6100EF060C000044670637 +S224FE15600C000041660C3003E618020000076100EED451CAFFDC4E75705B6100EEE2D5CEF4 +S224FE1580200A558030780152D1C8D1C890A801546100EEA2705D6100EEC64E756100FEC4D6 +S224FE15A06100EE8260986100FEBA38006100EE6C70286100EEAA61826100F13C3604EF5BCD +S224FE15C00804000F66066100FF6E60046100FF6C702E6100EE8A70570804000B6702704C09 +S224FE15E06100EE7C70296100EE764E75E61BC63C000710036100F0920012001C0026003E6A +S224FE160000540010001000104E756100FE566100EE144E756100FE5E6100EE1A4E7561005B +S224FE1620FE4234406100EDFE223A003C6100FF206100FF464E756100FE2A38006100EDDC3B +S224FE1640203A00286100FE686000FF6E6100FE844E75284129002841292B2D2841294D4F21 +S224FE16605645574F5244285043292850430043435200535200004E424344504541005357DD +S224FE168041504558544C45585457494C4C4547414C005441530042535200414444515355A6 +S224FE16A0425155535000434D504D4558470043FA0DB56000F1546100F1D86600F2A660045B +S224FE16C06100F0402809284A2A0454856100F3506100F01441F80188243C00000028610018 +S224FE16E0F042428110106716223C0000FFFF6100F20E6BCC6E0A13400001E08012805489C6 +S224FE17000C01002E66BE4E7543F80154323C202474037A01601643F80126323C2041600861 +S224FE172043F80106323C2044740842856100F0AE671A903C00306B00F22AB0056B00F22416 +S224FE1740B0026C00F21E4282610E4E75200561085280B0026DF84E7542832F023A012800CF +S224FE17602C00E5864A82660E6100F0904A10662260046100EF8E32056100EC6E6100F364E0 +S224FE17806100EF64742841F801886100EF961010672042816100F1686BD8660000160286E3 +S224FE17A0000000FF86836A063380600060042380600032051004241F4E756100F02066000C +S224FE17C0F1A26100FF526100FF586106611E610E4E7543F80146323C50436000001843F8BB +S224FE17E0014E323C535276FF6000000C43F8014A323C55537601428242806100FF5E4E7589 +S224FE18007CFF7A0142806100EFD467144486903C00306B00F14EB03C00016E00F1463A0032 +S224FE1820360060046100EEDC3643D7CB284BD7CB4A866B0A675A6100EFC24A106614616AF9 +S224FE18406100EEA4742841F801886100EED66100EFAA101067320C00002E660607B80150A6 +S224FE186060266100F02C6BBC6100EF90243C0000FFFF6100EFB26BAC426C017239400176D3 +S224FE188007F80150274901605243B6456F9A4E75611860F4427265616B706F696E742000CC +S224FE18A0496E61637469766500006100EB3C41FAFFE46100EB5810036100EB8A6100EE2848 +S224FE18C007380150660A41FAFFD86100EB404E75202B01606100EB5E6100EB2870286100E1 +S224FE18E0EB7E302C01766100EB3C6100EE0A302C01726100EB3070296100EB644E757600FB +S224FE190078104A10671C6100EF1E6B00F056160018006100EEE60C00005467460C00004E76 +S224FE192067386100EAC441FA004C6100EAE010036100F2C86100EDB0742841F80188610059 +S224FE1940EDE26100EEB667240C00005467140C00004E67066100EDAC60C83238017C0781F2 +S224FE196060063238017C07C131C1017C5203B6046DBC4E7528542972616365206F7220285C +S224FE19804E296F2074726163650043FA0AF86000EE78243C000000FF616C6600EFC61A00C9 +S224FE19A0E1401005600C243C0000FFFF61586600EFB23A0048403005600842826148660032 +S224FE19C0EFA241FA14AA6100EA4461000942E19812C0538466F821CA00084E7548E7F000EA +S224FE19E06100EEAE661A28096100EEA62449C9896B0E6E06988952846004D5C9538A4280FD +S224FE1A004CDF000F4E7561D4660622026100EEF04E7561F266142C0098876D00EF4670FFD6 +S224FE1A204A10670A22026100EED66600EF3641FA15266100E9D8610008D64E7543FA0AB46F +S224FE1A406000EDC6243C000000FF7E0161C41219C200B206670453846CF46100009660F6D9 +S224FE1A60243C0000FFFF7E0261A81219E1991211C240B246670453846CF06100007660F6EF +S224FE1A8042827E04618C2649548B1219E1991211E199121BE1991213C280B28667045384F8 +S224FE1AA06CE86100004E60F66100FF326600EEB448E708606100FF266600EEA82A492C0474 +S224FE1AC04CDF0610C34D41FA148E6100E9406100083E9C846518284952892E04264D121CE8 +S224FE1AE0B21B6606538766F6610853866CE861024E7148E7FE7E663E41FA146B6100E90E5B +S224FE1B00538920096100030C6100EBDC7203E198101951C9FFFA6100E91C41FA1455610090 +S224FE1B20E8EC6100E9D80C00004366126100E9304CDF7E7F4E7541FA140D6100E8D04CDFE0 +S224FE1B407E7F21CA00086000EE286100E8B66100E8B243FA093A6000ECB043FA093C6000C4 +S224FE1B60ECA86100ED2C6600EDFA20096100E8C66100EB7410116100E8A24E756100ED12E0 +S224FE1B806600EDE03C09080600006600EDD620096100E8A26100EB5030116100E8884E750E +S224FE1BA043FA08FD6000EC626100ECE66600EDB4223C000000FF6100ED466600EDA612807C +S224FE1BC04E756100ECCC6600ED9A3C09080600006600ED90223C0000FFFF6100ED226600D1 +S224FE1BE0ED8232804E756100EC1274076100EC386B00ED7022006000E7BC43FA08AA600063 +S224FE1C00EC086100006443FA07B654894A516700ED523014C059B05966F0D8D121CC016835 +S224FE1C2008F80002015008F800040150600261387401610001BA426A017251CAFFF66002DC +S224FE1C40612608B80005015008F80006015008F8000701501038015002000007660608B867 +S224FE1C6000060150600001506100EB901010670C6100EC1E6600ECEC21C901466106610048 +S224FE1C80E7684E752C380146284608060000671241FA001C6100E77620066100017660001C +S224FE1CA0ECD0224C6100E9F66600ECB84E75496C6C6567616C2070726F6772616D20737411 +S224FE1CC061727420616464726573733A20006100E71843FA07DC6000EB30083800060150C8 +S224FE1CE0670461A0604E4E7508F8000501506040619208B8000301500C100049660808F834 +S224FE1D000003015052887005083800050150660270104A10670E747F6100EAE06100EB085E +S224FE1D206B00EC406100E6C2600C08B8000501506100FF36700111C0015108F800060150FD +S224FE1D4008B80007015030140240FFF00C404E406664301C0240000F3C38017C41FA002C5A +S224FE1D600106661C21CC016808F80007015008F80002015008B800040150673A41FA0021C4 +S224FE1D806100E68A6100E662602C2A2A2A2054726163696E672054524150202A2A2A002AB5 +S224FE1DA02A2A204753207465726D696E61746564202A2A2A0000287801463C38014E08383D +S224FE1DC00006015066060886000F600408C6000F2078014A4E602E7801422F0C3F064CF821 +S224FE1DE07FFF01064E7308B8000601504E7542803242D3C92449D3C905380150670E226957 +S224FE1E0001606100E8986600000652804E7553804E756100E62030780152D0C8D0C84A7892 +S224FE1E200152672E6100E5DC2F0070286100E63070246100E62A303801526100E6086100E7 +S224FE1E40E8A6201F90A801546100E5EA70296100E60E4E7554726163653A200008380006B5 +S224FE1E6001506700FF52083800070150672608B80006015074006100FF766B00EAE6670826 +S224FE1E803551016C32BC4E4F52420C42000366E66000FF2441FAFFBE2038014621C0017E16 +S224FE1EA06100E56A28406100FF6AD0FC015431C801826100E832224C6100E7E266143011D2 +S224FE1EC06100E5626100E53C6100E5382C496100EE96083800050150670A41F801884210E2 +S224FE1EE06100EC7E533801516F1E083800030150671A6100E7EA67146100E6020C00001380 +S224FE1F0067F60C00000366046000EA666100E4DA6000FE280D0A556E657870656374656467 +S224FE1F2020627265616B20706F696E743A2000000D0A427265616B3A200042854286283890 +S224FE1F4001465584760041FAFFCC74026100FEA06F32B3C4661E41FAFFD876020C02000237 +S224FE1F6067123A2A01723C2A0176BC4567065245354501720C514E4F670605B80150600466 +S224FE1F8032AA016C51CAFFC60838000201506728B8B80168662208B80002015008B80004BB +S224FE1FA00150661421C4014608F80006015008B8000701506000FEA620380146908321C021 +S224FE1FC00146BC456600FC824A436600FED028440C544E4F6600FEC620046000FEC043FAFF +S224FE1FE004E46000E82411FC000101BB6004423801BB41FA0E8E6100E414607642857401E4 +S224FE20006100E8246B00E95C3C00243C0000FFFF6100E8146B00E94C3F006100E8746600A7 +S224FE2020E9422F0942826100E7FE6B00E9362F003F064A85670E41FA0E576100E3D06100D9 +S224FE20400992600C41FA0E3C6100E3C26100097E6700000E41FA000C6100E3B26100E3BC51 +S224FE20604E750D0A4469736B206572726F723A20000061740C000051670000C00C0000539C +S224FE208066F0420561621E00610000BC1C0153064281610000B2610000AE26410C0700309D +S224FE20A0660E4A0667066100009E60F6617460C20C0700326614220B6100008C26414A0610 +S224FE20C067EA6100008216C160F40C07003167EE0C07003966644A066660614641FA0C4F9C +S224FE20E06100E32A6000E88A4A3801BB672408380001C033670A1038C031088000074E75A4 +S224FE21006100E3F267E26100E3F40C00005166D84E756100E3AE0C00000D6700E2CC600027 +S224FE2120E33E6122460566024E75588F41FA0C216100E2DA6000E83A508F41FA0BFD610011 +S224FE2140E2CC6000E82C61086106DA0153064E7561960C0000306DE00C0000396E0A040052 +S224FE21600030E989D2004E750C0000416DCA0C0000466EC45F0060E643FA03436000E68A25 +S224FE21807A016000FE7A6000E7E843FA03426000E678202053797374656D207265696E697E +S224FE21A07469616C697A696E672E2E2E2E0046FC270011FC0025C0734238010441FAFFD43E +S224FE21C06100E24A70FF51C8FFFE6000DE784280428710100C00005266063E3C010052886A +S224FE21E01010670A74016100E63E6B00E77680473F00610009464E754A3801BA6700E76421 +S224FE2200428042877C0110100C00005266063E3C010052881010675C0C00002067140400E6 +S224FE222000306D00E73E0C0000036E00E7368E0052886100E5C64A00673A0C00002366004B +S224FE2240001652884A10672C740F6100E5DA6B00E7123C00601E740743F801F62C09429128 +S224FE226042A90004422900086100E572670612C051CAFFF63F072F066100146C4E754E7510 +S224FE228074186100E16451CAFFFA4E7543FAE2D621C9002443FAE2C621C900BC4E7542801F +S224FE22A01010670A74026100E57E6B00E6B631C00152E540D07C015431C001824E756100A7 +S224FE22C0E5D06600E69E28096100E5C66B00E694C98966049889600253846500E6862649E4 +S224FE22E06100E5AE6600E67C41FA0BB26100E11E7201B7C96406D3C4D7C472FF61101293B1 +S224FE2300D3C1D7C153846CF621CA00084E752478000849FA000821CC00084E7541FA09FCB8 +S224FE23206100E0EA548F201F6100FAE821CA00086000E63E43FA01B56000E4CE3F3C000112 +S224FE23406002426774016100E4DE6B00E6163F00243C0000FFFF6100E4CE6B00E6063F002A +S224FE2360427801CC427801D411FC000101DB3F172F3C000004002F3C000010003F2F000CA0 +S224FE23804A6F001067066100064A60046100063E662A702E6100E0C808F8000101DB6100D5 +S224FE23A0E15467CA6100E11C11FC0007C02711FC0009C027423801DB5C8F4E75705860D45E +S224FE23C0F0FF60000004F00060000002F0F850C80004FFB84E900002FFB84EA80004FFB852 +S224FE23E04EB00004FFBF4EB80004FFBF4EB90006FFBF4EBA0004FFBF4EBB0004FFF04E4033 +S224FE24000002000000000000015402530958014E015A0156014300000E44A0E55396F2466F +S224FE242072F52486FE4DA6FE5032F754B6F847E2F75760FD4CC6FB00C2F84972FD4128E87A +S224FE2440451CFF5824F6094D7AE5521AE74450E64146E65044E75366E75576E7243AE64265 +S224FE24608CE75492E7094D51F25255F344BBF241B1F2506DF35379F35587F324A3F2429B3D +S224FE2480F35499F402420EF55722F54C36F50249CCF64F12F75358F70142CAF657E4F601FD +S224FE24A04209F75723F7024F88F7439AF7535CF703427AF84536F95238F84E40F80141C9DE +S224FE24C0FC46C3FC024122FB542AFB4638FB064600FD482AFD47B0FD53E0FC568EE143B211 +S224FE24E0FD54BEFD0144E6E75264E7015257FE5751FE034252F5576EF54C8EF54DB6F500C3 +S224FE25005453540043484700434C5200534554004F524900414E44495355424941444449D3 +S224FE252042000000454F5249434D50492E4200002E5700002E3F00002E4C00004E454758F0 +S224FE2540434C52004E4547004E4F5400000000005453540054524150545241504C494E4B35 +S224FE2560554E4C4B524553454E4F500053544F5052544500344537345254530054524150BD +S224FE2580525452004A5352004A4D500043484B004C45410044495655444956534D554C5511 +S224FE25A04D554C535241460048494C53434343534E45455156435653504C4D4947454C54E9 +S224FE25C047544C455400460048494C53434343534E45455156435653504C4D4947454C541D +S224FE25E047544C454F52000053554200454F5200434D5000414E4400414444005355424194 +S224FE260041444441534243445355425800000000434D50414142434441444458415352001D +S224FE26204C535200524F5852524F520041534C004C534C00524F584C524F4C0048E760409C +S224FE26401219143C00AD1038C0510800000756CAFFF6671A08000006661411D9C05374094F +S224FE266051CAFFFE530166DA4CDF02064E7511FC000101C560F248E7604043FA09D461BC89 +S224FE26806624720243F801C36174661A123801C3020100C0670C0801000667047203600250 +S224FE26A0720211C101C54CDF02064E7548E76040720743F801BC42116144663C123801BC34 +S224FE26C0020100C0672E0801000667267205103801BDE208651E7206E40865187207E408D3 +S224FE26E065127208E208650C7209E4086506720A6002720211C101C54CDF02064E75343C69 +S224FE270010FE1038C0510800000756CAFFF6671608000006671012F8C053740951CAFFFE77 +S224FE2720530166DA4E7511FC000101C54E752F017002484008380000C0636612538066F476 +S224FE274011FC0002C02711FC000401C5600C4A02662012F8C053534166D611FC0001C02789 +S224FE276011FC0000C0276100FF44221F4A3801C54E7511D9C053534166B660DE48E76040B8 +S224FE2780720143FA08C96100FEB466387402484208380000C063660C538266F411FC0004EF +S224FE27A001C56020422C00036100FECC67160C38000301C5660E0C2C00500001660651C927 +S224FE27C0FFC270034CDF02064E7548E760407202103801D6B02C0003674C43F801B032BCFE +S224FE27E0030F42290002137801D600036100FE4E66347402484208380000C063660C538201 +S224FE280066F411FC000401C5601C6100FE6A660A197801D600034200600C6100FF6066068A +S224FE282051C9FFAE70034CDF02064E750000000000000000423801C54A2C00006700010C3B +S224FE28403F077E0111FC000FC02711FC0000C02711FC0003C02743FA07F111FC000EC0278B +S224FE28606100FDDA663870064A2C00046702540011C0C02711FC000AC02770FF51C8FFFE97 +S224FE288008380000C06367086100FDEC423801C56100FEEA671C0C38000301C5670451CF75 +S224FE28A0FFA43E1F70014E7570080838000001DB667070044840538066FC197CFFFF0002B1 +S224FE28C043FA07906100FD7666D4343CFFFE1038C0510800000756CAFFF6660E11FC0002A6 +S224FE28E0C02711FC000401C560B86100FDC066AE103801C1B02C000267086DC419400002EA +S224FE290060BE0C000008671A0C00000967100C000010673E0C00000A66267418600674208C +S224FE29206002742A0C38000201C26614397C0200000619400002194200053E1F42004E7537 +S224FE294011FC000901C56000FF5A11FC000B01C54E750C38000101C266E6397C010000062E +S224FE2960742060CE4A2C0000675A4281323C020082EC00064282343801DEC4C14281122C1F +S224FE2980000284C14241082C000000006604E24AE31111C101D711C201D6B42C00016C24E7 +S224FE29A04842122C00029202C2EC0006B2B801E06F04223801E0520211C201D831C101DC3A +S224FE29C042004E7511FC000B01C54E75423801DA600611FC000101DA225F49F801C6301FD2 +S224FE29E0670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C000666000114610053 +S224FE2A00FE34660000EA4AB801E0670000E211FC0003C0274A3801DA672C08380001C063BA +S224FE2A20670A11FC000C01C5600000C4102C0001E208B03801D66F0811FC000DC02760065B +S224FE2A4011FC000CC0276100FF1C660000A26100FD7A667443F801B0303C09454A3801DA3A +S224FE2A606602524032C0103801D7E50812C012F801D612F801D712F801D8302C0006E04858 +S224FE2A8012C012EC000212EC000512FC00FF43F801B06100FBA86630227801E4428132381F +S224FE2AA001DC143801DA6100FC86661C303C032051C8FFFED3B801E493B801E082FC0200E9 +S224FE2AC0D37801DE6000FF400838000001DB663A5307671A103801C50C0000016700FF20F2 +S224FE2AE00C00000367080C0000046600FF1A0838000001DB661470074A2C00046702540082 +S224FE2B0011C0C02711FC000BC027103801C54E750838000101DB6600FEEE70064A2C0004CB +S224FE2B206702540011C0C02711FC000AC02770044840538066FC6000FECE11EF00040105B8 +S224FE2B40422F0004427801CC427801D46100DB0E46FC270011FC0025C073423801046100EF +S224FE2B60D88841FA02AB6100D8A46100D87C4267307C04002F082F083F2F000E6100FE4E88 +S224FE2B806612307C04000C58424F663C0C584F5466364ED06100D852103801C50C00000409 +S224FE2BA0673041FA01B96100D8646100D86E41FA01CA6100D858102C00046100D888610049 +S224FE2BC0D828205F548F4ED041FA01A16100D83E60DC41FA024F6100D8346100D92061002E +S224FE2BE0D8080C0000516600FF5C41FA02646100D81C60BA264842804281468126804A9387 +S224FE2C00661C2681B293661C26CBB7C963EE2648B7D3660E588BB7C963F642804ED22200D3 +S224FE2C206002220B201349FA015D4BFA0006600000842A0B4BFA00066000008649FA0163F2 +S224FE2C404BFA00066000006E2A004BFA00066000007049FA01524BFA0006600000582A014F +S224FE2C604BFA00066000005A49FA01F44BFA00066000004249FA01964BFA0006600000366C +S224FE2C8070014ED23E3CFFFF08380002C07356CFFFF8671411C6C0717E0E51CFFFFE08382B +S224FE2CA00002C07366024ED608780003C06551CFFFFE60F41C1C67064DFAFFFA60C64ED509 +S224FE2CC07807E99D7C0FCC050C060009630406060007060600304DFA000460A851CCFFE46C +S224FE2CE04ED50514051C05248002052C0534056405240524800B053C8006054C0554800E1A +S224FE2D000544055C800F053C0000070D0A455843455054494F4E3A202000070D0A204E4F14 +S224FE2D20204D656D6F72792061743A20000D0A4C6F616420446F6E6500070D0A4261642026 +S224FE2D404C6F616420436861726163746572000742616420436865636B73756D0007447225 +S224FE2D60697665204572726F722000074E6F7420424F4F54204469736B00206F6E20647298 +S224FE2D80697665200007424144204D656D6F7279206174200052414D2053697A65203D2038 +S224FE2DA000206973200020696E7374656164206F6620000D0A5341474520537461727475FD +S224FE2DC0702054657374205B322E325D0D0A0A436F707972696768742031393833202053F4 +S224FE2DE061676520436F6D707574657220546563686E6F6C6F67790D0A416C6C2052696786 +S224FE2E006874732052657365727665640D0A00426F6F74696E672066726F6D20466C6F7092 +S224FE2E2070790050757420696E20424F4F54206469736B20616E6420707265737320612016 +S224FE2E406B6579202851202D207175697473290007426F6F742041626F72746564002028FD +S224FE2E60546573742041626F727465642900202046696C6C696E67206D656D6F72792E2E8B +S224FE2E802E0020204C6F6164696E672E2E2E00202057726974696E672E2E2E0020204D6FCF +S224FE2EA076696E67206D656D6F72792E2E2E000750524F4D2031204261640D0A000750529B +S224FE2EC04F4D2032204261640D0A00427970617373656420496E69740D0A004C6F6F7065BE +S224FE2EE0642054657374730D0A0052414D207772697465206C6F6F700D0A00426F6F746908 +S224FE2F006E672066726F6D204861726420447269766500436F756C64206E6F742066696E87 +S224FE2F2064200057616974696E6720666F72204472697665205265616479203C512D7175E1 +S224FE2F406974733E000D0A4E6F204D6174636820666F756E64002020536561726368696E56 +S224FE2F60672E2E2E000D0A4D617463682061742000202D20436F6E74696E75652073656139 +S224FE2F80726368202843203D20596573293F2000001F0027002B003300470052005C006A2D +S224FE2FA0007A008F204572726F722061742000556E6B6E6F776E00427573004164647265CC +S224FE2FC0737300496C6C6567616C20496E737472756374696F6E0041726974686D657469E5 +S224FE2FE0630050726976696C656765005265736572766564205452415000556E61737369BA +S224FE3000676E6564205452415000556E61737369676E656420496E74657272757074005268 +S224FE3020414D205061726974790046756E6374696F6E3A200020204163636573733A2000DA +S224FE30402020496E73743A20000303D1070207000108024A00006100000C423801C250F807 +S224FE306001BB4E7548E71C0011FC0000C50708F80000C5037080740011C0C5C1723251C969 +S224FE3080FFFE7A0411FC00B0C60711FC0000C60511FC0000C605323C174051C9FFFE11FC8F +S224FE30A00080C60776001638C605E15B1638C605E15B444386FC000C31C301F2967801F0A5 +S224FE30C067226E1244430C4300026F185202671C530066A460160C4300026F085202670C4C +S224FE30E0520060EE51CDFF9E50F801BB11C001EF11FC0001C507303C174051C8FFFE4CDFCF +S224FE310000384E75223801D67000103801B934004841B2406200006E484182C048413038D3 +S224FE312001B0C4C0C0C142414841944048C231C001E8203801DAB4806D0C944031C201EC7E +S224FE314031C001EA600831C201EA427801ECD27801BC6530B27801BE622A43F8020030190C +S224FE31606708B2406504524160F431C101E27000103801B882C031C101E4484131C101E6DA +S224FE318042004E7511FCFFF501C34E7511FCFFF201C34E752F02343C07D008380001C5811B +S224FE31A067305342672611FC000CC58772016100011C4A3801C36600009270144840083873 +S224FE31C00000C58167D45380670260F270FD6000007611FC000DC587720A610000F04A38E5 +S224FE31E001C3660000667014484008380000C5816706538067D660F208380001C58167CC21 +S224FE3200343C07D008380001C5816728534267BC11FC000CC5877201610000B24A3801C365 +S224FE322066287014484008380000C58167D65380679A60F2303C251C51C8FFFE4200427849 +S224FE324001C050F801C211C001C3241F4E7508380000C58166604A3801C266066100FF3671 +S224FE326066521038C585020000F8807801E611C0C585323801C0927801E467326E0A44415D +S224FE328011FC000DC587600611FC000CC5876100003C4A3801C3661C72FFE01908380000EB +S224FE32A0C58157C9FFF6660E31F801E401C0700011C001C34E7570FD60F61038C583020050 +S224FE32C000F0803801BA11C0C5834E7548E7E000E349534111FC0036C60711FC00B0C60743 +S224FE32E0303801B211C0C601E04811C0C601741851CAFFFE11C1C605E05911C1C6057418B5 +S224FE330051CAFFFE08B80000C503343C08EC51CAFFFE720C484111FC0080C6071038C6051A +S224FE3320E1581038C605E158670C6B0A538166E611FCFFFD01C308F80000C5034CDF000736 +S224FE33404E7543F8C7C1247801DE08F80007C50311FC000FC50711FC000DC50711FC000CB3 +S224FE3360C5074A114A1111FC0003C78311FC0041C7851011E148101131C001C4343801E85E +S224FE3380670853424A1151CAFFFC343801EA534214D151CAFFFC343801EC670853424A1116 +S224FE33A051CAFFFC4A114A1108380000C7836610303801C4B07801E2660E423801C34E7591 +S224FE33C011FCFFF801C34E757400143801B880C231C001C011FCFFF401C34E7511FC00025C +S224FE33E0C50711FC0008C50708F80006C50308B80007C50311FC000DC50711FC000CC507F5 +S224FE340011FC000EC50711FC0030C60711FC0070C607303801B411C0C601E04811C0C601F9 +S224FE3420303801B611C0C603E04811C0C60311FC000BC50711FC000AC50708F80001C5037E +S224FE344070FF08380004C58156C8FFF8660611FCFFFA01C308B80001C50311FC0008C507BB +S224FE346008F80006C50311FC0005C50708F80007C50311FC000FC5074E75225F21DF01DAC7 +S224FE348021DF01DE21DF01D62F096100FE2E4A3801BB66046100FBC011FC000A01EE42386A +S224FE34A001C308380005C581660000564A3801BB66046100FBA24AB801DA670000AA610009 +S224FE34C0FC44660000426100FD864A3801C3660000366100FF084A3801C36600002A61009C +S224FE34E0FE62660000227000303801EAD1B801DE91B801DA80F801B048C0D1B801D6609809 +S224FE350011FCFFFC01C3533801EE6F00005A103801C30C00FFF967260C00FFF867200C0066 +S224FE3520FFF7671A0C00FFFA67100C00FFF4660000360C38000301EE6C04423801C2303CAB +S224FE3540FFFF51C8FFFE523801FF103801FF0200001F670A0C38000501EE6600FF426100B0 +S224FE3560FB046000FF3A1038C583020000F011C0C583103801C34E75225F261F321F7000BF +S224FE358003C011C001BAE90911C101F42F09423801BB11FC000101B811FC001301B931FCE4 +S224FE35A0020001B031FC004001B431FC004801B631FC177001B242780200427801BC4278B3 +S224FE35C001BE6100FCF6722F484108380005C581673441FAF94F6100CE346100CE0C6008FD +S224FE35E008380005C581671E6100CF0A670A6100CF0C0C0000516704538166E411FCFFFCE3 +S224FE360001C36000FF6270FF08380005C58156C8FFF86700001248410C41002F57C04841F5 +S224FE36204A0066AE60BA223C00000000722F484108380000C58167146100CEBA670A6100CB +S224FE3640CEBC0C00005167B4538166E442A741F804002F08203C000004002F006100FE1CE0 +S224FE36606600FF047010B6806D2E204343F8060076002211B290660A22290004B2A80004E1 +S224FE36806716D2FC00205243B67C00106DE411FC000101C36000FED0873801F4E54B41F877 +S224FE36A0040031F0300001BC31F0300201BE11E801F601B911E801F701B831E801F801B0CC +S224FE36C031E801FA01B431E801FC01B631E801FE01B2D0FC004043F80200701F22D851C89B +S224FE36E0FFFC6000FE822C5F11EF0004010508F800010105422F00046100CF6246FC2700E0 +S224FE370011FC0025C073423801046100CCDC41FAF7EB6100CCF86100CCD06100FE5C665207 +S224FE372042A7307C04002F082F086100FD4E661C307C04000C58424F662E0C584F54662883 +S224FE37407000103801F43F002F0E4ED06100CC9A103801C3440041FAF6056100CCB0610094 +S224FE3760CCBA6100CC844ED641FAF6016100CC9E60F00C38000101C366D26100CC6C41FA89 +S224FE3780F7936100CC8841F801F66100CC8060D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S224FE37A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S224FE37C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S224FE37E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S224FE3800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S224FE3820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S224FE3840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S224FE3860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S224FE3880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S224FE38A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S224FE38C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S224FE38E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S224FE3900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S224FE3920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S224FE3940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S224FE3960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S224FE3980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S224FE39A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S224FE39C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S224FE39E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S224FE3A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S224FE3A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S224FE3A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S224FE3A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S224FE3A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S224FE3AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S224FE3AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S224FE3AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S224FE3B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S224FE3B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S224FE3B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S224FE3B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S224FE3B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S224FE3BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S224FE3BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S224FE3BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S224FE3C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S224FE3C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S224FE3C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S224FE3C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S224FE3C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S224FE3CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S224FE3CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S224FE3CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S224FE3D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S224FE3D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S224FE3D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S224FE3D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S224FE3D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S224FE3DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S224FE3DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S224FE3DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S224FE3E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S224FE3E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S224FE3E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S224FE3E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S224FE3E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S224FE3EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S224FE3EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE3EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S224FE3F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE3F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE3F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE3F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE3F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE3FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE3FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S224FE3FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S804FE0000FD diff --git a/SAGE/FILES/v2-3.hex b/SAGE/FILES/v2-3.hex new file mode 100644 index 00000000..0f5c4d02 --- /dev/null +++ b/SAGE/FILES/v2-3.hex @@ -0,0 +1,514 @@ +S00B000076322D332E68657884 +S224FE00000000040000FE0044600004F8600004EC600009646000044E600003F8600003D0DE +S224FE0020600003FE60000404600029A8600029AA6000033A43380203600002FC6000344839 +S224FE0040600037104E704FF8040011FC0092C02711FC0038C02511FC0092C06711FC003139 +S224FE0060C065700072FF343C42D741F8C0FE3080308151CAFFFA43F8000045F87FFE343C1D +S224FE0080344230113010301251CAFFF8343C06C541F8C00172084A10D0FC001051C9FFF81C +S224FE00A051CAFFEE43FA0006600002C649FA2D0B4BFA000660002C0441FA00362278000861 +S224FE00C021C80008B1F80008662E11FC0090C58711FC0090C50711FC0000C58311FC00CD66 +S224FE00E0C50311FC0000C58511FC0005C50560044FF8040021C900081038C0216B64E6087B +S224FE010002400006303B00064EFB000200180024001800084238010449FA2DB74BFA085831 +S224FE012060002B9849FA2DBB4BFA003860002B8C49FA2DBE4BFA000660002B8074FF720071 +S224FE014070001038C023460008000002670272FFE308024000064840204030C151CAFFFCB5 +S224FE016060DA41FAFE9C343C1FFF42004201D018D21851CAFFFA4A00671449FA2D394BFAC1 +S224FE0180000660002B364A38C0216A0001004A01671449FA2D2F4BFA000660002B1E4A38EC +S224FE01A0C0216A0000E811FC0001C067307C000072014841323CFFFE224145FA00066000B9 +S224FE01C02A3A664647FA000C21CB000808F80002C5034FF8040047FA002421CB00087202E9 +S224FE01E04841D3C1303CA5A53280B051660E46403280B05166064640D3C160EC4FF80400AC +S224FE020093C145FA0006600029F267084A38C0216A00007A303C00BF41F80100429851C8B9 +S224FE0220FFFC548921C901004E6121C9014A21C9014243FA000C21C9000808B80002C50322 +S224FE02404FF804006100041C11FC0000C0674A38C0216B1611FC0007C06770FF51C8FFFEF7 +S224FE026011FC0006C0676000FEFA6100018241FA2B2B6100019E30380100ED486100021C57 +S224FE0280704B610001E06100016660044E7227007228740208380006C0216702725011C216 +S224FE02A001C611C101C7423801CA11C201CE11C101CF11FC000101D27206610000FE42381F +S224FE02C001BA2278000841FA003021C8000811FC00AAC58311FC0005C5050C3800AAC58351 +S224FE02E0661611FC0000C58350F801BA31FC027001F011FC008001F54FF8040021C90008D7 +S224FE03001038C021C07C0030670CB07C00206724B07C0010672621F80100014A21F80100B3 +S224FE0320014231FC2700014E41FA004221C801466000064442676100280860DA4A3801BACC +S224FE034067D4203801004840720C92406F12C2FC000A5341303C6F9A51C8FFFE51C9FFF6B7 +S224FE0360426770012F006100356660AA4E4F60FC41F8C0734200108011FC0076C007E018B2 +S224FE038010801238C021E0181080706E080100036702707E10BC00400241000711FB101450 +S224FE03A0C003108011FC0000C003E01810BC00254ED1028040201008040241F8C033424061 +S224FE03C0108011FC00B6C007E018108011FB10E4C005E018108011C0C005E01810BC004091 +S224FE03E0E01810BC004EE01810BC00274E752F00700D6170700A616C4200616861666164DF +S224FE040061626160201F4E752F0070206156201F4E753F0010186704614A60F8301F4E75F4 +S224FE0420E9186126E91861224E752F017203E958611851C9FFFA221F4E752F017207E9984A +S224FE0440610851C9FFFA221F4E753F000200000FB03C0009630406000007060000306104C5 +S224FE0460301F4E754A380104662C3F01323CFFFF08380002C07356C9FFF8670811C0C071A6 +S224FE0480321F4E7548E7C0C043FA00066000FEE24CDF030360D64E4A4E7548E7F0007200C0 +S224FE04A032007400343C2710420382C266044A0367061001619450C34241484184FC000A90 +S224FE04C066E84CDF000F4E754A38010466282F011238C0730801000167F61038C071020129 +S224FE04E000386604221F4E7511FC0035C07370076100FF7260DA4E494E7508380001C0738D +S224FE05004E7561C4088000070C0000616D0A0C00007A6E04088000054E7521C001067002DB +S224FE0520604E21C001067004604621C001067006603E21C001067008603621C00106700AB4 +S224FE0540602E21C00106700C602621C00106700E601E21C001067010601621C001067012F4 +S224FE0560600E21C001067014600621C00106701648F87FFE010A4E6821C8014A2A00701668 +S224FE0580BA806270BA3C00046206381F261F341F31DF014E21DF014621CF01424FF80400D7 +S224FE05A00C0500146700199A6E0018B80C050012661E11FC0001C06711FC0000C0674A3829 +S224FE05C001BA670C08F80002C50308B80002C50370FFE01851C8FFFC46FC270011FC00386D +S224FE05E0C02508B8000601504238010443FA000A6000FD7E428560A849FA27164BFA0006C1 +S224FE0600600026B849FA2990D8F450004BFA000460EE49FA29964BFA000460E420380146BC +S224FE0620610017F66100FDC80C0500046200034841FA29FE6100FDDC30046100FDEE41FA0A +S224FE064029FB6100FDCE20036100FDF041FA29F86100FDC030026100FDD26100FD926000AA +S224FE0660031641F8000843FA268045FAF9944280301967186B06D08A20C060F24241120052 +S224FE06803019D08A20C051C9FFFC60E24E75225F02800000000FD080D089C1893251D3C09F +S224FE06A04ED148E780B02478000847FA001421CB0008101121CA00084CDF0D01B0004E750C +S224FE06C0508F321F46C141FA26586100FD46588F20096100174421CA00084CDF0D0100008B +S224FE06E000014E7508380001C0734E752F00703A6100FD72201F6100FD104E752F00702C18 +S224FE07006100FD62201F4E752F0070076100FD56201F4E75C03C007F0C0000206D060C0092 +S224FE0720007E6D02702E4E752F092F01224842816100FDD00C00001B6700006E0C0000128B +S224FE0740670000680C00000D674A0C000008661AB3C867DC6100FD0E6100FCAE6100FD06D0 +S224FE076051C9FFF25389528260C40C00007F6614B3C867BC61585389528210116100FCE627 +S224FE0780544160AC611A428153826B0812C06100FCD4609C610A421912C0221F225F4E7513 +S224FE07A08281673C4281602C224842812F0870236100FCB26100FC38B3C86700000C101890 +S224FE07C06100FCA2B3C866F6205F6000FF648281660E72013F00103C005C6100FC88301FF9 +S224FE07E04E75428010188000660253884E7561F28000670A0C00002067040C00002C4E75ED +S224FE080061E067080C00002067F653884E7561D2244942411219B011568957C9FFFA660091 +S224FE082001481021E1581021D4C04ED248E7180042817801E89C61B667540C00002F660E95 +S224FE0840383C33334844383C333461A26740040000306D380C0000096F144A04662E040053 +S224FE086000070C00000A6D240C00000F6E1E26014A046708E799E39BD2836002E999B684CB +S224FE0880640AD280848267C2B48164BE72FFC1414CDF00184E752F036100FF66428395CA7A +S224FE08A06100FF4C670000480C00002367360C0000246708347801525388602A6100FF307B +S224FE08C06700002C0400003065240C000003641E244093C96100FF18670000180C00002B46 +S224FE08E0660C6002528342826100FF42670257832240D5CAD5CAD4FC0154D3D2201FC143F6 +S224FE090080804E752F0242826100FEF6670000520C000027671C0C00002E674624016100EB +S224FE0920FF0C6B06241F92814E75241F428153814E756100FEAE6100FEAA670000200C00D9 +S224FE094000276712E19A4A0266E0D480828167E6B28264E260D46100FE9666CEC14260C445 +S224FE09607001241F22004E756100FA9E703F6100FAF46100FD944FF8040042B801546100F7 +S224FE0980FA6E0838000601506700000870546100FAD436380152670C70246100FAC81003F5 +S224FE09A06100FAA8703E6100FABC742841F801886100FD7643FA1A686100FE5460B843FA73 +S224FE09C01A8C6000FE4A6100FE382838017E387801821010670E6100FEBE668C2809284AD6 +S224FE09E031CA01826100FE1A327C01001010670A6100FEA46B00FF726704D3C45389528925 +S224FE0A0021C9017E2A09611C6718280B6100FCD667F46100FAEE0C00001367F60C000003A6 +S224FE0A2066E44E756100F9C820046100FA0EB8FC0154670C6100F9D2200490946100F9FCB1 +S224FE0A406100FCAA760F2644C7496100FC56C7496600FF16101B6100F9C808030000660091 +S224FE0A6000066100F9A4BA8B57CBFFDE6100F99A760F2644101B6100FC9C6100F9E8BA8B9D +S224FE0A8057CBFFF24E7543F80154323C20247402601443F80126323C2041600843F8010676 +S224FE0AA0323C204474076100FD3A671A903C00306B00FEB678001800B8026E00FEAC6122CD +S224FE0AC06100F92C4E754284611852846100F93A0C04000466046100F9306130B8026DEA77 +S224FE0AE04E756100F90A42833001E0880C000020670000066100F96E10016100F968868331 +S224FE0B00660610046100F9446100FBE22004E5800280000000FF4A836A4230310000610031 +S224FE0B20F90A0C415352663C48E7704036006100F8D870286100F92E428243FA18D214199D +S224FE0B40670E1019E57B650270206100F91860EE4CDF020E70296100F90C600820310000EA +S224FE0B606100F8D84E756100FC7A6600FDFC6100FF226100FF2861186108614861046134B9 +S224FE0B804E756100F8846100F8804E756000F86061FA103C00506100F8CC103C0043610052 +S224FE0BA0F8C46100FB4820380146307801526000126861D876FF43F8014E223C0000535223 +S224FE0BC0600E61C843F8014A223C00005553760142846100FF144E757C0060000C2C7000F7 +S224FE0BE072104A10670A6100FC446B00FD7C12006100000E5200B0016DF66100F7F24E752C +S224FE0C006100F7EC41FA00206100F8086100F83C41FA001B3438017C0102670441FA001B39 +S224FE0C206100F7F04E755452415020230020204E6F207472616365200020205472616365B1 +S224FE0C4020202020000043FA18A26000FBC26100FCB46600FD142A006100FCAA6600FD0AD7 +S224FE0C602800D0856100F7882200103C002B614822059284103C002D613E2205C2C4103C84 +S224FE0C80002A61344A446746220582C4103C002F61186132103C00726100F7CA103C0065D2 +S224FE0CA06100F7C2103C006D48416100F7B86100FA3C30016000F7746100F7AA6100FA2EA7 +S224FE0CC020016100F7766100F7406000F73C4E757C106100FB2C2838017E387801821010EE +S224FE0CE067106100FBB26600FC802809284A31CA01826100FB0C327C00141010670C7CFF31 +S224FE0D006100FB946B00FC6267062C096B00FC5A52892A092C446100F6D6200E6100F71C67 +S224FE0D20B8FC0154670C6100F6E0200E90946100F70A6100F9B848E7060061304CDF0060E6 +S224FE0D4021CE017E4A866B065386671E2A0EBA8E650000186100F98E67BC6100F7A60C0071 +S224FE0D60001367F60C00000366AC4E75300EE2086500FBF67C07610006F03E00E9586100E4 +S224FE0D80F90E0020010001080104014003880428046E0512060606CC053A05A6060606526D +S224FE0DA006CC08070008664E43FA176C3207E049E249610006F659016F5E040100106758EE +S224FE0DC0580166064245611C60063A07610006C4610006FC6100070216076100F9206100B0 +S224FE0DE007364E75428543FA171E3207EC5902410003600006B63007020000380C00000852 +S224FE0E0067367042610006AE61DA610006C23607EC5B6100072860C030070200003F0C004F +S224FE0E20003C66A64282263A084C080700066704263A0846600000F2203A082A6100067606 +S224FE0E407050610006703A07E35D08C500066100064E6100067A08070007670A61126100B3 +S224FE0E60F89C61144E7561106100F89261024E753607EC5B600006C6360708C30005600004 +S224FE0E800696428560067A4060027AFF203A07D6610006223007EC580200000753006606EE +S224FE0EA0704161000610610005F6610006223607610006646100F8463607EC5B610006642C +S224FE0EC04E7508070008660002043007EF580240000732006100F7B8001000320014001C4E +S224FE0EE0007C011800B201527401600A263A0786428260064282263A0780283A07683007AC +S224FE0F00020000C00C0000C0671843FA16366100059A3A076100057C610005B4610005F69F +S224FE0F204E7520046100058E7A40610005A228034A026614610005DE4A84670A6100F7BE87 +S224FE0F402004610005704E7561F66100F7B0610005C44E753207E6590241000708070007AD +S224FE0F606624203A071808070006670C203A07124A016604203A070E6100053A61000550F6 +S224FE0F80610005924E754A016756203A06D861000524704D3A07E35D08C50006610005163C +S224FE0FA0610004FC610005287A40610004BC31C001880807000A661E6100000C6100F73E4A +S224FE0FC0610005524E7570236100F49A303801886100F4584E7561E86100F72261E84E75E1 +S224FE0FE0203A06AA08070006678E203A069C60880C0700FC6612203A0698610004B8203A00 +S224FE10000694610004B04E753A07024500C00C4500C0670A3005E2588A406000FEEE283AAA +S224FE10200678428242836000FED608070007660000983207E6590201000714010C010006B4 +S224FE104067520C0100036F14263A065E024200010247000F004700C86000FEA043FA14FC86 +S224FE10606100044861000468E20A660E70236100F3F430076100F3D44E753607E75B6100B6 +S224FE108004C008070003660A6100F6727A40610004484E75320702410007340143FA14CC3F +S224FE10A0610004080C020002660A610004227A406100042670544A02670870560C0200061B +S224FE10C066046100F3A04E754280600270023207EC59C27C0001D2407A4043FA14AE61006D +S224FE10E003CA610003EA6100042C0807000867186100F60A3607EF5B7020080700066702B5 +S224FE11007028B143610004104E753207020100C00C0100C0673E203A058808070008670431 +S224FE1120203A05826100038E3A07610003666100039E70236100F32E3007EF580200000730 +S224FE11404A00660270086100F3026100F5B0610003C44E7570533807020400380C040008C3 +S224FE1160660808870003303C4442611C610003A60C04000866106100F5847A40610003600D +S224FE11803440610003FA4E7543FA1440610003263207EE5902810000001ED3C142803011E4 +S224FE11A061000312610003284E757A40320702410F000C410100670A704243FA13EE61CC46 +S224FE11C0600C203A04D8610002EC6100030230074A0067106100F24AE158E040548E61087C +S224FE11E0558E4E75610002F83440610003924E750807000866000258203A046A610002B606 +S224FE12007051610002B0610002C670236100F25610076100F20C6100F4E43607EC5B6100FE +S224FE1220031C4E753A0743FA13C2612208070008670C61106100F4C6610002DA4E7561F884 +S224FE12406100F4BA3607EC5B610002F24E753207E95902410007610002524A45670461000B +S224FE126002326100026A4E75428560023A0743FA139A61DA3607E75B61086100F48036071E +S224FE1280EC5B080700036606610002B24E75610002C04E753007024001F00C40010067C8E2 +S224FE12A0EC4872045740670859406600FF787205088700068E7C41006000FE1E3007EC58B7 +S224FE12C00240000755406F00FF5C43FA133E7A4053406706E35D594066166100FF72610093 +S224FE12E002346100F4183607EC5B610002544E75044710003007024000380C400008660084 +S224FE1300FF24203A03A8610001AC3A0761000184610001BC3607E75B61086100F3E03607F6 +S224FE1320EC5B610002264E753007024001F878000C400140671078030C4001486708780230 +S224FE13400C4001886624203A0368610001686100017E3607EC5B61086100F3A23607E75B5A +S224FE1360E21C650001DC600001D4E8480C0000106700FEF67206E44857406700FF34720700 +S224FE1380594067F66000FE9E3007024000C00C4000C067123007024001300C40010067003C +S224FE13A0FECC6000FE803A07E25D43FA12563207E55902410001610000F2610000E26100AB +S224FE13C0010E610001506100F3343607EC5B610001704E7532073A07024500C00C4500C016 +S224FE13E06744E6596150610000AA610000E2360702430E00080700056708EC5B6100013E07 +S224FE1400601670236100F05E3003EF580200000F660270086100F0346100F2E23607E75B6D +S224FE14206100011A4E75EF59610C4285610000A0610000E24E750241000334070242010021 +S224FE1440EC5A824243FA11DC610000604E75702E61000062203A02126100005A6100007076 +S224FE146030076100EFC64E752F09224E6100F2346600F4F6301E225F4E752F09224E61003F +S224FE1480F2226600F4E454896100F218201E225F4E75024500C00C05008066027AC03205BC +S224FE14A0EC590201000343FA108AE519024100FF203110002F017203E1984A00670000088F +S224FE14C06100EFA2530651C9FFF0221F4E756100EF3851CEFFFA4E7570236100EF883205AC +S224FE14E0EC59C27C0003B23C000267206100FF7A53016C066100EF2A4E756100EF2E53013D +S224FE15006D086100FF646100EF224E75703F6100EF544E7536071003E60802000007E70B0B +S224FE152086001003024000076100F164001000140018001E00240076008000C672446014AC +S224FE154072416010223A0112600A223A01106004223A010E7403E1991001671C6100EF0675 +S224FE15600C00004467060C000041660C3003E618020000076100EED451CAFFDC4E75705B0B +S224FE15806100EEE2D5CE200A558030780152D1C8D1C890A801546100EEA2705D6100EEC6E8 +S224FE15A04E756100FEC46100EE8260986100FEBA38006100EE6C70286100EEAA6182610098 +S224FE15C0F13C3604EF5B0804000F66066100FF6E60046100FF6C702E6100EE8A7057080488 +S224FE15E0000B6702704C6100EE7C70296100EE764E75E61BC63C000710036100F0920012BA +S224FE1600001C0026003E00540010001000104E756100FE566100EE144E756100FE5E610007 +S224FE1620EE1A4E756100FE4234406100EDFE223A003C6100FF206100FF464E756100FE2A71 +S224FE164038006100EDDC203A00286100FE686000FF6E6100FE844E75284129002841292B1A +S224FE16602D2841294D4F5645574F5244285043292850430043435200535200004E42434402 +S224FE168050454100535741504558544C45585457494C4C4547414C005441530042535200E8 +S224FE16A0414444515355425155535000434D504D4558470043FA0DB56000F1546100F1D8FB +S224FE16C06600F2A660046100F0402809284A2A0454856100F3506100F01441F80188243C3F +S224FE16E0000000286100F042428110106716223C0000FFFF6100F20E6BCC6E0A134000010C +S224FE1700E080128054890C01002E66BE4E7543F80154323C202474037A01601643F80126C9 +S224FE1720323C2041600843F80106323C2044740842856100F0AE671A903C00306B00F22A15 +S224FE1740B0056B00F224B0026C00F21E4282610E4E75200561085280B0026DF84E7542832D +S224FE17602F023A0128002C00E5864A82660E6100F0904A10662260046100EF8E320561005E +S224FE1780EC6E6100F3646100EF64742841F801886100EF961010672042816100F1686BD8D5 +S224FE17A0660000160286000000FF86836A063380600060042380600032051004241F4E75DF +S224FE17C06100F0206600F1A26100FF526100FF586106611E610E4E7543F80146323C504397 +S224FE17E06000001843F8014E323C535276FF6000000C43F8014A323C555376014282428057 +S224FE18006100FF5E4E757CFF7A0142806100EFD467144486903C00306B00F14EB03C000190 +S224FE18206E00F1463A00360060046100EEDC3643D7CB284BD7CB4A866B0A675A6100EFC2B9 +S224FE18404A106614616A6100EEA4742841F801886100EED66100EFAA101067320C00002E83 +S224FE1860660607B8015060266100F02C6BBC6100EF90243C0000FFFF6100EFB26BAC426CBA +S224FE188001723940017607F80150274901605243B6456F9A4E75611860F4427265616B7043 +S224FE18A06F696E742000496E61637469766500006100EB3C41FAFFE46100EB58100361005A +S224FE18C0EB8A6100EE2807380150660A41FAFFD86100EB404E75202B01606100EB5E610001 +S224FE18E0EB2870286100EB7E302C01766100EB3C6100EE0A302C01726100EB307029610077 +S224FE1900EB644E75760078104A10671C6100EF1E6B00F056160018006100EEE60C000054F5 +S224FE192067460C00004E67386100EAC441FA004C6100EAE010036100F2C86100EDB0742875 +S224FE194041F801886100EDE26100EEB667240C00005467140C00004E67066100EDAC60C83E +S224FE19603238017C078160063238017C07C131C1017C5203B6046DBC4E752854297261639B +S224FE198065206F7220284E296F2074726163650043FA0AF86000EE78243C000000FF616C50 +S224FE19A06600EFC61A00E1401005600C243C0000FFFF61586600EFB23A00484030056008D0 +S224FE19C0428261486600EFA241FA14AA6100EA4461000942E19812C0538466F821CA0008F9 +S224FE19E04E7548E7F0006100EEAE661A28096100EEA62449C9896B0E6E0698895284600458 +S224FE1A00D5C9538A42804CDF000F4E7561D4660622026100EEF04E7561F266142C009887AA +S224FE1A206D00EF4670FF4A10670A22026100EED66600EF3641FA15266100E9D8610008D61C +S224FE1A404E7543FA0AB46000EDC6243C000000FF7E0161C41219C200B206670453846CF468 +S224FE1A606100009660F6243C0000FFFF7E0261A81219E1991211C240B246670453846CF0CF +S224FE1A806100007660F642827E04618C2649548B1219E1991211E199121BE1991213C28045 +S224FE1AA0B286670453846CE86100004E60F66100FF326600EEB448E708606100FF26660033 +S224FE1AC0EEA82A492C044CDF0610C34D41FA148E6100E9406100083E9C8465182849528982 +S224FE1AE02E04264D121CB21B6606538766F6610853866CE861024E7148E7FE7E663E41FA5F +S224FE1B00146B6100E90E538920096100030C6100EBDC7203E198101951C9FFFA6100E91CBE +S224FE1B2041FA14556100E8EC6100E9D80C00004366126100E9304CDF7E7F4E7541FA140D1F +S224FE1B406100E8D04CDF7E7F21CA00086000EE286100E8B66100E8B243FA093A6000ECB062 +S224FE1B6043FA093C6000ECA86100ED2C6600EDFA20096100E8C66100EB7410116100E8A221 +S224FE1B804E756100ED126600EDE03C09080600006600EDD620096100E8A26100EB5030117F +S224FE1BA06100E8884E7543FA08FD6000EC626100ECE66600EDB4223C000000FF6100ED4673 +S224FE1BC06600EDA612804E756100ECCC6600ED9A3C09080600006600ED90223C0000FFFF1C +S224FE1BE06100ED226600ED8232804E756100EC1274076100EC386B00ED7022006000E7BCDC +S224FE1C0043FA08AA6000EC086100006443FA07B654894A516700ED523014C059B05966F0E5 +S224FE1C20D8D121CC016808F80002015008F800040150600261387401610001BA426A01724F +S224FE1C4051CAFFF66002612608B80005015008F80006015008F80007015010380150020028 +S224FE1C600007660608B800060150600001506100EB901010670C6100EC1E6600ECEC21C924 +S224FE1C80014661066100E7684E752C380146284608060000671241FA001C6100E776200645 +S224FE1CA0610001766000ECD0224C6100E9F66600ECB84E75496C6C6567616C2070726F6720 +S224FE1CC072616D20737461727420616464726573733A20006100E71843FA07DC6000EB3018 +S224FE1CE0083800060150670461A0604E4E7508F8000501506040619208B8000301500C1054 +S224FE1D000049660808F80003015052887005083800050150660270104A10670E747F6100C5 +S224FE1D20EAE06100EB086B00EC406100E6C2600C08B8000501506100FF36700111C0015136 +S224FE1D4008F80006015008B80007015030140240FFF00C404E406664301C0240000F3C38E7 +S224FE1D60017C41FA002C0106661C21CC016808F80007015008F80002015008B800040150DD +S224FE1D80673A41FA00216100E68A6100E662602C2A2A2A2054726163696E67205452415080 +S224FE1DA0202A2A2A002A2A2A204753207465726D696E61746564202A2A2A00002878014678 +S224FE1DC03C38014E08380006015066060886000F600408C6000F2078014A4E602E780142E2 +S224FE1DE02F0C3F064CF87FFF01064E7308B8000601504E7542803242D3C92449D3C90538E4 +S224FE1E000150670E226901606100E8986600000652804E7553804E756100E6203078015233 +S224FE1E20D0C8D0C84A780152672E6100E5DC2F0070286100E63070246100E62A30380152A5 +S224FE1E406100E6086100E8A6201F90A801546100E5EA70296100E60E4E7554726163653A6B +S224FE1E6020000838000601506700FF52083800070150672608B80006015074006100FF766A +S224FE1E806B00EAE667083551016C32BC4E4F52420C42000366E66000FF2441FAFFBE203813 +S224FE1EA0014621C0017E6100E56A28406100FF6AD0FC015431C801826100E832224C6100AF +S224FE1EC0E7E2661430116100E5626100E53C6100E5382C496100EE96083800050150670A72 +S224FE1EE041F8018842106100EC7E533801516F1E083800030150671A6100E7EA6714610073 +S224FE1F00E6020C00001367F60C00000366046000EA666100E4DA6000FE280D0A556E6578D5 +S224FE1F2070656374656420627265616B20706F696E743A2000000D0A427265616B3A20000A +S224FE1F4042854286283801465584760041FAFFCC74026100FEA06F32B3C4661E41FAFFD8D0 +S224FE1F6076020C02000267123A2A01723C2A0176BC4567065245354501720C514E4F670650 +S224FE1F8005B80150600432AA016C51CAFFC60838000201506728B8B80168662208B800025E +S224FE1FA0015008B800040150661421C4014608F80006015008B8000701506000FEA6203847 +S224FE1FC00146908321C00146BC456600FC824A436600FED028440C544E4F6600FEC620041F +S224FE1FE06000FEC043FA04E46000E82411FC000101BB6004423801BB41FA0E8E6100E4149B +S224FE20006076428574016100E8246B00E95C3C00243C0000FFFF6100E8146B00E94C3F00B8 +S224FE20206100E8746600E9422F0942826100E7FE6B00E9362F003F064A85670E41FA0E572B +S224FE20406100E3D061000992600C41FA0E3C6100E3C26100097E6700000E41FA000C610071 +S224FE2060E3B26100E3BC4E750D0A4469736B206572726F723A20000061740C000051670026 +S224FE208000C00C00005366F0420561621E00610000BC1C0153064281610000B2610000AE28 +S224FE20A026410C070030660E4A0667066100009E60F6617460C20C0700326614220B6100A9 +S224FE20C0008C26414A0667EA6100008216C160F40C07003167EE0C07003966644A06666096 +S224FE20E0614641FA0C4F6100E32A6000E88A4A3801BB672408380001C033670A1038C031B9 +S224FE2100088000074E756100E3F267E26100E3F40C00005166D84E756100E3AE0C00000D4A +S224FE21206700E2CC6000E33E6122460566024E75588F41FA0C216100E2DA6000E83A508F40 +S224FE214041FA0BFD6100E2CC6000E82C61086106DA0153064E7561960C0000306DE00C0063 +S224FE216000396E0A04000030E989D2004E750C0000416DCA0C0000466EC45F0060E643FA86 +S224FE218003436000E68A7A016000FE7A6000E7E843FA03426000E678202053797374656D9F +S224FE21A0207265696E697469616C697A696E672E2E2E2E0046FC270011FC0025C07342381A +S224FE21C0010441FAFFD46100E24A70FF51C8FFFE6000DE724280428710100C0000526606B2 +S224FE21E03E3C010052881010670A74016100E63E6B00E77680473F00610009464E754A3839 +S224FE220001BA6700E764428042877C0110100C00005266063E3C010052881010675C0C0018 +S224FE222000206714040000306D00E73E0C0000036E00E7368E0052886100E5C64A00673A41 +S224FE22400C0000236600001652884A10672C740F6100E5DA6B00E7123C00601E740743F892 +S224FE226001F62C09429142A90004422900086100E572670612C051CAFFF63F072F06610017 +S224FE2280164E4E754E7574186100E16451CAFFFA4E7543FAE2D621C9002443FAE2C621C976 +S224FE22A000BC4E7542801010670A74026100E57E6B00E6B631C00152E540D07C015431C00D +S224FE22C001824E756100E5D06600E69E28096100E5C66B00E694C98966049889600253847D +S224FE22E06500E68626496100E5AE6600E67C41FA0BB26100E11E7201B7C96406D3C4D7C4F8 +S224FE230072FF61101293D3C1D7C153846CF621CA00084E752478000849FA000821CC000834 +S224FE23204E7541FA09FC6100E0EA548F201F6100FAE821CA00086000E63E43FA01B560003D +S224FE2340E4CE3F3C00016002426774016100E4DE6B00E6163F00243C0000FFFF6100E4CE92 +S224FE23606B00E6063F00427801CC427801D411FC000101DB3F172F3C000004002F3C000094 +S224FE238010003F2F000C4A6F001067066100064A60046100063E662A702E6100E0C808F889 +S224FE23A0000101DB6100E15467CA6100E11C11FC0007C02711FC0009C027423801DB5C8FDF +S224FE23C04E75705860D4F0FF60000004F00060000002F0F850C80004FFB84E900002FFB844 +S224FE23E04EA80004FFB84EB00004FFBF4EB80004FFBF4EB90006FFBF4EBA0004FFBF4EBB03 +S224FE24000004FFF04E400002000000000000015402530958014E015A0156014300000E4494 +S224FE2420A0E55396F24672F52486FE4DA6FE5032F754B6F847E2F75760FD4CC6FB00C2F8DD +S224FE24404972FD4128E8451CFF5824F6094D7AE5521AE74450E64146E65044E75366E7553F +S224FE246076E7243AE6428CE75492E7094D51F25255F344BBF241B1F2506DF35379F35587E3 +S224FE2480F324A3F2429BF35499F402420EF55722F54C36F50249CCF64F12F75358F7014266 +S224FE24A0CAF657E4F6014209F75723F7024F88F7439AF7535CF703427AF84536F95238F87D +S224FE24C04E40F80141C9FC46C3FC024122FB542AFB4638FB064600FD482AFD47B0FD53E036 +S224FE24E0FC568EE143B2FD54BEFD0144E6E75264E7015257FE5751FE034252F5576EF54C88 +S224FE25008EF54DB6F5005453540043484700434C5200534554004F524900414E44495355F5 +S224FE252042494144444942000000454F5249434D50492E4200002E5700002E3F00002E4C85 +S224FE254000004E454758434C52004E4547004E4F54000000000054535400545241505452C2 +S224FE256041504C494E4B554E4C4B524553454E4F500053544F505254450034453734525488 +S224FE2580530054524150525452004A5352004A4D500043484B004C45410044495655444973 +S224FE25A056534D554C554D554C535241460048494C53434343534E45455156435653504CBF +S224FE25C04D4947454C5447544C455400460048494C53434343534E45455156435653504C1D +S224FE25E04D4947454C5447544C454F52000053554200454F5200434D5000414E4400414441 +S224FE260044005355424141444441534243445355425800000000434D504141424344414430 +S224FE26204458415352004C535200524F5852524F520041534C004C534C00524F584C524F35 +S224FE26404C0048E760401219143C00AD1038C0510800000756CAFFF6671A080000066614AE +S224FE266011D9C053740951CAFFFE530166DA4CDF02064E7511FC000101C560F248E7604046 +S224FE268043FA09D461BC6624720243F801C36174661A123801C3020100C0670C080100065B +S224FE26A0670472036002720211C101C54CDF02064E7548E76040720743F801BC421161449B +S224FE26C0663C123801BC020100C0672E0801000667267205103801BDE208651E7206E4080C +S224FE26E065187207E40865127208E208650C7209E4086506720A6002720211C101C54CDFC2 +S224FE270002064E75343C10FE1038C0510800000756CAFFF6671608000006671012F8C053D1 +S224FE2720740951CAFFFE530166DA4E7511FC000101C54E752F017002484008380000C06386 +S224FE27406612538066F411FC0002C02711FC000401C5600C4A02662012F8C053534166D6D9 +S224FE276011FC0001C02711FC0000C0276100FF44221F4A3801C54E7511D9C053534166B6D0 +S224FE278060DE48E76040720143FA08C96100FEB466387402484208380000C063660C53824D +S224FE27A066F411FC000401C56020422C00036100FECC67160C38000301C5660E0C2C005043 +S224FE27C00001660651C9FFC270034CDF02064E7548E760407202103801D6B02C0003674C51 +S224FE27E043F801B032BC030F42290002137801D600036100FE4E6634740248420838000091 +S224FE2800C063660C538266F411FC000401C5601C6100FE6A660A197801D600034200600C4C +S224FE28206100FF60660651C9FFAE70034CDF02064E750000000000000000423801C54A2C83 +S224FE284000006700010C3F077E0111FC000FC02711FC0000C02711FC0003C02743FA07F119 +S224FE286011FC000EC0276100FDDA663870064A2C00046702540011C0C02711FC000AC0271A +S224FE288070FF51C8FFFE08380000C06367086100FDEC423801C56100FEEA671C0C38000341 +S224FE28A001C5670451CFFFA43E1F70014E7570080838000001DB667070044840538066FCF5 +S224FE28C0197CFFFF000243FA07906100FD7666D4343CFFFE1038C0510800000756CAFFF694 +S224FE28E0660E11FC0002C02711FC000401C560B86100FDC066AE103801C1B02C00026708F3 +S224FE29006DC41940000260BE0C000008671A0C00000967100C000010673E0C00000A662686 +S224FE29207418600674206002742A0C38000201C26614397C02000006194000021942000513 +S224FE29403E1F42004E7511FC000901C56000FF5A11FC000B01C54E750C38000101C266E688 +S224FE2960397C01000006742060CE4A2C0000675A4281323C020082EC00064282343801DEE9 +S224FE2980C4C14281122C000284C14241082C000000006604E24AE31111C101D711C201D6D2 +S224FE29A0B42C00016C244842122C00029202C2EC0006B2B801E06F04223801E0520211C271 +S224FE29C001D831C101DC42004E7511FC000B01C54E75423801DA600611FC000101DA225F81 +S224FE29E049F801C6301F670449F801CE21DF01E021DF01E431DF01DE2F097E034A6C0006D8 +S224FE2A00660001146100FE34660000EA4AB801E0670000E211FC0003C0274A3801DA672C42 +S224FE2A2008380001C063670A11FC000C01C5600000C4102C0001E208B03801D66F0811FC51 +S224FE2A40000DC027600611FC000CC0276100FF1C660000A26100FD7A667443F801B0303C8B +S224FE2A6009454A3801DA6602524032C0103801D7E50812C012F801D612F801D712F801D837 +S224FE2A80302C0006E04812C012EC000212EC000512FC00FF43F801B06100FBA866302278A7 +S224FE2AA001E44281323801DC143801DA6100FC86661C303C032051C8FFFED3B801E493B838 +S224FE2AC001E082FC0200D37801DE6000FF400838000001DB663A5307671A103801C50C0018 +S224FE2AE000016700FF200C00000367080C0000046600FF1A0838000001DB661470074A2CBC +S224FE2B0000046702540011C0C02711FC000BC027103801C54E750838000101DB6600FEEEFA +S224FE2B2070064A2C00046702540011C0C02711FC000AC02770044840538066FC6000FECED2 +S224FE2B4011EF00040105422F0004427801CC427801D46100DB0E46FC270011FC0025C073C5 +S224FE2B60423801046100D88841FA02AB6100D8A46100D87C4267307C04002F082F083F2F63 +S224FE2B80000E6100FE4E6612307C04000C58424F663C0C584F5466364ED06100D852103824 +S224FE2BA001C50C000004673041FA01B96100D8646100D86E41FA01CA6100D858102C000495 +S224FE2BC06100D8886100D828205F548F4ED041FA01A16100D83E60DC41FA024F6100D834C7 +S224FE2BE06100D9206100D8080C0000516600FF5C41FA02646100D81C60BA26484280428116 +S224FE2C00468126804A93661C2681B293661C26CBB7C963EE2648B7D3660E588BB7C963F68D +S224FE2C2042804ED222006002220B201349FA015D4BFA0006600000842A0B4BFA000660001B +S224FE2C40008649FA01634BFA00066000006E2A004BFA00066000007049FA01524BFA000605 +S224FE2C60600000582A014BFA00066000005A49FA01F44BFA00066000004249FA01964BFA25 +S224FE2C8000066000003670014ED23E3CFFFF08380002C07356CFFFF8671411C6C0717E0EEC +S224FE2CA051CFFFFE08380002C07366024ED608780003C06551CFFFFE60F41C1C67064DFAEE +S224FE2CC0FFFA60C64ED57807E99D7C0FCC050C060009630406060007060600304DFA000432 +S224FE2CE060A851CCFFE44ED5051A0522052A80020532053A056A052A052A800B0542800614 +S224FE2D000552055A800E054A0562800F05420000070D0A455843455054494F4E3A20200099 +S224FE2D20070D0A204E4F204D656D6F72792061743A20000D0A4C6F616420446F6E65000789 +S224FE2D400D0A426164204C6F616420436861726163746572000742616420436865636B7386 +S224FE2D60756D00074472697665204572726F722000074E6F7420424F4F54204469736B00EC +S224FE2D80206F6E206472697665200007424144204D656D6F7279206174200052414D20530A +S224FE2DA0697A65203D2000206973200020696E7374656164206F6620000D0A5341474520BB +S224FE2DC0537461727475702054657374205B322E335D0D0A0A436F707972696768742031A7 +S224FE2DE039383320205361676520436F6D707574657220546563686E6F6C6F67790D0A4169 +S224FE2E006C6C205269676874732052657365727665640D0A00426F6F74696E672066726F96 +S224FE2E206D20466C6F7070790050757420696E20424F4F54206469736B20616E64207072E4 +S224FE2E406573732061206B6579202851202D207175697473290007426F6F742041626F7296 +S224FE2E60746564002028546573742041626F727465642900202046696C6C696E67206D6529 +S224FE2E806D6F72792E2E2E0020204C6F6164696E672E2E2E00202057726974696E672E2ED6 +S224FE2EA02E0020204D6F76696E67206D656D6F72792E2E2E000750524F4D20312042616431 +S224FE2EC00D0A000750524F4D2032204261640D0A00427970617373656420496E69740D0AFD +S224FE2EE0004C6F6F7065642054657374730D0A0052414D207772697465206C6F6F700D0A06 +S224FE2F0000426F6F74696E672066726F6D204861726420447269766500436F756C64206ECA +S224FE2F206F742066696E64200057616974696E6720666F7220447269766520526561647961 +S224FE2F40203C512D71756974733E000D0A4E6F204D6174636820666F756E6400202053650B +S224FE2F6061726368696E672E2E2E000D0A4D617463682061742000202D20436F6E74696EF7 +S224FE2F80756520736561726368202843203D20596573293F2000001F0027002B0033004712 +S224FE2FA00052005C006A007A008F204572726F722061742000556E6B6E6F776E0042757394 +S224FE2FC0004164647265737300496C6C6567616C20496E737472756374696F6E0041726990 +S224FE2FE074686D657469630050726976696C656765005265736572766564205452415000A2 +S224FE3000556E61737369676E6564205452415000556E61737369676E656420496E74657212 +S224FE3020727570740052414D205061726974790046756E6374696F6E3A2000202041636362 +S224FE30406573733A20002020496E73743A20000303D1070207000108024A00006100000CE7 +S224FE3060423801C250F801BB4E7548E71C0011FC0000C50708F80000C5037080740011C028 +S224FE3080C5C1723251C9FFFE7A046100004A967801F067226E1244430C4300026F18520208 +S224FE30A0671C530066D860160C4300026F085202670C520060EE51CDFFD250F801BB11C090 +S224FE30C001EF11FC0001C507303C174051C8FFFE4CDF00384E7511FC00B0C60711FC00008D +S224FE30E0C60511FC0000C605323C174051C9FFFE11FC0080C60776001638C605E15B1638DB +S224FE3100C605E15B444386FC000C31C301F24E75223801D67000103801B934004841B24094 +S224FE31206200006E484182C04841303801B0C4C0C0C142414841944048C231C001E820382E +S224FE314001DAB4806D0C944031C201EC31C001EA600831C201EA427801ECD27801BC6530CB +S224FE3160B27801BE622A43F8020030196708B2406504524160F431C101E27000103801B85A +S224FE318082C031C101E4484131C101E642004E7511FCFFF501C34E7511FCFFF201C34E759F +S224FE31A02F02343C07D008380001C58167305342672611FC000CC58772016100011C4A387C +S224FE31C001C3660000927014484008380000C58167D45380670260F270FD6000007611FC85 +S224FE31E0000DC587720A610000F04A3801C3660000667014484008380000C58167065380C2 +S224FE320067D660F208380001C58167CC343C07D008380001C5816728534267BC11FC000C34 +S224FE3220C5877201610000B24A3801C366287014484008380000C58167D65380679A60F2F0 +S224FE3240303C251C51C8FFFE4200427801C050F801C211C001C3241F4E7508380000C581BF +S224FE326066604A3801C266066100FF3666521038C585020000F8807801E611C0C585323896 +S224FE328001C0927801E467326E0A444111FC000DC587600611FC000CC5876100003C4A3895 +S224FE32A001C3661C72FFE01908380000C58157C9FFF6660E31F801E401C0700011C001C378 +S224FE32C04E7570FD60F61038C583020000F0803801BA11C0C5834E7548E7E000E3495341C5 +S224FE32E011FC0036C60711FC00B0C607303801B211C0C601E04811C0C601741851CAFFFE1A +S224FE330011C1C605E05911C1C605741851CAFFFE08B80000C503343C08EC51CAFFFE720C11 +S224FE3320484111FC0080C6071038C605E1581038C605E158670C6B0A538166E611FCFFFDFE +S224FE334001C308F80000C5034CDF00074E7543F8C7C1247801DE08F80007C50311FC000FC0 +S224FE3360C50711FC000DC50711FC000CC5074A114A1111FC0003C78311FC0041C7851011E8 +S224FE3380E148101131C001C4343801E8670853424A1151CAFFFC343801EA534214D151CA74 +S224FE33A0FFFC343801EC670853424A1151CAFFFC4A114A1108380000C7836610303801C45E +S224FE33C0B07801E2660E423801C34E7511FCFFF801C34E757400143801B880C231C001C072 +S224FE33E011FCFFF401C34E7511FC0002C50711FC0008C50708F80006C50308B80007C5032A +S224FE340011FC000DC50711FC000CC50711FC000EC50711FC0030C60711FC0070C60730383B +S224FE342001B411C0C601E04811C0C601303801B611C0C603E04811C0C60311FC000BC5071D +S224FE344011FC000AC50708F80001C50370FF08380004C58156C8FFF8660611FCFFFA01C379 +S224FE346008B80001C50311FC0008C50708F80006C50311FC0005C50708F80007C50311FC57 +S224FE3480000FC5074E75225F21DF01DA21DF01DE21DF01D62F096100FE2E4A3801BB66040C +S224FE34A06100FBBA5D8F0C38008001F56700010811FC000A01EE423801C308380005C5810E +S224FE34C0660000684A3801BB66046100FB904AB801DA6700026A6100FC3866000054610027 +S224FE34E0FD7A4A3801C3660000486100FEFC4A3801C36600003C6100FE56660000344A384A +S224FE350001F5670C6A0000E8423801F5610001FA7000303801EAD1B801DE91B801DA80F85A +S224FE352001B048C0D1B801D6608611FCFFFC01C3533801EE6F00005A103801C30C00FFF96A +S224FE354067260C00FFF867200C00FFF7671A0C00FFFA67100C00FFF4660001E40C380003C1 +S224FE356001EE6C04423801C2303CFFFF51C8FFFE523801FF103801FF0200001F670A0C3884 +S224FE3580000501EE6600FF306100FAE06000FF284A3801F567186A00011C423801F5102FB0 +S224FE35A0000011C001EF11C0C5C1600001920C00FFF86600018A11FC000101F51F7801EF7E +S224FE35C0000011FC000A01EF11F801EFC5C1422F00021F7C000100011F7C00020003423838 +S224FE35E001EE303C257F51C8FFFE6000FECA102F00010C0000016700007A0C0000036700E7 +S224FE36000086102F00026604502F000352001F4000020C0000056D00009C0C2F00020001E9 +S224FE3620671E103801EF1F400005902F00046500006AE208D02F000411C001EF6000006264 +S224FE36401F7801EF000411FC00F501EF1F7C00030001303C257F51C8FFFE1F7C0002000385 +S224FE3660422F000211F801EFC5C1423801EE6000FE460438000F01EF6404423801EF1F7CA0 +S224FE36800002000160D40638000F01EF640450F801EF1F7C0004000160C011EF000001EF63 +S224FE36A011F801EFC5C150F801F511FC000A01EE6000FDFE532F0003670E423801EE11F87D +S224FE36C001EFC5C16000FDF0422F00021F7C00020003102F00010C0000026D2267180C00A9 +S224FE36E000036708533801EF67B060CE0438000A01EF65A660C4523801EF659E60BC063859 +S224FE3700000A01EF659460B248E75000303C258051C8FFFE11FC0000C507705051C8FFFE4C +S224FE37206100F9B431F801F201F011FC0001C507303C257F51C8FFFE4CDF000A4E7510382B +S224FE3740C583020000F011C0C5835C8F103801C34E75225F261F321F700003C011C001BA83 +S224FE3760E90911C101F42F09423801BB11FC000101B811FC001301B931FC020001B031FC71 +S224FE3780004001B431FC004801B631FC177001B242780200427801BC427801BE6100FB286E +S224FE37A0722F484108380005C581673441FAF77B6100CC606100CC38600808380005C58124 +S224FE37C0671E6100CD36670A6100CD380C0000516704538166E411FCFFFC01C3600000DE36 +S224FE37E070FF08380005C58156C8FFF86700001248410C41002F57C048414A0066AE60BA21 +S224FE3800223C00000000722F484108380000C58167146100CCE6670A6100CCE80C00005126 +S224FE382067B4538166E442A741F804002F08203C000004002F006100FC4E6600008070104F +S224FE3840B6806D2E204343F8060076002211B290660A22290004B2A800046716D2FC00207D +S224FE38605243B67C00106DE411FC000101C36000004C873801F4E54B41F8040031F030002D +S224FE388001BC31F0300201BE11E801F601B911E801F701B831E801F801B031E801FA01B476 +S224FE38A031E801FC01B631E801FE01B2D0FC004043F80200701F22D851C8FFFC1038C583F7 +S224FE38C0020000F011C0C583103801C34E752C5F11EF0004010508F800010105422F0004FA +S224FE38E06100CD8046FC270011FC0025C073423801046100CAFA41FAF6096100CB166100C8 +S224FE3900CAEE6100FE4E665242A7307C04002F082F086100FB72661C307C04000C58424F8B +S224FE3920662E0C584F5466287000103801F43F002F0E4ED06100CAB8103801C3440041FAA6 +S224FE3940F4236100CACE6100CAD86100CAA24ED641FAF41F6100CABC60F00C38000101C3D2 +S224FE396066D26100CA8A41FAF5B16100CAA641F801F66100CA9E60D2FFFFFFFFFFFFFFFF82 +S224FE3980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S224FE39A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S224FE39C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S224FE39E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S224FE3A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S224FE3A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S224FE3A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S224FE3A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S224FE3A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S224FE3AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S224FE3AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S224FE3AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S224FE3B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S224FE3B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S224FE3B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S224FE3B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S224FE3B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S224FE3BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S224FE3BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S224FE3BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S224FE3C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S224FE3C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S224FE3C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S224FE3C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S224FE3C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S224FE3CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S224FE3CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S224FE3CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S224FE3D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S224FE3D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S224FE3D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S224FE3D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S224FE3D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S224FE3DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S224FE3DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S224FE3DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S224FE3E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S224FE3E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S224FE3E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S224FE3E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S224FE3E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S224FE3EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S224FE3EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S224FE3EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S224FE3F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S224FE3F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S224FE3F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S224FE3F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S224FE3F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S224FE3FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S224FE3FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S224FE3FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S804FE0000FD diff --git a/SAGE/chip_defs.h b/SAGE/chip_defs.h new file mode 100644 index 00000000..443106fa --- /dev/null +++ b/SAGE/chip_defs.h @@ -0,0 +1,435 @@ +/* chip_defs.h: definitions for several chips + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 22-Jan-10 HV Initial version +*/ +#ifndef CHIP_DEFS_H_ +#define CHIP_DEFS_H_ + +#include "sim_imd.h" +#include "sim_sock.h" +#include "sim_tmxr.h" + +/***************************************************************************************** + * General implementation note: + * + * Each chip device is implemented through a specific data structure, e.g. struct i8251 + * The address of this data structure MUST be passed to the device->ctxt variable. + * The data structure MUST contain a PNP_INFO attribute at the beginning. + * + * In case each unit of a complex device has an own chip, device->ctxt points to an array + * of as much elements as there are units. + * The device reset routine MUST call add_iohandler and del_iohandler depending on + * enable or disable of the device. add_iohandler and del_iohandler will be passed + * the corresponding address of the data structure for the chip (device->ctxt). + * + *****************************************************************************************/ + +/* set this to 0 to remove debug messages */ +#ifndef DBG_MSG +#define DBG_MSG 1 +#endif + +/* generic debug tracing support */ +#if DBG_MSG==1 +extern FILE* sim_deb; + +#define ADDRESS_FORMAT "[0x%08x]" +#if UNIX_PLATFORM +#define NLP "\r\n" +#else +#define NLP "\n" +#endif + +#define TRACE_PRINT(level,args)\ + if(sim_deb && chip->dev->dctrl & level) { \ + fprintf(sim_deb,"%-4s: " ADDRESS_FORMAT " ", chip->dev->name, PCX); \ + fprintf args; fputs(NLP,sim_deb); } +#define TRACE_PRINT0(level,fmt)\ + if(sim_deb && chip->dev->dctrl & level) { \ + fprintf(sim_deb,"%-4s: " ADDRESS_FORMAT " ", chip->dev->name, PCX); \ + fprintf(sim_deb,fmt NLP); } +#define TRACE_PRINT1(level,fmt,arg1)\ + if(sim_deb && chip->dev->dctrl & level) { \ + fprintf(sim_deb,"%-4s: " ADDRESS_FORMAT " ", chip->dev->name, PCX); \ + fprintf(sim_deb,fmt NLP,arg1); } +#define TRACE_PRINT2(level,fmt,arg1,arg2)\ + if(sim_deb && chip->dev->dctrl & level) { \ + fprintf(sim_deb,"%-4s: " ADDRESS_FORMAT " ", chip->dev->name, PCX); \ + fprintf(sim_deb,fmt NLP,arg1,arg2); } +#else +#define TRACE_PRINT(level,args) +#define TRACE_PRINT0(level,fmt) +#define TRACE_PRINT1(level,fmt,arg1) +#define TRACE_PRINT2(level,fmt,arg1,arg2) +#endif + +/***************************************************************************************** + * general terminal multiplexer/socket support + *****************************************************************************************/ + +typedef struct { + int pfirst; + int prate; + TMLN ldsc; + TMXR desc; + UNIT* term; + UNIT* poll; +} SERMUX; +t_stat mux_attach(UNIT*,char*,SERMUX*); +t_stat mux_detach(UNIT*,SERMUX*); + +/***************************************************************************************** + * 8259 PIC + *****************************************************************************************/ +#define I8259_ICW1 0x10 +#define I8259_ICW1_A765 0xe0 +#define I8259_ICW1_LTIM 0x08 +#define I8259_ICW1_ADI 0x04 +#define I8259_ICW1_SNGL 0x02 +#define I8259_ICW1_IC4 0x01 +#define I8259_ICW4_SFNM 0x10 +#define I8259_ICW4_BUF 0x08 +#define I8259_ICW4_MS 0x04 +#define I8259_ICW4_AEOI 0x02 +#define I8259_ICW4_UPM 0x01 +#define I8259_OCW2_MODE 0xe0 +#define I8259_OCW2_LEVEL 0x07 +#define I8259_OCW3_ESMM 0x40 +#define I8259_OCW3_SMM 0x20 +#define I8259_OCW3 0x08 +#define I8259_OCW3_POLL 0x04 +#define I8259_OCW3_RR 0x02 +#define I8259_OCW3_RIS 0x01 + +typedef struct i8259 { + PNP_INFO pnp; + DEVICE* dev; /* backlink to device */ + t_stat (*write)(struct i8259* chip,int port,uint32 value); + t_stat (*read)(struct i8259* chip,int port,uint32* value); + t_stat (*reset)(struct i8259* chip); + int state; + int rmode; + int32 imr; + int32 isr; + int32 irr; + int32 icw1; + int32 icw2; + int32 icw4; + int32 prio; /* which IR* has prio 7? */ + t_bool autoint; + int intlevel; + int intvector; +} I8259; + +extern t_stat i8259_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask); +extern t_stat i8259_read(I8259* pic,int addr,uint32* value); +extern t_stat i8259_write(I8259* pic,int addr, uint32 value); +extern t_stat i8259_reset(I8259* chip); +extern t_stat i8259_raiseint(I8259* chip,int level); + +/* Debug flags */ +#define DBG_PIC_RD (1 << 0) +#define DBG_PIC_WR (1 << 1) +#define DBG_PIC_II (1 << 2) +#define DBG_PIC_IO (1 << 3) +extern DEBTAB i8259_dt[]; + +/***************************************************************************************** + * 8251 USART + *****************************************************************************************/ +#define I8251_AMODE_STOP 0xc0 +#define I8251_AMODE_S1 0x40 +#define I8251_AMODE_S15 0x80 +#define I8251_AMODE_S2 0xc0 +#define I8251_MODE_EP 0x20 +#define I8251_MODE_PEN 0x10 +#define I8251_AMODE_BITS 0x0c +#define I8251_AMODE_BITS5 0x00 +#define I8251_AMODE_BITS6 0x04 +#define I8251_AMODE_BITS7 0x08 +#define I8251_AMODE_BITS8 0x0c +#define I8251_MODE_BAUD 0x03 +#define I8251_MODE_SYNC 0x00 +#define I8251_AMODE_BAUD1 0x01 +#define I8251_AMODE_BAUD16 0x02 +#define I8251_AMODE_BAUD64 0x03 +#define I8251_SMODE_ESD 0x40 +#define I8251_SMODE_SCS 0x80 +#define I8251_CMD_EH 0x80 +#define I8251_CMD_IR 0x40 +#define I8251_CMD_RTS 0x20 +#define I8251_CMD_ER 0x10 +#define I8251_CMD_SBRK 0x08 +#define I8251_CMD_RXE 0x04 +#define I8251_CMD_DTR 0x02 +#define I8251_CMD_TXEN 0x01 +#define I8251_ST_DSR 0x80 +#define I8251_ST_SYNBRK 0x40 +#define I8251_ST_FE 0x20 +#define I8251_ST_OE 0x10 +#define I8251_ST_PE 0x08 +#define I8251_ST_TXEMPTY 0x04 +#define I8251_ST_RXRDY 0x02 +#define I8251_ST_TXRDY 0x01 + +typedef struct i8251 { + PNP_INFO pnp; + DEVICE* dev; /* backlink to device */ + t_stat (*write)(struct i8251* chip,int port,uint32 value); + t_stat (*read)(struct i8251* chip,int port,uint32* value); + t_stat (*reset)(struct i8251* chip); + t_stat (*txint)(struct i8251* chip); + t_stat (*rxint)(struct i8251* chip); + UNIT* in; + UNIT* out; + SERMUX* mux; + int init; + int mode; + int sync1; + int sync2; + int cmd; + int ibuf; + int obuf; + int status; + int bitmask; + t_bool oob; /* out-of-band=1 will allow a console to receive CTRL-E even when receiver is disabled */ + int crlf; /* CRLF state machine to suppress NUL bytes */ +} I8251; + +/* default handlers */ +extern t_stat i8251_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask); +extern t_stat i8251_write(I8251* chip,int port,uint32 value); +extern t_stat i8251_read(I8251* chip,int port,uint32* value); +extern t_stat i8251_reset(I8251* chip); + +/* Debug flags */ +#define DBG_UART_RD (1 << 0) +#define DBG_UART_WR (1 << 1) +#define DBG_UART_IRQ (1 << 2) +extern DEBTAB i8251_dt[]; + + +/***************************************************************************************** + * 8253 TIMER + *****************************************************************************************/ +/*forward*/ struct i8253; +typedef struct { + t_stat (*call)(struct i8253* chip,int rw,uint32* src); + int state; /* the current output state (latching, MSB/LSB out */ + int mode; /* programmed mode */ + int32 latch; /* the latched value of count */ + int32 divider; /* programmed divider value */ + int32 count; /* the real count value as calculated by rcall callback */ +} I8253CNTR; + +typedef struct i8253 { + PNP_INFO pnp; + DEVICE* dev; /* backlink to device */ + UNIT* unit; /* backlink to unit */ + t_stat (*reset)(struct i8253* chip); + t_stat (*ckmode)(struct i8253* chip, uint32 value); + I8253CNTR cntr[3]; + int init; +} I8253; + +#define I8253_SCMASK 0xc0 +#define I8253_SC0 0x00 +#define I8253_SC1 0x40 +#define I8253_SC2 0x80 +#define I8253_RLMASK 0x30 +#define I8253_LATCH 0x00 +#define I8253_LSB 0x10 +#define I8253_MSB 0x20 +#define I8253_BOTH 0x30 +#define I8253_MODEMASK 0xe0 +#define I8253_MODE0 0x00 +#define I8253_MODE1 0x02 +#define I8253_MODE2 0x04 +#define I8253_MODE2a 0x0c +#define I8253_MODE3 0x06 +#define I8253_MODE3a 0x0e +#define I8253_MODE4 0x08 +#define I8253_MODE5 0x0a +#define I8253_MODEBIN 0x00 +#define I8253_MODEBCD 0x01 + +#define I8253_ST_LSBNEXT 0x01 +#define I8253_ST_MSBNEXT 0x02 +#define I8253_ST_LATCH 0x08 + +/* default handlers */ +extern t_stat i8253_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask); +extern t_stat i8253_reset(I8253* chip); + +/* Debug flags */ +#define DBG_TMR_RD (1 << 0) +#define DBG_TMR_WR (1 << 1) +extern DEBTAB i8253_dt[]; + +/**************************************************************************************** + * upd765 FDC chip + ***************************************************************************************/ +#define I8272_MAX_DRIVES 4 +#define I8272_MAX_SECTOR 26 +#define I8272_MAX_SECTOR_SZ 8192 +/* 2^(7 + I8272_MAX_N) == I8272_MAX_SECTOR_SZ */ +#define I8272_MAX_N 6 + +#define I8272_FDC_MSR 0 /* R=FDC Main Status Register, W=Drive Select Register */ +#define I8272_FDC_DATA 1 /* R/W FDC Data Register */ + +typedef struct { + UNIT *uptr; + DISK_INFO *imd; + uint8 ntracks; /* number of tracks */ + uint8 nheads; /* number of heads */ + uint32 sectsize; /* sector size, not including pre/postamble */ + uint8 track; /* Current Track */ + uint8 ready; /* Is drive ready? */ +} I8272_DRIVE_INFO; + +typedef enum i8272state { + S_CMD=1, S_CMDREAD, S_EXEC, S_DATAWRITE, S_SECWRITE, S_SECREAD, S_DATAREAD, S_RESULT +} I8272_STATE; + +typedef struct i8272 { + PNP_INFO pnp; /* Plug-n-Play Information */ + DEVICE* dev; /* backlink to device */ + t_stat (*write)(struct i8272* chip,int port,uint32 data); + t_stat (*read)(struct i8272* chip,int port,uint32* data); + t_stat (*reset)(struct i8272* chip); + void (*seldrv)(struct i8272* chip,int seldrv); + void (*irq)(struct i8272* chip,int delay); + + I8272_STATE fdc_state; /* internal state machine */ + uint32 fdc_dma_addr;/* DMA Transfer Address */ + uint8 fdc_msr; /* 8272 Main Status Register */ + uint8 fdc_nd; /* Non-DMA Mode 1=Non-DMA, 0=DMA */ + uint8 fdc_head; /* H Head Number */ + uint8 fdc_sector; /* R Record (Sector) */ + uint8 fdc_sec_len; /* N Sector Length in controller units (2^(7+fdc_sec_len)) */ + uint8 fdc_eot; /* EOT End of Track (Final sector number of cyl) */ + uint8 fdc_gap; /* GAP Length */ + uint8 fdc_dtl; /* DTL Data Length */ + uint8 fdc_mt; /* Multiple sectors */ + uint8 fdc_mfm; /* MFM mode */ + uint8 fdc_sk; /* Skip Deleted Data */ + uint8 fdc_hds; /* Head Select */ + uint8 fdc_seek_end; /* Seek was executed successfully */ + int fdc_secsz; /* N Sector Length in bytes: 2^(7 + fdc_sec_len), fdc_sec_len <= I8272_MAX_N */ + int fdc_nd_cnt; /* read/write count in non-DMA mode, -1 if start read */ + uint8 fdc_sdata[I8272_MAX_SECTOR_SZ]; /* sector buffer */ + uint8 fdc_fault; /* error code passed from some commands to sense_int */ + + uint8 cmd_cnt; /* command read count */ + uint8 cmd[10]; /* Storage for current command */ + uint8 cmd_len; /* FDC Command Length */ + + uint8 result_cnt; /* result emit count */ + uint8 result[10]; /* Result data */ + uint8 result_len; /* FDC Result Length */ + + uint8 idcount; /* used to cycle sector numbers during ReadID */ + uint8 irqflag; /* set by interrupt, cleared by I8272_SENSE_INTERRUPT */ + + uint8 fdc_curdrv; /* Currently selected drive */ + I8272_DRIVE_INFO drive[I8272_MAX_DRIVES]; +} I8272; + +extern t_stat i8272_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask); +extern t_stat i8272_write(I8272* chip, int addr, uint32 value); +extern t_stat i8272_read(I8272* chip,int addr,uint32* value); +extern t_stat i8272_reset(I8272* chip); +extern void i8272_seldrv(I8272* chip,int drvnum); +extern t_stat i8272_abortio(I8272* chip); +extern t_stat i8272_finish(I8272* chip); +extern t_stat i8272_attach(UNIT *uptr, char *cptr); +extern t_stat i8272_detach(UNIT *uptr); +extern t_stat i8272_setDMA(I8272* chip, uint32 dma_addr); + +/* Debug flags */ +#define DBG_FD_ERROR (1 << 0) +#define DBG_FD_SEEK (1 << 1) +#define DBG_FD_CMD (1 << 2) +#define DBG_FD_RDDATA (1 << 3) +#define DBG_FD_WRDATA (1 << 4) +#define DBG_FD_STATUS (1 << 5) +#define DBG_FD_FMT (1 << 6) +#define DBG_FD_VERBOSE (1 << 7) +#define DBG_FD_IRQ (1 << 8) +#define DBG_FD_STATE (1 << 9) +#define DBG_FD_IMD (1 << 10) +#define DBG_FD_DATA (1 << 11) +extern DEBTAB i8272_dt[]; +extern DEVICE* i8272_dev; + +/* moved from i8272.c */ +#define UNIT_V_I8272_WLK (UNIT_V_UF + 0) /* write locked */ +#define UNIT_I8272_WLK (1 << UNIT_V_I8272_WLK) +#define UNIT_V_I8272_VERBOSE (UNIT_V_UF + 1) /* verbose mode, i.e. show error messages */ +#define UNIT_I8272_VERBOSE (1 << UNIT_V_I8272_VERBOSE) +#define I8272_CAPACITY (77*2*16*256) /* Default Micropolis Disk Capacity */ +#define I8272_CAPACITY_SSSD (77*1*26*128) /* Single-sided Single Density IBM Diskette1 */ + +/***************************************************************************************** + * 8255 PARPORT + *****************************************************************************************/ +typedef struct i8255 { + PNP_INFO pnp; + DEVICE* dev; /* backlink to device */ + t_stat (*write)(struct i8255* chip,int port,uint32 data); + t_stat (*read)(struct i8255* chip,int port,uint32* data); + t_stat (*reset)(struct i8255* chip); + t_stat (*calla)(struct i8255* chip,int rw); + t_stat (*callb)(struct i8255* chip,int rw); + t_stat (*callc)(struct i8255* chip,int rw); + t_stat (*ckmode)(struct i8255* chip,uint32 data); + uint32 porta; + uint32 last_porta; /* for edge detection */ + uint32 portb; + uint32 last_portb; /* for edge detection */ + uint32 portc; + uint32 last_portc; /* for edge detection */ + uint32 ctrl; +} I8255; +extern t_stat i8255_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask); +extern t_stat i8255_read(I8255* chip,int port,uint32* data); +extern t_stat i8255_write(I8255* chip,int port,uint32 data); +#define I8255_RISEEDGE(port,bit) ((chip->last_##port & bit)==0 && (chip->port & bit)) +#define I8255_FALLEDGE(port,bit) ((chip->last_##port & bit) && (chip->port & bit)==0) +#define I8255_ISSET(port,bit) ((chip->port & (bit))==(bit)) +#define I8255_ISCLR(port,bit) ((chip->port & (bit))==0) + +/* debug flags */ +#define DBG_PP_WRA (1<<0) +#define DBG_PP_WRB (1<<1) +#define DBG_PP_WRC (1<<2) +#define DBG_PP_RDA (1<<3) +#define DBG_PP_RDB (1<<4) +#define DBG_PP_RDC (1<<5) +#define DBG_PP_MODE (1<<6) + +#endif /*CHIP_DEFS_H_*/ diff --git a/SAGE/i8251.c b/SAGE/i8251.c new file mode 100644 index 00000000..45b671ed --- /dev/null +++ b/SAGE/i8251.c @@ -0,0 +1,145 @@ +/* sage_stddev.c: Standard devices for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 22-Jan-10 HV Initial version +*/ + +#include "sim_defs.h" +#include "m68k_cpu.h" +#include "chip_defs.h" + +static int i8251_bitmask[] = { 0x1f, 0x3f, 0x7f, 0xff }; + +/* Debug Flags */ +DEBTAB i8251_dt[] = { + { "READ", DBG_UART_RD }, + { "WRITE", DBG_UART_WR }, + { "IRQ", DBG_UART_IRQ }, + { NULL, 0 } +}; + +t_stat i8251_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask) +{ + int port = ioh->offset; + I8251* chip = (I8251*)ioh->ctxt; + if (rw==MEM_WRITE) { + return chip->write ? chip->write(chip,port,*value) : i8251_write(chip,port,*value); + } else { + return chip->read ? chip->read(chip,port,value) : i8251_read(chip,port,value); + } +} + +t_stat i8251_write(I8251* chip,int port,uint32 value) +{ + int bits; + + if (port==0) { /* data port */ + chip->obuf = value & chip->bitmask; + TRACE_PRINT1(DBG_UART_WR,"WR DATA = 0x%02x",chip->obuf); + if (chip->init==3) { /* is fully initialized */ + if ((chip->mode & I8251_MODE_BAUD)==I8251_MODE_SYNC) { + printf("i8251: sync mode not implemented\n"); + return STOP_IMPL; + } + if (chip->cmd & I8251_CMD_TXEN) { + /* transmit data */ + chip->status &= ~(I8251_ST_TXEMPTY|I8251_ST_TXRDY); + sim_activate(chip->out,chip->out->wait); + } + } + return SCPE_OK; + } else { /* control port */ + switch (chip->init) { + case 0: /* expect mode word */ + chip->mode = value; + TRACE_PRINT1(DBG_UART_WR,"WR MODE = 0x%02x",value); + chip->init = (value & I8251_MODE_BAUD)==I8251_MODE_SYNC ? 1 : 3; + bits = (chip->mode & I8251_AMODE_BITS) >> 2; + chip->bitmask = i8251_bitmask[bits]; + break; + case 1: /* expect sync1 */ + chip->sync1 = value; + TRACE_PRINT1(DBG_UART_WR,"WR SYNC1 = 0x%02x",value); + chip->init = 2; + break; + case 2: /* expect sync2 */ + chip->sync2 = value; + TRACE_PRINT1(DBG_UART_WR,"WR SYNC2 = 0x%02x",value); + chip->init = 3; + break; + case 3: /* expect cmd word */ + chip->cmd = value; + TRACE_PRINT1(DBG_UART_WR,"WR CMD = 0x%02x",value); + if (value & I8251_CMD_EH) { + printf("i8251: hunt mode not implemented\n"); + return STOP_IMPL; + } + if (value & I8251_CMD_IR) + chip->init = 0; + if (value & I8251_CMD_ER) + chip->status &= ~(I8251_ST_FE|I8251_ST_OE|I8251_ST_PE); + if (value & I8251_CMD_SBRK) + printf("i8251: BREAK sent\n"); + if (value & I8251_CMD_RXE) { + sim_activate(chip->in,chip->in->wait); + } else { + if (!chip->oob) sim_cancel(chip->in); + } + if (value & I8251_CMD_TXEN) { + if (!(chip->status & I8251_ST_TXEMPTY)) + sim_activate(chip->out,chip->out->wait); + else { + chip->status |= I8251_ST_TXRDY; + if (chip->txint) chip->txint(chip); + } + } else { + chip->status &= ~I8251_ST_TXRDY; + sim_cancel(chip->out); + } + } + return SCPE_OK; + } +} + +t_stat i8251_read(I8251* chip,int port,uint32* value) +{ + if (port==0) { /* data read */ + *value = chip->ibuf; + chip->status &= ~I8251_ST_RXRDY; /* mark read buffer as empty */ + TRACE_PRINT1(DBG_UART_RD,"RD DATA = 0x%02x",*value); + } else { /* status read */ + *value = chip->status & 0xff; + TRACE_PRINT1(DBG_UART_RD,"RD STATUS = 0x%02x",*value); + } + return SCPE_OK; +} + +t_stat i8251_reset(I8251* chip) +{ + chip->init = 0; + chip->oob = FALSE; + chip->crlf = 0; + return SCPE_OK; +} diff --git a/SAGE/i8253.c b/SAGE/i8253.c new file mode 100644 index 00000000..543616c4 --- /dev/null +++ b/SAGE/i8253.c @@ -0,0 +1,143 @@ +/* sage_stddev.c: Standard devices for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 22-Jan-10 HV Initial version +*/ + +#include "sim_defs.h" +#include "m68k_cpu.h" +#include "chip_defs.h" + +/* Debug Flags */ +DEBTAB i8253_dt[] = { + { "READ", DBG_TMR_RD }, + { "WRITE", DBG_TMR_WR }, + { NULL, 0 } +}; + +static char* rltype[] = { "latch","8bitL","8bitH", "16bit" }; + +t_stat i8253_write(I8253* chip, int addr, uint32 value) +{ + I8253CNTR* cntr; + t_stat rc; + int num; + + if (addr==3) { /* mode reg */ + TRACE_PRINT(DBG_TMR_WR,(sim_deb,"WR MODE=%x (SC=%d RL=%s MODE=%d BCD=%d)", + value,(value>>6)&3,rltype[(value>>4)&3],(value>>1)&7,value&1)); + if (chip->ckmode && (rc=chip->ckmode(chip,value))!= SCPE_OK) return rc; + num = (value & I8253_SCMASK)>>6; + cntr = &chip->cntr[num]; + if ((value & I8253_RLMASK)==I8253_LATCH) { + /* calculate current value of count */ + cntr->latch = cntr->count; /* latch it */ + cntr->state |= I8253_ST_LATCH; + } else { + cntr->mode = value; + cntr->state = (value & I8253_RLMASK)==I8253_MSB ? I8253_ST_MSBNEXT : I8253_ST_LSBNEXT; + } + } else { /* write dividers */ + cntr = &chip->cntr[addr]; + switch (cntr->mode & I8253_RLMASK) { + case I8253_MSB: + TRACE_PRINT2(DBG_TMR_WR,"WR CNT=%d DIVMSB=%x",addr,value); + cntr->divider = (cntr->divider & 0x00ff) | ((value<<8) | 0xff); + cntr->state &= ~I8253_ST_LATCH; + cntr->count = cntr->divider; + break; + case I8253_LSB: + TRACE_PRINT2(DBG_TMR_WR,"WR CNT=%d DIVLSB=%x",addr,value); + cntr->divider = (cntr->divider & 0xff00) | (value | 0xff); + cntr->state &= ~I8253_ST_LATCH; + cntr->count = cntr->divider; + break; + case I8253_BOTH: + if (cntr->state & I8253_ST_MSBNEXT) { + TRACE_PRINT2(DBG_TMR_WR,"WR CNT=%d DIV16MSB=%x",addr,value); + cntr->divider = (cntr->divider & 0x00ff) | ((value & 0xff)<<8); + cntr->state = I8253_ST_LSBNEXT; /* reset latch mode and MSB bit */ + cntr->count = cntr->divider; + } else { + TRACE_PRINT2(DBG_TMR_WR,"WR CNT=%d DIV16LSB=%x",addr,value); + cntr->divider = (cntr->divider & 0xff00) | (value & 0xff); + cntr->state = I8253_ST_MSBNEXT; /* reset latch mode and LSB bit */ + } + default: + break; + } + /* execute a registered callback before returning result */ + if (cntr->call && (rc=(*cntr->call)(chip,1,&value)) != SCPE_OK) return rc; + } + return SCPE_OK; +} + +t_stat i8253_read(I8253* chip,int addr,uint32* value) +{ + t_stat rc; + I8253CNTR* cntr = &chip->cntr[addr]; + int32 src = cntr->state & I8253_ST_LATCH ? cntr->latch : cntr->count; + if (cntr->call && (rc=(*cntr->call)(chip,0,(uint32*)&src)) != SCPE_OK) return rc; + + switch (cntr->mode & I8253_RLMASK) { + case I8253_MSB: + src >>= 8; + TRACE_PRINT2(DBG_TMR_RD,"RD CNT=%d CNTMSB=%x",addr,src&0xff); + cntr->state &= ~I8253_ST_LATCH; + break; + case I8253_LSB: + cntr->state &= ~I8253_ST_LATCH; + TRACE_PRINT2(DBG_TMR_RD,"RD CNT=%d CNTLSB=%x",addr,src&0xff); + break; + case I8253_BOTH: + if (cntr->state & I8253_ST_MSBNEXT) { + src >>= 8; cntr->state = I8253_ST_LSBNEXT; /* reset latch mode and MSB bit */ + TRACE_PRINT2(DBG_TMR_RD,"RD CNT=%d CNT16MSB=%x",addr,src&0xff); + } else { + TRACE_PRINT2(DBG_TMR_RD,"RD CNT=%d CNT16LSB=%x",addr,src&0xff); + cntr->state |= I8253_ST_MSBNEXT; /* does not reset latch mode if set */ + } + break; + default: + return SCPE_OK; + } + *value = src & 0xff; + return SCPE_OK; +} + +t_stat i8253_reset(I8253* chip) +{ + int i; + for (i=0; i<3; i++) chip->cntr[i].state = 0; + return SCPE_OK; +} + +t_stat i8253_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask) +{ + int port = ioh->offset; + I8253* chip = (I8253*)ioh->ctxt; + return rw==MEM_WRITE ? i8253_write(chip,port,*value) : i8253_read(chip,port,value); +} + diff --git a/SAGE/i8255.c b/SAGE/i8255.c new file mode 100644 index 00000000..f68067eb --- /dev/null +++ b/SAGE/i8255.c @@ -0,0 +1,106 @@ +/* i8255.c: helper for 8255 implementation + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 14-Mar-10 HV Initial version +*/ + +#include "sim_defs.h" +#include "m68k_cpu.h" +#include "chip_defs.h" + +static t_stat i8255_error(const char* err) +{ + printf("I8255: Missing method '%s'\n",err); + return STOP_IMPL; +} + +t_stat i8255_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask) +{ + int port = ioh->offset; + I8255* chip = (I8255*)ioh->ctxt; + if (rw==MEM_WRITE) { + return chip->write ? chip->write(chip,port,*value) : i8255_error("write"); + } else { + return chip->read ? chip->read(chip,port,value) : i8255_error("read"); + } +} + +t_stat i8255_read(I8255* chip,int port,uint32* data) +{ + t_stat rc; + switch (port) { + case 0: + if (chip->calla && (rc=(*chip->calla)(chip,0)) != SCPE_OK) return rc; + *data = chip->porta; + return SCPE_OK; + case 1: + if (chip->callb && (rc=(*chip->callb)(chip,0)) != SCPE_OK) return rc; + *data = chip->portb; + return SCPE_OK; + case 2: + if (chip->callc && (rc=(*chip->callc)(chip,0)) != SCPE_OK) return rc; + *data = chip->portc; + return SCPE_OK; + case 3: + *data = 0xff; /* undefined */ + return SCPE_OK; + default: + return SCPE_IERR; + } +} + +t_stat i8255_write(I8255* chip,int port,uint32 data) +{ + t_stat rc; + uint32 bit; + switch(port) { + case 0: /*port a*/ + chip->last_porta = chip->porta; + chip->porta = data; + return chip->calla ? (*chip->calla)(chip,1) : SCPE_OK; + case 1: /*port b*/ + chip->last_portb = chip->portb; + return chip->callb ? (*chip->callb)(chip,1) : SCPE_OK; + case 2: + chip->last_portc = chip->portc; + chip->portc = data & 0xff; + return chip->callc ? (*chip->callc)(chip,1) : SCPE_OK; + case 3: + if (data & 0x80) { /* mode set mode */ + if (chip->ckmode && (rc=chip->ckmode(chip,data))) return rc; + chip->ctrl = data & 0x7f; + return SCPE_OK; + } else { /* bit set mode */ + chip->last_portc = chip->portc; + bit = 1 << ((data & 0x0e)>>1); + TRACE_PRINT2(DBG_PP_WRC,"WR PORTC %s bit=%x",data&1 ? "SET": "CLR",bit); + if (data & 1) chip->portc |= bit; else chip->portc &= ~bit; + chip->portc &= 0xff; + return chip->callc ? (*chip->callc)(chip,1) : SCPE_OK; + } + default: + return SCPE_IERR; + } +} diff --git a/SAGE/i8259.c b/SAGE/i8259.c new file mode 100644 index 00000000..adca56d5 --- /dev/null +++ b/SAGE/i8259.c @@ -0,0 +1,244 @@ +/* chip_i8259.c: system independent implementation of PIC chip + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 22-Jan-10 HV Initial version + 03-Jun-10 HV Repair POLL function (defective FDC interrupt handling in SAGEBIOS) +*/ + +#include "sim_defs.h" +#include "m68k_cpu.h" +#include "chip_defs.h" + +/* Debug Flags */ +DEBTAB i8259_dt[] = { + { "READ", DBG_PIC_RD }, + { "WRITE", DBG_PIC_WR }, + { "IRQIN", DBG_PIC_II }, + { "IRQOUT", DBG_PIC_IO }, + { NULL, 0 } +}; + +static int32 priomask[] = { 0x0000,0x4000,0x6000,0x7000,0x7800,0x7c00,0x7e00,0x7f00 }; + +t_stat i8259_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask) +{ + int port = ioh->offset; + I8259* chip = (I8259*)ioh->ctxt; + if (rw==MEM_WRITE) { + return chip->write ? chip->write(chip,port,*value) : i8259_write(chip,port,*value); + } else { + return chip->read ? chip->read(chip,port,value) : i8259_read(chip,port,value); + } +} + +t_stat i8259_write(I8259* chip,int addr,uint32 value) +{ + int i, bit; + +#if 0 + TRACE_PRINT2(DBG_PIC_WR,"WR addr=%d data=0x%x",addr,value); +#endif + if (addr==1) { + switch (chip->state) { + default: + case 0: /* after reset */ + printf("PIC: write addr=1 without initialization\n"); + return SCPE_IOERR; + case 1: /* expect ICW2 */ + TRACE_PRINT2(DBG_PIC_WR,"WR ICW2: addr=%d data=0x%x",addr,value); + chip->icw2 = value; + if (chip->icw1 & I8259_ICW1_SNGL) { + chip->state = (chip->icw1 & I8259_ICW1_IC4) ? 4 : 5; + } else { + /* attempt to program cascade mode */ + printf("PIC: attempt to program chip for cascade mode - not wired for this!\n"); + chip->state = 0; + return SCPE_IOERR; + } + break; + case 4: /* expect ICW4 */ + TRACE_PRINT2(DBG_PIC_WR,"WR ICW4 addr=%d data=0x%x",addr,value); + chip->icw4 = value; + if (chip->icw4 & I8259_ICW4_AEOI) { + printf("PIC: attempt to program chip for AEOI mode - not wired for this!\n"); + return SCPE_IOERR; + } + if (chip->icw4 & I8259_ICW4_BUF) { + printf("PIC: attempt to program chip for buffered mode - not wired for this!\n"); + return SCPE_IOERR; + } + if (chip->icw4 & I8259_ICW4_SFNM) { + printf("PIC: attempt to program chip for spc nested mode - not wired for this!\n"); + return SCPE_IOERR; + } + chip->state = 5; + break; + case 5: /* ready to accept interrupt requests and ocw commands */ + /* ocw1 */ + TRACE_PRINT2(DBG_PIC_WR,"WR IMR addr=%d data=0x%x",addr,value); + chip->imr = value; + break; + } + } else { + if (value & I8259_ICW1) { /* state initialization sequence */ + TRACE_PRINT2(DBG_PIC_WR,"WR ICW1 addr=%d data=0x%x",addr,value); + chip->icw1 = value; + chip->state = 1; + chip->rmode = 0; + chip->prio = 7; + if ((chip->icw1 & I8259_ICW1_IC4)==0) chip->icw4 = 0; + + return SCPE_OK; + } else { /* ocw2 and ocw3 */ + if (value & I8259_OCW3) { /* ocw3 */ + TRACE_PRINT2(DBG_PIC_WR,"WR OCW3 addr=%d data=0x%x",addr,value); + if (value & I8259_OCW3_ESMM) { + printf("PIC: ESMM not yet supported\n"); + return STOP_IMPL; + } + if (value & I8259_OCW3_POLL) { + chip->rmode |= 2; + return SCPE_OK; + } + if (value & I8259_OCW3_RR) + chip->rmode = (value & I8259_OCW3_RIS) ? 1 /*isr*/ : 0; /* irr */ + } else { /* ocw2 */ + TRACE_PRINT2(DBG_PIC_WR,"WR OCW2 addr=%d data=0x%x",addr,value); + switch (value & I8259_OCW2_MODE) { + case 0xa0: /* rotate on nospecific eoi */ + case 0x20: /* nonspecific eoi */ + bit = 1 << (7 - chip->prio); + for (i=0; i<7; i++) { + if (chip->isr & bit) break; + bit = bit << 1; if (bit==0x100) bit = 1; + } + chip->isr &= ~bit; break; + if ((value & I8259_OCW2_MODE) == 0xa0) { + chip->prio = 7 - i + chip->prio; if (chip->prio>7) chip->prio -= 8; + } + break; + case 0xe0: /* rotate on specific eoi */ + chip->prio = 7 - (value & 7) + chip->prio; if (chip->prio>7) chip->prio -= 8; + /*fallthru*/ + case 0x60: /* specific eoi */ + bit = 1 << (value & 7); + chip->isr = chip->isr & ~bit & 0xff; + break; + case 0x80: /* rotate in autoeoi (set) */ + case 0x00: /* rotate in autoeoi (clear) */ + printf("PIC: AEOI not supported\n"); + return SCPE_IOERR; + case 0xc0: /* set prio */ + chip->prio = value & 7; + return SCPE_OK; + case 0x40: /* nop */ + break; + default: + return SCPE_IERR; + } + } + } + } + return SCPE_OK; +} + +t_stat i8259_read(I8259* chip,int addr, uint32* value) +{ + int i, bit, num; + + if (addr) { + *value = chip->imr; + } else { + switch (chip->rmode) { + case 0: + TRACE_PRINT2(DBG_PIC_RD,"Read IRR addr=%d data=0x%x",addr,chip->irr); + *value = chip->irr; break; + case 1: + TRACE_PRINT2(DBG_PIC_RD,"Read ISR addr=%d data=0x%x",addr,chip->irr); + *value = chip->isr; break; + case 2: + case 3: + TRACE_PRINT2(DBG_PIC_RD,"Read POLL addr=%d data=0x%x",addr,chip->irr); + num = chip->prio; + bit = 1 << chip->prio; + for (i=0; i<8; i++,num--) { + if (chip->isr & bit) { + *value = 0x80 | (num & 7); + TRACE_PRINT2(DBG_PIC_RD,"Read POLL addr=%d data=0x%x",addr,*value); + return SCPE_OK; + } + bit >>= 1; + if (bit==0) { bit = 0x80; num = 7; } + } + chip->rmode &= ~2; + } + } +#if 0 + TRACE_PRINT2(DBG_PIC_RD,"Read addr=%d data=0x%x",addr,*value); +#endif + return SCPE_OK; +} + +t_stat i8259_raiseint(I8259* chip,int level) +{ + int32 bit, isr, myprio; + + TRACE_PRINT1(DBG_PIC_II,"Request INT level=%d",level); + + if (chip->state != 5) return SCPE_OK; /* not yet initialized, ignore interrupts */ + bit = 1<imr & bit) return SCPE_OK; /* inhibited */ + chip->isr = (chip->isr | bit) & 0xff; /* request this interrupt level */ + + /* bit7=prio7 => bitN = prioN + bit7=prio6 => bitN = prioN-1 + ... + bit7=prio0 => bitN = prioN-7 + */ + isr = (chip->isr<<8) | chip->isr; /* simple rotation */ + isr = isr << (7-level); /* shift level bit into bit 15 */ + myprio = chip->prio - 7 + level; if (myprio < 0) myprio += 8; + if (!(isr & priomask[myprio])) { /* higher interrupt is pending */ + if (chip->autoint) { + TRACE_PRINT1(DBG_PIC_IO,"Raise AUTOINT level=%d",chip->intlevel); + return m68k_raise_autoint(chip->intlevel); + } else { + TRACE_PRINT2(DBG_PIC_IO,"Raise VECTORINT level=%d vector=%x",chip->intlevel,chip->intvector); + return m68k_raise_vectorint(chip->intlevel,chip->intvector); + } + } + return SCPE_OK; +} + +t_stat i8259_reset(I8259* chip) +{ + chip->autoint = TRUE; + chip->intlevel = 1; + chip->intvector = 0; + chip->state = 0; + chip->rmode = 0; + chip->imr = 0; + return SCPE_OK; +} diff --git a/SAGE/i8272.c b/SAGE/i8272.c new file mode 100644 index 00000000..2e5a03ab --- /dev/null +++ b/SAGE/i8272.c @@ -0,0 +1,1058 @@ +/* i8272.c: Generic i8272/upd765 fdc chip + + Copyright (c) 2009,2010 Holger Veit + Copyright (c) 2007-2008 Howard M. Harte http://www.hartetec.com + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + Change log: + - 22-Jul-2008, Howard M. Harte, original code in AltairZ80/i8272.c + - 19-Apr-2008, Tony Nicholson, added other .IMD formats + - 06-Aug-2008, Tony Nicholson, READID should use HDS bit and add support + for logical Head and Cylinder maps in the .IMD image file (AGN) + - 15-Feb-2010, Holger Veit, Support for M68K emulation, UPD765A/B commands + - 05-Apr-2010, Holger Veit, use sim_deb for trace and dbg + - 11-Apr-2010, Holger Veit, ReadID fixed, non-DMA RW fixed + - 12-Apr-2010, Holger Veit, The whole mess rewritten for readability, and functionality + - 17-Jul-2010, Holger Veit, Incorrect ST0 return from Recalibrate, should not set SEEK_END + - 18-Jul-2010, Holger Veit, Adjust Interrupt delays, too fast for ReadID and Seek + - 18-Jul-2010, Holger Veit, Lost last byte of a track, because ST0 was delivered too fast + - 23-Jul-2010, Holger Veit, Fix error handling case of unattached drive + - 25-Jul-2010, Holger Veit, One-Off error in i8251_datawrite +*/ + +#include "m68k_cpu.h" +#include "chip_defs.h" + +#if defined (_WIN32) +#include +#endif + +#include "sim_imd.h" + +/* internal state machine: + * + * fromstate condition for transition tostate comment + * ----------- ------------------------- ------------- --------------------------------------------------- + * any reset S_CMD expect a command byte + * S_CMD commandcode S_CMDREAD has cmd, expect further arguments + * S_CMDREAD !cmdread S_CMDREAD has some args, but need more + * S_CMDREAD cmdread S_EXEC has all args, gather info, get data for read cmds + * + * S_EXEC readsector S_SECREAD read sector + * S_EXEC writesector S_DATAWRITE expect data from system for write + * S_EXEC !(readsector|writesector) S_RESULT process commands not requiring read/write (e.g. SPECIFY) + * + * S_SECREAD IMMEDIATE S_DATAREAD deliver read data back to system + * S_DATAREAD !dataread S_DATAREAD did not deliver all data back yet + * S_DATAREAD dataread&moresectors S_SECREAD has return all data, but still more sectors to read + * S_DATAREAD dataread&!moresectors S_RESULT has return all data, reading finished + * + * S_DATAWRITE !datawritten S_DATAWRITE expect more data to write + * S_DATAWRITE datawritten S_SECWRITE has all data, write data to disk + * S_SECWRITE moresectors S_DATAWRITE data written to disk, more data to write + * + * S_RESULT !resultdone S_RESULT has not yet delivered all result codes + * S_RESULT resultdone S_CMD finished with result output, wait for next cmd + */ +#if DBG_MSG==1 +#include +#define NEXTSTATE(s) TRACE_PRINT2(DBG_FD_STATE,"TRANSITION from=%s to=%s",states[chip->fdc_state],states[s]); chip->fdc_state = s +#else +#define NEXTSTATE(s) chip->fdc_state = s +#endif + +extern uint32 PCX; + +int32 find_unit_index (UNIT *uptr); +static void i8272_interrupt(I8272* chip,int delay); + +/* need to be implemented elsewhere */ +extern void PutByteDMA(const uint32 Addr, const uint32 Value); +extern uint8 GetByteDMA(const uint32 Addr); + +#define IMAGE_TYPE_DSK 1 /* Flat binary "DSK" image file. */ +#define IMAGE_TYPE_IMD 2 /* ImageDisk "IMD" image file. */ +#define IMAGE_TYPE_CPT 3 /* CP/M Transfer "CPT" image file. */ + +/* Intel 8272 Commands */ +#define I8272_READ_TRACK 0x02 +#define I8272_SPECIFY 0x03 +#define I8272_SENSE_DRIVE_STATUS 0x04 +#define I8272_WRITE_DATA 0x05 +#define I8272_READ_DATA 0x06 +#define I8272_RECALIBRATE 0x07 +#define I8272_SENSE_INTR_STATUS 0x08 +#define I8272_WRITE_DELETED_DATA 0x09 +#define I8272_READ_ID 0x0A +#define I8272_READ_DELETED_DATA 0x0C +#define I8272_FORMAT_TRACK 0x0D +#define I8272_SEEK 0x0F +#define UPD765_VERSION 0x10 +#define I8272_SCAN_EQUAL 0x11 +#define I8272_SCAN_LOW_EQUAL 0x19 +#define I8272_SCAN_HIGH_EQUAL 0x1D + +/* SENSE DRIVE STATUS bit definitions */ +#define DRIVE_STATUS_TWO_SIDED 0x08 +#define DRIVE_STATUS_TRACK0 0x10 +#define DRIVE_STATUS_READY 0x20 +#define DRIVE_STATUS_WP 0x40 +#define DRIVE_STATUS_FAULT 0x80 + +#define I8272_MSR_RQM (1 << 7) +#define I8272_MSR_DATA_OUT (1 << 6) +#define I8272_MSR_NON_DMA (1 << 5) +#define I8272_MSR_FDC_BUSY (1 << 4) + +/* convert coded i8272 sector size to real byte length */ +#define I8272_SEC2SZ(s) (128 << (s)) + +/* pointer to system specific FD device, to be set by implementation */ +DEVICE* i8272_dev = NULL; + +/* Debug Flags */ +DEBTAB i8272_dt[] = { + { "ERROR", DBG_FD_ERROR }, + { "SEEK", DBG_FD_SEEK }, + { "CMD", DBG_FD_CMD }, + { "RDDATA", DBG_FD_RDDATA }, + { "WRDATA", DBG_FD_WRDATA }, + { "STATUS", DBG_FD_STATUS }, + { "FMT", DBG_FD_FMT }, + { "VERBOSE",DBG_FD_VERBOSE }, + { "IRQ", DBG_FD_IRQ }, + { "STATE", DBG_FD_STATE }, + { "IMD", DBG_FD_IMD }, + { "DATA", DBG_FD_DATA}, + { NULL, 0 } +}; + +static char* states[] = { + "invalid", "S_CMD", "S_CMDREAD", "S_EXEC", "S_DATAWRITE", "S_SECWRITE", + "S_SECREAD", "S_DATAREAD", "S_RESULT" +}; + +static char* messages[] = { + "Undefined Command 0x0", "Undefined Command 0x1", "Read Track", "Specify", + "Sense Drive Status", "Write Data", "Read Data", "Recalibrate", + "Sense Interrupt Status","Write Deleted Data", "Read ID", "Undefined Command 0xB", + "Read Deleted Data", "Format Track", "Undefined Command 0xE", "Seek", + "Undefined Command 0x10","Scan Equal", "Undefined Command 0x12","Undefined Command 0x13", + "Undefined Command 0x14","Undefined Command 0x15","Undefined Command 0x16","Undefined Command 0x17", + "Undefined Command 0x18","Scan Low Equal", "Undefined Command 0x1A","Undefined Command 0x1B", + "Undefined Command 0x1C","Scan High Equal", "Undefined Command 0x1E","Undefined Command 0x1F" +}; + +static int8 cmdsizes[] = { + 1, 1, 9, 3, 2, 9, 9, 2, + 1, 9, 2, 1, 9, 6, 1, 3, + 1, 9, 1, 1, 1, 1, 1, 1, + 1, 9, 1, 1, 1, 9, 1, 1 +}; + +static int8 resultsizes[] = { + 1, 1, 7, 0, 1, 7, 7, 0, + 2, 7, 7, 1, 7, 7, 1, 0, + 1, 7, 1, 1, 1, 1, 1, 1, + 1, 7, 1, 1, 1, 7, 1, 1 +}; + +/* default routine to select the drive. + * In principle, it just passes the US0/US1 bits into fdc_curdrv, + * but the Sage FD does not use US0/US1 bits of FDC, for whatever reason... + */ +void i8272_seldrv(I8272* chip, int drvnum) +{ + chip->fdc_curdrv = drvnum & 0x03; +} + +/* + * find_unit_index find index of a unit + */ +int32 find_unit_index (UNIT *uptr) +{ + DEVICE *dptr; + uint32 i; + + if (uptr == NULL) return -1; + dptr = find_dev_from_unit(uptr); + + for(i=0; inumunits; i++) + if(dptr->units + i == uptr) break; + + return i == dptr->numunits ? -1 : i; +} + +/* Attach routine */ +t_stat i8272_attach(UNIT *uptr, char *cptr) +{ + char header[4]; + t_stat rc; + int32 i = 0; + I8272* chip; + DEVICE* dptr; + + if ((dptr = find_dev_from_unit(uptr))==NULL) return SCPE_IERR; + if ((chip = (I8272*)dptr->ctxt)==NULL) return SCPE_IERR; + if ((rc = attach_unit(uptr, cptr)) != SCPE_OK) return rc; + + /* Determine length of this disk */ + uptr->capac = sim_fsize(uptr->fileref); + + if ((i = find_unit_index(uptr)) == -1) return SCPE_IERR; + + TRACE_PRINT1(DBG_FD_VERBOSE,"Attach I8272 drive %d\n",i); + chip->drive[i].uptr = uptr; + + /* Default to drive not ready */ + chip->drive[i].ready = 0; + + if(uptr->capac > 0) { + fgets(header, 4, uptr->fileref); + if(strncmp(header, "IMD", 3)) { + printf("I8272: Only IMD disk images are supported\n"); + chip->drive[i].uptr = NULL; + return SCPE_OPENERR; + } + } else { + /* create a disk image file in IMD format. */ + if (diskCreate(uptr->fileref, "$Id: i8272.c 1999 2008-07-22 04:25:28Z hharte $") != SCPE_OK) { + printf("I8272: Failed to create IMD disk.\n"); + chip->drive[i].uptr = NULL; + return SCPE_OPENERR; + } + uptr->capac = sim_fsize(uptr->fileref); + } + + uptr->u3 = IMAGE_TYPE_IMD; + + if (uptr->flags & UNIT_I8272_VERBOSE) { + printf("I8272%d: attached to '%s', type=%s, len=%d\n", i, cptr, + uptr->u3 == IMAGE_TYPE_IMD ? "IMD" : uptr->u3 == IMAGE_TYPE_CPT ? "CPT" : "DSK", + uptr->capac); + } + + if(uptr->u3 == IMAGE_TYPE_IMD) { + if (uptr->flags & UNIT_I8272_VERBOSE) + printf("--------------------------------------------------------\n"); + chip->drive[i].imd = diskOpenEx(uptr->fileref, uptr->flags & UNIT_I8272_VERBOSE, dptr, DBG_FD_IMD, 0); + if (uptr->flags & UNIT_I8272_VERBOSE) + printf("\n"); + if (chip->drive[i].imd == NULL) { + printf("I8272: IMD disk corrupt.\n"); + chip->drive[i].uptr = NULL; + return SCPE_OPENERR; + } + chip->drive[i].ready = 1; + } else + chip->drive[i].imd = NULL; + + return SCPE_OK; +} + +/* Detach routine */ +t_stat i8272_detach(UNIT *uptr) +{ + t_stat rc; + int8 i; + DEVICE* dptr; + I8272* chip; + + if ((dptr = find_dev_from_unit(uptr))==NULL) return SCPE_IERR; + if ((chip = (I8272*)dptr->ctxt)==NULL) return SCPE_IERR; + if ((i = find_unit_index(uptr)) == -1) return SCPE_IERR; + + TRACE_PRINT1(DBG_FD_VERBOSE,"Detach I8272 drive %d\n",i); + rc = diskClose(&chip->drive[i].imd); + chip->drive[i].ready = 0; + if (rc != SCPE_OK) return rc; + + return detach_unit(uptr); /* detach unit */ +} + +t_stat i8272_setDMA(I8272* chip, uint32 dma_addr) +{ + chip->fdc_dma_addr = dma_addr & 0xFFFFFF; + return SCPE_OK; +} + +t_stat i8272_io(IOHANDLER* ioh,uint32* value,uint32 rw,uint32 mask) +{ + int port = ioh->offset; + I8272* chip = (I8272*)ioh->ctxt; + if (rw==MEM_WRITE) + return chip->write ? chip->write(chip,port,*value) : i8272_write(chip,port,*value); + else + return chip->read ? chip->read(chip,port,value) : i8272_read(chip,port,value); +} + +t_stat i8272_reset(I8272* chip) +{ + NEXTSTATE(S_CMD); + chip->idcount = 0; + chip->fdc_fault = 0; + + return SCPE_OK; +} + +static uint8 floorlog2(unsigned int n) +{ + /* Compute log2(n) */ + uint8 r = 0; + if (n >= 1<<16) { n >>=16; r += 16; } + if (n >= 1<< 8) { n >>= 8; r += 8; } + if (n >= 1<< 4) { n >>= 4; r += 4; } + if (n >= 1<< 2) { n >>= 2; r += 2; } + if (n >= 1<< 1) { r += 1; } + return ((n == 0) ? (0xFF) : r); /* 0xFF is error return value */ +} + +static t_stat i8272_resultphase(I8272* chip,int delay) +{ + uint8 cmd = chip->cmd[0] & 0x1f; + chip->fdc_msr &= ~I8272_MSR_NON_DMA; + chip->result_len = resultsizes[cmd]; + chip->result_cnt = 0; + NEXTSTATE(S_RESULT); + if (delay) i8272_interrupt(chip,delay); + return SCPE_OK; +} + +/* + * this routine effectively sets the TC input of the FDC; this results in + * terminating a current read or write operation and switches state to RESULT delivery + * Sage-II needs this because during boot it tries to read sector 1...EOT (=9), but actually + * stops polling after 2 sectors by asserting TC + */ +t_stat i8272_finish(I8272* chip) +{ + switch (chip->fdc_state) { + case S_DATAREAD: + case S_DATAWRITE: + case S_SECREAD: + case S_SECWRITE: + case S_RESULT: + TRACE_PRINT0(DBG_FD_VERBOSE,"Finish I/O, returning result"); + chip->irqflag = 0; + chip->result[0] &= 0x3f; /* IC=normal termination */ + return i8272_resultphase(chip,0); + default: /* @TODO is this correct? */ + TRACE_PRINT0(DBG_FD_VERBOSE,"Finish I/O, reset to S_CMD state"); + NEXTSTATE(S_CMD); + return SCPE_OK; + } +} + +/* this routine is called when RDY pin goes to zero, effectively + * terminating I/O immediately and going to S_RESULT state. + */ +t_stat i8272_abortio(I8272* chip) +{ + switch (chip->fdc_state) { + case S_DATAREAD: + case S_DATAWRITE: + case S_SECREAD: + case S_SECWRITE: + TRACE_PRINT0(DBG_FD_VERBOSE,"RDY=0 during I/O, aborting and returning result"); + chip->irqflag = 0; + chip->result[0] |= 0xc0; /* notify RDY change condition */ + return i8272_resultphase(chip,0); + + case S_RESULT: + TRACE_PRINT0(DBG_FD_VERBOSE,"RDY=0, returning result"); + chip->irqflag = 0; + return i8272_resultphase(chip,0); + + default: /* @TODO is this correct? */ + TRACE_PRINT0(DBG_FD_VERBOSE,"Abort I/O, reset to S_CMD state"); + NEXTSTATE(S_CMD); + return SCPE_OK; + } +} + + +static t_stat i8272_dataread(I8272* chip,uint32* value) +{ + if (chip->fdc_nd_cnt < chip->fdc_secsz) { + /* return a single byte */ + chip->irqflag = 0; + *value = chip->fdc_sdata[chip->fdc_nd_cnt]; + TRACE_PRINT2(DBG_FD_RDDATA,"read buffer #%d value=%x", chip->fdc_nd_cnt, *value); + chip->fdc_nd_cnt++; + if (chip->fdc_nd_cnt != chip->fdc_secsz) { + i8272_interrupt(chip,1); /* notify one more byte is ready */ + return SCPE_OK; + } + } + /* more sectors to read? */ + if (chip->fdc_sector <= chip->fdc_eot) { + NEXTSTATE(S_SECREAD); + return SCPE_OK; + } + + /* finished data read */ + TRACE_PRINT0(DBG_FD_RDDATA,"read buffer complete."); + chip->result[0] &= 0x3f; /* clear bits 7,6: terminated correctly */ + return i8272_resultphase(chip,0); +} + +static I8272_DRIVE_INFO* i8272_select_drive(I8272* chip, uint8 drive) +{ + I8272_DRIVE_INFO* dip; + + (*chip->seldrv)(chip,drive); + dip = &chip->drive[chip->fdc_curdrv]; + return dip->uptr == NULL ? NULL : dip; +} + +static t_stat i8272_secread(I8272* chip) +{ + int i; + unsigned int flags = 0; + unsigned int readlen; + I8272_DRIVE_INFO* dip = &chip->drive[chip->fdc_curdrv]; + + /* finished with sector read? */ + if (chip->fdc_sector > chip->fdc_eot) { + TRACE_PRINT2(DBG_FD_RDDATA,"No more sectors: sec=%d EOT=%d",chip->fdc_sector,chip->fdc_eot); + return i8272_resultphase(chip,10); + } + + /* no, read a buffer */ + TRACE_PRINT(DBG_FD_RDDATA,(sim_deb,"RD Data, C/H/S=%d/%d/%d sector len=%d", + dip->track, chip->fdc_head, chip->fdc_sector, chip->fdc_secsz)); + + if (dip->imd == NULL) { + printf(".imd is NULL!" NLP); + return SCPE_STOP; + } + + sectRead(dip->imd, dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_sdata, chip->fdc_secsz, &flags, &readlen); + + chip->result[5] = chip->fdc_sector; + chip->result[1] = 0x80; + chip->fdc_sector++; /* prepare next sector */ + + /* DMA mode? */ + if (chip->fdc_nd==0) { /* DMA mode */ + for (i=0; i < chip->fdc_secsz; i++) { + PutByteDMA(chip->fdc_dma_addr, chip->fdc_sdata[i]); + chip->fdc_dma_addr++; + } + TRACE_PRINT(DBG_FD_RDDATA, (sim_deb,"C:%d/H:%d/S:%d/L:%4d: Data transferred to RAM at 0x%06x", + dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_secsz, chip->fdc_dma_addr - i)); + } else { + chip->fdc_nd_cnt = 0; /* start buffer transfer */ + TRACE_PRINT0(DBG_FD_RDDATA,"read buffer started."); + + /* go to data transfer state */ + NEXTSTATE(S_DATAREAD); + i8272_interrupt(chip,100); + } + return SCPE_OK; +} + +t_stat i8272_read(I8272* chip,int addr,uint32* value) +{ + t_stat rc; + I8272_DRIVE_INFO* dip; + if ((dip = &chip->drive[chip->fdc_curdrv]) == NULL) { + printf("i8272_read: chip->drive returns NULL, fdc_curdrv=%d\n",chip->fdc_curdrv); + return SCPE_IERR; + } + + switch(addr & 0x1) { + case I8272_FDC_MSR: + *value = chip->fdc_msr | I8272_MSR_RQM; + switch (chip->fdc_state) { + case S_CMD: + case S_CMDREAD: + *value &= ~(I8272_MSR_DATA_OUT|I8272_MSR_FDC_BUSY); + return SCPE_OK; + case S_SECREAD: + case S_DATAWRITE: + case S_DATAREAD: + case S_SECWRITE: + case S_EXEC: + *value |= (I8272_MSR_DATA_OUT|I8272_MSR_FDC_BUSY); + break; + + case S_RESULT: + *value |= I8272_MSR_DATA_OUT; + *value &= ~I8272_MSR_FDC_BUSY; + break; + default: + printf("Default case in i8272_read(FDC_MSR): state=%d\n",chip->fdc_state); + return SCPE_IERR; + } + TRACE_PRINT1(DBG_FD_STATUS,"RD FDC MSR = 0x%02x",*value); + return SCPE_OK; + + case I8272_FDC_DATA: + for (;;) { + switch (chip->fdc_state) { + case S_DATAREAD: /* only comes here in non-DMA mode */ + if ((rc=i8272_dataread(chip,value)) != SCPE_OK) return rc; + if (chip->fdc_state == S_RESULT || + chip->fdc_state == S_DATAREAD) return SCPE_OK; + /* otherwise will immediately move to state S_SECREAD */ + break; + + case S_SECREAD: + if ((rc=i8272_secread(chip)) != SCPE_OK) return rc; + if (chip->fdc_state ==S_DATAREAD) return SCPE_OK; + /* will immediately move to state S_RESULT */ + case S_RESULT: + *value = chip->result[chip->result_cnt]; + TRACE_PRINT2(DBG_FD_STATUS, "Result [%d]=0x%02x",chip->result_cnt, *value); + chip->irqflag = 0; + chip->result_cnt ++; + if(chip->result_cnt == chip->result_len) { + TRACE_PRINT0(DBG_FD_STATUS,"Result phase complete.\n"); + NEXTSTATE(S_CMD); + } + +#if 0 + else { + i8272_interrupt(chip,5); + } +#endif + return SCPE_OK; + + case S_CMD: + case S_CMDREAD: + case S_EXEC: + case S_DATAWRITE: + case S_SECWRITE: + *value = chip->result[0]; /* hack, in theory any value should be ok but this makes "format" work */ + TRACE_PRINT1(DBG_FD_VERBOSE,"error, reading data register when not in data phase. Returning 0x%02x",*value); + return SCPE_OK; + + default: + printf("Default case in i8272_read(FDC_DATA): state=%d\n",chip->fdc_state); + return SCPE_IERR; + } + } + return SCPE_OK; + default: + TRACE_PRINT1(DBG_FD_VERBOSE,"Cannot read register %x",addr); + *value = 0xFF; + } + + return SCPE_OK; +} + +static t_stat i8272_makeresult(I8272* chip, uint8 s0, uint8 s1, uint8 s2, uint8 s3,uint8 s4, uint8 s5, uint8 s6) +{ + chip->result[0] = s0; + chip->result[1] = s1; + chip->result[2] = s2; + chip->result[3] = s3; + chip->result[4] = s4; + chip->result[5] = s5; + chip->result[6] = s6; + chip->result_cnt = 0; + chip->fdc_fault = 0; + return SCPE_OK; +} + +static I8272_DRIVE_INFO* i8272_decodecmdbits(I8272* chip) +{ + /* note this routine is also used in places where MT or SK bits are irrelevant. + * chip docs imply these bits to be set to 0 + */ + chip->fdc_mt = (chip->cmd[0] & 0x80) >> 7; + chip->fdc_mfm = (chip->cmd[0] & 0x40) >> 6; + chip->fdc_sk = (chip->cmd[0] & 0x20) >> 5; + chip->fdc_hds = (chip->cmd[1] & 0x04) ? 1 : 0; + return i8272_select_drive(chip,chip->cmd[1]); +} + +#define msgMFM (chip->fdc_mfm ? "MFM" : "FM") +#define msgMT (chip->fdc_mt ? "Multi" : "Single") +#define msgSK (chip->fdc_sk ? "True" : "False") +#define msgHDS (chip->fdc_hds ? "True" : "False") +#define msgND (chip->fdc_nd ? "NON-DMA" : "DMA") +#define msgCMD messages[cmd] + +static t_stat i8272_nodriveerror(I8272* chip,const char* command,int delay) +{ + uint8 st0; + + TRACE_PRINT1(DBG_FD_ERROR,"%s: no drive or disk\n",command); + st0 = 0x40 | 0x10 | chip->fdc_curdrv; + i8272_makeresult(chip, st0, 0, 0, 0, 0, 0, 0); + return i8272_resultphase(chip,delay); +} + + +static t_stat i8272_format(I8272* chip) +{ + uint8 track, fillbyte, sc, cnt; + uint8 sectormap[I8272_MAX_SECTOR]; /* Physical to logical sector map for FORMAT TRACK */ + unsigned int flags = 0; + int i; + I8272_DRIVE_INFO* dip; + + /* get MFM bit, others are irrelevant */ + if ((dip = i8272_decodecmdbits(chip)) == NULL) + return i8272_nodriveerror(chip,"Format",10); + + track = dip->track; + chip->fdc_seek_end = track != chip->cmd[2] ? 1 : 0; + chip->fdc_sec_len = chip->cmd[2]; + chip->fdc_secsz = I8272_SEC2SZ(chip->fdc_sec_len); + if(chip->fdc_sec_len > I8272_MAX_N) { + TRACE_PRINT(DBG_FD_ERROR, (sim_deb,"Illegal sector size %d [N=%d]. Reset to %d [N=%d].", + chip->fdc_secsz, chip->fdc_sec_len, + I8272_MAX_SECTOR_SZ, I8272_MAX_N)); + chip->fdc_sec_len = I8272_MAX_N; + } + chip->fdc_secsz = I8272_SEC2SZ(chip->fdc_sec_len); + + sc = chip->cmd[3]; + chip->fdc_gap = chip->cmd[4]; + fillbyte = chip->cmd[5]; + + TRACE_PRINT(DBG_FD_FMT,(sim_deb,"Format Drive: %d, %s, C=%d. H=%d. N=%d, SC=%d, GPL=%02x, FILL=%02x", + chip->fdc_curdrv, msgMFM, track, chip->fdc_head, chip->fdc_sec_len, sc, chip->fdc_gap, fillbyte)); + + cnt = 0; + + i8272_makeresult(chip, + ((chip->fdc_hds & 1) << 2) | chip->fdc_curdrv, + 0, 0, track, + chip->fdc_head, /* AGN for now we cannot format with logicalHead */ + chip->fdc_sector, /* AGN ditto for logicalCyl */ + chip->fdc_sec_len); + + for(i = 1; i <= sc; i++) { + TRACE_PRINT(DBG_FD_CMD, (sim_deb,"Format Track %d, Sector=%d, len=%d", + track, i, chip->fdc_secsz)); + + if(cnt >= I8272_MAX_SECTOR) { + TRACE_PRINT0(DBG_FD_ERROR,"Illegal sector count"); + cnt = 0; + } + sectormap[cnt] = i; + cnt++; + if(cnt == sc) { + trackWrite(dip->imd, track, chip->fdc_head, sc, + chip->fdc_secsz, sectormap, chip->fdc_mfm ? 3 : 0, + fillbyte, &flags); + + /* Recalculate disk size */ + dip->uptr->capac = sim_fsize(dip->uptr->fileref); + } + } + chip->fdc_sector = sc; + return i8272_resultphase(chip,1000); +} + +static t_stat i8272_readid(I8272* chip) +{ + TRACK_INFO* curtrk; + I8272_DRIVE_INFO* dip; + uint8 hds = chip->fdc_hds; + + if ((dip = i8272_decodecmdbits(chip)) == NULL) + return i8272_nodriveerror(chip,"Readid",10); + + curtrk = &dip->imd->track[dip->track][hds]; + + /* Compute the i8272 "N" value from the sectorsize of this */ + /* disk's current track - i.e. N = log2(sectsize) - log2(128) */ + /* The calculation also works for non-standard format disk images with */ + /* sectorsizes of 2048, 4096 and 8192 bytes */ + chip->fdc_sec_len = floorlog2(curtrk->sectsize) - 7; /* AGN fix to use fdc_hds (was fdc_head)*/ + chip->fdc_secsz = I8272_SEC2SZ(chip->fdc_sec_len); + + /* HV we cycle the read sectors on each call of READID to emulator disk spinning */ + /* Sage BIOS need this to find the highest sector number. */ + /* This could be improved by adding some delay based */ + /* on elapsed time for a more "realistic" simulation. */ + /* This would allow disk analysis programs that use */ + /* READID to detect non-standard disk formats. */ + if (chip->idcount == 0 || chip->idcount >= curtrk->nsects) { + chip->fdc_sector = curtrk->start_sector; + chip->idcount = 1; + } else { + chip->fdc_sector++; + chip->idcount++; + } + if((chip->fdc_sec_len == 0xF8) || (chip->fdc_sec_len > I8272_MAX_N)) { /* Error calculating N or N too large */ + TRACE_PRINT1(DBG_FD_ERROR,"Illegal sector size N=%d. Reset to 0.",chip->fdc_sec_len); + chip->fdc_sec_len = 0; + chip->fdc_secsz = 0; + return SCPE_OK; + } + + /* build result */ + i8272_makeresult(chip, + ((hds & 1) << 2) | chip->fdc_curdrv, + 0, 0, + curtrk->logicalCyl[chip->fdc_sector], /* AGN logicalCyl */ + curtrk->logicalHead[chip->fdc_sector], /* AGN logicalHead */ + chip->fdc_sector, + chip->fdc_sec_len); + + TRACE_PRINT(DBG_FD_CMD, (sim_deb, + "READ ID Drive %d result ST0=%02x ST1=%02x ST2=%02x C=%d H=%d R=%02x N=%d", + chip->fdc_curdrv, chip->result[0], + chip->result[1],chip->result[2],chip->result[3], + chip->result[4],chip->result[5],chip->result[6])); + return i8272_resultphase(chip,20); +} + +static t_stat i8272_seek(I8272* chip) +{ + I8272_DRIVE_INFO* dip; + if ((dip = i8272_decodecmdbits(chip)) == NULL) + return i8272_nodriveerror(chip,"Seek",10); + + dip->track = chip->cmd[2]; + chip->fdc_head = chip->fdc_hds; /*AGN seek should save the head */ + chip->fdc_seek_end = 1; + TRACE_PRINT(DBG_FD_SEEK, (sim_deb,"Seek Drive: %d, %s %s, C=%d. Skip Deleted Data=%s Head Select=%s", + chip->fdc_curdrv, msgMT, msgMFM, chip->cmd[2], msgSK, msgHDS)); + + NEXTSTATE(S_CMD); /* no result phase */ + i8272_interrupt(chip,100); + return SCPE_OK; +} + +static t_stat i8272_senseint(I8272* chip) +{ + I8272_DRIVE_INFO* dip = &chip->drive[chip->fdc_curdrv]; + uint8 st0 = (chip->fdc_seek_end ? 0x20 : 0x00) | chip->fdc_curdrv; + if (chip->fdc_fault) + st0 |= (0x40 | chip->fdc_fault); + + TRACE_PRINT2(DBG_FD_CMD,"Sense Interrupt Status ST0=0x%x PCN=%d",st0,dip->track); + i8272_makeresult(chip, st0, dip->track, 0,0,0,0,0); + chip->irqflag = 0; /* clear interrupt flag, don't raise a new one */ + return i8272_resultphase(chip,0); +} + +static t_stat i8272_sensedrive(I8272* chip) +{ + uint8 st3; + I8272_DRIVE_INFO* dip; + t_bool track0; + + if ((dip = i8272_select_drive(chip,chip->cmd[1])) == NULL) { + printf("i8272_sensedrive: i8272_select_drive returns 0\n"); + st3 = DRIVE_STATUS_FAULT; + track0 = FALSE; + } else { + track0 = dip->track == 0; + st3 = dip->ready ? DRIVE_STATUS_READY : 0; /* Drive Ready */ + if(imdGetSides(dip->imd) == 2) { + st3 |= DRIVE_STATUS_TWO_SIDED; /* Two-sided? */ + } + if(imdIsWriteLocked(dip->imd) || (dip->uptr->flags & UNIT_I8272_WLK)) { + st3 |= DRIVE_STATUS_WP; /* Write Protected? */ + } + } + st3 |= (chip->fdc_hds & 1) << 2; + st3 |= chip->fdc_curdrv; + st3 |= track0 ? DRIVE_STATUS_TRACK0 : 0x00; /* Track 0 */ + i8272_makeresult(chip, st3, 0, 0, 0, 0, 0, 0); + + TRACE_PRINT1(DBG_FD_CMD,"Sense Drive Status = 0x%02x", st3); + return i8272_resultphase(chip,5); +} + +static t_stat i8272_recalibrate(I8272* chip) +{ + I8272_DRIVE_INFO* dip; + if ((dip = i8272_select_drive(chip,chip->cmd[1])) == NULL) { + TRACE_PRINT1(DBG_FD_ERROR,"Recalibrate: no drive or disk drive=%x\n",chip->cmd[1]); + chip->fdc_fault = 0x10; /* EC error */ + } else { + dip->track = 0; + chip->idcount = 0; /* initialize the ID cycler (used by READID) */ +// chip->fdc_seek_end = 1; + chip->fdc_seek_end = 0; + } + TRACE_PRINT2(DBG_FD_SEEK,"Recalibrate: Drive 0x%02x, EC=%d",chip->fdc_curdrv,chip->fdc_fault?1:0); + + NEXTSTATE(S_CMD); /* No result phase */ + i8272_interrupt(chip,20); + return SCPE_OK; +} + +static t_stat i8272_specify(I8272* chip) +{ + chip->fdc_fault = 0; + chip->fdc_nd = chip->cmd[2] & 0x01; /* DMA/non-DMA mode */ + TRACE_PRINT(DBG_FD_CMD, (sim_deb,"Specify: SRT=%d, HUT=%d, HLT=%d, ND=%s", + 16 - ((chip->cmd[1] & 0xF0) >> 4), /*SRT*/ + (chip->cmd[1] & 0x0F) * 16, /*HUT*/ + ((chip->cmd[2] & 0xFE) >> 1) * 2, /*HLT*/ + msgND)); + + NEXTSTATE(S_CMD); /* no result phase */ + i8272_interrupt(chip,1); + return SCPE_OK; +} + +static t_bool i8272_secrw(I8272* chip,uint8 cmd) +{ + TRACK_INFO* curtrk; + I8272_DRIVE_INFO* dip; + if ((dip = i8272_decodecmdbits(chip)) == NULL) return FALSE; + + chip->fdc_seek_end = dip->track != chip->cmd[2] ? 1 : 0; + if (dip->track != chip->cmd[2]) { + TRACE_PRINT(DBG_FD_CMD, (sim_deb, + "ERROR: CMD=0x%02x[%s]: Drive: %d, Command wants track %d, but positioner is on track %d.", + cmd, msgCMD, chip->fdc_curdrv, chip->cmd[2], dip->track)); + } + + dip->track = chip->cmd[2]; + chip->fdc_head = chip->cmd[3] & 1; /* AGN mask to head 0 or 1 */ + curtrk = &dip->imd->track[dip->track][chip->fdc_head]; + + chip->fdc_sector = chip->cmd[4]; + chip->fdc_sec_len = chip->cmd[5]; + if(chip->fdc_sec_len > I8272_MAX_N) { + TRACE_PRINT(DBG_FD_ERROR, (sim_deb,"Illegal sector size %d [N=%d]. Reset to %d [N=%d].", + I8272_SEC2SZ(chip->fdc_sec_len), chip->fdc_sec_len, + I8272_MAX_SECTOR_SZ, I8272_MAX_N)); + chip->fdc_sec_len = I8272_MAX_N; + } + chip->fdc_secsz = I8272_SEC2SZ(chip->fdc_sec_len); + chip->fdc_eot = chip->cmd[6]; + chip->fdc_gap = chip->cmd[7]; + chip->fdc_dtl = chip->cmd[8]; + + TRACE_PRINT(DBG_FD_CMD, (sim_deb, + "CMD=0x%02x[%s]: Drive: %d, %s %s, C=%d. H=%d. S=%d, N=%d, EOT=%02x, GPL=%02x, DTL=%02x", + cmd, msgCMD, chip->fdc_curdrv, msgMT, msgMFM, + dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_sec_len, chip->fdc_eot, chip->fdc_gap, chip->fdc_dtl)); + + i8272_makeresult(chip, + ((chip->fdc_hds & 1) << 2) | chip->fdc_curdrv | 0x40, + 0, 0, + curtrk->logicalCyl[chip->fdc_sector], /* AGN logicalCyl */ + curtrk->logicalHead[chip->fdc_sector], /* AGN logicalHead */ + chip->fdc_sector, + chip->fdc_sec_len); + chip->result_cnt = 0; + chip->fdc_nd_cnt = 0; /* start buffer transfer */ + return TRUE; +} + +static t_bool i8272_secwrite(I8272* chip) +{ + unsigned int readlen; + unsigned int flags = 0; + I8272_DRIVE_INFO* dip = &chip->drive[chip->fdc_curdrv]; + + TRACE_PRINT(DBG_FD_WRDATA, (sim_deb,"SecWrite: C:%d/H:%d/S:%d/L:%4d", + dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_secsz)); + sectWrite(dip->imd, dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_sdata, chip->fdc_secsz, &flags, &readlen); + chip->fdc_sector++; + if (chip->fdc_sector > chip->fdc_eot) + return i8272_resultphase(chip,200); + + NEXTSTATE(S_DATAWRITE); + if (chip->fdc_nd) { /* non-DMA */ + chip->fdc_nd_cnt = 0; + i8272_interrupt(chip,10); /* non-DMA: initiate next sector write */ + return TRUE; + } + return FALSE; +} + +static t_bool i8272_datawrite(I8272* chip,uint32 value,I8272_DRIVE_INFO* dip) +{ + int i; + + /* finished with sector write? */ + if (chip->fdc_sector > chip->fdc_eot) { + TRACE_PRINT0(DBG_FD_WRDATA,"Finished sector write"); + return i8272_resultphase(chip,200); + } + if (chip->fdc_nd == 0) { /* DMA */ + for (i=0; i< chip->fdc_secsz; i++) { + chip->fdc_sdata[i] = GetByteDMA(chip->fdc_dma_addr); + chip->fdc_dma_addr++; + } + TRACE_PRINT(DBG_FD_WRDATA, (sim_deb,"C:%d/H:%d/S:%d/L:%4d: Data transferred from RAM at 0x%06x", + dip->track, chip->fdc_head, chip->fdc_sector, + chip->fdc_secsz, chip->fdc_dma_addr - i)); + } else { /* non-DMA */ + chip->fdc_msr |= I8272_MSR_NON_DMA; + if ((chip->fdc_nd_cnt+1) < chip->fdc_secsz) { + chip->fdc_sdata[chip->fdc_nd_cnt] = value; + TRACE_PRINT(DBG_FD_WRDATA,(sim_deb,"write buffer #%d value=%x (%c)", chip->fdc_nd_cnt,value,isprint(value)?value:'?')); + chip->fdc_nd_cnt++; + /* not yet finished buffering data, leave writer routine */ + i8272_interrupt(chip,10); + TRACE_PRINT0(DBG_FD_WRDATA,"Expect more data"); + return TRUE; + } + } + TRACE_PRINT0(DBG_FD_WRDATA,"Finished with data write"); + return FALSE; +} + +t_stat i8272_write(I8272* chip, int addr, uint32 value) +{ + uint8 cmd; + I8272_DRIVE_INFO* dip; + if ((dip = &chip->drive[chip->fdc_curdrv]) == NULL) { + printf("i8272_write: chip->drive returns 0 fdc_curdrv=%d\n",chip->fdc_curdrv); + return SCPE_IERR; + } + + switch(addr & 0x1) { + case I8272_FDC_MSR: + TRACE_PRINT1(DBG_FD_VERBOSE,"WR Drive Select Reg=%02x", value); + return SCPE_OK; + + case I8272_FDC_DATA: + chip->fdc_msr &= 0xF0; + TRACE_PRINT2(DBG_FD_VERBOSE,"WR Data, index=%d value=%x", chip->cmd_cnt,value); + + for (;;) { + switch (chip->fdc_state) { + case S_CMD: + /* first cmd byte */ + cmd = value & 0x1f; + chip->cmd_cnt = 0; + TRACE_PRINT2(DBG_FD_CMD,"CMD=0x%02x[%s]", cmd, msgCMD); + chip->cmd_len = cmdsizes[cmd]; + NEXTSTATE(S_CMDREAD); + /*fallthru*/ + case S_CMDREAD: + /* following cmd bytes */ + chip->cmd[chip->cmd_cnt] = value; + chip->cmd_cnt++; + + if (chip->cmd_cnt == chip->cmd_len) { + chip->fdc_nd_cnt = 0; /* initialize counter for Non-DMA mode */ + chip->cmd_cnt = 0; /* reset index for next CMD */ + NEXTSTATE(S_EXEC); /* continue immediately with S_EXEC code */ + break; + } + return SCPE_OK; + case S_DATAREAD: /* data reading happens in i8272_read */ + return SCPE_OK; + case S_RESULT: /* result polling happens in i8272_read */ + return SCPE_OK; + case S_DATAWRITE: + if (i8272_datawrite(chip,value,dip)) return SCPE_OK; + TRACE_PRINT0(DBG_FD_WRDATA,"Go Sector Write"); + NEXTSTATE(S_SECWRITE); + /*fallthru*/ + case S_SECWRITE: /* write buffer */ + if (i8272_secwrite(chip)) return SCPE_OK; + break; + case S_SECREAD: + return i8272_secread(chip); + case S_EXEC: + cmd = chip->cmd[0] & 0x1f; + switch (cmd) { + case I8272_SPECIFY: + return i8272_specify(chip); + + case I8272_SENSE_INTR_STATUS: + return i8272_senseint(chip); + + case I8272_SENSE_DRIVE_STATUS: /* Setup Status3 Byte */ + return i8272_sensedrive(chip); + + case I8272_RECALIBRATE: /* RECALIBRATE */ + return i8272_recalibrate(chip); + + case UPD765_VERSION: + i8272_makeresult(chip, 0x80, 0, 0, 0, 0, 0, 0); + /* signal UPD765A, don't know whether B version (0x90) is relevant */ + return i8272_resultphase(chip,5); + + case I8272_SEEK: /* SEEK */ + return i8272_seek(chip); + + case I8272_READ_ID: + return i8272_readid(chip); + + case I8272_FORMAT_TRACK: /* FORMAT A TRACK */ + return i8272_format(chip); + + case I8272_READ_TRACK: + printf("I8272: " ADDRESS_FORMAT " Read a track (untested.)" NLP, PCX); + chip->fdc_sector = 1; /* Read entire track from sector 1...eot */ + case I8272_READ_DATA: + case I8272_READ_DELETED_DATA: + if (!i8272_secrw(chip,cmd)) + return i8272_nodriveerror(chip,"I8272_READ_*_DATA",10); + + /* go directly to secread state */ + NEXTSTATE(S_SECREAD); + break; + + case I8272_WRITE_DATA: + case I8272_WRITE_DELETED_DATA: + if (!i8272_secrw(chip,cmd)) + return i8272_nodriveerror(chip,"I8272_WRITE_*_DATA",10); + + NEXTSTATE(S_DATAWRITE); /* fill buffer */ + if (chip->fdc_nd != 0) { /* non-DMA */ + i8272_interrupt(chip,100); /* request the first data byte */ + return SCPE_OK; + } + break; + + case I8272_SCAN_LOW_EQUAL: + case I8272_SCAN_HIGH_EQUAL: + case I8272_SCAN_EQUAL: + if (!i8272_secrw(chip,cmd)) + return i8272_nodriveerror(chip,"I8272_SCAN_*",10); + + TRACE_PRINT0(DBG_FD_CMD,"Scan Data"); + TRACE_PRINT0(DBG_FD_ERROR,"ERROR: Scan not implemented."); + return i8272_resultphase(chip,200); + } + } + } + /*NOTREACHED*/ + + default: + return SCPE_OK; + } +} + +static void i8272_interrupt(I8272* chip,int delay) +{ + TRACE_PRINT0(DBG_FD_IRQ,"FDC Interrupt"); + chip->irqflag = 1; + (*chip->irq)(chip,delay); +} diff --git a/SAGE/m68k_cpu.c b/SAGE/m68k_cpu.c new file mode 100644 index 00000000..c759185d --- /dev/null +++ b/SAGE/m68k_cpu.c @@ -0,0 +1,3352 @@ +/* m68k_cpu.c: 68k-CPU simulator + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version + 25-Apr-10 HV Fixed LSR.W and ROXR.B instructions + 26-Jun-10 HV Incomplete decoding of BCHG d,d instruction + 15-Jul-10 HV IRQ logic loses lower prio interrupts + 17-Jul-10 HV Implement Call/Exit Tracing with symbol table lookup + 17-Jul-10 HV Mustn't grant interrupt at level == IPL + 18-Jul-10 HV Broken address calculation for AIDX and EA_W_RMW, wonder why this didn't pop up earlier. + 20-Jul-10 HV Corrected ADDQ.W/SUBQ.W for EA_ADIR, EOR.[WL] + 23-Jul-10 HV Broken C code sequence in lsl.l + 23-Jul-10 HV RTE didn't set/reset S bit +*/ + +#include "m68k_cpu.h" +#include + +#if defined(_WIN32) +#include +#else +#include +#endif + +/* status reg flags */ +#define FLAG_C 0x0001 +#define FLAG_V 0x0002 +#define FLAG_Z 0x0004 +#define FLAG_N 0x0008 +#define FLAG_X 0x0010 +#define FLAG_I0 0x0100 +#define FLAG_I1 0x0200 +#define FLAG_I2 0x0400 +#define FLAG_IPL_MASK (FLAG_I0|FLAG_I1|FLAG_I2) +#define FLAG_S 0x2000 +#define FLAG_T 0x8000 +#define FLAG_T1 FLAG_T +#define FLAG_T0 0x4000 + +#define BIT7 0x80 +#define BIT8 0x100 +#define BIT15 0x8000 +#define BIT16 0x10000 +#define BIT31 0x80000000 +#define BIT32 0x100000000L + +#define MASK_0(x) ((x) & 1) +#define MASK_8U(x) ((x) & 0xffffff00) +#define MASK_8L(x) ((x) & 0x000000ff) +#define MASK_8SGN(x) ((x) & BIT7) +#define MASK_9(x) ((x) & BIT8) +#define MASK_16U(x) ((x) & 0xffff0000) +#define MASK_16L(x) ((x) & 0x0000ffff) +#define MASK_16SGN(x) ((x) & BIT15) +#define MASK_17(x) ((x) & BIT16) +#define MASK_32U(x) (0) +#define MASK_32L(x) ((x) & 0xffffffff) +#define MASK_32SGN(x) ((x) & BIT31) +#define MASK_33(x) ((x) & BIT32) + +#define COMBINE8(tgt,src) (MASK_8U(tgt) | MASK_8L(src)) +#define COMBINE16(tgt,src) (MASK_16U(tgt) | MASK_16L(src)) +#define COMBINE32(tgt,src) MASK_32L(src) + +extern t_addr addrmask; + +static t_addr addrmasks[] = { + 0x00ffffff, /*68000*/ + 0x000fffff, /*68008*/ + 0x00ffffff, /*68010*/ + 0xffffffff, /*68020*/ + 0xffffffff /*68030*/ +}; + +int16 cputype = CPU_TYPE_68000 >> UNIT_CPU_V_TYPE; + +/* CPU data structures + * m68kcpu_dev CPU device descriptor + * m68kcpu_unit CPU unit descriptor + * m68kcpu_reg CPU register list + * m68kcpu_mod CPU modifiers list + */ + +UNIT *m68kcpu_unit; /* must be set elsewhere */ +DEVICE *m68kcpu_dev; /* must be set elsewhere */ + +void (*m68kcpu_trapcallback)(DEVICE* dptr,int trapnum) = 0; + +/* register set */ +int32 DR[8]; +#define D0 DR[0] +#define D1 DR[1] +#define D2 DR[2] +#define D3 DR[3] +#define D4 DR[4] +#define D5 DR[5] +#define D6 DR[6] +#define D7 DR[7] +t_addr AR[8]; +#define A0 AR[0] +#define A1 AR[1] +#define A2 AR[2] +#define A3 AR[3] +#define A4 AR[4] +#define A5 AR[5] +#define A6 AR[6] +#define A7 AR[7] +t_addr USP; +t_addr *cur_sp; + +uint16 SR; +#define CCR_C (SR & FLAG_C) +#define CCR_V (SR & FLAG_V) +#define CCR_Z (SR & FLAG_Z) +#define CCR_N (SR & FLAG_N) +#define CCR_X (SR & FLAG_X) +#define SR_IPL ((SR & FLAG_IPL_MASK)>>8) +#define SR_S (SR & FLAG_S) +#define SR_T (SR & FLAG_T) +#define SR_T0 (SR & FLAG_T0) +#define SR_T1 (SR & FLAG_T1) + +#define ONEF(flag) SR |= (flag) +#define CLRF(flag) SR &= ~(flag) +#define SETF(cond,flag) if (cond) SR |= (flag); else SR &= ~(flag) +#define SETZ8(cond) if (MASK_8L(cond)) SR &= ~FLAG_Z; else SR |= FLAG_Z +#define SETZ16(cond) if (MASK_16L(cond)) SR &= ~FLAG_Z; else SR |= FLAG_Z +#define SETZ32(cond) if (MASK_32L(cond)) SR &= ~FLAG_Z; else SR |= FLAG_Z +#define SETNZ8(cond) SETZ8(cond); if (MASK_8SGN(cond)) SR |= FLAG_N; else SR &= ~FLAG_N +#define SETNZ16(cond) SETZ16(cond); if (MASK_16SGN(cond)) SR |= FLAG_N; else SR &= ~FLAG_N +#define SETNZ32(cond) SETZ32(cond); if (MASK_32SGN(cond)) SR |= FLAG_N; else SR &= ~FLAG_N +#define SETV_ADD8(a1,a2,r) SETF(MASK_8SGN(((a1)^(r))&((a2)^(r))),FLAG_V); +#define SETV_ADD16(a1,a2,r) SETF(MASK_16SGN(((a1)^(r))&((a2)^(r))),FLAG_V); +#define SETV_ADD32(a1,a2,r) SETF(MASK_32SGN(((a1)^(r))&((a2)^(r))),FLAG_V); +#define SETV_SUB8(s,d,r) SETF(MASK_8SGN(((s)^(d))&((r)^(d))),FLAG_V) +#define SETV_SUB16(s,d,r) SETF(MASK_16SGN(((s)^(d))&((r)^(d))),FLAG_V) +#define SETV_SUB32(s,d,r) SETF(MASK_32SGN(((s)^(d))&((r)^(d))),FLAG_V) + +#define ASSERT_PRIV() if (!SR_S) { rc = STOP_PRVIO; break; } +#define ASSERT_OK(func) if ((rc=(func)) != SCPE_OK) break +#define ASSERT_OKRET(func) if ((rc=(func)) != SCPE_OK) return rc + +#define AREG(r) (r==7 ? cur_sp : &AR[r]) + +uint16 SFC; +uint16 DFC; +uint32 VBR; +t_addr saved_PC; +static t_bool intpending; +static int m68k_sublevel; + +REG m68kcpu_reg[] = { + { HRDATA (D0, DR[0], 32) }, + { HRDATA (D1, DR[1], 32) }, + { HRDATA (D2, DR[2], 32) }, + { HRDATA (D3, DR[3], 32) }, + { HRDATA (D4, DR[4], 32) }, + { HRDATA (D5, DR[5], 32) }, + { HRDATA (D6, DR[6], 32) }, + { HRDATA (D7, DR[7], 32) }, + { HRDATA (A0, AR[0], 32) }, + { HRDATA (A1, AR[1], 32) }, + { HRDATA (A2, AR[2], 32) }, + { HRDATA (A3, AR[3], 32) }, + { HRDATA (A4, AR[4], 32) }, + { HRDATA (A5, AR[5], 32) }, + { HRDATA (A6, AR[6], 32) }, + { HRDATA (A7, AR[7], 32) }, + { HRDATA (SSP, AR[7], 32) }, + { HRDATA (USP, USP, 32) }, + { HRDATA (PC, saved_PC, 32) }, + { HRDATA (SR, SR, 16) }, + { HRDATA (CCR, SR, 8) }, + { FLDATA (C, SR, 0) }, + { FLDATA (V, SR, 1) }, + { FLDATA (Z, SR, 2) }, + { FLDATA (N, SR, 3) }, + { FLDATA (X, SR, 4) }, + { GRDATA (IPL, SR, 8, 3, 8) }, + { FLDATA (S, SR, 13) }, + { FLDATA (T, SR, 15) }, + { HRDATA (SFC, SFC, 3), REG_HIDDEN }, + { HRDATA (DFC, DFC, 3), REG_HIDDEN }, + { HRDATA (VBR, VBR, 32), REG_RO }, + { FLDATA (IRQPEN, intpending, 0), REG_HIDDEN }, + { NULL } +}; + +DEBTAB m68kcpu_dt[] = { + { "EXC", DBG_CPU_EXC }, + { "PC", DBG_CPU_PC }, + { "INT", DBG_CPU_INT }, + { "CTRACE", DBG_CPU_CTRACE }, + { "BTRACE", DBG_CPU_BTRACE }, + { NULL, 0 } +}; + +static char *condnames[] = { + "RA", "SR", "HI", "LS", "CC", "CS", "NE", "EQ", "VC", "VS", "PL", "MI", "GE", "LT", "GT", "LE" +}; + +#if 0 +/* sample code */ +static MTAB m68kcpu_mod[] = { + M68KCPU_STDMOD, + { 0 } +}; + +DEVICE m68kcpu_dev = { + "CPU", &m68kcpu_unit, m68kcpu_reg, m68kcpu_mod, + 1, 16, 32, 2, 16, 16, + &m68kcpu_ex, &m68kcpu_dep, &m68kcpu_reset, + &m68kcpu_boot, NULL, NULL, + NULL, DEV_DEBUG, 0, + m68kcpu_dt, NULL, NULL +}; +#endif + +static DEVICE* cpudev_self = 0; + +t_stat m68kcpu_peripheral_reset() +{ + t_stat rc; + DEVICE** devs = sim_devices; + DEVICE* dptr; + if (!devs) return SCPE_IERR; + + while ((dptr = *devs) != NULL) { + if (dptr != cpudev_self) { + ASSERT_OKRET(dptr->reset(dptr)); + } + devs++; + } + return SCPE_OK; +} + +/* simple prefetch I cache */ +#define CACHE_SIZE 16 +#define CACHE_MASK 0x0f + +static t_addr cache_pc; +static uint8 cache_line[CACHE_SIZE]; + +static t_stat ReadICache(t_addr tpc) +{ + int i; + t_stat rc; + uint8* mem; + + ASSERT_OKRET(Mem((tpc+CACHE_SIZE)&addrmask,&mem)); + + /* 68000/08/10 do not like unaligned access */ + if (cputype < 3 && (tpc & 1)) return STOP_ERRADR; + + for (i=CACHE_SIZE; i>=0; i--) { + cache_line[i] = *mem--; + } +// for (i=0; i<16; i++) printf("icache[%d]=0x%08x\n",i,cache_line[i]); + return SCPE_OK; +} + +static t_stat ReadInstr(t_addr pc,uint32* inst) +{ + t_stat rc; + t_addr tpc; + IOHANDLER* ioh; + + if ((rc=TranslateAddr(pc & ~CACHE_MASK,&tpc,&ioh,MEM_READ,FALSE,FALSE)) != SCPE_OK) + return rc==SIM_ISIO ? STOP_PCIO : rc; + if (tpc != cache_pc) { + ASSERT_OKRET(ReadICache(tpc)); + } + pc &= CACHE_MASK; + *inst = (cache_line[pc]<<8) | cache_line[pc+1]; + return SCPE_OK; +} + +static t_stat ReadInstrInc(t_addr* pc,uint32* inst) +{ + t_stat rc; + ASSERT_OKRET(ReadInstr(*pc,inst)); + *pc += 2; + return SCPE_OK; +} + +static t_stat ReadInstrLongInc(t_addr* pc,uint32* inst) +{ + t_stat rc; + uint32 val1,val2; + ASSERT_OKRET(ReadInstr(*pc,&val1)); + *pc += 2; + ASSERT_OKRET(ReadInstr(*pc,&val2)); + *pc += 2; + *inst = COMBINE16(val1<<16,val2); + return SCPE_OK; +} + + +void m68k_set_s(t_bool tf) +{ + if (tf) { + SR |= FLAG_S; + cur_sp = &A7; + } else { + SR &= ~FLAG_S; + cur_sp = &USP; + } +} + +void m68k_setipl(int ipl) +{ +// printf("set ipl to %d\n",ipl); + SR &= ~FLAG_IPL_MASK; + SR |= (ipl & 7) << 8; +} + +/* interrupt logic */ +static int intvectors[8]; + +static t_stat m68k_irqinit() +{ + int i; + for (i=0; i<8; i++) intvectors[i] = 0; + intpending = 0; + return SCPE_OK; +} + +t_stat m68k_raise_vectorint(int level,int vector) +{ + int mask = 1<reset(dptr); +} + +/* for instruction decoder */ +#define IR_1512 (IR&0170000) +#define IR_1109 (IR&0007000) +#define IR_1108 (IR&0007400) +#define IR_1106 (IR&0007700) +#define IR_1103 (IR&0007770) +#define IR_08 (IR&0000400) +#define IR_0806 (IR&0000700) +#define IR_0803 (IR&0000770) +#define IR_0706 (IR&0000300) +#define IR_0703 (IR&0000370) +#define IR_0503 (IR&0000070) +#define IR_080403 (IR&0000430) +#define IR_08060403 (IR&0000730) +#define IR_0200 (IR&0000007) +#define IR_EAMOD (IR&0000070) +#define IR_0503 (IR&0000070) +#define IR_COND (IR&0007400) +#define IR_EA (IR&0000077) +#define IR_EAM12 (IR&0000060) +#define IR_EAREG (IR&0000007) +#define IR_DISP (IR&0000377) +#define IR_EATGT ((IR&0000700)>>3) +#define IR_REGX ((IR&0007000)>>9) +#define IR_REGY (IR&0000007) +#define IR_TRAP (IR&0000017) +#define IR_SIZE ((IR&0000300)>>6) +#define IR_DATA (IR&0000377) +#define IRE_DA (IRE&0100000) +#define IRE_REG ((IRE&0070000)>>12) +#define IRE_WL (IRE&0004000) +#define IRE_DISP (IRE&0000377) + +/* EA modes */ +#define EA_DDIR 0000 +#define EA_ADIR 0010 +#define EA_AIND 0020 +#define EA_API 0030 +#define EA_APD 0040 +#define EA_AIDX 0050 +#define EA_AXIDX 0060 +#define EA_EXT 0070 +#define EA_IMM 0074 +#define EAX_AW 000 +#define EAX_AL 001 +#define EAX_PCIDX 002 +#define EAX_PCXIDX 003 +#define EAX_IMM 004 + +#define EXTB(x) ((int32)((int8)((x)&0xff))) +#define EXTW(x) ((int32)((int16)((x)&0xffff))) + +#define DRX DR[IR_REGX] +#define DRY DR[IR_REGY] + +static uint32 quickarg[] = { 8,1,2,3,4,5,6,7 }; +static int32 shmask8[] = { 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff }; +static int32 shmask16[] = { 0x0000, + 0x8000,0xc000,0xe000,0xf000,0xf800,0xfc00,0xfe00,0xff00, + 0xff80,0xffc0,0xffe0,0xfff0,0xff80,0xffc0,0xffe0,0xffff, + 0xffff }; +static int32 shmask32[] = { 0x00000000, + 0x80000000,0xc0000000,0xe0000000,0xf0000000, + 0xf8000000,0xfc000000,0xfe000000,0xff000000, + 0xff800000,0xffc00000,0xffe00000,0xfff00000, + 0xfff80000,0xfffc0000,0xfffe0000,0xffff0000, + 0xffff8000,0xffffc000,0xffffe000,0xfffff000, + 0xfffff800,0xfffffc00,0xfffffe00,0xffffff00, + 0xffffff80,0xffffffc0,0xffffffe0,0xfffffff0, + 0xfffffff8,0xfffffffc,0xfffffffe,0xffffffff, + 0xffffffff }; +static int32 bitmask[] = { 0x00000000, + 0x00000001,0x00000002,0x00000004,0x00000008, + 0x00000010,0x00000020,0x00000040,0x00000080, + 0x00000100,0x00000200,0x00000400,0x00000800, + 0x00001000,0x00002000,0x00004000,0x00000800, + 0x00010000,0x00020000,0x00040000,0x00008000, + 0x00100000,0x00200000,0x00400000,0x00080000, + 0x01000000,0x02000000,0x04000000,0x00800000, + 0x10000000,0x20000000,0x40000000,0x80000000, + 0x00000000 }; + +static t_addr saved_ea; + +static t_stat ea_src_b(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + t_stat rc = SCPE_OK; + uint32 reg, regno, IRE; + t_addr *areg; +// printf("src eamod=%x eareg=%x\n",eamod,eareg); + switch (eamod) { + case EA_DDIR: + *val = MASK_8L(DR[eareg]); + return SCPE_OK; + case EA_ADIR: + *val = MASK_8L(*AREG(eareg)); + return SCPE_OK; + case EA_AIND: + return ReadVB(saved_ea = *AREG(eareg),val); + case EA_API: + areg = AREG(eareg); + rc = ReadVB(saved_ea = *areg,val); + *areg += (eareg==7 ? 2 : 1); + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= (eareg==7 ? 2 : 1); + return ReadVB(saved_ea = *areg,val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVB(saved_ea = *AREG(eareg)+EXTW(IRE),val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVB(saved_ea = *AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + saved_ea = EXTW(IRE); + rc = ReadVB(saved_ea, val); + return rc; + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return ReadVB(saved_ea = IRE, val); + case EAX_PCIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVB(saved_ea = *pc-2 + EXTW(IRE), val); + case EAX_PCXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = (IRE_DA) ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVB(saved_ea = *pc-2 + EXTW(IRE_DISP) + reg, val); + case EAX_IMM: + ASSERT_OKRET(ReadInstrInc(pc,val)); + *val = MASK_8L(*val); + return SCPE_OK; + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_src_bs(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + if (eamod==EA_EXT && eareg==EAX_IMM) { + *val = MASK_8L(SR); + return SCPE_OK; + } + return ea_src_b(eamod,eareg,val,pc); +} + +static t_stat ea_src_w(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + t_stat rc = SCPE_OK; + uint32 reg, regno, IRE; + t_addr *areg; + + switch (eamod) { + case EA_DDIR: + *val = MASK_16L(DR[eareg]); + return SCPE_OK; + case EA_ADIR: + *val = MASK_16L(*AREG(eareg)); + return SCPE_OK; + case EA_AIND: + return ReadVW(saved_ea = *AREG(eareg), val); + case EA_API: + areg = AREG(eareg); + rc = ReadVW(saved_ea = *areg, val); + *areg += 2; + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= 2; + return ReadVW(saved_ea = *areg, val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVW(saved_ea = *AREG(eareg) + EXTW(IRE), val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVW(saved_ea = *AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVW(saved_ea = EXTW(IRE), val); + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return ReadVW(saved_ea = IRE, val); + case EAX_PCIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVW(saved_ea = *pc-2 + EXTW(IRE), val); + case EAX_PCXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = (IRE_DA) ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVW(saved_ea = *pc-2 + EXTW(IRE_DISP) + reg, val); + case EAX_IMM: + return ReadInstrInc(pc,val); + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_src_ws(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + if (eamod==EA_EXT && eareg==EAX_IMM) { + *val = SR; + return SCPE_OK; + } + return ea_src_w(eamod,eareg,val,pc); +} + +/* non dereferencing version of ea_src_l, only accepts ea category control */ +static t_stat ea_src_l_nd(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + t_stat rc = SCPE_OK; + uint32 reg, regno, IRE; + + switch (eamod) { + case EA_AIND: + *val = *AREG(eareg); + return SCPE_OK; + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + *val = *AREG(eareg) + EXTW(IRE); + return SCPE_OK; + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + *val = *AREG(eareg) + EXTW(IRE_DISP) + reg; + return SCPE_OK; + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + *val = EXTW(IRE); + return SCPE_OK; + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,val)); + *pc += 4; + return SCPE_OK; + case EAX_PCIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + *val = *pc-2 + EXTW(IRE); + return SCPE_OK; + case EAX_PCXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = (IRE_DA) ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + *val = *pc-2 + EXTW(IRE_DISP) + reg; + return SCPE_OK; + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_src_l(uint32 eamod,uint32 eareg,uint32* val,t_addr* pc) +{ + t_stat rc = SCPE_OK; + uint32 reg, regno, IRE; + t_addr *areg; + + switch (eamod) { + case EA_DDIR: + *val = DR[eareg]; + return SCPE_OK; + case EA_ADIR: + *val = *AREG(eareg); + return SCPE_OK; + case EA_AIND: + return ReadVL(saved_ea = *AREG(eareg), val); + case EA_API: + areg = AREG(eareg); + rc = ReadVL(saved_ea = *areg, val); + *areg += 4; + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= 4; + return ReadVL(saved_ea = *areg, val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVL(saved_ea = *AREG(eareg) + EXTW(IRE), val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVL(saved_ea = *AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVL(saved_ea = EXTW(IRE), val); + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return ReadVL(saved_ea = IRE, val); + case EAX_PCIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return ReadVL(saved_ea = *pc-2 + EXTW(IRE), val); + case EAX_PCXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = (IRE_DA) ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return ReadVL(saved_ea = *pc-2 + EXTW(IRE_DISP) + reg, val); + case EAX_IMM: + ASSERT_OKRET(ReadVL(*pc,val)); + *pc += 4; + return SCPE_OK; + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_src_l64(uint32 eamod,uint32 eareg,t_uint64* val64,t_addr* pc) +{ + uint32 val32; + t_stat rc = ea_src_l(eamod,eareg,&val32,pc); + *val64 = (t_uint64)val32; + return rc; +} + +t_stat ea_src(uint32 eamod,uint32 eareg,uint32* val,int sz,t_addr* pc) +{ + switch (sz) { + case SZ_BYTE: + return ea_src_b(eamod,eareg,val,pc); + case SZ_WORD: + return ea_src_w(eamod,eareg,val,pc); + case SZ_LONG: + return ea_src_l(eamod,eareg,val,pc); + default: + return STOP_ERROP; + } +} + +static t_stat ea_dst_b(uint32 eamod,uint32 eareg,uint32 val,t_addr* pc) +{ + t_stat rc; + uint32 IRE,reg,regno; + t_addr *areg; + +// printf("dst: eamod=%x eareg=%x\n",eamod,eareg); +// printf("val=%x\n",val); + switch (eamod) { + case EA_DDIR: + DR[eareg] = COMBINE8(DR[eareg],val); + return SCPE_OK; + case EA_AIND: + return WriteVB(*AREG(eareg), val); + case EA_API: + areg = AREG(eareg); + rc = WriteVB(*areg, val); + *areg += (eareg==7 ? 2 : 1); + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= (eareg==7 ? 2 : 1); + return WriteVB(*areg, val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVB(*AREG(eareg) + EXTW(IRE), val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return WriteVB(*AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVB(EXTW(IRE), val); + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return WriteVB(IRE, val); + default: + return STOP_ERROP; + } + case EA_ADIR: + default: + return STOP_ERROP; + } +} + +t_stat ea_dst_b_rmw(uint32 eamod,uint32 eareg,uint32 val) +{ + switch (eamod) { + case EA_DDIR: + DR[eareg] = COMBINE8(DR[eareg],val); + return SCPE_OK; + case EA_AIND: + case EA_API: + case EA_APD: + case EA_AIDX: + case EA_AXIDX: + return WriteVB(saved_ea, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + case EAX_AL: + return WriteVB(saved_ea, val); + case EAX_IMM: + SR = COMBINE8(SR,val); + return SCPE_OK; + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_dst_w(uint32 eamod,uint32 eareg,uint32 val,t_addr* pc) +{ + t_stat rc; + uint32 IRE,reg,regno; + t_addr *areg; + + switch (eamod) { + case EA_DDIR: + DR[eareg] = COMBINE16(DR[eareg],val); + return SCPE_OK; + case EA_ADIR: + *AREG(eareg) = COMBINE16(*AREG(eareg),val); +// *AREG(eareg) = EXTW(val); + return SCPE_OK; + case EA_AIND: + return WriteVW(*AREG(eareg), val); + case EA_API: + areg = AREG(eareg); + rc = WriteVW(*areg, val); + *areg += 2; + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= 2; + return WriteVW(*areg, val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVW(*AREG(eareg) + EXTW(IRE), val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return WriteVW(*AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVW(EXTW(IRE), val); + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return WriteVW(IRE, val); + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_dst_w_rmw(uint32 eamod,uint32 eareg,uint32 val) +{ + switch (eamod) { + case EA_DDIR: + DR[eareg] = COMBINE16(DR[eareg],val); + return SCPE_OK; + case EA_ADIR: + printf("ea_dst_w_rmw EA_ADIR: pc=%x\n",saved_PC); + *AREG(eareg) = val; /* use full 32 bits even for word operand */ + return SCPE_OK; + case EA_AIND: + case EA_API: + case EA_APD: + case EA_AIDX: + case EA_AXIDX: + return WriteVW(saved_ea, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + case EAX_AL: + return WriteVW(saved_ea, val); + case EAX_IMM: + SR = val; + return SCPE_OK; + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +static t_stat ea_dst_l(uint32 eamod,uint32 eareg,uint32 val,t_addr* pc) +{ + t_stat rc; + uint32 IRE,reg,regno; + t_addr *areg; + + switch (eamod) { + case EA_DDIR: + DR[eareg] = val; + return SCPE_OK; + case EA_ADIR: + *AREG(eareg) = val; + return SCPE_OK; + case EA_AIND: + return WriteVL(*AREG(eareg), val); + case EA_API: + areg = AREG(eareg); + rc = WriteVL(*areg, val); + *areg += 4; + return rc; + case EA_APD: + areg = AREG(eareg); + *areg -= 4; + return WriteVL(*areg, val); + case EA_AIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVL(*AREG(eareg) + EXTW(IRE), val); + case EA_AXIDX: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + regno = IRE_REG; + reg = IRE_DA ? *AREG(regno) : DR[regno]; + if (!IRE_WL) reg = EXTW(reg); + return WriteVL(*AREG(eareg) + EXTW(IRE_DISP) + reg, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + ASSERT_OKRET(ReadInstrInc(pc,&IRE)); + return WriteVL(EXTW(IRE), val); + case EAX_AL: + ASSERT_OKRET(ReadPL(*pc,&IRE)); + *pc += 4; + return WriteVL(IRE, val); + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +t_stat ea_dst_l_rmw(uint32 eamod,uint32 eareg,uint32 val) +{ + + switch (eamod) { + case EA_DDIR: + DR[eareg] = val; + return SCPE_OK; + case EA_ADIR: + *AREG(eareg) = val; + return SCPE_OK; + case EA_AIND: + case EA_API: + case EA_APD: + case EA_AIDX: + case EA_AXIDX: + return WriteVL(saved_ea, val); + case EA_EXT: + switch (eareg) { + case EAX_AW: + case EAX_AL: + return WriteVL(saved_ea, val); + default: + return STOP_ERROP; + } + default: + return STOP_ERROP; + } +} + +t_stat ea_dst(uint32 eamod,uint32 eareg,uint32 val,int sz,t_addr* pc) +{ + switch (sz) { + case SZ_BYTE: + return ea_dst_b(eamod,eareg,val,pc); + case SZ_WORD: + return ea_dst_w(eamod,eareg,val,pc); + case SZ_LONG: + return ea_dst_l(eamod,eareg,val,pc); + default: + return STOP_ERROP; + } +} + +static t_bool testcond(uint32 c) +{ + int n,v; + + switch (c) { + case 0x0000: /*T*/ + return TRUE; + case 0x0100: /*F*/ + return FALSE; + case 0x0200: /*HI*/ + return !(CCR_C || CCR_Z); + case 0x0300: /*LS*/ + return CCR_C || CCR_Z; + case 0x0400: /*CC*/ + return !CCR_C; + case 0x0500: /*CS*/ + return CCR_C; + case 0x0600: /*NE*/ + return !CCR_Z; + case 0x0700: /*EQ*/ + return CCR_Z; + case 0x0800: /*VC*/ + return !CCR_V; + case 0x0900: /*VS*/ + return CCR_V; + case 0x0a00: /*PL*/ + return !CCR_N; + case 0x0b00: /*MI*/ + return CCR_N; + case 0x0c00: /*GE*/ + n = CCR_N; v = CCR_V; + return (n && v) || !(n || v); + case 0x0d00: /*LT*/ + n = CCR_N; v = CCR_V; + return (n && !v) || (!n && v); + case 0x0e00: /*GT*/ + n = CCR_N; v = CCR_V; + return !CCR_Z && (n || !v) && (!n || v); + case 0x0f00: /*LE*/ + n = CCR_N; v = CCR_V; + return CCR_Z || (!n && v) || (n && !v); + default: /*notreached*/ + return FALSE; + } +} + +/* push/pop on supervisor sp */ +static t_stat m68k_push16(uint32 data) +{ + A7 -= 2; + return WriteVW(A7,data); +} + +static t_stat m68k_push32(uint32 data) +{ + A7 -= 4; + return WriteVL(A7,data); +} + +static t_stat m68k_pop16(uint32* data) +{ + A7 += 2; + return ReadVW(A7-2,data); +} + +static t_stat m68k_pop32(uint32* data) +{ + A7 += 4; + return ReadVL(A7-4,data); +} + +/* push/pop on current sp */ +t_stat m68k_cpush16(uint32 data) +{ + *cur_sp -= 2; + return WriteVW(*cur_sp,data); +} + +static t_stat m68k_cpush32(uint32 data) +{ + *cur_sp -= 4; + return WriteVL(*cur_sp,data); +} + +static t_stat m68k_cpop16(uint32* data) +{ + *cur_sp += 2; + return ReadVW(*cur_sp-2,data); +} + +static t_stat m68k_cpop32(uint32* data) +{ + *cur_sp += 4; + return ReadVL(*cur_sp-4,data); +} + +t_stat m68k_gen_exception(int vecno,t_addr* pc) +{ + t_stat rc; + uint32 dummy; + t_addr oldpc = *pc; + char out[20]; + + /* @TODO VBR! */ + if (cputype<2) { + ASSERT_OKRET(m68k_push32(*pc)); + ASSERT_OKRET(m68k_push16(SR)); + m68k_set_s(TRUE); + CLRF(FLAG_T0|FLAG_T1); + } else { + /* no support for 68010 and above yet */ + return STOP_IMPL; + } + + /* set the new PC */ + ASSERT_OKRET(ReadPL(vecno<<2,pc)); + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: vec=%d to %s\n",oldpc,vecno,m68k_getsym(*pc,XFMT,out))); + return ReadInstr(*pc,&dummy); /* fill prefetch cache */ +} + +static uint32 m68k_add8(uint32 src1,uint32 src2,uint32 x) +{ + uint32 res = MASK_8L(src1) + MASK_8L(src2) + x; + SETNZ8(res); + SETF(MASK_9(res),FLAG_C|FLAG_X); + SETV_ADD8(src1,src2,res); + return res; +} + +static uint32 m68k_add16(uint32 src1,uint32 src2,uint32 x,t_bool chgflags) +{ + uint32 res = MASK_16L(src1) + MASK_16L(src2) + x; + if (chgflags) { + SETNZ16(res); + SETF(MASK_17(res),FLAG_C|FLAG_X); + SETV_ADD16(src1,src2,res); + } + return res; +} + +static uint32 m68k_add32(t_uint64 src1,t_uint64 src2,t_uint64 x,t_bool chgflags) +{ + t_uint64 resx = MASK_32L(src1) + MASK_32L(src2) + x; + if (chgflags) { + SETNZ32(resx); + SETF(MASK_33(resx),FLAG_C|FLAG_X); + SETV_ADD32(src1,src2,resx); + } + return (uint32)resx; +} + +static uint32 m68k_sub8(uint32 dst,uint32 src,uint32 x) +{ + uint32 res = MASK_8L(dst) - MASK_8L(src) - x; + SETNZ8(res); + SETF(MASK_9(res),FLAG_C|FLAG_X); + SETV_SUB8(src,dst,res); + return res; +} + +static uint32 m68k_sub16(uint32 dst,uint32 src,uint32 x,t_bool chgflags) +{ + uint32 res = MASK_16L(dst) - MASK_16L(src) - x; + if (chgflags) { + SETNZ16(res); + SETF(MASK_17(res),FLAG_C|FLAG_X); + SETV_SUB16(src,dst,res); + } + return res; +} + +static uint32 m68k_sub32(t_uint64 dst,t_uint64 src, t_uint64 x,t_bool chgflags) +{ + t_uint64 resx = MASK_32L(dst) - MASK_32L(src) - x; + if (chgflags) { + SETNZ32(resx); + SETF(MASK_33(resx),FLAG_C|FLAG_X); + SETV_SUB32(src,dst,resx); + } + return (uint32)resx; +} + +static uint32* movem_regs[] = { + (uint32*)&D0, (uint32*)&D1, (uint32*)&D2, (uint32*)&D3, (uint32*)&D4, (uint32*)&D5, (uint32*)&D6, (uint32*)&D7, + (uint32*)&A0, (uint32*)&A1, (uint32*)&A2, (uint32*)&A3, (uint32*)&A4, (uint32*)&A5, (uint32*)&A6, 0 +}; + +static t_stat m68k_movem_r_pd(t_addr* areg,uint32 regs,t_bool sz) +{ + int i; + t_stat rc; + t_addr ea = *areg; + movem_regs[15] = cur_sp; + for (i=0; i<16; i++) { + if (regs & (1<=1; i--) { + if (intpending & (1< SR_IPL)) { + /* found a pending irq at level i, that must be serviced now */ + IFDEBUG(DBG_CPU_INT,fprintf(sim_deb,"CPU : [0x%08x] Interrupt: granting level=%d, IPL=%d, pending=%x\n", + *pc,i,SR_IPL,intpending)); + m68k_gen_exception(intvectors[i],pc); /* generate an exception */ + intpending &= ~(1<001| bchg,bclr,bset,btst + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 0 0 0 | Register | 1 |Opcode | 0 0 1 | Register | movep + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x0000: + switch (IR_1103) { + case 0000400: case 0001400: case 0002400: case 0003400: + case 0004400: case 0005400: case 0006400: case 0007400: /* btst d,d */ + cnt = DRX & 0x1f; + goto do_btstd; + case 0004000: /* btst #,d */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + cnt = IRE & 0x1f; +do_btstd: SETZ32(DRY & bitmask[cnt+1]); + rc = SCPE_OK; break; + case 0000420: case 0000430: case 0000440: case 0000450: + case 0000460: case 0000470: case 0001420: case 0001430: + case 0001440: case 0001450: case 0001460: case 0001470: + case 0002420: case 0002430: case 0002440: case 0002450: + case 0002460: case 0002470: case 0003420: case 0003430: + case 0003440: case 0003450: case 0003460: case 0003470: + case 0004420: case 0004430: case 0004440: case 0004450: + case 0004460: case 0004470: case 0005420: case 0005430: + case 0005440: case 0005450: case 0005460: case 0005470: + case 0006420: case 0006430: case 0006440: case 0006450: + case 0006460: case 0006470: case 0007420: case 0007430: + case 0007440: case 0007450: case 0007460: case 0007470: /* btst d,ea */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + cnt = DRX & 7; + goto do_btst8; + case 0004020: case 0004030: case 0004040: case 0004050: + case 0004060: case 0004070: /* btst #,ea */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + cnt = IRE & 7; +do_btst8: SETZ8(src1 & bitmask[cnt+1]); + rc = SCPE_OK; + break; + + case 0000700: case 0001700: case 0002700: case 0003700: + case 0004700: case 0005700: case 0006700: case 0007700: /* bset d,d */ + cnt = DRX & 0x1f; + src1 = bitmask[cnt+1]; + goto do_bsetd; + case 0004300: /* bset #,d */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + src1 = bitmask[(IRE & 0x1f)+1]; +do_bsetd: reg = &DRY; + SETZ32(*reg & src1); + *reg |= src1; + rc = SCPE_OK; break; + case 0000720: case 0000730: case 0000740: case 0000750: + case 0000760: case 0000770: case 0001720: case 0001730: + case 0001740: case 0001750: case 0001760: case 0001770: + case 0002720: case 0002730: case 0002740: case 0002750: + case 0002760: case 0002770: case 0003720: case 0003730: + case 0003740: case 0003750: case 0003760: case 0003770: + case 0004720: case 0004730: case 0004740: case 0004750: + case 0004760: case 0004770: case 0005720: case 0005730: + case 0005740: case 0005750: case 0005760: case 0005770: + case 0006720: case 0006730: case 0006740: case 0006750: + case 0006760: case 0006770: case 0007720: case 0007730: + case 0007740: case 0007750: case 0007760: case 0007770: /* bset d,ea */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + cnt = DRY & 7; + src1 = bitmask[cnt+1]; + goto do_bset8; + case 0004320: case 0004330: case 0004340: case 0004350: + case 0004360: case 0004370: /* bset # */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + src1 = bitmask[(IRE&7)+1]; +do_bset8: SETZ8(res & src1); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res | src1); break; + + case 0000500: case 0001500: case 0002500: case 0003500: + case 0004500: case 0005500: case 0006500: case 0007500: /* bchg d,d */ + cnt = DRX & 0x1f; + src1 = bitmask[cnt+1]; + goto do_bchgd; + case 0004100: /* bchg #,d */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + src1 = bitmask[(IRE & 0x1f)+1]; +do_bchgd: reg = &DRY; + SETZ32(*reg & src1); + *reg ^= src1; + rc = SCPE_OK; break; + case 0000520: case 0000530: case 0000540: case 0000550: + case 0000560: case 0000570: case 0001520: case 0001530: + case 0001540: case 0001550: case 0001560: case 0001570: + case 0002520: case 0002530: case 0002540: case 0002550: + case 0002560: case 0002570: case 0003520: case 0003530: + case 0003540: case 0003550: case 0003560: case 0003570: + case 0004520: case 0004530: case 0004540: case 0004550: + case 0004560: case 0004570: case 0005520: case 0005530: + case 0005540: case 0005550: case 0005560: case 0005570: + case 0006520: case 0006530: case 0006540: case 0006550: + case 0006560: case 0006570: case 0007520: case 0007530: + case 0007540: case 0007550: case 0007560: case 0007570: /* bchg d,ea */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + cnt = DRX & 7; + src1 = bitmask[cnt+1]; + goto do_bchg8; + case 0004120: case 0004130: case 0004140: case 0004150: + case 0004160: case 0004170: /* bchg #,ea */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + src1 = bitmask[(IRE&7)+1]; +do_bchg8: SETZ8(res & src1); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res ^ src1); break; + + case 0000600: case 0001600: case 0002600: case 0003600: + case 0004600: case 0005600: case 0006600: case 0007600: /* bclr d,d */ + cnt = DRX & 0x1f; + src1 = bitmask[cnt+1]; + goto do_bclrd; + case 0004200: /* bclr #,d */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + src1 = bitmask[(IRE & 0x1f)+1]; +do_bclrd: reg = &DRY; + SETZ32(*reg & src1); + *reg &= ~src1; + rc = SCPE_OK; break; + case 0000620: case 0000630: case 0000640: case 0000650: + case 0000660: case 0000670: case 0001620: case 0001630: + case 0001640: case 0001650: case 0001660: case 0001670: + case 0002620: case 0002630: case 0002640: case 0002650: + case 0002660: case 0002670: case 0003620: case 0003630: + case 0003640: case 0003650: case 0003660: case 0003670: + case 0004620: case 0004630: case 0004640: case 0004650: + case 0004660: case 0004670: case 0005620: case 0005630: + case 0005640: case 0005650: case 0005660: case 0005670: + case 0006620: case 0006630: case 0006640: case 0006650: + case 0006660: case 0006670: case 0007620: case 0007630: + case 0007640: case 0007650: case 0007660: case 0007670: /* bclr d,ea */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + cnt = DRX & 7; + src1 = bitmask[cnt+1]; + goto do_bclr8; + case 0004220: case 0004230: case 0004240: case 0004250: + case 0004260: case 0004270: /* bclr #,ea */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&res,&PC)); + src1 = bitmask[(IRE&7)+1]; +do_bclr8: SETZ8(res & src1); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res & ~src1); break; + + case 0000410: case 0001410: case 0002410: case 0003410: + case 0004410: case 0005410: case 0006410: case 0007410: /*movep.w m,r*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + ASSERT_OK(ReadVB(srca,&src1)); + reg = &DRX; + *reg = src1<<8; + rc = ReadVB(srca+2,&src1); + *reg = COMBINE8(*reg,src1); + break; + case 0000510: case 0001510: case 0002510: case 0003510: + case 0004510: case 0005510: case 0006510: case 0007510: /*movep.l m,r*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + ASSERT_OK(ReadVB(srca,&src1)); + reg = &DRX; + *reg = src1<<8; + ASSERT_OK(ReadVB(srca+2,&src1)); + *reg = (COMBINE8(*reg,src1))<<8; + ASSERT_OK(ReadVB(srca+4,&src1)); + *reg = (COMBINE8(*reg,src1))<<8; + rc = ReadVB(srca+6,&src1); + *reg = (COMBINE8(*reg,src1))<<8; + break; + case 0000610: case 0001610: case 0002610: case 0003610: + case 0004610: case 0005610: case 0006610: case 0007610: /*movep.w r,m*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + src1 = DRX; + ASSERT_OK(WriteVB(srca,src1>>8)); + rc = WriteVB(srca+2,src1); break; + case 0000710: case 0001710: case 0002710: case 0003710: + case 0004710: case 0005710: case 0006710: case 0007710: /*movep.l r,m*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + ASSERT_OK(WriteVB(srca,src1>>24)); + ASSERT_OK(WriteVB(srca+2,src1>>16)); + ASSERT_OK(WriteVB(srca+4,src1>>8)); + rc = WriteVB(srca+6,src1); break; + + case 0000000: case 0000020: case 0000030: case 0000040: + case 0000050: case 0000060: case 0000070: /*ori.b*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_bs(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | src2; + if (IR_EA != EA_IMM) { + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0000100: case 0000120: case 0000130: case 0000140: + case 0000150: case 0000160: case 0000170: /*ori.w*/ + if (IR_EA == EA_IMM) ASSERT_PRIV(); + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_ws(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | src2; + if (IR_EA != EA_IMM) { + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0000200: case 0000220: case 0000230: case 0000240: + case 0000250: case 0000260: case 0000270: /*ori.l*/ + ASSERT_OK(ReadInstrLongInc(&PC,&src2)); + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | src2; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); break; + + case 0001000: case 0001020: case 0001030: case 0001040: + case 0001050: case 0001060: case 0001070: /*andi.b*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_bs(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & src2; + if (IR_EA != EA_IMM) { + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0001100: case 0001120: case 0001130: case 0001140: + case 0001150: case 0001160: case 0001170: /*andi.w*/ + if (IR_EA==EA_IMM) ASSERT_PRIV(); + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_ws(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & src2; + if (IR_EA != EA_IMM) { + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0001200: case 0001220: case 0001230: case 0001240: + case 0001250: case 0001260: case 0001270: /*andi.l*/ + ASSERT_OK(ReadInstrLongInc(&PC,&src2)); + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & src2; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + + case 0006000: case 0006020: case 0006030: case 0006040: + case 0006050: case 0006060: case 0006070: /*cmpi.b*/ + case 0002000: case 0002020: case 0002030: case 0002040: + case 0002050: case 0002060: case 0002070: /*subi.b*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub8(src1,src2,0); + rc = IR_1103 < 0006000 ? ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res) : SCPE_OK; + break; + case 0006100: case 0006120: case 0006130: case 0006140: + case 0006150: case 0006160: case 0006170: /*cmpi.w*/ + case 0002100: case 0002120: case 0002130: case 0002140: + case 0002150: case 0002160: case 0002170: /*subi.w*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub16(src1,src2,0,TRUE); + rc = IR_1103 < 0006000 ? ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res) : SCPE_OK; + break; + case 0006200: case 0006220: case 0006230: case 0006240: + case 0006250: case 0006260: case 0006270: /*cmpi.l*/ + case 0002200: case 0002220: case 0002230: case 0002240: + case 0002250: case 0002260: case 0002270: /*subi.l*/ + ASSERT_OK(ReadInstrLongInc(&PC,&src2)); + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_sub32(srcx1,(t_uint64)src2,0,TRUE); + rc = IR_1103 < 0006000 ? ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res) : SCPE_OK; + break; + + case 0003000: case 0003020: case 0003030: case 0003040: + case 0003050: case 0003060: case 0003070: /*addi.b*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add8(src1,src2,0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); break; + case 0003100: case 0003120: case 0003130: case 0003140: + case 0003150: case 0003160: case 0003170: /*addi.w*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add16(src1,src2,0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); break; + case 0003200: case 0003220: case 0003230: case 0003240: + case 0003250: case 0003260: case 0003270: /*addi.l*/ + ASSERT_OK(ReadInstrLongInc(&PC,&src2)); + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_add32(srcx1,(t_uint64)src2,0,TRUE); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0005000: case 0005020: case 0005030: case 0005040: + case 0005050: case 0005060: case 0005070: /*eori.b*/ + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_bs(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ src2; + if (IR_EA != EA_IMM) { + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0005100: case 0005120: case 0005130: case 0005140: + case 0005150: case 0005160: case 0005170: /*eori.w*/ + if (IR_EA==EA_IMM) ASSERT_PRIV(); + ASSERT_OK(ReadInstrInc(&PC,&src2)); + ASSERT_OK(ea_src_ws(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ src2; + if (IR_EA != EA_IMM) { + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + tracet0 = SR_T0; break; + case 0005200: case 0005220: case 0005230: case 0005240: + case 0005250: case 0005260: case 0005270: /*eori.l*/ + ASSERT_OK(ReadInstrLongInc(&PC,&src2)); + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ src2; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); break; + + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 0 |Length2| TargetReg | TargetMode| SourceMode| SourceReg | move + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 0 |Length2| TargetReg | 0 0 1 | SourceMode| SourceReg | movea + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x1000: + ea = IR_EATGT; + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (ea == EA_ADIR) + rc = STOP_ERROP; /* movea.b */ + else { + ASSERT_OK(ea_dst_b(ea,IR_REGX,src1,&PC)); + SETNZ8(src1); + } + break; + case 0x2000: + ea = IR_EATGT; + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (ea==EA_ADIR) { /* movea.l */ + *AREG(IR_REGX) = src1; + rc = SCPE_OK; + } else { + rc = ea_dst_l(ea,IR_REGX,src1,&PC); + SETNZ32(src1); + } + break; + case 0x3000: + ea = IR_EATGT; + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (ea==EA_ADIR) { /* movea.w */ + *AREG(IR_REGX) = EXTW(src1); + rc = SCPE_OK; + } else { + rc = ea_dst_w(ea,IR_REGX,src1,&PC); + SETNZ16(src1); + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Length | effective address | clr,neg,negx,not,tst + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 | 1 1 | effective address | moveccr,movesr + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Mode | 0 0 0 | Register | ext + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Opcode | effective address | jmp,jsr,movem,nbcd,pea,tas + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Opcode | Vector | trap + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Opcode | Register | link,moveusp,swap,unlink + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Opcode | 0 |Opcode | illegal,nop,reset,rte,rtr,rts,stop,trapv + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 0 | Register | 1 |Opcode | effective address | chk,lea + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x4000: + switch (IR_1106) { + case 000600: case 001600: case 002600: case 003600: + case 004600: case 005600: case 006600: case 007600: /*chk*/ + src1 = DRX; + SETF(src1 < 0,FLAG_N); + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&res,&PC)); + rc = CCR_N || src1 > res ? m68k_gen_exception(6,&PC) : SCPE_OK; + break; + case 000700: case 001700: case 002700: case 003700: + case 004700: case 005700: case 006700: case 007700: /*lea*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + *AREG(IR_REGX) = srca; + rc = SCPE_OK; + break; + + case 000300: /*move from sr*/ + rc = ea_dst_w(IR_EAMOD,IR_EAREG,SR,&PC); + break; + + case 001000: /*clr.b*/ + ONEF(FLAG_Z); + CLRF(FLAG_N|FLAG_C|FLAG_V); + rc = ea_dst_b(IR_EAMOD,IR_EAREG,0,&PC); + break; + case 001100: /*clr.w*/ + ONEF(FLAG_Z); + CLRF(FLAG_N|FLAG_C|FLAG_V); + rc = ea_dst_w(IR_EAMOD,IR_EAREG,0,&PC); + break; + case 001200: /*clr.l*/ + ONEF(FLAG_Z); + CLRF(FLAG_N|FLAG_C|FLAG_V); + rc = ea_dst_l(IR_EAMOD,IR_EAREG,0,&PC); + break; + + case 000000: /*negx.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + src1 += (CCR_X ? 1 : 0); + goto do_neg8; + case 002000: /*neg.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); +do_neg8: res = m68k_sub8(0,src1,0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + + case 000100: /*negx.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + src1 += (CCR_X ? 1 : 0); + goto do_neg16; + case 002100: /*neg.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); +do_neg16: res = m68k_sub16(0,src1,0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + + case 000200: /*negx.l*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + srcx1 = (t_uint64)src1 + (CCR_X ? 1 : 0); + goto do_neg32; + case 002200: /*neg.l*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); +do_neg32: res = m68k_sub32(0,srcx1,0,TRUE); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + + case 002300: /*move to ccr*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + SR = COMBINE8(SR,src1); + break; + + case 003000: /*not.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = ~src1; + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 003100: /*not.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = ~src1; + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + case 003200: /*not.l*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = ~src1; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + + case 003300: /*move to sr*/ + ASSERT_PRIV(); + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + SR = src1; + tracet0 = SR_T0; + break; + + case 004000: /*nbcd*/ + rc = STOP_IMPL; + break; + + case 004100: /*pea or swap*/ + if (IR_0503==000) { /*swap*/ + reg = &DRY; + src1 = *reg << 16; + res = *reg >> 16; + *reg = COMBINE16(src1,res); + SETNZ32(*reg); + CLRF(FLAG_C|FLAG_V); + rc = SCPE_OK; + } else { /*pea*/ + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + ASSERT_OK(m68k_cpush32(srca)); + } + break; + case 004200: /*movem.w or ext*/ + if (IR_0503==000) { /*ext.w*/ + reg = &DRY; + res = EXTB(*reg); + *reg = COMBINE16(*reg,res); + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + rc = SCPE_OK; + } else { /*movem.w regs,ea*/ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + if (IR_EAMOD==EA_APD) + rc = m68k_movem_r_pd(AREG(IR_REGY),IRE,FALSE); + else { + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + rc = m68k_movem_r_ea(srca,IRE,FALSE); + } + } + break; + case 004300: /*movem or ext*/ + if (IR_0503==000) { /*ext.l*/ + reg = &DRY; + *reg = EXTW(*reg); + SETNZ32(*reg); + CLRF(FLAG_C|FLAG_V); + rc = SCPE_OK; + } else { /*movem.l regs,ea */ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + if (IR_EAMOD==EA_APD) + rc = m68k_movem_r_pd(AREG(IR_REGY),IRE,TRUE); + else { + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + rc = m68k_movem_r_ea(srca,IRE,TRUE); + } + } + break; + case 005000: /*tst.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + SETNZ8(src1); + CLRF(FLAG_V|FLAG_C); + break; + case 005100: /*tst.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + SETNZ16(src1); + CLRF(FLAG_V|FLAG_C); + break; + case 005200: /*tst.l*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + SETNZ32(src1); + CLRF(FLAG_V|FLAG_C); + break; + + case 005300: /*tas or illegal*/ + if (IR==045374) { /*illegal*/ + rc = STOP_ERROP; + } else { /*tas*/ + rc = STOP_IMPL; + } + break; + case 006200: /*movem.w ea,regs*/ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + if (IR_EAMOD==EA_API) + rc = m68k_movem_pi_r(AREG(IR_REGY),IRE,FALSE); + else { + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + rc = m68k_movem_ea_r(srca,IRE,FALSE); + } + break; + case 006300: /*movem.l ea,regs*/ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + if (IR_EAMOD==EA_API) + rc = m68k_movem_pi_r(AREG(IR_REGY),IRE,TRUE); + else { + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + rc = m68k_movem_ea_r(srca,IRE,TRUE); + } + break; + case 007100: + switch(IR_0503) { + case 000000: + case 000010: /*trap*/ + (*m68kcpu_trapcallback)(m68kcpu_dev,IR_TRAP); + rc = m68k_gen_exception(32+IR_TRAP,&PC); + break; + case 000020: /*link*/ + ASSERT_OK(ReadInstrInc(&PC,&IRE)); + if (IR_REGY==7) { + *cur_sp -= 4; + ASSERT_OK(WriteVL(*cur_sp,*cur_sp)); + } else { + areg = AREG(IR_REGY); + ASSERT_OK(m68k_cpush32(*areg)); + *areg = *cur_sp; + } + *cur_sp += EXTW(IRE); + break; + case 000030: /*unlk*/ + if (IR_REGY==7) { + ASSERT_OK(ReadVL(*cur_sp,&srca)); + *cur_sp = srca; + } else { + areg = AREG(IR_REGY); + *cur_sp = *areg; + ASSERT_OK(m68k_cpop32(areg)); + } + break; + case 000040: /*move to usp*/ + ASSERT_PRIV(); + USP = AR[IR_REGY]; + tracet0 = SR_T0; + rc = SCPE_OK; + break; + case 000050: /*move from usp*/ + ASSERT_PRIV(); + AR[IR_REGY] = USP; + rc = SCPE_OK; + break; + case 000060: + switch(IR_0200) { + case 000000: /*reset*/ + ASSERT_PRIV(); + rc = m68kcpu_peripheral_reset(); + break; + case 000001: /*nop*/ + rc = SCPE_OK; + tracet0 = SR_T0; + break; + case 000002: /*stop*/ + ASSERT_PRIV(); + ASSERT_OKRET(ReadInstrInc(&PC,&IRE)); + SR = (uint16)IRE; + rc = STOP_HALT; + tracet0 = SR_T0; + break; + case 000003: /*rte*/ + ASSERT_PRIV(); + ASSERT_OK(m68k_pop16(&src1)); + SR = src1; + m68k_set_s(SR_S != 0); + oldpc = PC; + rc = m68k_pop32(&PC); + tracet0 = SR_T0; + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] RTE to 0x%08x, IPL=%d S=%d\n", + oldpc-2,PC,SR_IPL,SR_S?1:0)); + break; + case 000005: /*rts*/ + oldpc = PC; + rc = m68k_cpop32(&PC); + m68k_sublevel--; + IFDEBUG(DBG_CPU_CTRACE,fprintf(sim_deb,"CPU : [0x%08x] <<< RTS to 0x%08x (level=%d)\n", + oldpc-2,PC,m68k_sublevel)); + tracet0 = SR_T0; + break; + case 000006: /*trapv*/ + rc = CCR_V ? m68k_gen_exception(7,&PC) : SCPE_OK; + break; + case 000007: /*rtr*/ + ASSERT_OK(m68k_cpop16(&src1)); + SR = COMBINE8(SR,src1); + oldpc = PC; + rc = m68k_cpop32(&PC); + tracet0 = SR_T0; + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] RTR to 0x%08x\n",oldpc-2,PC)); + break; + default: + rc = STOP_ERROP; + } + break; + default: + rc = STOP_ERROP; + } + break; + case 007200: /*jsr*/ + oldpc = PC; + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + ASSERT_OK(m68k_cpush32(PC)); + IFDEBUG(DBG_CPU_CTRACE,fprintf(sim_deb,"CPU : [0x%08x] >>> JSR %s (level=%d)\n", + oldpc-2,m68k_getsym(srca,XFMT,out),m68k_sublevel)); + PC = srca; + m68k_sublevel++; + tracet0 = SR_T0; + break; + case 007300: /*jmp*/ + oldpc = PC; + ASSERT_OK(ea_src_l_nd(IR_EAMOD,IR_EAREG,&srca,&PC)); + IFDEBUG(DBG_CPU_BTRACE,fprintf(sim_deb,"CPU : [0x%08x] ||| JMP %s\n", + oldpc-2,m68k_getsym(srca,XFMT,out))); + PC = srca; + tracet0 = SR_T0; + break; + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 1 | Quickdata |Opc|Length | effective address<>001| addq,subq + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 1 | Condition | 1 1 0 0 1 | Register | dbcc + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 0 1 | Condition | 1 1 | effective address<>001| scc + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x5000: + switch (IR_0806) { + case 0000300: + case 0000700: + if (IR_0503==010) { /*dbcc*/ + if (!IR_COND || !testcond(IR_COND)) { /* dbt is a NOP */ + reg = &DRY; + src1 = MASK_16L((*reg-1)); + *reg = MASK_16U(*reg) | src1; + if (src1 != 0xffff) { + ASSERT_OK(ReadInstr(PC,&IRE)); + PC += (EXTW(IRE)); + rc = SCPE_OK; + tracet0 = SR_T0; + break; + } /* else loop terminated */ + } + /* loop cond not met or dbt */ + PC += 2; + rc = SCPE_OK; + } else { /*scc*/ + src1 = testcond(IR_COND) ? 0xff : 0x00; + rc = ea_dst_b(IR_EAMOD,IR_EAREG,src1,&PC); + } + break; + case 0000000: /*addq.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add8(src1,quickarg[IR_REGX],0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000100: /*addq.w*/ + if (IR_EAMOD == EA_ADIR) { + *AREG(IR_REGY) += EXTW(quickarg[IR_REGX]); + rc = SCPE_OK; + } else { + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add16(src1,quickarg[IR_REGX],0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } + break; + case 0000200: /*addq.l*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_add32(srcx1,(t_uint64)quickarg[IR_REGX],0,IR_EAMOD!=EA_ADIR); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000400: /*subq.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub8(src1,quickarg[IR_REGX],0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000500: /*subq.w*/ + if (IR_EAMOD == EA_ADIR) { + *AREG(IR_REGY) -= EXTW(quickarg[IR_REGX]); + rc = SCPE_OK; + } else { + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub16(src1,quickarg[IR_REGX],0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } + break; + case 0000600: /*subq.l*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_sub32(srcx1,(t_uint64)quickarg[IR_REGX],0,IR_EAMOD!=EA_ADIR); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 1 0 | Condition | Displacement | Bcc,bra,bsr + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x6000: + isbsr = IR_COND==0x100; /* is bsr */ + iscond = isbsr || testcond(IR_COND); /* condition matched */ + if (IR_DISP) { + if (iscond) { + if (isbsr) { + IFDEBUG(DBG_CPU_CTRACE,fprintf(sim_deb,"CPU : [0x%08x] >>> BSR %s (level=%d\n", + PC-2,m68k_getsym(PC+EXTB(IR_DISP),XFMT,out),m68k_sublevel)); + ASSERT_OK(m68k_cpush32(PC)); /* save PC for BSR */ + m68k_sublevel++; + } else { + IFDEBUG(DBG_CPU_BTRACE,fprintf(sim_deb,"CPU : [0x%08x] ||| B%s %s\n", + PC-2,condnames[IR_COND>>8],m68k_getsym(PC+EXTB(IR_DISP),XFMT,out))); + } + PC += EXTB(IR_DISP); /* go to new location */ + } /* else condition not matched */ + } else { /* 16 bit ext word */ + if (iscond) { + ASSERT_OK(ReadInstr(PC,&IRE)); /* get extension word */ + if (isbsr) { + IFDEBUG(DBG_CPU_CTRACE,fprintf(sim_deb,"CPU : [0x%08x] >>> BSR %s (level=%d)\n", + PC-2,m68k_getsym(PC+EXTW(IRE),XFMT,out),m68k_sublevel)); + ASSERT_OK(m68k_cpush32(PC+2)); /* save PC for BSR */ + m68k_sublevel++; + } else { + IFDEBUG(DBG_CPU_BTRACE,fprintf(sim_deb,"CPU : [0x%08x] ||| B%s %s\n", + PC-2,condnames[IR_COND>>8],m68k_getsym(PC+EXTW(IRE),XFMT,out))); + } + PC += EXTW(IRE); /* go to new location */ + } else { + PC += 2; /* condition not matched */ + } + } + tracet0 = SR_T0; + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 0 1 1 1 | Register | 0 | Data | moveq + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x7000: + src1 = DRX = EXTB(IR_DATA); + SETNZ32(src1); + CLRF(FLAG_C|FLAG_V); + rc = SCPE_OK; break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 0 | Register |Opc|Length | effective address<>00x| or + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 0 | Reg X | 1 0 0 | 0 0 |R/M| Reg Y | sbcd + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 0 | Register |Opc| 1 1 | effective address | divs,divu + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x8000: + switch(IR_0803) { + case 0000300: case 0000320: case 0000330: case 0000340: + case 0000350: case 0000360: case 0000370: /*divu.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + rc = m68k_divu_w(src1,&DR[IR_REGX], &PC); + break; + case 0000700: case 0000720: case 0000730: case 0000740: + case 0000750: case 0000760: case 0000770: /*divs.w*/ + rc = m68k_divs_w(src1,&DR[IR_REGX], &PC); + break; + case 0000400: /*sbcd d*/ + rc = STOP_IMPL; break; + case 0000410: /*sbcd a*/ + rc = STOP_IMPL; break; + case 0000000: case 0000020: case 0000030: case 0000040: + case 0000050: case 0000060: case 0000070: /*or.b ->d*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = MASK_8L(src1 | DRX); + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000100: case 0000120: case 0000130: case 0000140: + case 0000150: case 0000160: case 0000170: /*or.w ->d*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = MASK_16L(src1 | DRX); + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000200: case 0000220: case 0000230: case 0000240: + case 0000250: case 0000260: case 0000270: /*or.l ->d*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & DRX; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000420: case 0000430: case 0000440: case 0000450: + case 0000460: case 0000470: /*or.b ->ea*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | DRX; + SETNZ8(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000520: case 0000530: case 0000540: case 0000550: + case 0000560: case 0000570: /*or.w ->ea*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | DRX; + SETNZ16(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000620: case 0000630: case 0000640: case 0000650: + case 0000660: case 0000670: /*or.l ->ea*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 | DRX; + SETNZ32(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + default: + rc = STOP_ERROP; break; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 1 | Register |Opc|Length | effective address<>00x| sub + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 1 | Register |Opc| 1 1 | effective address | suba + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 0 1 | Reg X | 1 |Length | 0 0 |R/M| Reg Y | subx + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0x9000: + switch (IR_0803) { + case 0000300: case 0000310: case 0000320: case 0000330: + case 0000340: case 0000350: case 0000360: case 0000370: /* suba.w */ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&srca,&PC)); + *AREG(IR_REGX) -= EXTW(srca); /* note: no flag changes! */ + break; + case 0000700: case 0000710: case 0000720: case 0000730: + case 0000740: case 0000750: case 0000760: case 0000770: /* suba.l */ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&srca,&PC)); + *AREG(IR_REGX) -= srca; /* note: no flag changes! */ + break; + case 0000400: /*subx.b d*/ + res = m68k_sub8(MASK_8L(DRY),DRX,CCR_X?1:0); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000410: /*subx.b -a*/ + ASSERT_OK(ea_src_b(EA_APD,IR_REGY,&src1,&PC)); + ASSERT_OK(ea_src_b(EA_APD,IR_REGX,&src2,&PC)); + res = m68k_sub8(src1,src2,CCR_X?1:0); + rc = ea_dst_b_rmw(EA_APD,IR_REGX,res); + break; + case 0000500: /*subx.w d*/ + res = m68k_sub16(MASK_16L(DRY),DRX,CCR_X?1:0,TRUE); + rc = ea_dst_w(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000510: /*subx.w -a*/ + ASSERT_OK(ea_src_w(EA_APD,IR_REGY,&src1,&PC)); + ASSERT_OK(ea_src_w(EA_APD,IR_REGX,&src2,&PC)); + res = m68k_sub16(src1,src2,CCR_X?1:0,TRUE); + rc = ea_dst_w_rmw(EA_APD,IR_REGX,res); + break; + case 0000600: /*subx.l d*/ + res = m68k_sub32((t_uint64)DRY,(t_uint64)DRX,CCR_X?1:0,TRUE); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000610: /*subx.l -a*/ + ASSERT_OK(ea_src_l64(EA_APD,IR_REGY,&srcx1,&PC)); + ASSERT_OK(ea_src_l64(EA_APD,IR_REGX,&srcx2,&PC)); + res = m68k_sub32(srcx1,srcx2,CCR_X?1:0,TRUE); + rc = ea_dst_l_rmw(EA_APD,IR_REGX,res); + break; + case 0000000: case 0000020: case 0000030: case 0000040: + case 0000050: case 0000060: case 0000070: /* sub.b ->d */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub8(DRX,src1,0); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000100: case 0000110: case 0000120: case 0000130: + case 0000140: case 0000150: case 0000160: case 0000170: /* sub.w ->d */ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub16(DRX,src1,0,TRUE); + rc = ea_dst_w(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000200: case 0000210: case 0000220: case 0000230: + case 0000240: case 0000250: case 0000260: case 0000270: /* sub.l ->d */ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_sub32((t_uint64)DRX,srcx1,0,TRUE); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000420: case 0000430: case 0000440: case 0000450: + case 0000460: case 0000470: /* sub.b ->ea */ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub8(src1,DRX,0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000520: case 0000530: case 0000540: case 0000550: + case 0000560: case 0000570: /* sub.w ->ea */ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_sub16(src1,DRX,0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000620: case 0000630: case 0000640: case 0000650: + case 0000660: case 0000670: /* sub.l ->ea */ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_sub32(srcx1,(t_uint64)DRX,0,TRUE); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 1 0 | Opcode | trapa + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xa000: + rc = m68k_gen_exception(10,&PC); + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 1 1 | Register | 0 |Length | effective address | cmp,cmpa + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 1 1 | Register | 1 |Length | effective address<>001| eor + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 0 1 1 | Reg X | 1 |Length | 0 0 1 | Reg Y | cmpm + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xb000: + switch (IR_0803) { + case 0000410: /*cmpm.b*/ + rc = STOP_IMPL; break; + case 0000510: /*cmpm.w*/ + rc = STOP_IMPL; break; + case 0000610: /*cmpm.l*/ + rc = STOP_IMPL; break; + case 0000400: case 0000420: case 0000430: case 0000440: + case 0000450: case 0000460: case 0000470: /*eor.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ DRX; + SETNZ8(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000500: case 0000520: case 0000530: case 0000540: + case 0000550: case 0000560: case 0000570: /*eor.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ DRX; + SETNZ16(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000600: case 0000620: case 0000630: case 0000640: + case 0000650: case 0000660: case 0000670: /*eor.l*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 ^ DRX; + SETNZ32(res); + CLRF(FLAG_V|FLAG_C); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000000: case 0000020: case 0000030: case 0000040: + case 0000050: case 0000060: case 0000070: /*cmp.b*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + (void)m68k_sub8(DRX,src1,0); + break; + case 0000100: case 0000110: case 0000120: case 0000130: + case 0000140: case 0000150: case 0000160: case 0000170: /*cmp.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + (void)m68k_sub16(DRX,src1,0,TRUE); + break; + case 0000200: case 0000210: case 0000220: case 0000230: + case 0000240: case 0000250: case 0000260: case 0000270: /*cmp.l*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + (void)m68k_sub32((t_uint64)DRX,srcx1,0,TRUE); + break; + case 0000300: case 0000310: case 0000320: case 0000330: + case 0000340: case 0000350: case 0000360: case 0000370: /*cmpa.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + areg = AREG(IR_REGX); + (void)m68k_sub32((t_uint64)EXTW(*areg),(t_uint64)src1,0,TRUE); + break; + + case 0000700: case 0000710: case 0000720: case 0000730: + case 0000740: case 0000750: case 0000760: case 0000770: /*cmpa.l*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + (void)m68k_sub32((t_uint64)*AREG(IR_REGX),srcx1,0,TRUE); + break; + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 0 | Register |Opc|Length | effective address<>00x| and + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 0 | Reg X | 1 0 0 | 0 0 |R/M| Reg Y | abcd + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 0 | Reg X | 1 |Opcode | 0 0 |Opc| Reg Y | exg + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 0 | Register |Opc| 1 1 | effective address | muls,mulu + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xc000: + switch(IR_0803) { + case 0000300: case 0000310: case 0000320: case 0000330: + case 0000340: case 0000350: case 0000360: case 0000370: /*mulu*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = (uint16)MASK_16L(src1) * (uint16)MASK_16L(DRX); + DRX = res; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + break; + case 0000700: case 0000710: case 0000720: case 0000730: + case 0000740: case 0000750: case 0000760: case 0000770: /*muls*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + sres = (int16)MASK_16L(src1) * (int16)MASK_16L(DRX); + DRX = (uint32)sres; + SETNZ32(sres); + CLRF(FLAG_C|FLAG_V); + break; + case 0000500: /* exg d,d */ + res = DRX; DRX = DRY; DRY = res; + rc = SCPE_OK; break; + case 0000510: /* exg a,a */ + srca = *AREG(IR_REGX); *AREG(IR_REGX) = *AREG(IR_REGY); *AREG(IR_REGY) = srca; + rc = SCPE_OK; break; + case 0000610: /* exg a,d */ + res = DRX; DRX = (uint32)*AREG(IR_REGY); *AREG(IR_REGY) = (t_addr)res; + rc = SCPE_OK; break; + case 0000400: /* abcd d */ + rc = STOP_IMPL; break; + case 0000410: /* abcd a */ + rc = STOP_IMPL; break; + case 0000000: case 00000020: case 0000030: case 0000040: + case 0000050: case 00000060: case 0000070: /* and.b -> d*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & DRX; + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000100: case 00000120: case 0000130: case 0000140: + case 0000150: case 00000160: case 0000170: /* and.w -> d*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & DRX; + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_w(EA_DDIR,IR_REGX,res,&PC); + break; + rc = STOP_IMPL; break; + case 0000200: case 00000220: case 0000230: case 0000240: + case 0000250: case 00000260: case 0000270: /* and.l -> d*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1 & DRX; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000420: case 00000430: case 0000440: case 0000450: + case 0000460: case 00000470: /* and.b -> ea*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = DRX & src1; + SETNZ8(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000520: case 00000530: case 0000540: case 0000550: + case 0000560: case 00000570: /* and.w -> ea*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = DRX & src1; + SETNZ16(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000620: case 00000630: case 0000640: case 0000650: + case 0000660: case 00000670: /* and.l -> ea*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = DRX & src1; + SETNZ32(res); + CLRF(FLAG_C|FLAG_V); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 1 | Register |Opc| 1 1 | effective address<>00x| add,adda + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 0 1 | Reg X | 1 |Length | 0 0 |R/M| Reg Y | addx + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xd000: + switch (IR_0803) { + case 0000300: case 0000310: case 0000320: case 0000330: + case 0000340: case 0000350: case 0000360: case 0000370: /*adda.w*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&srca,&PC)); + *AREG(IR_REGX) += EXTW(srca); /* note: no flag changes! */ + break; + case 0000700: case 0000710: case 0000720: case 0000730: + case 0000740: case 0000750: case 0000760: case 0000770: /*adda.l*/ + ASSERT_OK(ea_src_l(IR_EAMOD,IR_EAREG,&srca,&PC)); + *AREG(IR_REGX) += srca; /* note: no flag changes! */ + break; + case 0000400: /* addx.b d*/ + res = m68k_add8(MASK_8L(DRY),DRX,CCR_X?1:0); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000410: /* addx.b -a*/ + ASSERT_OK(ea_src_b(EA_APD,IR_REGY,&src1,&PC)); + ASSERT_OK(ea_src_b(EA_APD,IR_REGX,&src2,&PC)); + res = m68k_add8(src1,src2,CCR_X?1:0); + rc = ea_dst_b_rmw(EA_APD,IR_REGX,res); + break; + case 0000500: /* addx.w d*/ + res = m68k_add16(MASK_16L(DRY),DRX,CCR_X?1:0,TRUE); + rc = ea_dst_w(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000510: /* addx.w -a*/ + ASSERT_OK(ea_src_w(EA_APD,IR_REGY,&src1,&PC)); + ASSERT_OK(ea_src_w(EA_APD,IR_REGX,&src2,&PC)); + res = m68k_add16(src1,src2,CCR_X?1:0,TRUE); + rc = ea_dst_w_rmw(EA_APD,IR_REGX,res); + break; + case 0000600: /* addx.l d*/ + res = m68k_add32((t_uint64)DRY,(t_uint64)DRX,CCR_X?1:0,TRUE); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000610: /* addx.l -a*/ + ASSERT_OK(ea_src_l64(EA_APD,IR_REGY,&srcx1,&PC)); + ASSERT_OK(ea_src_l64(EA_APD,IR_REGX,&srcx2,&PC)); + res = m68k_add32(srcx1,srcx2,CCR_X?1:0,TRUE); + rc = ea_dst_l_rmw(EA_APD,IR_REGX,res); + break; + case 0000000: case 0000010: case 0000020: case 0000030: + case 0000040: case 0000050: case 0000060: case 0000070: /*add.b ->d*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add8(src1,DRX,0); + rc = ea_dst_b(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000100: case 0000110: case 0000120: case 0000130: + case 0000140: case 0000150: case 0000160: case 0000170: /*add.w ->d*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add16(src1,DRX,0,TRUE); + rc = ea_dst_w(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000200: case 0000210: case 0000220: case 0000230: + case 0000240: case 0000250: case 0000260: case 0000270: /*add.l ->d*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_add32(srcx1,(t_uint64)DRX,0,TRUE); + rc = ea_dst_l(EA_DDIR,IR_REGX,res,&PC); + break; + case 0000420: case 0000430: case 0000440: case 0000450: + case 0000460: case 0000470: /*add.b ->ea*/ + ASSERT_OK(ea_src_b(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add8(src1,DRX,0); + rc = ea_dst_b_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000520: case 0000530: case 0000540: case 0000550: + case 0000560: case 0000570: /*add.w ->ea*/ + ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = m68k_add16(src1,DRX,0,TRUE); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + break; + case 0000620: case 0000630: case 0000640: case 0000650: + case 0000660: case 0000670: /*add.l ->ea*/ + ASSERT_OK(ea_src_l64(IR_EAMOD,IR_EAREG,&srcx1,&PC)); + res = m68k_add32(srcx1,(t_uint64)DRX,0,TRUE); + rc = ea_dst_l_rmw(IR_EAMOD,IR_EAREG,res); + break; + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 1 0 |Size/Reg X |dir|Length |i/r|Opcode2| Reg Y | asl,asr,lsl,lsr,rol,ror,roxl,roxr + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 1 0 | Opcode |dir| 1 1 | effective address | asl,asr,lsl,lsr,rol,ror,roxl,roxr + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xe000: + switch (IR_1103) { + case 000040: case 001040: case 002040: case 003040: + case 004040: case 005040: case 006040: case 007040: /*asr.b r*/ + cnt = DRX & 077; + goto do_asr8; + case 000000: case 001000: case 002000: case 003000: + case 004000: case 005000: case 006000: case 007000: /*asr.b #*/ + cnt = quickarg[IR_REGX]; +do_asr8: reg = DR+IR_REGY; + res = src1 = MASK_8L(*reg); + if (cnt) { + if (cnt<8) { + res >>= cnt; + if (MASK_8SGN(src1)) res |= shmask8[cnt]; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = MASK_8SGN(src1) ? 0xff : 0x00; + SETF(res,FLAG_C|FLAG_X); + } + *reg = COMBINE8(*reg,res); + } else + CLRF(FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc =SCPE_OK; break; + + case 000320: case 000330: case 000340: case 000350: + case 000360: case 000370: /*asr*/ + cnt = 1; + goto do_asr16; + case 000140: case 001140: case 002140: case 003140: + case 004140: case 005140: case 006140: case 007140: /*asr.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_asr16; + case 000100: case 001100: case 002100: case 003100: + case 004100: case 005100: case 006100: case 007100: /*asr.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_asr16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (cnt) { + if (cnt<16) { + res = src1 >> cnt; + if (MASK_16SGN(src1)) res |= shmask16[cnt]; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = MASK_16SGN(src1) ? 0xffff : 0x0000; + SETF(res,FLAG_C|FLAG_X); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C); + res = src1; + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000240: case 001240: case 002240: case 003240: + case 004240: case 005240: case 006240: case 007240: /*asr.l r*/ + cnt = DRX & 077; + goto do_asr32; + case 000200: case 001200: case 002200: case 003200: + case 004200: case 005200: case 006200: case 007200: /*asr.l #*/ + cnt = quickarg[IR_REGX]; +do_asr32: reg = DR+IR_REGY; + res = src1 = *reg; + if (cnt) { + if (cnt < 32) { + res >>= cnt; + if (MASK_32SGN(src1)) res |= shmask32[cnt]; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = MASK_32SGN(src1) ? 0xffffffff : 0x00000000; + SETF(res,FLAG_C|FLAG_X); + } + *reg = res; + } else CLRF(FLAG_C); + SETNZ32(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 000440: case 001440: case 002440: case 003440: + case 004440: case 005440: case 006440: case 007440: /*asl.b r*/ + cnt = DRX & 077; + goto do_asl8; + case 000400: case 001400: case 002400: case 003400: + case 004400: case 005400: case 006400: case 007400: /*asl.b #*/ + cnt = quickarg[IR_REGX]; +do_asl8: reg = DR+IR_REGY; + res = src1 = MASK_8L(*reg); + if (cnt) { + if (cnt<8) { + res = src1 << cnt; + SETF(MASK_9(res),FLAG_C|FLAG_X); + src1 &= shmask8[cnt+1]; + SETF(src1 && src1 != shmask8[cnt+1],FLAG_V); + } else { + res = 0; + SETF(cnt==8?(src1 & 1):0,FLAG_C|FLAG_X); + SETF(src1,FLAG_V); + } + *reg = COMBINE8(*reg,res); + } else CLRF(FLAG_C|FLAG_V); + SETNZ8(res); + rc = SCPE_OK; break; + + case 000720: case 000730: case 000740: case 000750: + case 000760: case 000770: /*asl*/ + cnt = 1; + goto do_asl16; + case 000540: case 001540: case 002540: case 003540: + case 004540: case 005540: case 006540: case 007540: /*asl.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_asl16; + case 000500: case 001500: case 002500: case 003500: + case 004500: case 005500: case 006500: case 007500: /*asl.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_asl16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (cnt) { + if (cnt<16) { + res = src1 << cnt; + SETF(MASK_17(res),FLAG_C|FLAG_X); + src1 &= shmask16[cnt+1]; + SETF(src1 && src1 != shmask16[cnt+1],FLAG_V); + } else { + res = 0; + SETF(cnt==16?(src1 & 1):0,FLAG_C|FLAG_X); + SETF(src1,FLAG_V); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C|FLAG_V); + rc = SCPE_OK; + } + SETNZ16(res); + break; + + case 000640: case 001640: case 002640: case 003640: + case 004640: case 005640: case 006640: case 007640: /*asl.l r*/ + cnt = DRX & 077; + goto do_asl32; + case 000600: case 001600: case 002600: case 003600: + case 004600: case 005600: case 006600: case 007600: /*asl.l #*/ + cnt = quickarg[IR_REGX]; +do_asl32: reg = DR+IR_REGY; + res = src1 = *reg; + if (cnt) { + if (cnt<32) { + res <<= cnt; + SETF(src1 & bitmask[32-cnt],FLAG_C|FLAG_X); + src1 &= shmask32[cnt+1]; + SETF(src1 && src1 != shmask32[cnt+1],FLAG_V); + } else { + res = 0; + SETF(cnt==16?(src1 & 1):0,FLAG_C|FLAG_X); + SETF(src1,FLAG_V); + } + *reg = res; + } else CLRF(FLAG_C|FLAG_V); + SETNZ32(res); + rc = SCPE_OK; break; + + case 000050: case 001050: case 002050: case 003050: + case 004050: case 005050: case 006050: case 007050: /*lsr.b r*/ + cnt = DRX & 077; + goto do_lsr8; + case 000010: case 001010: case 002010: case 003010: + case 004010: case 005010: case 006010: case 007010: /*lsr.b #*/ + cnt = quickarg[IR_REGX]; +do_lsr8: reg = DR+IR_REGY; + res = src1 = MASK_8L(*reg); + if (cnt) { + if (cnt <= 8) { + res = src1 >> cnt; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + *reg = COMBINE8(*reg,res); + } else CLRF(FLAG_C); + CLRF(FLAG_V); + SETNZ8(res); + rc = SCPE_OK; break; + + case 001320: case 001330: case 001340: case 001350: + case 001360: case 001370: /*lsr*/ + cnt = 1; + goto do_lsr16; + case 000150: case 001150: case 002150: case 003150: + case 004150: case 005150: case 006150: case 007150: /*lsr.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_lsr16; + case 000110: case 001110: case 002110: case 003110: + case 004110: case 005110: case 006110: case 007110: /*lsr.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_lsr16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + if (cnt) { + if (cnt <= 16) { + res = src1 >> cnt; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + CLRF(FLAG_V); + SETNZ16(res); + break; + + case 000250: case 001250: case 002250: case 003250: + case 004250: case 005250: case 006250: case 007250: /*lsr.l r*/ + cnt = DRX & 077; + goto do_lsr32; + case 000210: case 001210: case 002210: case 003210: + case 004210: case 005210: case 006210: case 007210: /*lsr.l #*/ + cnt = quickarg[IR_REGX]; +do_lsr32: reg = DR+IR_REGY; + res = src1 = *reg; + if (cnt) { + if (cnt <= 32) { + res = src1 >> cnt; + SETF(src1&bitmask[cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + *reg = res; + } else CLRF(FLAG_C); + CLRF(FLAG_V); + SETNZ32(res); + rc = SCPE_OK; + break; + + case 000450: case 001450: case 002450: case 003450: + case 004450: case 005450: case 006450: case 007450: /*lsl.b r*/ + cnt = DRX & 077; + goto do_lsl8; + case 000410: case 001410: case 002410: case 003410: + case 004410: case 005410: case 006410: case 007410: /*lsl.b #*/ + cnt = quickarg[IR_REGX]; +do_lsl8: reg = DR+IR_REGY; + res = src1 = MASK_8L(*reg); + if (cnt) { + if (cnt <= 8) { + res = src1 << cnt; + SETF(src1&bitmask[9-cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + *reg = COMBINE8(*reg,res); + } else CLRF(FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 001720: case 001730: case 001740: case 001750: + case 001760: case 001770: /*lsl*/ + cnt = 1; + goto do_lsl16; + case 000550: case 001550: case 002550: case 003550: + case 004550: case 005550: case 006550: case 007550: /*lsl.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_lsl16; + case 000510: case 001510: case 002510: case 003510: + case 004510: case 005510: case 006510: case 007510: /*lsl.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_lsl16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&src1,&PC)); + res = src1; + if (cnt) { + if (cnt <= 16) { + res = src1 << cnt; + SETF(src1&bitmask[17-cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000650: case 001650: case 002650: case 003650: + case 004650: case 005650: case 006650: case 007650: /*lsl.l r*/ + cnt = DRX & 077; + goto do_lsl32; + case 000610: case 001610: case 002610: case 003610: + case 004610: case 005610: case 006610: case 007610: /*lsl.l #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_lsl32: reg = DR+IR_REGY; + res = src1 = *reg; + if (cnt) { + if (cnt <= 32) { + res = src1 << cnt; + SETF(src1&bitmask[33-cnt],FLAG_C|FLAG_X); + } else { + res = 0; + CLRF(FLAG_X|FLAG_C); + } + *reg = res; + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + SETNZ32(res); + CLRF(FLAG_V); + break; + + case 000060: case 001060: case 002060: case 003060: + case 004060: case 005060: case 006060: case 007060: /*roxr.b r*/ + cnt = DRX & 077; + goto do_roxr8; + case 000020: case 001020: case 002020: case 003020: + case 004020: case 005020: case 006020: case 007020: /*roxr.b #*/ + cnt = quickarg[IR_REGX]; +do_roxr8: reg = DR+IR_REGY; + res = MASK_8L(*reg); + if (cnt) { + cnt %= 9; + if (CCR_X) res |= BIT8; + res = (res>>cnt) | (res<<(9-cnt)); + *reg = COMBINE8(*reg,res); + SETF(MASK_9(res),FLAG_X|FLAG_C); + } else SETF(CCR_X,FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 002320: case 002330: case 002340: case 002350: + case 002360: case 002370: /*roxr*/ + cnt = 1; + goto do_roxr16; + case 000160: case 001160: case 002160: case 003160: + case 004160: case 005160: case 006160: case 007160: /*roxr.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_roxr16; + case 000120: case 001120: case 002120: case 003120: + case 004120: case 005120: case 006120: case 007120: /*roxr.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_roxr16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&res,&PC)); + if (cnt) { + cnt %= 17; + if (CCR_X) res |= BIT16; + res = (res>>cnt) | (res<<(17-cnt)); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + SETF(MASK_17(res),FLAG_X|FLAG_C); + } else { + SETF(CCR_X,FLAG_C); + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000260: case 001260: case 002260: case 003260: + case 004260: case 005260: case 006260: case 007260: /*roxr.l r*/ + cnt = DRX & 077; + goto do_roxr32; + case 000220: case 001220: case 002220: case 003220: + case 004220: case 005220: case 006220: case 007220: /*roxr.l #*/ + cnt = quickarg[IR_REGX]; +do_roxr32: reg = DR+IR_REGY; + resx = *reg; + if (cnt) { + cnt %= 33; + if (CCR_X) resx |= BIT32; + resx = (resx>>cnt) | (resx<<(33-cnt)); + *reg = MASK_32L(resx); + SETF(MASK_33(res),FLAG_X|FLAG_C); + } else SETF(CCR_X,FLAG_C); + SETNZ32(resx); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 000460: case 001460: case 002460: case 003460: + case 004460: case 005460: case 006460: case 007460: /*roxl.b r*/ + cnt = DRX & 077; + goto do_roxl8; + case 000420: case 001420: case 002420: case 003420: + case 004420: case 005420: case 006420: case 007420: /*roxl.b #*/ + cnt = quickarg[IR_REGX]; +do_roxl8: reg = DR+IR_REGY; + res = MASK_8L(*reg); + if (cnt) { + cnt %= 9; + if (CCR_X) res |= BIT8; + res = (res<>(9-cnt)); + *reg = COMBINE8(*reg,res); + SETF(MASK_9(res),FLAG_X|FLAG_C); + } else SETF(CCR_X,FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 002720: case 002730: case 002740: case 002750: + case 002760: case 002770: /*roxl*/ + cnt = 1; + goto do_roxl16; + case 000560: case 001560: case 002560: case 003560: + case 004560: case 005560: case 006560: case 007560: /*roxl.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_roxl16; + case 000520: case 001520: case 002520: case 003520: + case 004520: case 005520: case 006520: case 007520: /*roxl.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_roxl16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&res,&PC)); + if (cnt) { + cnt %= 17; + if (CCR_X) res |= BIT16; + res = (res<>(17-cnt)); + SETF(MASK_17(res),FLAG_X|FLAG_C); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + SETF(CCR_X,FLAG_C); + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000660: case 001660: case 002660: case 003660: + case 004660: case 005660: case 006660: case 007660: /*roxl.l r*/ + cnt = DRX & 077; + goto do_roxl32; + case 000620: case 001620: case 002620: case 003620: + case 004620: case 005620: case 006620: case 007620: /*roxl.l #*/ + cnt = quickarg[IR_REGX]; +do_roxl32: reg = DR+IR_REGY; + resx = *reg; + if (cnt) { + cnt %= 33; + if (CCR_X) resx |= BIT32; + resx = (resx<>(33-cnt)); + SETF(MASK_33(resx),FLAG_X|FLAG_C); + *reg = MASK_32L(resx); + } else SETF(CCR_X,FLAG_C); + SETNZ32(resx); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 000070: case 001070: case 002070: case 003070: + case 004070: case 005070: case 006070: case 007070: /*ror.b r*/ + cnt = DRX & 077; + goto do_ror8; + case 000030: case 001030: case 002030: case 003030: + case 004030: case 005030: case 006030: case 007030: /*ror.b #*/ + cnt = quickarg[IR_REGX]; +do_ror8: reg = DR+IR_REGY; + res = MASK_8L(*reg); + if (cnt) { + cnt &= 7; + res = (res>>cnt) | (res<<(8-cnt)); + SETF(MASK_9(res),FLAG_C); + *reg = COMBINE8(*reg,res); + } else CLRF(FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 003320: case 003330: case 003340: case 003350: + case 003360: case 003370: /*ror*/ + cnt = 1; + goto do_ror16; + case 000170: case 001170: case 002170: case 003170: + case 004170: case 005170: case 006170: case 007170: /*ror.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_ror16; + case 000130: case 001130: case 002130: case 003130: + case 004130: case 005130: case 006130: case 007130: /*ror.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_ror16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&res,&PC)); + if (cnt) { + cnt &= 15; + res = (res>>cnt) | (res<<(16-cnt)); + SETF(MASK_17(res),FLAG_C); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000270: case 001270: case 002270: case 003270: + case 004270: case 005270: case 006270: case 007270: /*ror.l r*/ + cnt = DRX & 077; + goto do_ror32; + case 000230: case 001230: case 002230: case 003230: + case 004230: case 005230: case 006230: case 007230: /*ror.l #*/ + cnt = quickarg[IR_REGX]; +do_ror32: reg = DR+IR_REGY; + resx = *reg; + if (cnt) { + cnt &= 31; + resx = (resx>>cnt) | (resx<<(32-cnt)); + SETF(MASK_33(res),FLAG_C); + *reg = (int32)resx; + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + SETNZ32(resx); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 000470: case 001470: case 002470: case 003470: + case 004470: case 005470: case 006470: case 007470: /*rol.b r*/ + cnt = DRX & 077; + goto do_rol8; + case 000430: case 001430: case 002430: case 003430: + case 004430: case 005430: case 006430: case 007430: /*rol.b #*/ + cnt = quickarg[IR_REGX]; +do_rol8: reg = DR+IR_REGY; + res = MASK_8L(*reg); + if (cnt) { + cnt &= 7; + res = (res<>(8-cnt)); + SETF(MASK_9(res),FLAG_C); + *reg = COMBINE8(*reg,res); + } else CLRF(FLAG_C); + SETNZ8(res); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + case 003720: case 003730: case 003740: case 003750: + case 003760: case 003770: /*rol*/ + cnt = 1; + goto do_rol16; + case 000570: case 001570: case 002570: case 003570: + case 004570: case 005570: case 006570: case 007570: /*rol.w r*/ + cnt = DRX & 077; + IR = EA_DDIR | IR_REGY; + goto do_rol16; + case 000530: case 001530: case 002530: case 003530: + case 004530: case 005530: case 006530: case 007530: /*rol.w #*/ + cnt = quickarg[IR_REGX]; + IR = EA_DDIR | IR_REGY; +do_rol16: ASSERT_OK(ea_src_w(IR_EAMOD,IR_EAREG,&res,&PC)); + if (cnt) { + cnt &= 15; + res = (res<>(16-cnt)); + SETF(MASK_17(res),FLAG_C); + rc = ea_dst_w_rmw(IR_EAMOD,IR_EAREG,res); + } else { + CLRF(FLAG_C); + rc = SCPE_OK; + } + SETNZ16(res); + CLRF(FLAG_V); + break; + + case 000670: case 001670: case 002670: case 003670: + case 004670: case 005670: case 006670: case 007670: /*rol.l r*/ + cnt = DRX & 077; + goto do_rol32; + case 000630: case 001630: case 002630: case 003630: + case 004630: case 005630: case 006630: case 007630: /*rol.l #*/ + cnt = quickarg[IR_REGX]; +do_rol32: reg = DR+IR_REGY; + resx = (uint32)*reg; + if (cnt) { + cnt &= 31; + resx = (resx<>(32-cnt)); + SETF(MASK_32L(resx),FLAG_C); + *reg = MASK_32L(resx); + } else CLRF(FLAG_C); + SETNZ32(resx); + CLRF(FLAG_V); + rc = SCPE_OK; break; + + default: + rc = STOP_ERROP; + } + break; + + /* +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * | 1 1 1 1 | Opcode | trapf + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---*/ + case 0xf000: + rc = m68k_gen_exception(11,&PC); break; + + /* unreachable */ + default: + rc = STOP_ERROP; break; + } + + /* handle tracing */ + if (tracet0 || SR_T1) { + if (m68kcpu_unit->flags & UNIT_CPU_TRACE) { + /* leave loop */ + sim_interval = -1; + rc = STOP_TRACE; + break; + } + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: Tracebit set\n",PC)); + ASSERT_OK(m68k_gen_exception(9,&PC)); + /* remain in loop */ + } + tracet0 = 0; + + /* handle interrupts (sets/resets intpending) */ + m68k_checkints(&PC); + + /* handle STOP instr */ + if (rc==STOP_HALT) { + if (m68kcpu_unit->flags & UNIT_CPU_STOP) { + PC -= 4; /* correct PC to point to STOP instr */ + break; + } + if ((rc = m68k_stop(&PC)) != SCPE_OK) + break; /* does not return until interrupt occurs, will react to CTRL-E */ + } + } + + /* handle various exit codes */ + switch (rc) { + case STOP_ERRADR: /* address error */ + if ((m68kcpu_unit->flags & UNIT_CPU_EXC)==0) { + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: Address error\n",PC)); + if ((rc = m68k_gen_exception(3,&PC)) != SCPE_OK) { + /* double bus fault */ + rc = STOP_DBF; /* cannot be masked, will stop simulator */ + } + } + return rc; + case STOP_PCIO: /* cannot be masked, will stop simulator */ + return rc; + case STOP_ERRIO: /* bus error */ + if ((m68kcpu_unit->flags & UNIT_CPU_EXC)==0) { + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: Bus error\n",PC)); + if ((rc = m68k_gen_exception(2,&PC)) != SCPE_OK) { + /* double bus fault */ + rc = STOP_DBF; /* cannot be masked, will stop simulator */ + } + } + return rc; + case STOP_ERROP: /* illegal opcode */ + if (!(m68kcpu_unit->flags & UNIT_CPU_EXC)) { + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: Illegal opcode\n",PC)); + rc = m68k_gen_exception(4,&PC); + } + return rc; + case STOP_PRVIO: /* privilege violation */ + if (!(m68kcpu_unit->flags & UNIT_CPU_PRVIO)) { + IFDEBUG(DBG_CPU_EXC,fprintf(sim_deb,"CPU : [0x%08x] Exception: Privilege violation\n",PC)); + rc = m68k_gen_exception(8,&PC); + } + break; + case STOP_IMPL: + return rc; /* leave sim_instr */ + default: + return rc; /* leave sim_instr */ + } + + /* save state */ + saved_PC = PC; + + return rc; +} diff --git a/SAGE/m68k_cpu.h b/SAGE/m68k_cpu.h new file mode 100644 index 00000000..4474d6cf --- /dev/null +++ b/SAGE/m68k_cpu.h @@ -0,0 +1,252 @@ +/* 68k_cpu.c: 68k-CPU simulator for sage-II system + + Copyright (c) 2009, Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#ifndef M68K_CPU_H_ +#define M68K_CPU_H_ 0 + +#include "sim_defs.h" + +/* define this o 1 for adding debugging code */ +#define DBG_MSG 1 + +#if !defined(HAVE_INT64) +#error Fix me, I need 64 bit data types! +#endif + +/* these must be set in the system-specific CPU reset */ +extern UNIT* m68kcpu_unit; +extern DEVICE* m68kcpu_dev; + +/* implemented in m68k_cpu.c */ +extern REG m68kcpu_reg[]; + +/* debug flags */ +#define DBG_CPU_EXC (1 << 0) +#define DBG_CPU_PC (1 << 1) +#define DBG_CPU_INT (1 << 2) +#define DBG_CPU_CTRACE (1 << 3) +#define DBG_CPU_BTRACE (1 << 4) +#define DBG_CPU_CUSTOM1 (1 << 5) /* reserved for custom debugging */ +#define DBG_CPU_CUSTOM2 (1 << 6) /* reserved for custom debugging */ +extern FILE* sim_deb; +extern DEBTAB m68kcpu_dt[]; +#if DBG_MSG==1 +#define IFDEBUG(flag,func) if ((m68kcpu_dev->dctrl & flag) && sim_deb) { (void)(func); fflush(sim_deb); } +#else +#define IFDEBUG(flag,func) +#endif + +#define SIM_EMAX 16 /* ? */ +#define MAXMEMORY (256*256*256) /* 2^24 bytes */ +#define MINMEMORY (256*256) /* reserve 64k by default */ +#define MEMORYSIZE (m68kcpu_unit->capac) /* actual memory size */ +#define KB 1024 /* kilobyte */ + +/* simulator stop codes */ +#define STOP_IBKPT 1 /* pc breakpoint */ +#define STOP_MEM 2 /* memory breakpoint */ +#define STOP_ERROP 3 /* invalid opcode, normally exception 4 */ +#define STOP_ERRIO 4 /* invalid I/O address, normally exception 2 */ +#define STOP_ERRADR 5 /* invalid memory address, normally exception 3 */ +#define STOP_IMPL 6 /* not yet implemented (should disappear) */ +#define SIM_ISIO 7 /* internal indicator that I/O dispatch is required */ +#define SIM_NOMEM 8 /* allows to signal that there is no memory at that location */ +#define STOP_PCIO 9 /* code error, PC steps on I/O address */ +#define STOP_PRVIO 10 /* internal indicator: privileged instruction */ +#define STOP_TRACE 11 /* halt on trace */ +#define STOP_HALT 12 /* STOP instruction */ +#define STOP_DBF 13 /* double bus fault */ +#define STOP_OFFLINE 14 /* printer offline */ + +#define UNIT_CPU_M_TYPE 017 +#define UNIT_CPU_V_TYPE (UNIT_V_UF+0) /* CPUTYPE */ +#define UNIT_CPU_TYPE (1 << UNIT_CPU_V_CPU) +#define UNIT_CPU_V_EXC (UNIT_V_UF+4) /* halt on exception 2..4 */ +#define UNIT_CPU_EXC (1 << UNIT_CPU_V_EXC) +#define UNIT_CPU_V_STOP (UNIT_V_UF+5) /* halt on STOP instruction */ +#define UNIT_CPU_STOP (1 << UNIT_CPU_V_STOP) +#define UNIT_CPU_V_PRVIO (UNIT_V_UF+6) /* halt on privilege violation */ +#define UNIT_CPU_PRVIO (1 << UNIT_CPU_V_PRVIO) +#define UNIT_CPU_V_TRACE (UNIT_V_UF+7) /* halt on TRACE exception */ +#define UNIT_CPU_TRACE (1 << UNIT_CPU_V_TRACE) +#define UNIT_CPU_V_FPU (UNIT_V_UF+8) /* has FPU */ +#define UNIT_CPU_FPU (1 << UNIT_CPU_V_FPU) +#define UNIT_CPU_V_MMU (UNIT_V_UF+9) /* has MMU */ +#define UNIT_CPU_MMU (1 << UNIT_CPU_V_MMU) +#define UNIT_CPU_V_MSIZE (UNIT_V_UF+10) /* set memsize */ +#define UNIT_CPU_MSIZE (1 << UNIT_CPU_V_MSIZE) + +#define UNIT_CPU_V_FREE (UNIT_V_UF+11) /* next free bit */ + +/* the various CPUs */ +#define UNIT_CPUTYPE_MASK (UNIT_CPU_M_TYPE << UNIT_CPU_V_TYPE) +#define CPU_TYPE_68000 (0 << UNIT_CPU_V_TYPE) +#define CPU_TYPE_68008 (1 << UNIT_CPU_V_TYPE) +#define CPU_TYPE_68010 (2 << UNIT_CPU_V_TYPE) /* not yet! */ +#define CPU_TYPE_68020 (3 << UNIT_CPU_V_TYPE) /* not yet! */ +#define CPU_TYPE_68030 (4 << UNIT_CPU_V_TYPE) /* not yet! */ + +extern uint8 *M; +extern int16 cputype; +extern t_addr saved_PC; +#define PCX saved_PC + +/* breakpoint space for data accesses (R=read, W=write) */ +#define E_BKPT_SPC (0) +#define R_BKPT_SPC (1< + +#if defined(_WIN32) +#include +#else +#include +#endif + +/* io hash */ +#define IOHASHSIZE 97 /* must be prime */ +#define MAKEIOHASH(p) (p % IOHASHSIZE) +static IOHANDLER** iohash = NULL; + +/* + * memory + */ +uint8* M = 0; +t_addr addrmask = 0xffffffff; +int m68k_fcode = 0; +int m68k_dma = 0; + +#if 0 +/* TODO */ +t_stat m68k_set_mmu(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags |= value; + + /* TODO initialize the MMU */ + TranslateAddr = &m68k_translateaddr; + return SCPE_OK; +} + +t_stat m68k_set_nommu(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags &= ~value; + + /* initialize NO MMU */ + TranslateAddr = &m68k_translateaddr; + return SCPE_OK; +} +#endif + +/* I/O dispatcher + * + * I/O devices are implemented this way: + * a unit will register its own I/O addresses together with its handler + * in a hash which allows simple translation of physical addresses + * into units in the ReadPx/WritePx routines. + * These routines call the iohandler entry on memory mapped read/write. + * The handler has the option to enqueue an event for its unit for + * asynchronous callback, e.g. interrupt processing + */ +t_stat m68k_ioinit() +{ + if (iohash == NULL) { + iohash = (IOHANDLER**)calloc(IOHASHSIZE,sizeof(IOHANDLER*)); + if (iohash == NULL) return SCPE_MEM; + } + return SCPE_OK; +} + +t_stat add_iohandler(UNIT* u,void* ctxt, + t_stat (*io)(struct _iohandler* ioh,uint32* value,uint32 rw,uint32 mask)) +{ + PNP_INFO* pnp = (PNP_INFO*)ctxt; + IOHANDLER* ioh; + uint32 i,k; + + if (!pnp) return SCPE_IERR; + for (k=i=0; iio_size; i+=pnp->io_incr,k++) { + t_addr p = (pnp->io_base+i) & addrmask; + t_addr idx = MAKEIOHASH(p); + ioh = iohash[idx]; + while (ioh != NULL && ioh->port != p) ioh = ioh->next; + if (ioh) continue; /* already registered */ + +// printf("Register IO for address %x offset=%d\n",p,k); + ioh = (IOHANDLER*)malloc(sizeof(IOHANDLER)); + if (ioh == NULL) return SCPE_MEM; + ioh->ctxt = ctxt; + ioh->port = p; + ioh->offset = k; + ioh->u = u; + ioh->io = io; + ioh->next = iohash[idx]; + iohash[idx] = ioh; + } + return SCPE_OK; +} +t_stat del_iohandler(void* ctxt) +{ + uint32 i; + PNP_INFO* pnp = (PNP_INFO*)ctxt; + + if (!pnp) return SCPE_IERR; + for (i=0; iio_size; i += pnp->io_incr) { + t_addr p = (pnp->io_base+i) & addrmask; + t_addr idx = MAKEIOHASH(p); + IOHANDLER **ioh = &iohash[idx]; + while (*ioh != NULL && (*ioh)->port != p) ioh = &((*ioh)->next); + if (*ioh) { + IOHANDLER *e = *ioh; + *ioh = (*ioh)->next; + free((void*)e); + } + } + return SCPE_OK; +} + +/*********************************************************************************************** + * Memory handling + * ReadP{B|W|L} and WriteP{B|W|L} simply access physical memory (addrmask applies) + * ReadV{B|W|L} and WriteV{B|W|L} access virtual memory, i.e. after a "decoder" or mmu has processed + * the address/rwmode/fcode + * TranslateAddr is a user-supplied function, to be set into the function pointer, + * which converts an address and other data (e.g. rw, fcode) provided by the CPU + * into the real physical address. This is basically the MMU. + * + * TranslateAddr returns SCPE_OK for valid translation + * SIM_ISIO if I/O dispatch is required; ioh contains pointer to iohandler + * STOP_ERRADDR if address is invalid + * Mem accesses memory, selected by a (translated) address. Override in own code for non-contiguous memory + * Mem returns SCPE_OK and a pointer to the selected byte, if okay, STOP_ERRADR for invalid accesses + */ + +/* default handler */ +t_stat m68k_translateaddr(t_addr in,t_addr* out, IOHANDLER** ioh,int rw,int fc,int dma) +{ + t_addr ma = in & addrmask; + t_addr idx = MAKEIOHASH(ma); + IOHANDLER* i = iohash[idx]; + + *out = ma; + *ioh = 0; + while (i != NULL && i->port != ma) i = i->next; + if (i) { + *ioh = i; + return SIM_ISIO; + } else + return SCPE_OK; +} + +/* default memory pointer */ +t_stat m68k_mem(t_addr addr,uint8** mem) +{ + if (addr > MEMORYSIZE) return STOP_ERRADR; + *mem = M+addr; + return SCPE_OK; +} + +t_stat (*TranslateAddr)(t_addr in,t_addr* out,IOHANDLER** ioh,int rw,int fc,int dma) = &m68k_translateaddr; +t_stat (*Mem)(t_addr addr,uint8** mem) = &m68k_mem; + +/* memory access routines + * The Motorola CPU is big endian, whereas others like the i386 is + * little endian. The memory uses the natural order of the emulating CPU. + * + * addressing uses all bits but LSB to access the memory cell + * + * Memorybits 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + * ------68K Byte0-(MSB)-- ---68K Byte1----------- + * ------68K Byte2-------- ---68K Byte3-(LSB)----- + */ +t_stat ReadPB(t_addr a, uint32* val) +{ + uint8* mem; + + t_stat rc = Mem(a & addrmask,&mem); + switch (rc) { + default: + return rc; + case SIM_NOMEM: + *val = 0xff; + return SCPE_OK; + case SCPE_OK: + *val = *mem & BMASK; + return SCPE_OK; + } +} + +t_stat ReadPW(t_addr a, uint32* val) +{ + uint8* mem; + uint32 dat1,dat2; + + t_stat rc = Mem((a+1)&addrmask,&mem); + switch (rc) { + default: + return rc; + case SIM_NOMEM: + *val = 0xffff; + return SCPE_OK; + case SCPE_OK: + /* 68000/08/10 do not like unaligned access */ + if (cputype < 3 && (a & 1)) return STOP_ERRADR; + dat1 = (*(mem-1) & BMASK) << 8; + dat2 = *mem & BMASK; + *val = (dat1 | dat2) & WMASK; + return SCPE_OK; + } +} + +t_stat ReadPL(t_addr a, uint32* val) +{ + uint8* mem; + uint32 dat1,dat2,dat3,dat4; + + t_stat rc = Mem((a+3)&addrmask,&mem); + switch (rc) { + default: + return rc; + case SIM_NOMEM: + *val = 0xffffffff; + return SCPE_OK; + case SCPE_OK: + /* 68000/08/10 do not like unaligned access */ + if (cputype < 3 && (a & 1)) return STOP_ERRADR; + dat1 = *(mem-3) & BMASK; + dat2 = *(mem-2) & BMASK; + dat3 = *(mem-1) & BMASK; + dat4 = *mem & BMASK; + *val = (((((dat1 << 8) | dat2) << 8) | dat3) << 8) | dat4; + return SCPE_OK; + } +} + +t_stat WritePB(t_addr a, uint32 val) +{ + uint8* mem; + + t_stat rc = Mem(a&addrmask,&mem); + switch (rc) { + default: + return rc; + case SCPE_OK: + *mem = val & BMASK; + /*fallthru*/ + case SIM_NOMEM: + return SCPE_OK; + } +} + +t_stat WritePW(t_addr a, uint32 val) +{ + uint8* mem; + t_stat rc = Mem((a+1)&addrmask,&mem); + switch (rc) { + default: + return rc; + case SCPE_OK: + /* 68000/08/10 do not like unaligned access */ + if (cputype < 3 && (a & 1)) return STOP_ERRADR; + *(mem-1) = (val >> 8) & BMASK; + *mem = val & BMASK; + /*fallthru*/ + case SIM_NOMEM: + return SCPE_OK; + } +} + +t_stat WritePL(t_addr a, uint32 val) +{ + uint8* mem; + + t_stat rc = Mem((a+3)&addrmask,&mem); + switch (rc) { + default: + return rc; + case SCPE_OK: + /* 68000/08/10 do not like unaligned access */ + if (cputype < 3 && (a & 1)) return STOP_ERRADR; + *(mem-3) = (val >> 24) & BMASK; + *(mem-2) = (val >> 16) & BMASK; + *(mem-1) = (val >> 8) & BMASK; + *mem = val & BMASK; + /*fallthru*/ + case SIM_NOMEM: + return SCPE_OK; + } +} + +t_stat ReadVB(t_addr a, uint32* val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_READ,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + /* note this is a hack to persuade memory testing code that there is no memory: + * writing to such an address is a bit bucket, + * and reading from it will return some arbitrary value. + * + * SIM_NOMEM has to be defined for systems without a strict memory handling that will + * result in reading out anything without trapping a memory fault + */ + *val = 0xff; + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,val,IO_READ,BMASK); + case SCPE_OK: + return ReadPB(addr,val); + default: + return rc; + } +} + +t_stat ReadVW(t_addr a, uint32* val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_READ,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + *val = 0xffff; + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,val,IO_READ,WMASK); + case SCPE_OK: + return ReadPW(addr,val); + default: + return rc; + } +} + +t_stat ReadVL(t_addr a, uint32* val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_READ,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + *val = 0xffffffff; + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,val,IO_READ,LMASK); + case SCPE_OK: + return ReadPL(addr,val); + default: + return rc; + } +} + +t_stat WriteVB(t_addr a, uint32 val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_WRITE,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + /* part 2 of hack for less strict memory handling: ignore anything written + * to a nonexisting address + */ + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,&val,IO_WRITE,BMASK); + case SCPE_OK: + return WritePB(addr,val); + default: + return rc; + } +} + +t_stat WriteVW(t_addr a, uint32 val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_WRITE,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,&val,IO_WRITE,WMASK); + case SCPE_OK: + return WritePW(addr,val); + default: + return rc; + } +} + +t_stat WriteVL(t_addr a, uint32 val) +{ + t_addr addr; + IOHANDLER* ioh; + t_stat rc = TranslateAddr(a,&addr,&ioh,MEM_WRITE,m68k_fcode,m68k_dma); + switch (rc) { + case SIM_NOMEM: + return SCPE_OK; + case SIM_ISIO: + return ioh->io(ioh,&val,IO_WRITE,LMASK); + case SCPE_OK: + return WritePL(addr,val); + default: + return rc; + } +} diff --git a/SAGE/m68k_parse.tab.c b/SAGE/m68k_parse.tab.c new file mode 100644 index 00000000..5492e71e --- /dev/null +++ b/SAGE/m68k_parse.tab.c @@ -0,0 +1,3786 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + A0 = 258, + A1 = 259, + A2 = 260, + A3 = 261, + A4 = 262, + A5 = 263, + A6 = 264, + A7 = 265, + D0 = 266, + D1 = 267, + D2 = 268, + D3 = 269, + D4 = 270, + D5 = 271, + D6 = 272, + D7 = 273, + CCR = 274, + SR = 275, + USP = 276, + PC = 277, + NUMBER = 278, + ABCD = 279, + ADD = 280, + ADDA = 281, + ADDI = 282, + ADDQ = 283, + ADDX = 284, + AND = 285, + ANDI = 286, + OR = 287, + ORI = 288, + SBCD = 289, + SUB = 290, + SUBA = 291, + SUBI = 292, + SUBQ = 293, + SUBX = 294, + ASL = 295, + ASR = 296, + LSL = 297, + LSR = 298, + ROL = 299, + ROR = 300, + ROXL = 301, + ROXR = 302, + BCC = 303, + BCS = 304, + BEQ = 305, + BGE = 306, + BGT = 307, + BHI = 308, + BLE = 309, + BLS = 310, + BLT = 311, + BMI = 312, + BNE = 313, + BPL = 314, + BVC = 315, + BVS = 316, + BSR = 317, + BRA = 318, + BCLR = 319, + BSET = 320, + BCHG = 321, + BTST = 322, + CHK = 323, + CMP = 324, + CMPA = 325, + CMPI = 326, + CMPM = 327, + EOR = 328, + EORI = 329, + EXG = 330, + EXT = 331, + DIVU = 332, + DIVS = 333, + MULU = 334, + MULS = 335, + DBCC = 336, + DBCS = 337, + DBEQ = 338, + DBF = 339, + DBGE = 340, + DBGT = 341, + DBHI = 342, + DBLE = 343, + DBLS = 344, + DBLT = 345, + DBMI = 346, + DBNE = 347, + DBPL = 348, + DBT = 349, + DBVC = 350, + DBVS = 351, + SCC = 352, + SCS = 353, + SEQ = 354, + SF = 355, + SGE = 356, + SGT = 357, + SHI = 358, + SLE = 359, + SLS = 360, + SLT = 361, + SMI = 362, + SNE = 363, + SPL = 364, + ST = 365, + SVC = 366, + SVS = 367, + ILLEGAL = 368, + NOP = 369, + RESET = 370, + RTE = 371, + RTR = 372, + RTS = 373, + TRAPV = 374, + JMP = 375, + JSR = 376, + LEA = 377, + LINK = 378, + MOVE = 379, + MOVEA = 380, + MOVEM = 381, + MOVEP = 382, + MOVEQ = 383, + CLR = 384, + NEG = 385, + NEGX = 386, + NBCD = 387, + NOT = 388, + PEA = 389, + STOP = 390, + TAS = 391, + SWAP = 392, + TRAP = 393, + TST = 394, + UNLK = 395, + PREDEC = 396, + POSTINC = 397, + BSIZE = 398, + WSIZE = 399, + LSIZE = 400, + SSIZE = 401 + }; +#endif +/* Tokens. */ +#define A0 258 +#define A1 259 +#define A2 260 +#define A3 261 +#define A4 262 +#define A5 263 +#define A6 264 +#define A7 265 +#define D0 266 +#define D1 267 +#define D2 268 +#define D3 269 +#define D4 270 +#define D5 271 +#define D6 272 +#define D7 273 +#define CCR 274 +#define SR 275 +#define USP 276 +#define PC 277 +#define NUMBER 278 +#define ABCD 279 +#define ADD 280 +#define ADDA 281 +#define ADDI 282 +#define ADDQ 283 +#define ADDX 284 +#define AND 285 +#define ANDI 286 +#define OR 287 +#define ORI 288 +#define SBCD 289 +#define SUB 290 +#define SUBA 291 +#define SUBI 292 +#define SUBQ 293 +#define SUBX 294 +#define ASL 295 +#define ASR 296 +#define LSL 297 +#define LSR 298 +#define ROL 299 +#define ROR 300 +#define ROXL 301 +#define ROXR 302 +#define BCC 303 +#define BCS 304 +#define BEQ 305 +#define BGE 306 +#define BGT 307 +#define BHI 308 +#define BLE 309 +#define BLS 310 +#define BLT 311 +#define BMI 312 +#define BNE 313 +#define BPL 314 +#define BVC 315 +#define BVS 316 +#define BSR 317 +#define BRA 318 +#define BCLR 319 +#define BSET 320 +#define BCHG 321 +#define BTST 322 +#define CHK 323 +#define CMP 324 +#define CMPA 325 +#define CMPI 326 +#define CMPM 327 +#define EOR 328 +#define EORI 329 +#define EXG 330 +#define EXT 331 +#define DIVU 332 +#define DIVS 333 +#define MULU 334 +#define MULS 335 +#define DBCC 336 +#define DBCS 337 +#define DBEQ 338 +#define DBF 339 +#define DBGE 340 +#define DBGT 341 +#define DBHI 342 +#define DBLE 343 +#define DBLS 344 +#define DBLT 345 +#define DBMI 346 +#define DBNE 347 +#define DBPL 348 +#define DBT 349 +#define DBVC 350 +#define DBVS 351 +#define SCC 352 +#define SCS 353 +#define SEQ 354 +#define SF 355 +#define SGE 356 +#define SGT 357 +#define SHI 358 +#define SLE 359 +#define SLS 360 +#define SLT 361 +#define SMI 362 +#define SNE 363 +#define SPL 364 +#define ST 365 +#define SVC 366 +#define SVS 367 +#define ILLEGAL 368 +#define NOP 369 +#define RESET 370 +#define RTE 371 +#define RTR 372 +#define RTS 373 +#define TRAPV 374 +#define JMP 375 +#define JSR 376 +#define LEA 377 +#define LINK 378 +#define MOVE 379 +#define MOVEA 380 +#define MOVEM 381 +#define MOVEP 382 +#define MOVEQ 383 +#define CLR 384 +#define NEG 385 +#define NEGX 386 +#define NBCD 387 +#define NOT 388 +#define PEA 389 +#define STOP 390 +#define TAS 391 +#define SWAP 392 +#define TRAP 393 +#define TST 394 +#define UNLK 395 +#define PREDEC 396 +#define POSTINC 397 +#define BSIZE 398 +#define WSIZE 399 +#define LSIZE 400 +#define SSIZE 401 + + + + +/* Copy the first part of user declarations. */ +#line 1 "m68k_parse.y" + +/* m68k_parse.c: line assembler for generic m68k_cpu + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include "m68k_cpu.h" +#include +#include + +#if defined(_WIN32) +#include +#else +#include +#endif + +struct _ea { + int ea; + int cnt; + t_value arg[10]; +}; +struct _rea { + int reg; + struct _ea ea; +}; +struct _mask { + int x; + int d; +}; +struct _brop { + int opc; + int len; +}; + +static int oplen; +static int movemx[] = { 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, + 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080 }; +static int movemd[] = { 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001, + 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100 }; +static int yyrc; +static int yyerrc; +extern int yylex(); +static int _genop(t_value arg); +static int _genea(struct _ea arg); +static int _genbr(t_value arg,t_value,int); +static void yyerror(char* s); + +#define YYDEBUG 1 + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 74 "m68k_parse.y" +{ + int rc; + int reg; + int wl; + int opc; + struct _ea ea; + t_value num; + struct _rea rea; + struct _mask mask; + struct _brop brop; +} +/* Line 187 of yacc.c. */ +#line 473 "m68k_parse.tab.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 486 "m68k_parse.tab.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 266 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 928 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 153 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 49 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 276 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 462 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 401 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 147, 2, 2, 2, 2, + 151, 152, 2, 2, 148, 150, 2, 149, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 9, 15, 21, 27, 29, 32, + 37, 43, 48, 51, 57, 62, 68, 74, 79, 85, + 90, 95, 100, 105, 109, 111, 114, 119, 125, 131, + 136, 141, 146, 152, 158, 164, 170, 176, 182, 186, + 192, 195, 199, 202, 204, 206, 208, 211, 213, 216, + 219, 222, 225, 228, 231, 234, 237, 240, 243, 246, + 249, 252, 255, 259, 262, 266, 269, 273, 276, 280, + 283, 287, 290, 294, 297, 301, 304, 308, 310, 312, + 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, + 334, 336, 338, 340, 343, 346, 349, 352, 355, 358, + 361, 364, 367, 370, 373, 376, 379, 382, 385, 388, + 390, 392, 394, 396, 399, 401, 404, 407, 410, 412, + 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, + 434, 436, 438, 440, 442, 444, 447, 449, 451, 453, + 455, 457, 459, 461, 463, 465, 467, 469, 471, 473, + 475, 477, 479, 481, 483, 485, 487, 489, 491, 493, + 495, 497, 499, 501, 503, 505, 507, 511, 516, 520, + 524, 528, 532, 534, 536, 538, 540, 542, 544, 546, + 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, + 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, + 588, 592, 594, 596, 600, 604, 606, 608, 610, 612, + 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, + 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, + 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, + 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, + 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, + 714, 716, 718, 722, 726, 730, 736, 745, 754, 759, + 763, 769, 771, 780, 789, 792, 794 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 154, 0, -1, 156, 170, -1, 157, 171, -1, 158, + 147, 23, 148, 185, -1, 160, 147, 23, 148, 182, + -1, 159, 147, 23, 148, 186, -1, 161, -1, 162, + 23, -1, 163, 173, 148, 185, -1, 163, 147, 23, + 148, 185, -1, 68, 183, 148, 173, -1, 164, 185, + -1, 69, 176, 184, 148, 173, -1, 165, 183, 148, + 173, -1, 70, 175, 184, 148, 172, -1, 72, 176, + 193, 148, 193, -1, 166, 173, 148, 23, -1, 73, + 176, 173, 148, 185, -1, 75, 173, 148, 173, -1, + 75, 172, 148, 172, -1, 75, 172, 148, 173, -1, + 75, 173, 148, 172, -1, 76, 175, 173, -1, 167, + -1, 168, 187, -1, 122, 187, 148, 172, -1, 123, + 172, 148, 147, 23, -1, 124, 177, 184, 148, 186, + -1, 124, 20, 148, 185, -1, 124, 21, 148, 172, + -1, 124, 172, 148, 21, -1, 125, 178, 185, 148, + 172, -1, 126, 175, 179, 148, 189, -1, 126, 175, + 188, 148, 179, -1, 127, 175, 173, 148, 195, -1, + 127, 175, 195, 148, 173, -1, 128, 147, 23, 148, + 173, -1, 135, 147, 23, -1, 155, 175, 184, 148, + 172, -1, 137, 173, -1, 138, 147, 23, -1, 140, + 172, -1, 26, -1, 36, -1, 24, -1, 29, 176, + -1, 34, -1, 39, 176, -1, 25, 176, -1, 30, + 176, -1, 32, 176, -1, 35, 176, -1, 27, 176, + -1, 71, 176, -1, 37, 176, -1, 31, 176, -1, + 74, 176, -1, 33, 176, -1, 28, 176, -1, 38, + 176, -1, 40, 181, -1, 40, 176, 169, -1, 41, + 181, -1, 41, 176, 169, -1, 42, 181, -1, 42, + 176, 169, -1, 43, 181, -1, 43, 176, 169, -1, + 44, 181, -1, 44, 176, 169, -1, 45, 181, -1, + 45, 176, 169, -1, 46, 181, -1, 46, 176, 169, + -1, 47, 181, -1, 47, 176, 169, -1, 48, -1, + 49, -1, 50, -1, 51, -1, 52, -1, 53, -1, + 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, + 59, -1, 60, -1, 61, -1, 62, -1, 63, -1, + 48, 174, -1, 49, 174, -1, 50, 174, -1, 51, + 174, -1, 52, 174, -1, 53, 174, -1, 54, 174, + -1, 55, 174, -1, 56, 174, -1, 57, 174, -1, + 58, 174, -1, 59, 174, -1, 60, 174, -1, 61, + 174, -1, 62, 174, -1, 63, 174, -1, 66, -1, + 64, -1, 65, -1, 67, -1, 129, 176, -1, 132, + -1, 130, 176, -1, 131, 176, -1, 133, 176, -1, + 97, -1, 98, -1, 99, -1, 100, -1, 101, -1, + 102, -1, 103, -1, 104, -1, 105, -1, 106, -1, + 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, + 112, -1, 136, -1, 139, 176, -1, 78, -1, 77, + -1, 80, -1, 79, -1, 81, -1, 82, -1, 83, + -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, + -1, 90, -1, 91, -1, 92, -1, 93, -1, 95, + -1, 96, -1, 84, -1, 94, -1, 113, -1, 114, + -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, + -1, 120, -1, 121, -1, 134, -1, 173, 148, 173, + -1, 147, 23, 148, 173, -1, 190, 148, 190, -1, + 194, 148, 194, -1, 173, 148, 182, -1, 181, 148, + 173, -1, 3, -1, 4, -1, 5, -1, 6, -1, + 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, + 12, -1, 13, -1, 14, -1, 15, -1, 16, -1, + 17, -1, 18, -1, 146, -1, 144, -1, 145, -1, + 143, -1, 144, -1, 145, -1, 143, -1, 144, -1, + 145, -1, 144, -1, 145, -1, 180, -1, 180, 149, + 179, -1, 172, -1, 173, -1, 172, 150, 172, -1, + 173, 150, 173, -1, 191, -1, 192, -1, 193, -1, + 194, -1, 195, -1, 196, -1, 197, -1, 198, -1, + 199, -1, 200, -1, 190, -1, 191, -1, 192, -1, + 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, + 190, -1, 192, -1, 193, -1, 194, -1, 195, -1, + 196, -1, 197, -1, 198, -1, 199, -1, 200, -1, + 190, -1, 181, -1, 190, -1, 192, -1, 193, -1, + 194, -1, 195, -1, 196, -1, 197, -1, 185, -1, + 201, -1, 192, -1, 195, -1, 196, -1, 197, -1, + 198, -1, 199, -1, 192, -1, 193, -1, 195, -1, + 196, -1, 197, -1, 192, -1, 194, -1, 195, -1, + 196, -1, 197, -1, 173, -1, 172, -1, 151, 172, + 152, -1, 151, 172, 142, -1, 141, 172, 152, -1, + 151, 23, 148, 172, 152, -1, 151, 23, 148, 172, + 148, 173, 175, 152, -1, 151, 23, 148, 172, 148, + 172, 175, 152, -1, 151, 23, 152, 175, -1, 151, + 23, 152, -1, 151, 23, 148, 22, 152, -1, 23, + -1, 151, 23, 148, 22, 148, 173, 175, 152, -1, + 151, 23, 148, 22, 148, 172, 175, 152, -1, 147, + 23, -1, 19, -1, 20, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 115, 115, 116, 117, 119, 120, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 163, 164, 167, 168, 169, 170, 174, + 175, 176, 177, 181, 182, 183, 187, 188, 189, 193, + 194, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 252, + 253, 254, 255, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 285, 286, 287, 288, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 311, 312, 313, 314, + 315, 316, 317, 321, 322, 323, 326, 327, 330, 331, + 334, 337, 340, 341, 342, 343, 344, 345, 346, 347, + 350, 351, 352, 353, 354, 355, 356, 357, 360, 363, + 364, 367, 368, 369, 372, 373, 374, 377, 378, 381, + 382, 385, 386, 387, 389, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 394, 394, 394, 394, 394, + 394, 394, 394, 395, 395, 395, 395, 395, 395, 395, + 395, 395, 395, 396, 396, 397, 397, 397, 397, 397, + 397, 397, 398, 398, 399, 399, 399, 399, 399, 399, + 400, 400, 400, 400, 400, 401, 401, 401, 401, 401, + 404, 406, 408, 410, 412, 414, 416, 418, 421, 423, + 426, 427, 429, 431, 434, 438, 439 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "A0", "A1", "A2", "A3", "A4", "A5", "A6", + "A7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "CCR", "SR", "USP", + "PC", "NUMBER", "ABCD", "ADD", "ADDA", "ADDI", "ADDQ", "ADDX", "AND", + "ANDI", "OR", "ORI", "SBCD", "SUB", "SUBA", "SUBI", "SUBQ", "SUBX", + "ASL", "ASR", "LSL", "LSR", "ROL", "ROR", "ROXL", "ROXR", "BCC", "BCS", + "BEQ", "BGE", "BGT", "BHI", "BLE", "BLS", "BLT", "BMI", "BNE", "BPL", + "BVC", "BVS", "BSR", "BRA", "BCLR", "BSET", "BCHG", "BTST", "CHK", "CMP", + "CMPA", "CMPI", "CMPM", "EOR", "EORI", "EXG", "EXT", "DIVU", "DIVS", + "MULU", "MULS", "DBCC", "DBCS", "DBEQ", "DBF", "DBGE", "DBGT", "DBHI", + "DBLE", "DBLS", "DBLT", "DBMI", "DBNE", "DBPL", "DBT", "DBVC", "DBVS", + "SCC", "SCS", "SEQ", "SF", "SGE", "SGT", "SHI", "SLE", "SLS", "SLT", + "SMI", "SNE", "SPL", "ST", "SVC", "SVS", "ILLEGAL", "NOP", "RESET", + "RTE", "RTR", "RTS", "TRAPV", "JMP", "JSR", "LEA", "LINK", "MOVE", + "MOVEA", "MOVEM", "MOVEP", "MOVEQ", "CLR", "NEG", "NEGX", "NBCD", "NOT", + "PEA", "STOP", "TAS", "SWAP", "TRAP", "TST", "UNLK", "PREDEC", "POSTINC", + "BSIZE", "WSIZE", "LSIZE", "SSIZE", "'#'", "','", "'/'", "'-'", "'('", + "')'", "$accept", "stmt", "arop", "bcdop", "dualop", "immop", "immop2", + "qop", "shftop", "brop", "btop", "monop", "mdop", "dbop", "direct", + "jop", "shftarg", "bcdarg", "dualarg", "areg", "dreg", "szs", "szwl", + "szbwl", "szmv", "szm", "reglist", "regs", "eama", "eaa", "ead", "eaall", + "eada", "eadas", "eac", "eacai", "eacad", "ea0", "ea1", "ea2", "ea3", + "ea4", "ea5", "ea6", "ea70", "ea72", "ea73", "ea74", "easr", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 35, 44, 47, + 45, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 153, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 155, 155, 156, 156, 156, 156, 157, + 157, 157, 157, 158, 158, 158, 159, 159, 159, 160, + 160, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, + 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 165, 165, 165, 165, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, + 167, 167, 167, 168, 168, 168, 169, 169, 170, 170, + 171, 171, 172, 172, 172, 172, 172, 172, 172, 172, + 173, 173, 173, 173, 173, 173, 173, 173, 174, 175, + 175, 176, 176, 176, 177, 177, 177, 178, 178, 179, + 179, 180, 180, 180, 180, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, + 182, 182, 182, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 184, 184, 185, 185, 185, 185, 185, + 185, 185, 186, 186, 187, 187, 187, 187, 187, 187, + 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, + 190, 191, 192, 193, 194, 195, 196, 196, 197, 197, + 198, 198, 199, 199, 200, 201, 201 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 2, 5, 5, 5, 1, 2, 4, + 5, 4, 2, 5, 4, 5, 5, 4, 5, 4, + 4, 4, 4, 3, 1, 2, 4, 5, 5, 4, + 4, 4, 5, 5, 5, 5, 5, 5, 3, 5, + 2, 3, 2, 1, 1, 1, 2, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 4, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 3, 3, 5, 8, 8, 4, 3, + 5, 1, 8, 8, 2, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 45, 0, 43, 0, 0, 0, 0, 0, 0, + 0, 47, 0, 44, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 110, 111, 109, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 137, 136, 139, 138, 140, 141, + 142, 154, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 155, 152, 153, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 0, 165, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 24, 0, 191, 192, 193, 49, 53, 59, 46, + 50, 56, 51, 58, 52, 55, 60, 48, 172, 173, + 174, 175, 176, 177, 178, 179, 271, 0, 0, 0, + 261, 0, 61, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 0, 63, 0, 65, 0, 67, 0, + 69, 0, 71, 0, 73, 0, 75, 188, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 180, 181, 182, 183, 184, 185, + 186, 187, 260, 0, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 0, 189, 190, 0, 54, 0, + 0, 57, 0, 0, 0, 0, 0, 244, 245, 246, + 247, 248, 249, 0, 0, 0, 194, 195, 196, 0, + 0, 197, 198, 0, 0, 0, 0, 113, 115, 116, + 117, 0, 40, 0, 135, 42, 1, 0, 2, 0, + 0, 3, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 12, 235, 236, 237, 238, 239, 240, 241, 0, + 0, 25, 0, 274, 0, 0, 0, 62, 0, 64, + 66, 68, 70, 72, 74, 76, 0, 234, 0, 233, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 201, 202, 0, 199, 0, + 250, 251, 252, 253, 254, 0, 0, 0, 0, 38, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 264, 0, 269, 263, 262, 0, + 0, 11, 0, 0, 0, 0, 0, 20, 21, 22, + 19, 26, 0, 29, 30, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 169, + 170, 215, 216, 217, 218, 219, 220, 221, 222, 171, + 0, 0, 0, 0, 9, 0, 14, 17, 0, 0, + 268, 0, 166, 13, 15, 16, 18, 27, 275, 276, + 242, 28, 243, 32, 203, 204, 0, 33, 255, 256, + 257, 258, 259, 200, 34, 0, 35, 36, 37, 39, + 4, 6, 5, 10, 0, 270, 0, 265, 167, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 273, 272, + 267, 266 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 297, 268, 271, 160, + 212, 188, 227, 136, 250, 253, 327, 328, 307, 390, + 213, 308, 420, 421, 236, 329, 427, 282, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 422 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -343 +static const yytype_int16 yypact[] = +{ + 675, -343, -126, -343, -126, -126, -126, -126, -126, -126, + -126, -343, -126, -343, -126, -126, -126, 456, 456, 456, + 456, 456, 456, 456, 456, -139, -139, -139, -139, -139, + -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, + -139, -343, -343, -343, -343, 477, -126, -107, -126, -126, + -126, -126, 626, -107, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -20, + 642, 141, -105, -107, -107, -137, -126, -126, -126, -343, + -126, -343, -82, -343, 646, -80, -126, 642, 72, -107, + 557, 18, -72, -65, -50, -343, 78, 31, 76, 477, + 646, -343, -20, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, 642, 85, 203, + -343, 236, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, 236, -343, 236, -343, 236, -343, 236, + -343, 236, -343, 236, -343, 236, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -37, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, 18, -343, -343, 18, -343, -42, + 646, -343, -36, -35, 646, 203, -32, -343, -343, -343, + -343, -343, -343, -29, -27, -19, -343, -343, -343, -13, + 18, -343, -343, 76, 538, 41, 92, -343, -343, -343, + -343, 100, -343, 113, -343, -343, -343, 18, -343, -10, + -9, -343, -8, -7, 119, 120, 129, -343, 131, 8, + 581, -343, -343, -343, -343, -343, -343, -343, -343, 15, + 16, -343, 19, -343, -143, -138, 149, -343, 25, -343, + -343, -343, -343, -343, -343, -343, 646, -343, 27, -343, + 29, 642, 32, 33, 626, 626, -343, 22, 642, 37, + 76, 642, 155, 39, 40, 35, 36, 43, 45, 47, + -343, -343, -343, -343, -343, 166, 51, 54, 57, -343, + -343, 66, 646, 77, 515, 646, 71, 73, 74, 83, + 76, -84, 646, 197, -343, 605, -107, -343, -343, 84, + 646, -343, 646, 642, 93, -42, 76, -343, -343, -343, + -343, -343, 211, -343, -343, -343, 546, 642, 642, 646, + -135, 626, 626, 90, 88, 646, 646, 642, -343, -343, + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + 76, 546, 515, 76, -343, 642, -343, -343, -68, -67, + -343, 646, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, 581, -343, -343, -343, + -343, -343, -343, -343, -343, 642, -343, -343, -343, -343, + -343, -343, -343, -343, 626, -343, 626, -343, -343, 91, + -107, -107, -107, -107, 104, 106, 107, 109, -343, -343, + -343, -343 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -343, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, -343, -343, -343, 248, -343, -343, -39, + -51, 811, -53, 812, -343, -343, -276, -343, 559, -162, + 115, -150, -120, -159, 128, -343, -343, -34, -342, -25, + 108, 137, -30, 38, 69, 26, 28, -33, -343 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 234, 233, 392, 156, 357, 355, 157, 187, 281, 356, + 256, 214, 223, 232, 358, 218, 426, 133, 134, 135, + 215, 148, 149, 150, 151, 152, 153, 154, 155, 204, + 205, 206, 207, 208, 209, 210, 211, 225, 226, 251, + 252, 156, 204, 205, 206, 207, 208, 209, 210, 211, + 254, 255, 204, 205, 206, 207, 208, 209, 210, 211, + 392, 243, 249, 262, 405, 261, 267, 263, 356, 238, + 272, 221, 266, 222, 237, 274, 279, 310, 265, 290, + 444, 446, 275, 219, 445, 447, 269, 204, 205, 206, + 207, 208, 209, 210, 211, 214, 223, 276, 286, 218, + 323, 277, 238, 283, 215, 433, 434, 237, 293, 311, + 298, 306, 314, 315, 220, 338, 318, 341, 292, 319, + 295, 320, 298, 339, 298, 241, 298, 242, 298, 321, + 298, 235, 298, 324, 298, 322, 340, 239, 342, 343, + 344, 345, 346, 347, 148, 149, 150, 151, 152, 153, + 154, 155, 348, 216, 349, 221, 350, 222, 241, 157, + 242, 244, 245, 352, 353, 158, 287, 219, 240, 159, + 239, 354, 359, 360, 358, 362, 375, 363, 278, 313, + 365, 366, 217, 316, 372, 378, 379, 376, 377, 383, + 309, 380, 335, 309, 381, 382, 317, 288, 220, 384, + 373, 240, 385, 326, 336, 386, 148, 149, 150, 151, + 152, 153, 154, 155, 387, 325, 309, 157, 157, 400, + 407, 401, 402, 286, 332, 337, 294, 280, 283, 330, + 404, 403, 411, 309, 417, 357, 284, 216, 435, 335, + 442, 295, 441, 447, 289, 0, 416, 204, 205, 206, + 207, 208, 209, 210, 211, 361, 458, 270, 459, 460, + 291, 461, 0, 368, 370, 285, 217, 0, 0, 0, + 0, 0, 364, 0, 0, 367, 369, 0, 0, 371, + 440, 0, 374, 443, 246, 247, 248, 0, 0, 0, + 286, 287, 333, 0, 399, 283, 0, 0, 0, 0, + 0, 406, 0, 410, 0, 0, 0, 0, 388, 412, + 391, 413, 0, 0, 396, 0, 409, 0, 0, 393, + 286, 0, 288, 334, 414, 283, 0, 0, 425, 0, + 326, 326, 0, 0, 437, 438, 286, 312, 423, 424, + 0, 283, 325, 325, 0, 0, 286, 0, 439, 0, + 430, 283, 0, 0, 436, 428, 0, 0, 287, 0, + 448, 284, 331, 0, 0, 0, 409, 0, 391, 0, + 286, 286, 396, 286, 0, 283, 283, 393, 283, 0, + 0, 0, 397, 296, 0, 0, 0, 317, 287, 288, + 285, 0, 0, 451, 0, 453, 449, 454, 455, 456, + 457, 0, 0, 0, 287, 450, 0, 452, 0, 0, + 0, 0, 0, 398, 287, 0, 0, 0, 431, 288, + 0, 299, 0, 300, 0, 301, 0, 302, 284, 303, + 0, 304, 0, 305, 0, 288, 0, 0, 287, 287, + 397, 287, 0, 0, 0, 288, 0, 0, 0, 432, + 0, 0, 394, 0, 0, 0, 0, 285, 284, 148, + 149, 150, 151, 152, 153, 154, 155, 0, 0, 288, + 288, 398, 288, 415, 284, 0, 0, 0, 0, 156, + 389, 395, 0, 0, 284, 0, 0, 285, 204, 205, + 206, 207, 208, 209, 210, 211, 0, 0, 0, 0, + 156, 0, 0, 285, 0, 0, 0, 0, 284, 284, + 394, 284, 0, 285, 0, 0, 0, 429, 148, 149, + 150, 151, 152, 153, 154, 155, 204, 205, 206, 207, + 208, 209, 210, 211, 0, 0, 0, 285, 285, 395, + 285, 148, 149, 150, 151, 152, 153, 154, 155, 204, + 205, 206, 207, 208, 209, 210, 211, 204, 205, 206, + 207, 208, 209, 210, 211, 418, 419, 0, 204, 205, + 206, 207, 208, 209, 210, 211, 162, 174, 176, 178, + 180, 182, 184, 186, 148, 149, 150, 151, 152, 153, + 154, 155, 0, 0, 0, 0, 0, 157, 0, 133, + 134, 135, 0, 158, 351, 0, 0, 159, 148, 149, + 150, 151, 152, 153, 154, 155, 0, 0, 157, 0, + 0, 0, 0, 0, 158, 0, 0, 408, 159, 148, + 149, 150, 151, 152, 153, 154, 155, 204, 205, 206, + 207, 208, 209, 210, 211, 148, 149, 150, 151, 152, + 153, 154, 155, 0, 0, 0, 157, 204, 205, 206, + 207, 208, 209, 210, 211, 0, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 0, 157, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 280, 157, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 137, 138, 139, 140, + 141, 142, 143, 0, 144, 0, 145, 146, 147, 161, + 173, 175, 177, 179, 181, 183, 185, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 0, 0, 0, 0, 0, 0, 224, 0, + 228, 229, 230, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 258, + 259, 0, 260, 0, 0, 0, 0, 0, 264 +}; + +static const yytype_int16 yycheck[] = +{ + 53, 52, 344, 23, 142, 148, 141, 146, 128, 152, + 147, 45, 45, 52, 152, 45, 151, 143, 144, 145, + 45, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 144, 145, 144, + 145, 23, 11, 12, 13, 14, 15, 16, 17, 18, + 103, 104, 11, 12, 13, 14, 15, 16, 17, 18, + 402, 100, 101, 114, 148, 147, 119, 147, 152, 99, + 121, 45, 0, 45, 99, 147, 127, 227, 117, 130, + 148, 148, 147, 45, 152, 152, 120, 11, 12, 13, + 14, 15, 16, 17, 18, 129, 129, 147, 128, 129, + 250, 23, 132, 128, 129, 381, 382, 132, 23, 151, + 161, 148, 148, 148, 45, 23, 148, 267, 157, 148, + 159, 148, 173, 23, 175, 99, 177, 99, 179, 148, + 181, 151, 183, 253, 185, 148, 23, 99, 148, 148, + 148, 148, 23, 23, 3, 4, 5, 6, 7, 8, + 9, 10, 23, 45, 23, 129, 148, 129, 132, 141, + 132, 20, 21, 148, 148, 147, 128, 129, 99, 151, + 132, 152, 23, 148, 152, 148, 21, 148, 147, 230, + 148, 148, 45, 234, 147, 150, 150, 148, 148, 23, + 224, 148, 151, 227, 149, 148, 235, 128, 129, 148, + 320, 132, 148, 254, 255, 148, 3, 4, 5, 6, + 7, 8, 9, 10, 148, 254, 250, 141, 141, 148, + 23, 148, 148, 253, 254, 255, 23, 151, 253, 254, + 350, 148, 148, 267, 23, 142, 128, 129, 148, 151, + 402, 280, 401, 152, 129, -1, 366, 11, 12, 13, + 14, 15, 16, 17, 18, 306, 152, 120, 152, 152, + 132, 152, -1, 314, 315, 128, 129, -1, -1, -1, + -1, -1, 311, -1, -1, 314, 315, -1, -1, 318, + 400, -1, 321, 403, 143, 144, 145, -1, -1, -1, + 320, 253, 254, -1, 345, 320, -1, -1, -1, -1, + -1, 352, -1, 356, -1, -1, -1, -1, 342, 360, + 344, 362, -1, -1, 344, -1, 355, -1, -1, 344, + 350, -1, 253, 254, 363, 350, -1, -1, 379, -1, + 381, 382, -1, -1, 385, 386, 366, 229, 377, 378, + -1, 366, 381, 382, -1, -1, 376, -1, 387, -1, + 380, 376, -1, -1, 384, 380, -1, -1, 320, -1, + 411, 253, 254, -1, -1, -1, 405, -1, 402, -1, + 400, 401, 402, 403, -1, 400, 401, 402, 403, -1, + -1, -1, 344, 147, -1, -1, -1, 426, 350, 320, + 253, -1, -1, 444, -1, 446, 435, 450, 451, 452, + 453, -1, -1, -1, 366, 444, -1, 446, -1, -1, + -1, -1, -1, 344, 376, -1, -1, -1, 380, 350, + -1, 173, -1, 175, -1, 177, -1, 179, 320, 181, + -1, 183, -1, 185, -1, 366, -1, -1, 400, 401, + 402, 403, -1, -1, -1, 376, -1, -1, -1, 380, + -1, -1, 344, -1, -1, -1, -1, 320, 350, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, 400, + 401, 402, 403, 365, 366, -1, -1, -1, -1, 23, + 343, 344, -1, -1, 376, -1, -1, 350, 11, 12, + 13, 14, 15, 16, 17, 18, -1, -1, -1, -1, + 23, -1, -1, 366, -1, -1, -1, -1, 400, 401, + 402, 403, -1, 376, -1, -1, -1, 380, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, -1, -1, -1, 400, 401, 402, + 403, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, -1, 11, 12, + 13, 14, 15, 16, 17, 18, 17, 18, 19, 20, + 21, 22, 23, 24, 3, 4, 5, 6, 7, 8, + 9, 10, -1, -1, -1, -1, -1, 141, -1, 143, + 144, 145, -1, 147, 23, -1, -1, 151, 3, 4, + 5, 6, 7, 8, 9, 10, -1, -1, 141, -1, + -1, -1, -1, -1, 147, -1, -1, 22, 151, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, 141, 11, 12, 13, + 14, 15, 16, 17, 18, -1, 151, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 121, -1, -1, -1, -1, -1, -1, 141, -1, 151, + -1, -1, -1, -1, -1, -1, -1, 151, 141, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 4, 5, 6, 7, + 8, 9, 10, -1, 12, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, -1, -1, -1, -1, -1, -1, 46, -1, + 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, + 108, -1, 110, -1, -1, -1, -1, -1, 116 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 143, 144, 145, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 3, 4, + 5, 6, 7, 8, 9, 10, 23, 141, 147, 151, + 172, 176, 181, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 176, 181, 176, 181, 176, 181, 176, + 181, 176, 181, 176, 181, 176, 181, 146, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 11, 12, 13, 14, 15, 16, + 17, 18, 173, 183, 190, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 176, 144, 145, 175, 176, 176, + 176, 176, 172, 173, 175, 151, 187, 192, 195, 196, + 197, 198, 199, 172, 20, 21, 143, 144, 145, 172, + 177, 144, 145, 178, 175, 175, 147, 176, 176, 176, + 176, 147, 173, 147, 176, 172, 0, 175, 170, 190, + 194, 171, 173, 181, 147, 147, 147, 23, 147, 173, + 151, 185, 190, 192, 193, 194, 195, 196, 197, 183, + 173, 187, 172, 23, 23, 172, 147, 169, 173, 169, + 169, 169, 169, 169, 169, 169, 148, 181, 184, 190, + 184, 151, 193, 173, 148, 148, 173, 172, 148, 148, + 148, 148, 148, 184, 185, 172, 173, 179, 180, 188, + 192, 193, 195, 196, 197, 151, 173, 195, 23, 23, + 23, 184, 148, 148, 148, 148, 23, 23, 23, 23, + 148, 23, 148, 148, 152, 148, 152, 142, 152, 23, + 148, 173, 148, 148, 172, 148, 148, 172, 173, 172, + 173, 172, 147, 185, 172, 21, 148, 148, 150, 150, + 148, 149, 148, 23, 148, 148, 148, 148, 190, 194, + 182, 190, 191, 192, 193, 194, 195, 196, 197, 173, + 148, 148, 148, 148, 185, 148, 173, 23, 22, 172, + 175, 148, 173, 173, 172, 193, 185, 23, 19, 20, + 185, 186, 201, 172, 172, 173, 151, 189, 192, 194, + 195, 196, 197, 179, 179, 148, 195, 173, 173, 172, + 185, 186, 182, 185, 148, 152, 148, 152, 173, 172, + 172, 173, 172, 173, 175, 175, 175, 175, 152, 152, + 152, 152 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 115 "m68k_parse.y" + { _genop((yyvsp[(1) - (2)].opc) | (yyvsp[(2) - (2)].opc)); yyrc = -1; ;} + break; + + case 3: +#line 116 "m68k_parse.y" + { _genop((yyvsp[(1) - (2)].opc) | (yyvsp[(2) - (2)].rea).reg | (yyvsp[(2) - (2)].rea).ea.ea); yyrc = _genea((yyvsp[(2) - (2)].rea).ea) -1; ;} + break; + + case 4: +#line 117 "m68k_parse.y" + { _genop((yyvsp[(1) - (5)].opc) | (yyvsp[(5) - (5)].ea).ea); if (oplen==0) { _genop((yyvsp[(3) - (5)].num) & 0xff); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; } + else if (oplen==1) { _genop((yyvsp[(3) - (5)].num)); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; } else { _genop((yyvsp[(3) - (5)].num)>>16); _genop((yyvsp[(3) - (5)].num) & 0xffff); yyrc = _genea((yyvsp[(5) - (5)].ea))-5; } ;} + break; + + case 5: +#line 119 "m68k_parse.y" + { _genop((yyvsp[(1) - (5)].opc) | (((yyvsp[(3) - (5)].num)&7)<<9) | (yyvsp[(5) - (5)].ea).ea); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 1; ;} + break; + + case 6: +#line 120 "m68k_parse.y" + { _genop((yyvsp[(1) - (5)].opc) | (yyvsp[(5) - (5)].ea).ea); if (oplen==0) { _genop((yyvsp[(3) - (5)].num) & 0xff); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; } + else if (oplen==1) { _genop((yyvsp[(3) - (5)].num)); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; } else { _genop((yyvsp[(3) - (5)].num)>>16); _genop((yyvsp[(3) - (5)].num) & 0xffff); yyrc = _genea((yyvsp[(5) - (5)].ea))-5; } ;} + break; + + case 7: +#line 122 "m68k_parse.y" + { _genop((yyvsp[(1) - (1)].rea).reg); if (((yyvsp[(1) - (1)].rea).reg&0xc0)==0xc0) yyrc = _genea((yyvsp[(1) - (1)].rea).ea) - 1; else { yyrc = -1; } ;} + break; + + case 8: +#line 123 "m68k_parse.y" + { yyrc = _genbr((yyvsp[(1) - (2)].brop).opc,(yyvsp[(2) - (2)].num),(yyvsp[(1) - (2)].brop).len) - 1; ;} + break; + + case 9: +#line 124 "m68k_parse.y" + { _genop((yyvsp[(1) - (4)].opc) | ((yyvsp[(2) - (4)].reg)<<9) | 0x100 | (yyvsp[(4) - (4)].ea).ea); yyrc = _genea((yyvsp[(4) - (4)].ea)) - 1; ;} + break; + + case 10: +#line 125 "m68k_parse.y" + { _genop((yyvsp[(1) - (5)].opc) | 0x0800 | (yyvsp[(5) - (5)].ea).ea); _genop((yyvsp[(3) - (5)].num)); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; ;} + break; + + case 11: +#line 126 "m68k_parse.y" + { _genop(0x4180 | ((yyvsp[(4) - (4)].reg)<<9) | (yyvsp[(2) - (4)].ea).ea); yyrc = _genea((yyvsp[(2) - (4)].ea)) - 1; ;} + break; + + case 12: +#line 127 "m68k_parse.y" + { _genop((yyvsp[(1) - (2)].opc) | (yyvsp[(2) - (2)].ea).ea); yyrc = _genea((yyvsp[(2) - (2)].ea)) - 1; ;} + break; + + case 13: +#line 128 "m68k_parse.y" + { _genop(0xb000 | ((yyvsp[(2) - (5)].wl)<<6) | ((yyvsp[(5) - (5)].reg)<<9) | (yyvsp[(3) - (5)].ea).ea); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; ;} + break; + + case 14: +#line 129 "m68k_parse.y" + { _genop((yyvsp[(1) - (4)].opc) | ((yyvsp[(4) - (4)].reg)<<9) | (yyvsp[(2) - (4)].ea).ea); yyrc = _genea((yyvsp[(2) - (4)].ea)) - 1; ;} + break; + + case 15: +#line 130 "m68k_parse.y" + { _genop(0xb0c0 | ((yyvsp[(2) - (5)].wl)<<8) | ((yyvsp[(5) - (5)].reg)<<9) | (yyvsp[(3) - (5)].ea).ea); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; ;} + break; + + case 16: +#line 131 "m68k_parse.y" + { _genop(0xb108 | ((yyvsp[(5) - (5)].ea).ea<<9) | ((yyvsp[(2) - (5)].wl)<<6) | (yyvsp[(3) - (5)].ea).ea); yyrc = -1; ;} + break; + + case 17: +#line 132 "m68k_parse.y" + { yyrc = _genbr((yyvsp[(1) - (4)].opc) | (yyvsp[(2) - (4)].reg), (yyvsp[(4) - (4)].num), 1) - 1; ;} + break; + + case 18: +#line 133 "m68k_parse.y" + { _genop(0xb000 | ((yyvsp[(2) - (5)].wl) << 6) | 0x100 | (yyvsp[(5) - (5)].ea).ea); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 1; ;} + break; + + case 19: +#line 134 "m68k_parse.y" + { _genop(0xc140 | ((yyvsp[(2) - (4)].reg)<<9) | (yyvsp[(4) - (4)].reg)); yyrc = -1; ;} + break; + + case 20: +#line 135 "m68k_parse.y" + { _genop(0xc148 | ((yyvsp[(2) - (4)].reg)<<9) | (yyvsp[(4) - (4)].reg)); yyrc = -1; ;} + break; + + case 21: +#line 136 "m68k_parse.y" + { _genop(0xc188 | ((yyvsp[(4) - (4)].reg)<<9) | (yyvsp[(2) - (4)].reg)); yyrc = -1; ;} + break; + + case 22: +#line 137 "m68k_parse.y" + { _genop(0xc188 | ((yyvsp[(2) - (4)].reg)<<9) | (yyvsp[(4) - (4)].reg)); yyrc = -1; ;} + break; + + case 23: +#line 138 "m68k_parse.y" + { _genop(0x4840 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].reg)); yyrc = -1; ;} + break; + + case 24: +#line 139 "m68k_parse.y" + { _genop((yyvsp[(1) - (1)].opc)); yyrc = -1; ;} + break; + + case 25: +#line 140 "m68k_parse.y" + { _genop((yyvsp[(1) - (2)].opc) | (yyvsp[(2) - (2)].ea).ea); yyrc = _genea((yyvsp[(2) - (2)].ea)) -1; ;} + break; + + case 26: +#line 141 "m68k_parse.y" + { _genop(0x41c0 | (yyvsp[(2) - (4)].ea).ea); yyrc = _genea((yyvsp[(2) - (4)].ea)) - 1; ;} + break; + + case 27: +#line 142 "m68k_parse.y" + { _genop(0x4e50 | (yyvsp[(2) - (5)].reg)); _genop((yyvsp[(5) - (5)].num)); yyrc = -3; ;} + break; + + case 28: +#line 143 "m68k_parse.y" + { if ((yyvsp[(5) - (5)].ea).ea==074) { _genop(0x44c0 | ((yyvsp[(5) - (5)].ea).cnt==1?0x0200:0x0000) | (yyvsp[(3) - (5)].ea).ea); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; } + else { int tmp = (((yyvsp[(5) - (5)].ea).ea&070)>>3)|(((yyvsp[(5) - (5)].ea).ea&7)<<3); _genop(0x0000 | ((yyvsp[(2) - (5)].wl)<<12) | (tmp<<6) | (yyvsp[(3) - (5)].ea).ea); + yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; yyrc += _genea((yyvsp[(5) - (5)].ea)); } ;} + break; + + case 29: +#line 146 "m68k_parse.y" + { _genop(0x40c0 | (yyvsp[(4) - (4)].ea).ea); yyrc = _genea((yyvsp[(4) - (4)].ea)) - 1; ;} + break; + + case 30: +#line 147 "m68k_parse.y" + { _genop(0x4e68 | (yyvsp[(4) - (4)].reg)); yyrc = -1; ;} + break; + + case 31: +#line 148 "m68k_parse.y" + { _genop(0x4e60 | (yyvsp[(2) - (4)].reg)); yyrc = -1; ;} + break; + + case 32: +#line 149 "m68k_parse.y" + { _genop(0x0040 | ((yyvsp[(2) - (5)].wl)<<12) | ((yyvsp[(5) - (5)].reg)<<9) | (yyvsp[(3) - (5)].ea).ea); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; ;} + break; + + case 33: +#line 150 "m68k_parse.y" + { _genop(0x4880 | ((yyvsp[(2) - (5)].wl)<<6) | (yyvsp[(5) - (5)].ea).ea); _genop(((yyvsp[(5) - (5)].ea).ea&070)==040 ? (yyvsp[(3) - (5)].mask).d : (yyvsp[(3) - (5)].mask).x); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 3; ;} + break; + + case 34: +#line 151 "m68k_parse.y" + { _genop(0x4c80 | ((yyvsp[(2) - (5)].wl)<<6) | (yyvsp[(3) - (5)].ea).ea); _genop((yyvsp[(5) - (5)].mask).x); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 3; ;} + break; + + case 35: +#line 152 "m68k_parse.y" + { _genop(0x0108 | ((yyvsp[(3) - (5)].reg)<<9) | ((yyvsp[(2) - (5)].wl)<<6) | ((yyvsp[(5) - (5)].ea).ea & 7)); yyrc = _genea((yyvsp[(5) - (5)].ea)) - 1; ;} + break; + + case 36: +#line 153 "m68k_parse.y" + { _genop(0x0188 | ((yyvsp[(5) - (5)].reg)<<9) | ((yyvsp[(2) - (5)].wl)<<6) | ((yyvsp[(3) - (5)].ea).ea & 7)); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; ;} + break; + + case 37: +#line 154 "m68k_parse.y" + { _genop(0x7000 | ((yyvsp[(5) - (5)].reg)<<9) | ((yyvsp[(3) - (5)].num)&0xff)); yyrc = -1; ;} + break; + + case 38: +#line 155 "m68k_parse.y" + { _genop(0x4e72); yyrc = _genop((yyvsp[(3) - (3)].num)&0xffff) - 1; ;} + break; + + case 39: +#line 156 "m68k_parse.y" + { _genop((yyvsp[(1) - (5)].opc) | ((yyvsp[(5) - (5)].reg)<<9) | ((yyvsp[(2) - (5)].wl)<<8) | (yyvsp[(3) - (5)].ea).ea); yyrc = _genea((yyvsp[(3) - (5)].ea)) - 1; ;} + break; + + case 40: +#line 157 "m68k_parse.y" + { _genop(0x4840 | (yyvsp[(2) - (2)].reg)); yyrc = -1; ;} + break; + + case 41: +#line 158 "m68k_parse.y" + { _genop(0x4e40 | ((yyvsp[(3) - (3)].num) & 0x0f)); yyrc = -1; ;} + break; + + case 42: +#line 159 "m68k_parse.y" + { _genop(0x4e58 | (yyvsp[(2) - (2)].reg)); yyrc = -1; ;} + break; + + case 43: +#line 163 "m68k_parse.y" + { (yyval.opc) = 0xd0c0; ;} + break; + + case 44: +#line 164 "m68k_parse.y" + { (yyval.opc) = 0x90c0; ;} + break; + + case 45: +#line 167 "m68k_parse.y" + { (yyval.opc) = 0xc100; ;} + break; + + case 46: +#line 168 "m68k_parse.y" + { (yyval.opc) = 0xd100 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 47: +#line 169 "m68k_parse.y" + { (yyval.opc) = 0x8100; ;} + break; + + case 48: +#line 170 "m68k_parse.y" + { (yyval.opc) = 0x9100 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 49: +#line 174 "m68k_parse.y" + { (yyval.opc) = 0xd000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 50: +#line 175 "m68k_parse.y" + { (yyval.opc) = 0xc000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 51: +#line 176 "m68k_parse.y" + { (yyval.opc) = 0x8000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 52: +#line 177 "m68k_parse.y" + { (yyval.opc) = 0x9000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 53: +#line 181 "m68k_parse.y" + { (yyval.opc) = 0x0600 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 54: +#line 182 "m68k_parse.y" + { (yyval.opc) = 0x0c00 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 55: +#line 183 "m68k_parse.y" + { (yyval.opc) = 0x0400 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 56: +#line 187 "m68k_parse.y" + { (yyval.opc) = 0x0200 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 57: +#line 188 "m68k_parse.y" + { (yyval.opc) = 0x0a00 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 58: +#line 189 "m68k_parse.y" + { (yyval.opc) = 0x0000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 59: +#line 193 "m68k_parse.y" + { (yyval.opc) = 0x5000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 60: +#line 194 "m68k_parse.y" + { (yyval.opc) = 0x5100 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 61: +#line 198 "m68k_parse.y" + { (yyval.rea).reg = 0xe1c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 62: +#line 199 "m68k_parse.y" + { (yyval.rea).reg = 0xe100 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 63: +#line 200 "m68k_parse.y" + { (yyval.rea).reg = 0xe0c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 64: +#line 201 "m68k_parse.y" + { (yyval.rea).reg = 0xe000 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 65: +#line 202 "m68k_parse.y" + { (yyval.rea).reg = 0xe3c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 66: +#line 203 "m68k_parse.y" + { (yyval.rea).reg = 0xe108 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 67: +#line 204 "m68k_parse.y" + { (yyval.rea).reg = 0xe2c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 68: +#line 205 "m68k_parse.y" + { (yyval.rea).reg = 0xe008 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 69: +#line 206 "m68k_parse.y" + { (yyval.rea).reg = 0xe7c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 70: +#line 207 "m68k_parse.y" + { (yyval.rea).reg = 0xe118 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 71: +#line 208 "m68k_parse.y" + { (yyval.rea).reg = 0xe6c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 72: +#line 209 "m68k_parse.y" + { (yyval.rea).reg = 0xe018 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 73: +#line 210 "m68k_parse.y" + { (yyval.rea).reg = 0xe5c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 74: +#line 211 "m68k_parse.y" + { (yyval.rea).reg = 0xe100 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 75: +#line 212 "m68k_parse.y" + { (yyval.rea).reg = 0xe4c0 | (yyvsp[(2) - (2)].ea).ea; (yyval.rea).ea = (yyvsp[(2) - (2)].ea); ;} + break; + + case 76: +#line 213 "m68k_parse.y" + { (yyval.rea).reg = 0xe000 | ((yyvsp[(2) - (3)].wl)<<6) | (yyvsp[(3) - (3)].opc); ;} + break; + + case 77: +#line 217 "m68k_parse.y" + { (yyval.brop).opc = 0x6400; (yyval.brop).len = 1; ;} + break; + + case 78: +#line 218 "m68k_parse.y" + { (yyval.brop).opc = 0x6500; (yyval.brop).len = 1; ;} + break; + + case 79: +#line 219 "m68k_parse.y" + { (yyval.brop).opc = 0x6700; (yyval.brop).len = 1; ;} + break; + + case 80: +#line 220 "m68k_parse.y" + { (yyval.brop).opc = 0x6c00; (yyval.brop).len = 1; ;} + break; + + case 81: +#line 221 "m68k_parse.y" + { (yyval.brop).opc = 0x6e00; (yyval.brop).len = 1; ;} + break; + + case 82: +#line 222 "m68k_parse.y" + { (yyval.brop).opc = 0x6200; (yyval.brop).len = 1; ;} + break; + + case 83: +#line 223 "m68k_parse.y" + { (yyval.brop).opc = 0x6f00; (yyval.brop).len = 1; ;} + break; + + case 84: +#line 224 "m68k_parse.y" + { (yyval.brop).opc = 0x6300; (yyval.brop).len = 1; ;} + break; + + case 85: +#line 225 "m68k_parse.y" + { (yyval.brop).opc = 0x6d00; (yyval.brop).len = 1; ;} + break; + + case 86: +#line 226 "m68k_parse.y" + { (yyval.brop).opc = 0x6b00; (yyval.brop).len = 1; ;} + break; + + case 87: +#line 227 "m68k_parse.y" + { (yyval.brop).opc = 0x6600; (yyval.brop).len = 1; ;} + break; + + case 88: +#line 228 "m68k_parse.y" + { (yyval.brop).opc = 0x6a00; (yyval.brop).len = 1; ;} + break; + + case 89: +#line 229 "m68k_parse.y" + { (yyval.brop).opc = 0x6800; (yyval.brop).len = 1; ;} + break; + + case 90: +#line 230 "m68k_parse.y" + { (yyval.brop).opc = 0x6900; (yyval.brop).len = 1; ;} + break; + + case 91: +#line 231 "m68k_parse.y" + { (yyval.brop).opc = 0x6100; (yyval.brop).len = 1; ;} + break; + + case 92: +#line 232 "m68k_parse.y" + { (yyval.brop).opc = 0x6000; (yyval.brop).len = 1; ;} + break; + + case 93: +#line 233 "m68k_parse.y" + { (yyval.brop).opc = 0x6400; (yyval.brop).len = 0; ;} + break; + + case 94: +#line 234 "m68k_parse.y" + { (yyval.brop).opc = 0x6500; (yyval.brop).len = 0; ;} + break; + + case 95: +#line 235 "m68k_parse.y" + { (yyval.brop).opc = 0x6700; (yyval.brop).len = 0; ;} + break; + + case 96: +#line 236 "m68k_parse.y" + { (yyval.brop).opc = 0x6c00; (yyval.brop).len = 0; ;} + break; + + case 97: +#line 237 "m68k_parse.y" + { (yyval.brop).opc = 0x6e00; (yyval.brop).len = 0; ;} + break; + + case 98: +#line 238 "m68k_parse.y" + { (yyval.brop).opc = 0x6200; (yyval.brop).len = 0; ;} + break; + + case 99: +#line 239 "m68k_parse.y" + { (yyval.brop).opc = 0x6f00; (yyval.brop).len = 0; ;} + break; + + case 100: +#line 240 "m68k_parse.y" + { (yyval.brop).opc = 0x6300; (yyval.brop).len = 0; ;} + break; + + case 101: +#line 241 "m68k_parse.y" + { (yyval.brop).opc = 0x6d00; (yyval.brop).len = 0; ;} + break; + + case 102: +#line 242 "m68k_parse.y" + { (yyval.brop).opc = 0x6b00; (yyval.brop).len = 0; ;} + break; + + case 103: +#line 243 "m68k_parse.y" + { (yyval.brop).opc = 0x6600; (yyval.brop).len = 0; ;} + break; + + case 104: +#line 244 "m68k_parse.y" + { (yyval.brop).opc = 0x6a00; (yyval.brop).len = 0; ;} + break; + + case 105: +#line 245 "m68k_parse.y" + { (yyval.brop).opc = 0x6800; (yyval.brop).len = 0; ;} + break; + + case 106: +#line 246 "m68k_parse.y" + { (yyval.brop).opc = 0x6900; (yyval.brop).len = 0; ;} + break; + + case 107: +#line 247 "m68k_parse.y" + { (yyval.brop).opc = 0x6100; (yyval.brop).len = 0; ;} + break; + + case 108: +#line 248 "m68k_parse.y" + { (yyval.brop).opc = 0x6000; (yyval.brop).len = 0; ;} + break; + + case 109: +#line 252 "m68k_parse.y" + { (yyval.opc) = 0x0040; ;} + break; + + case 110: +#line 253 "m68k_parse.y" + { (yyval.opc) = 0x0080; ;} + break; + + case 111: +#line 254 "m68k_parse.y" + { (yyval.opc) = 0x00c0; ;} + break; + + case 112: +#line 255 "m68k_parse.y" + { (yyval.opc) = 0x0000; ;} + break; + + case 113: +#line 259 "m68k_parse.y" + { (yyval.opc) = 0x4200 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 114: +#line 260 "m68k_parse.y" + { (yyval.opc) = 0x4800; ;} + break; + + case 115: +#line 261 "m68k_parse.y" + { (yyval.opc) = 0x4400 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 116: +#line 262 "m68k_parse.y" + { (yyval.opc) = 0x4000 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 117: +#line 263 "m68k_parse.y" + { (yyval.opc) = 0x4600 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 118: +#line 264 "m68k_parse.y" + { (yyval.opc) = 0x54c0; ;} + break; + + case 119: +#line 265 "m68k_parse.y" + { (yyval.opc) = 0x55c0; ;} + break; + + case 120: +#line 266 "m68k_parse.y" + { (yyval.opc) = 0x57c0; ;} + break; + + case 121: +#line 267 "m68k_parse.y" + { (yyval.opc) = 0x51c0; ;} + break; + + case 122: +#line 268 "m68k_parse.y" + { (yyval.opc) = 0x5cc0; ;} + break; + + case 123: +#line 269 "m68k_parse.y" + { (yyval.opc) = 0x5ec0; ;} + break; + + case 124: +#line 270 "m68k_parse.y" + { (yyval.opc) = 0x52c0; ;} + break; + + case 125: +#line 271 "m68k_parse.y" + { (yyval.opc) = 0x5fc0; ;} + break; + + case 126: +#line 272 "m68k_parse.y" + { (yyval.opc) = 0x53c0; ;} + break; + + case 127: +#line 273 "m68k_parse.y" + { (yyval.opc) = 0x5dc0; ;} + break; + + case 128: +#line 274 "m68k_parse.y" + { (yyval.opc) = 0x5bc0; ;} + break; + + case 129: +#line 275 "m68k_parse.y" + { (yyval.opc) = 0x56c0; ;} + break; + + case 130: +#line 276 "m68k_parse.y" + { (yyval.opc) = 0x5ac0; ;} + break; + + case 131: +#line 277 "m68k_parse.y" + { (yyval.opc) = 0x50c0; ;} + break; + + case 132: +#line 278 "m68k_parse.y" + { (yyval.opc) = 0x58c0; ;} + break; + + case 133: +#line 279 "m68k_parse.y" + { (yyval.opc) = 0x59c0; ;} + break; + + case 134: +#line 280 "m68k_parse.y" + { (yyval.opc) = 0x4ac0; ;} + break; + + case 135: +#line 281 "m68k_parse.y" + { (yyval.opc) = 0x4a00 | ((yyvsp[(2) - (2)].wl)<<6); ;} + break; + + case 136: +#line 285 "m68k_parse.y" + { (yyval.opc) = 0x81c0; ;} + break; + + case 137: +#line 286 "m68k_parse.y" + { (yyval.opc) = 0x80c0; ;} + break; + + case 138: +#line 287 "m68k_parse.y" + { (yyval.opc) = 0xc1c0; ;} + break; + + case 139: +#line 288 "m68k_parse.y" + { (yyval.opc) = 0xc0c0; ;} + break; + + case 140: +#line 292 "m68k_parse.y" + { (yyval.opc) = 0x54c8; ;} + break; + + case 141: +#line 293 "m68k_parse.y" + { (yyval.opc) = 0x55c8; ;} + break; + + case 142: +#line 294 "m68k_parse.y" + { (yyval.opc) = 0x57c8; ;} + break; + + case 143: +#line 295 "m68k_parse.y" + { (yyval.opc) = 0x5cc8; ;} + break; + + case 144: +#line 296 "m68k_parse.y" + { (yyval.opc) = 0x5ec8; ;} + break; + + case 145: +#line 297 "m68k_parse.y" + { (yyval.opc) = 0x52c8; ;} + break; + + case 146: +#line 298 "m68k_parse.y" + { (yyval.opc) = 0x5fc8; ;} + break; + + case 147: +#line 299 "m68k_parse.y" + { (yyval.opc) = 0x53c8; ;} + break; + + case 148: +#line 300 "m68k_parse.y" + { (yyval.opc) = 0x5dc8; ;} + break; + + case 149: +#line 301 "m68k_parse.y" + { (yyval.opc) = 0x5bc8; ;} + break; + + case 150: +#line 302 "m68k_parse.y" + { (yyval.opc) = 0x56c8; ;} + break; + + case 151: +#line 303 "m68k_parse.y" + { (yyval.opc) = 0x5ac8; ;} + break; + + case 152: +#line 304 "m68k_parse.y" + { (yyval.opc) = 0x58c8; ;} + break; + + case 153: +#line 305 "m68k_parse.y" + { (yyval.opc) = 0x59c8; ;} + break; + + case 154: +#line 306 "m68k_parse.y" + { (yyval.opc) = 0x51c8; ;} + break; + + case 155: +#line 307 "m68k_parse.y" + { (yyval.opc) = 0x50c8; ;} + break; + + case 156: +#line 311 "m68k_parse.y" + { (yyval.opc) = 0x4afc; ;} + break; + + case 157: +#line 312 "m68k_parse.y" + { (yyval.opc) = 0x4e71; ;} + break; + + case 158: +#line 313 "m68k_parse.y" + { (yyval.opc) = 0x4e70; ;} + break; + + case 159: +#line 314 "m68k_parse.y" + { (yyval.opc) = 0x4e73; ;} + break; + + case 160: +#line 315 "m68k_parse.y" + { (yyval.opc) = 0x4e77; ;} + break; + + case 161: +#line 316 "m68k_parse.y" + { (yyval.opc) = 0x4e75; ;} + break; + + case 162: +#line 317 "m68k_parse.y" + { (yyval.opc) = 0x4e76; ;} + break; + + case 163: +#line 321 "m68k_parse.y" + { (yyval.opc) = 0x4ec0; ;} + break; + + case 164: +#line 322 "m68k_parse.y" + { (yyval.opc) = 0x4e80; ;} + break; + + case 165: +#line 323 "m68k_parse.y" + { (yyval.opc) = 0x4840; ;} + break; + + case 166: +#line 326 "m68k_parse.y" + { (yyval.opc) = ((yyvsp[(1) - (3)].reg)<<9) | 0x20 | (yyvsp[(3) - (3)].reg); ;} + break; + + case 167: +#line 327 "m68k_parse.y" + { (yyval.opc) = (((yyvsp[(2) - (4)].num) & 7)<<9) | (yyvsp[(4) - (4)].reg); ;} + break; + + case 168: +#line 330 "m68k_parse.y" + { (yyval.opc) = (((yyvsp[(1) - (3)].ea).ea & 7) << 9) | ((yyvsp[(3) - (3)].ea).ea & 7); ;} + break; + + case 169: +#line 331 "m68k_parse.y" + { (yyval.opc) = (((yyvsp[(1) - (3)].ea).ea & 7) << 9) | 0x0008 | ((yyvsp[(3) - (3)].ea).ea & 7); ;} + break; + + case 170: +#line 334 "m68k_parse.y" + { if (((yyvsp[(3) - (3)].ea).ea & 070)==0) { /* dx,dy must be swapped */ + (yyval.rea).reg = ((yyvsp[(3) - (3)].ea).ea & 7)<<9; (yyvsp[(3) - (3)].ea).ea = (yyvsp[(1) - (3)].reg) & 7; (yyval.rea).ea = (yyvsp[(3) - (3)].ea); } + else { (yyval.rea).reg = ((yyvsp[(1) - (3)].reg)<<9) | 0x100; (yyval.rea).ea = (yyvsp[(3) - (3)].ea); } ;} + break; + + case 171: +#line 337 "m68k_parse.y" + { (yyval.rea).reg = ((yyvsp[(3) - (3)].reg)<<9); (yyval.rea).ea = (yyvsp[(1) - (3)].ea); ;} + break; + + case 172: +#line 340 "m68k_parse.y" + { (yyval.reg)=0; ;} + break; + + case 173: +#line 341 "m68k_parse.y" + { (yyval.reg)=1; ;} + break; + + case 174: +#line 342 "m68k_parse.y" + { (yyval.reg)=2; ;} + break; + + case 175: +#line 343 "m68k_parse.y" + { (yyval.reg)=3; ;} + break; + + case 176: +#line 344 "m68k_parse.y" + { (yyval.reg)=4; ;} + break; + + case 177: +#line 345 "m68k_parse.y" + { (yyval.reg)=5; ;} + break; + + case 178: +#line 346 "m68k_parse.y" + { (yyval.reg)=6; ;} + break; + + case 179: +#line 347 "m68k_parse.y" + { (yyval.reg)=7; ;} + break; + + case 180: +#line 350 "m68k_parse.y" + { (yyval.reg)=0; ;} + break; + + case 181: +#line 351 "m68k_parse.y" + { (yyval.reg)=1; ;} + break; + + case 182: +#line 352 "m68k_parse.y" + { (yyval.reg)=2; ;} + break; + + case 183: +#line 353 "m68k_parse.y" + { (yyval.reg)=3; ;} + break; + + case 184: +#line 354 "m68k_parse.y" + { (yyval.reg)=4; ;} + break; + + case 185: +#line 355 "m68k_parse.y" + { (yyval.reg)=5; ;} + break; + + case 186: +#line 356 "m68k_parse.y" + { (yyval.reg)=6; ;} + break; + + case 187: +#line 357 "m68k_parse.y" + { (yyval.reg)=7; ;} + break; + + case 188: +#line 360 "m68k_parse.y" + { (yyval.wl) = 1; oplen = 0; ;} + break; + + case 189: +#line 363 "m68k_parse.y" + { (yyval.wl) = 0; oplen = 1; ;} + break; + + case 190: +#line 364 "m68k_parse.y" + { (yyval.wl) = 1; oplen = 2; ;} + break; + + case 191: +#line 367 "m68k_parse.y" + { (yyval.wl) = 0; oplen = 0; ;} + break; + + case 192: +#line 368 "m68k_parse.y" + { (yyval.wl) = 1; oplen = 1; ;} + break; + + case 193: +#line 369 "m68k_parse.y" + { (yyval.wl) = 2; oplen = 2; ;} + break; + + case 194: +#line 372 "m68k_parse.y" + { (yyval.wl) = 1; oplen = 0; ;} + break; + + case 195: +#line 373 "m68k_parse.y" + { (yyval.wl) = 3; oplen = 1; ;} + break; + + case 196: +#line 374 "m68k_parse.y" + { (yyval.wl) = 2; oplen = 2; ;} + break; + + case 197: +#line 377 "m68k_parse.y" + { (yyval.wl) = 3; oplen = 1; ;} + break; + + case 198: +#line 378 "m68k_parse.y" + { (yyval.wl) = 2; oplen = 2; ;} + break; + + case 199: +#line 381 "m68k_parse.y" + { (yyval.mask) = (yyvsp[(1) - (1)].mask); ;} + break; + + case 200: +#line 382 "m68k_parse.y" + { (yyval.mask).x = (yyvsp[(1) - (3)].mask).x | (yyvsp[(3) - (3)].mask).x; (yyval.mask).d = (yyvsp[(1) - (3)].mask).d | (yyvsp[(3) - (3)].mask).d; ;} + break; + + case 201: +#line 385 "m68k_parse.y" + { (yyval.mask).x = movemx[(yyvsp[(1) - (1)].reg)]; (yyval.mask).d = movemd[(yyvsp[(1) - (1)].reg)]; ;} + break; + + case 202: +#line 386 "m68k_parse.y" + { (yyval.mask).x = movemx[(yyvsp[(1) - (1)].reg)+8]; (yyval.mask).d = movemd[(yyvsp[(1) - (1)].reg)+8]; ;} + break; + + case 203: +#line 387 "m68k_parse.y" + { int i,l=(yyvsp[(1) - (3)].reg),h=(yyvsp[(3) - (3)].reg); if (l>h) { l=(yyvsp[(3) - (3)].reg); h=(yyvsp[(1) - (3)].reg); } (yyval.mask).x = (yyval.mask).d = 0; + for (i=l; i<=h; i++) { (yyval.mask).d |= movemx[i]; (yyval.mask).d |= movemd[i]; } ;} + break; + + case 204: +#line 389 "m68k_parse.y" + { int i,l=(yyvsp[(1) - (3)].reg),h=(yyvsp[(3) - (3)].reg); if (l>h) { l=(yyvsp[(3) - (3)].reg); h=(yyvsp[(1) - (3)].reg); } (yyval.mask).x = (yyval.mask).d = 0; + for (i=l; i<=h; i++) { (yyval.mask).x |= movemx[i+8]; (yyval.mask).d |= movemd[i+8]; } ;} + break; + + case 260: +#line 404 "m68k_parse.y" + { (yyval.ea).ea = (yyvsp[(1) - (1)].reg); (yyval.ea).cnt = 0; ;} + break; + + case 261: +#line 406 "m68k_parse.y" + { (yyval.ea).ea = 010 | (yyvsp[(1) - (1)].reg); (yyval.ea).cnt = 0; ;} + break; + + case 262: +#line 408 "m68k_parse.y" + { (yyval.ea).ea = 020 | (yyvsp[(2) - (3)].reg); (yyval.ea).cnt = 0; ;} + break; + + case 263: +#line 410 "m68k_parse.y" + { (yyval.ea).ea = 030 | (yyvsp[(2) - (3)].reg); (yyval.ea).cnt = 0; ;} + break; + + case 264: +#line 412 "m68k_parse.y" + { (yyval.ea).ea = 040 | (yyvsp[(2) - (3)].reg); (yyval.ea).cnt = 0; ;} + break; + + case 265: +#line 414 "m68k_parse.y" + { (yyval.ea).ea = 050 | (yyvsp[(4) - (5)].reg); (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (5)].num); ;} + break; + + case 266: +#line 417 "m68k_parse.y" + { (yyval.ea).ea = 060 | (yyvsp[(4) - (8)].reg); (yyval.ea).cnt = 1; (yyval.ea).arg[0] = 0x8000 | ((yyvsp[(6) - (8)].reg)<<12) | ((yyvsp[(7) - (8)].wl)<<11) | ((yyvsp[(2) - (8)].num) & 0xff); ;} + break; + + case 267: +#line 419 "m68k_parse.y" + { (yyval.ea).ea = 060 | (yyvsp[(4) - (8)].reg); (yyval.ea).cnt = 1; (yyval.ea).arg[0] = ((yyvsp[(6) - (8)].reg)<<12) | ((yyvsp[(7) - (8)].wl)<<11) | ((yyvsp[(2) - (8)].num) & 0xff); ;} + break; + + case 268: +#line 421 "m68k_parse.y" + { if ((yyvsp[(4) - (4)].wl)==0) { (yyval.ea).ea = 070; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (4)].num); } + else { (yyval.ea).ea = 071; (yyval.ea).cnt = 2; (yyval.ea).arg[0] = (yyvsp[(2) - (4)].num) >> 16; (yyval.ea).arg[1] = (yyvsp[(2) - (4)].num) & 0xffff; } ;} + break; + + case 269: +#line 423 "m68k_parse.y" + { int tmp = ((yyvsp[(2) - (3)].num)>>15) & 0x1ffff; if (tmp==0 || tmp==0x1ffff) { (yyval.ea).ea = 070; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (3)].num); } + else { (yyval.ea).ea = 070; (yyval.ea).cnt = 2; (yyval.ea).arg[0] = (yyvsp[(2) - (3)].num) >> 16; (yyval.ea).arg[1] = (yyvsp[(2) - (3)].num) & 0xffff; } ;} + break; + + case 270: +#line 426 "m68k_parse.y" + { (yyval.ea).ea = 072; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (5)].num); ;} + break; + + case 271: +#line 427 "m68k_parse.y" + { (yyval.ea).ea = 072; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(1) - (1)].num); ;} + break; + + case 272: +#line 430 "m68k_parse.y" + { (yyval.ea).ea = 073; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = 0x8000 | ((yyvsp[(6) - (8)].reg)<<12) | ((yyvsp[(7) - (8)].wl)<<11) | ((yyvsp[(2) - (8)].num) & 0xff); ;} + break; + + case 273: +#line 432 "m68k_parse.y" + { (yyval.ea).ea = 073; (yyval.ea).cnt = 1; (yyval.ea).arg[0] = ((yyvsp[(6) - (8)].reg)<<12) | ((yyvsp[(7) - (8)].wl)<<11) | ((yyvsp[(2) - (8)].num) & 0xff); ;} + break; + + case 274: +#line 434 "m68k_parse.y" + { (yyval.ea).ea = 074; if (oplen==0) { (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (2)].num) & 0xff; } + else if (oplen==1) { (yyval.ea).cnt = 1; (yyval.ea).arg[0] = (yyvsp[(2) - (2)].num) & 0xffff; } + else { (yyval.ea).cnt = 2; (yyval.ea).arg[0] = (yyvsp[(2) - (2)].num) >> 16; (yyval.ea).arg[1] = (yyvsp[(2) - (2)].num) & 0xffff; } ;} + break; + + case 275: +#line 438 "m68k_parse.y" + { (yyval.ea).ea = 074; (yyval.ea).cnt = 0; ;} + break; + + case 276: +#line 439 "m68k_parse.y" + { (yyval.ea).ea = 074; (yyval.ea).cnt = 1; ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 3344 "m68k_parse.tab.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 440 "m68k_parse.y" + + +static void yyerror(char* s) +{ + /* do not emit anything, but set error flag */ + yyerrc = 1; +} + +struct _optable { + char* mnem; + int token; +}; + +static struct _optable ops[] = { + { "abcd", ABCD }, { "add", ADD }, { "adda", ADDA }, { "addi", ADDI }, + { "addq", ADDQ }, { "addx", ADDX }, { "and", AND }, { "andi", ANDI }, + { "asl", ASL }, { "asr", ASR }, { "bcc", BCC }, { "bcs", BCS }, + { "beq", BEQ }, { "bge", BGE }, { "bgt", BGT }, { "bhi", BHI }, + { "ble", BLE }, { "bls", BLS }, { "blt", BLT }, { "bmi", BMI }, + { "bne", BNE }, { "bpl", BPL }, { "bvc", BVC }, { "bvs", BVS }, + { "bchg", BCHG }, { "bclr", BCLR }, { "bra", BRA }, { "bset", BSET }, + { "bsr", BSR }, { "btst", BTST }, { "chk", CHK }, { "clr", CLR }, + { "cmp", CMP }, { "cmpa", CMPA }, { "cmpi", CMPI }, { "cmpm", CMPM }, + { "dbcc", DBCC }, { "dbcs", DBCS }, { "dbeq", DBEQ }, { "dbf", DBF }, + { "dbge", DBGE }, { "dbgt", DBGT }, { "dbhi", DBHI }, { "dble", DBLE }, + { "dbls", DBLS }, { "dblt", DBLT }, { "dbmi", DBMI }, { "dbne", DBNE }, + { "dbpl", DBPL }, { "dbt", DBT }, { "dbvc", DBVC }, { "dbvs", DBVS }, + { "divs", DIVS }, { "divu", DIVU }, { "eor", EOR }, { "eori", EORI }, + { "exg", EXG }, { "ext", EXT }, { "illegal",ILLEGAL }, { "jmp", JMP }, + { "jsr", JSR }, { "lea", LEA }, { "link", LINK }, { "lsl", LSL }, + { "lsr", LSR }, { "move", MOVE }, { "movea", MOVEA }, { "movem", MOVEM }, + { "movep", MOVEP }, { "moveq", MOVEQ }, { "muls", MULS }, { "mulu", MULU }, + { "nbcd", NBCD }, { "neg", NEG }, { "negx", NEGX }, { "nop", NOP }, + { "not", NOT }, { "or", OR }, { "ori", ORI }, { "pea", PEA }, + { "reset", RESET }, { "rol", ROL }, { "ror", ROR }, { "roxl", ROXL }, + { "roxr", ROXR }, { "rte", RTE }, { "rtr", RTR }, + { "rts", RTS }, { "scc", SCC }, { "scs", SCS }, { "seq", SEQ }, + { "sf", SF }, { "sge", SGE }, { "sgt", SGT }, { "shi", SHI }, + { "sle", SLE }, { "sls", SLS }, { "slt", SLT }, { "smi", SMI }, + { "sne", SNE }, { "spl", SPL }, { "st", ST }, { "svc", SVC }, + { "svs", SVS }, { "stop", STOP }, { "sub", SUB }, { "suba", SUBA }, + { "subi", SUBI }, { "subq", SUBQ }, { "subx", SUBX }, { "swap", SWAP }, + { "tas", TAS }, { "trap", TRAP }, { "trapv", TRAPV }, { "tst", TST }, + { "unlk", UNLK }, { "a0", A0 }, { "a1", A1 }, { "a2", A2 }, + { "a3", A3 }, { "a4", A4 }, { "a5", A5 }, { "a6", A6 }, + { "a7", A7 }, { "d0", D0 }, { "d1", D1 }, { "d2", D2 }, + { "d3", D3 }, { "d4", D4 }, { "d5", D5 }, { "d6", D6 }, + { "d7", D7 }, { "ccr", CCR }, { "sr", SR }, { "usp", USP }, + { "pc", PC }, + { 0, 0 } +}; + +typedef struct _ophash { + struct _ophash* next; + struct _optable* op; +} OPHASH; +#define OPHASHSIZE 97 + +static OPHASH **ophash = 0; + +static int getophash(const char* s) +{ + int h = 0; + while (*s++) h += (int)*s; + return h % OPHASHSIZE; +} + +static int oplookup(const char* s) +{ + int idx = getophash(s); + OPHASH* oph = ophash[idx]; + if (oph) { + if (oph->next) { + while (oph) { + if (!strcmp(s,oph->op->mnem)) return oph->op->token; + oph = oph->next; + } + return 0; + } + return oph->op->token; + } + return 0; +} + +static void init_ophash() +{ + struct _optable* op = ops; + OPHASH* oph; + ophash = (OPHASH**)calloc(sizeof(OPHASH*),OPHASHSIZE); + while (op->mnem) { + int idx = getophash(op->mnem); + oph = (OPHASH*)malloc(sizeof(OPHASH)); + oph->next = ophash[idx]; + oph->op = op; + ophash[idx] = oph; + op++; + } +} + +static char* yystream; + +int yylex() +{ + char ident[30]; + char *p = ident; + char c = yystream[0]; + + while (c != 0 && (c=='\t' || c==' ')) { + c = *++yystream; + } + if (c==0) return EOF; + + if (isalpha(c)) { + while (isalnum(c) && (p-ident)<28) { + *p++ = tolower(c); c = *++yystream; + } + *p = 0; + if (p>ident) { return oplookup(ident); } + return EOF; + } else if (isdigit(c)) { + *p++ = c; + if (yystream[1]=='x' || yystream[1]=='X') { *p++ = 'x'; yystream++; } + c = *++yystream; + while ((isdigit(c) || isxdigit(c)) && (p-ident)<28) { + *p++ = c; c = *++yystream; + } + *p = 0; + yylval.num = strtol(ident,0,0); + return NUMBER; + } else if (c=='$') { + if (isdigit(yystream[1]) || isxdigit(yystream[1])) { + c = *++yystream; + while ((isdigit(c) || isxdigit(c)) && (p-ident)<28) { + *p++ = c; c = *++yystream; + } + *p = 0; + yylval.num = strtol(ident,0,16); + return NUMBER; + } else return '$'; + } else if (c == '-' && yystream[1] == '(') { + yystream += 2; return PREDEC; + } else if (c == ')' && yystream[1] == '+') { + yystream += 2; return POSTINC; + } else if (c == '.') { + switch (yystream[1]) { + case 'b': yystream += 2; return BSIZE; + case 'w': yystream += 2; return WSIZE; + case 'l': yystream += 2; return LSIZE; + case 's': yystream += 2; return SSIZE; + default: yystream++; return '.'; + } + } else { + ++yystream; return c; + } +} + +static t_value *yyvalptr; +static t_addr yyaddr; + +t_stat parse_sym(char* c, t_addr a, UNIT* u, t_value* val, int32 sw) +{ + char ch; + + if (!ophash) init_ophash(); + + yyvalptr = val; + yyaddr = a; + + yystream = c; + yyerrc = 0; + + ch = *yystream; + while (ch != 0 && (ch=='\t' || ch==' ')) { + ch = *++yystream; + } + if (ch == 0) return 0; + + if (sw & SWMASK('Y')) yydebug = 1 - yydebug; + if ((sw & SWMASK('A')) || ch=='\'') { + if ((ch = yystream[1])) { + val[0] = (uint32)ch; + return SCPE_OK; + } else return SCPE_ARG; + } + if ((sw & SWMASK('C')) || ch=='"') { + if ((ch = yystream[1])) { + val[0] = ((uint32)ch << 8) | (uint32)yystream[1]; + return SCPE_OK; + } else return SCPE_ARG; + } + + yyparse(); + printf("rc=%d\n",yyrc); + if (yyerrc) return SCPE_ARG; + return yyrc; +} + +static int _genop(t_value arg) +{ +// printf("_genop(%x)@%x\n",arg,(int)yyvalptr); + *yyvalptr = arg; + yyvalptr++; + return -1; +} + +static int _genea(struct _ea arg) +{ + int i; + for (i=0; i +#include + +#if defined(_WIN32) +#include +#else +#include +#endif + +struct _ea { + int ea; + int cnt; + t_value arg[10]; +}; +struct _rea { + int reg; + struct _ea ea; +}; +struct _mask { + int x; + int d; +}; +struct _brop { + int opc; + int len; +}; + +static int oplen; +static int movemx[] = { 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, + 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080 }; +static int movemd[] = { 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001, + 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100 }; +static int yyrc; +static int yyerrc; +extern int yylex(); +static int _genop(t_value arg); +static int _genea(struct _ea arg); +static int _genbr(t_value arg,t_value,int); +static void yyerror(char* s); + +#define YYDEBUG 1 +%} + +%union { + int rc; + int reg; + int wl; + int opc; + struct _ea ea; + t_value num; + struct _rea rea; + struct _mask mask; + struct _brop brop; +} + +%token A0 A1 A2 A3 A4 A5 A6 A7 D0 D1 D2 D3 D4 D5 D6 D7 +%token CCR SR USP PC +%token NUMBER +%token ABCD ADD ADDA ADDI ADDQ ADDX AND ANDI OR ORI SBCD SUB SUBA SUBI SUBQ SUBX +%token ASL ASR LSL LSR ROL ROR ROXL ROXR +%token BCC BCS BEQ BGE BGT BHI BLE BLS BLT BMI BNE BPL BVC BVS BSR BRA +%token BCLR BSET BCHG BTST CHK CMP CMPA CMPI CMPM EOR EORI EXG EXT +%token DIVU DIVS MULU MULS +%token DBCC DBCS DBEQ DBF DBGE DBGT DBHI DBLE DBLS DBLT DBMI DBNE DBPL DBT DBVC DBVS +%token SCC SCS SEQ SF SGE SGT SHI SLE SLS SLT SMI SNE SPL ST SVC SVS +%token ILLEGAL NOP RESET RTE RTR RTS TRAPV +%token JMP JSR LEA LINK MOVE MOVEA MOVEM MOVEP MOVEQ +%token CLR NEG NEGX NBCD NOT PEA STOP TAS SWAP TRAP TST UNLK + +%token PREDEC POSTINC BSIZE WSIZE LSIZE SSIZE + +%start stmt +%type bcdop bcdarg dualop immop qop immop2 shftarg monop btop +%type mdop dbop jop arop +%type direct +%type brop +%type dualarg shftop +%type dreg areg +%type ea0 ea1 ea2 ea3 ea4 ea5 ea6 ea70 ea72 ea73 ea74 eama eaa eaall eada eadas easr ead eac eacad eacai +%type szwl szbwl szmv szm szs +%type regs reglist + +%% +stmt: + bcdop bcdarg { _genop($1 | $2); yyrc = -1; } +| dualop dualarg { _genop($1 | $2.reg | $2.ea.ea); yyrc = _genea($2.ea) -1; } +| immop '#' NUMBER ',' eada { _genop($1 | $5.ea); if (oplen==0) { _genop($3 & 0xff); yyrc = _genea($5) - 3; } + else if (oplen==1) { _genop($3); yyrc = _genea($5) - 3; } else { _genop($3>>16); _genop($3 & 0xffff); yyrc = _genea($5)-5; } } +| qop '#' NUMBER ',' eaa { _genop($1 | (($3&7)<<9) | $5.ea); yyrc = _genea($5) - 1; } +| immop2 '#' NUMBER ',' eadas { _genop($1 | $5.ea); if (oplen==0) { _genop($3 & 0xff); yyrc = _genea($5) - 3; } + else if (oplen==1) { _genop($3); yyrc = _genea($5) - 3; } else { _genop($3>>16); _genop($3 & 0xffff); yyrc = _genea($5)-5; } } +| shftop { _genop($1.reg); if (($1.reg&0xc0)==0xc0) yyrc = _genea($1.ea) - 1; else { yyrc = -1; } } +| brop NUMBER { yyrc = _genbr($1.opc,$2,$1.len) - 1; } +| btop dreg ',' eada { _genop($1 | ($2<<9) | 0x100 | $4.ea); yyrc = _genea($4) - 1; } +| btop '#' NUMBER ',' eada { _genop($1 | 0x0800 | $5.ea); _genop($3); yyrc = _genea($5) - 3; } +| CHK ead ',' dreg { _genop(0x4180 | ($4<<9) | $2.ea); yyrc = _genea($2) - 1; } +| monop eada { _genop($1 | $2.ea); yyrc = _genea($2) - 1; } +| CMP szbwl eaall ',' dreg { _genop(0xb000 | ($2<<6) | ($5<<9) | $3.ea); yyrc = _genea($3) - 1; } +| mdop ead ',' dreg { _genop($1 | ($4<<9) | $2.ea); yyrc = _genea($2) - 1; } +| CMPA szwl eaall ',' areg { _genop(0xb0c0 | ($2<<8) | ($5<<9) | $3.ea); yyrc = _genea($3) - 1; } +| CMPM szbwl ea3 ',' ea3 { _genop(0xb108 | ($5.ea<<9) | ($2<<6) | $3.ea); yyrc = -1; } +| dbop dreg ',' NUMBER { yyrc = _genbr($1 | $2, $4, 1) - 1; } +| EOR szbwl dreg ',' eada { _genop(0xb000 | ($2 << 6) | 0x100 | $5.ea); yyrc = _genea($5) - 1; } +| EXG dreg ',' dreg { _genop(0xc140 | ($2<<9) | $4); yyrc = -1; } +| EXG areg ',' areg { _genop(0xc148 | ($2<<9) | $4); yyrc = -1; } +| EXG areg ',' dreg { _genop(0xc188 | ($4<<9) | $2); yyrc = -1; } +| EXG dreg ',' areg { _genop(0xc188 | ($2<<9) | $4); yyrc = -1; } +| EXT szwl dreg { _genop(0x4840 | ($2<<6) | $3); yyrc = -1; } +| direct { _genop($1); yyrc = -1; } +| jop eac { _genop($1 | $2.ea); yyrc = _genea($2) -1; } +| LEA eac ',' areg { _genop(0x41c0 | $2.ea); yyrc = _genea($2) - 1; } +| LINK areg ',' '#' NUMBER { _genop(0x4e50 | $2); _genop($5); yyrc = -3; } +| MOVE szmv eaall ',' eadas { if ($5.ea==074) { _genop(0x44c0 | ($5.cnt==1?0x0200:0x0000) | $3.ea); yyrc = _genea($3) - 1; } + else { int tmp = (($5.ea&070)>>3)|(($5.ea&7)<<3); _genop(0x0000 | ($2<<12) | (tmp<<6) | $3.ea); + yyrc = _genea($3) - 1; yyrc += _genea($5); } } +| MOVE SR ',' eada { _genop(0x40c0 | $4.ea); yyrc = _genea($4) - 1; } +| MOVE USP ',' areg { _genop(0x4e68 | $4); yyrc = -1; } +| MOVE areg ',' USP { _genop(0x4e60 | $2); yyrc = -1; } +| MOVEA szm eada ',' areg { _genop(0x0040 | ($2<<12) | ($5<<9) | $3.ea); yyrc = _genea($3) - 1; } +| MOVEM szwl reglist ',' eacad { _genop(0x4880 | ($2<<6) | $5.ea); _genop(($5.ea&070)==040 ? $3.d : $3.x); yyrc = _genea($5) - 3; } +| MOVEM szwl eacai ',' reglist { _genop(0x4c80 | ($2<<6) | $3.ea); _genop($5.x); yyrc = _genea($3) - 3; } +| MOVEP szwl dreg ',' ea5 { _genop(0x0108 | ($3<<9) | ($2<<6) | ($5.ea & 7)); yyrc = _genea($5) - 1; } +| MOVEP szwl ea5 ',' dreg { _genop(0x0188 | ($5<<9) | ($2<<6) | ($3.ea & 7)); yyrc = _genea($3) - 1; } +| MOVEQ '#' NUMBER ',' dreg { _genop(0x7000 | ($5<<9) | ($3&0xff)); yyrc = -1; } +| STOP '#' NUMBER { _genop(0x4e72); yyrc = _genop($3&0xffff) - 1; } +| arop szwl eaall ',' areg { _genop($1 | ($5<<9) | ($2<<8) | $3.ea); yyrc = _genea($3) - 1; } +| SWAP dreg { _genop(0x4840 | $2); yyrc = -1; } +| TRAP '#' NUMBER { _genop(0x4e40 | ($3 & 0x0f)); yyrc = -1; } +| UNLK areg { _genop(0x4e58 | $2); yyrc = -1; } +; + +arop: + ADDA { $$ = 0xd0c0; } +| SUBA { $$ = 0x90c0; }; + +bcdop: + ABCD { $$ = 0xc100; } +| ADDX szbwl { $$ = 0xd100 | ($2<<6); } +| SBCD { $$ = 0x8100; } +| SUBX szbwl { $$ = 0x9100 | ($2<<6); } +; + +dualop: + ADD szbwl { $$ = 0xd000 | ($2<<6); } +| AND szbwl { $$ = 0xc000 | ($2<<6); } +| OR szbwl { $$ = 0x8000 | ($2<<6); } +| SUB szbwl { $$ = 0x9000 | ($2<<6); } +; + +immop: + ADDI szbwl { $$ = 0x0600 | ($2<<6); } +| CMPI szbwl { $$ = 0x0c00 | ($2<<6); } +| SUBI szbwl { $$ = 0x0400 | ($2<<6); } +; + +immop2: + ANDI szbwl { $$ = 0x0200 | ($2<<6); } +| EORI szbwl { $$ = 0x0a00 | ($2<<6); } +| ORI szbwl { $$ = 0x0000 | ($2<<6); } +; + +qop: + ADDQ szbwl { $$ = 0x5000 | ($2<<6); } +| SUBQ szbwl { $$ = 0x5100 | ($2<<6); } +; + +shftop: + ASL eama { $$.reg = 0xe1c0 | $2.ea; $$.ea = $2; } +| ASL szbwl shftarg { $$.reg = 0xe100 | ($2<<6) | $3; } +| ASR eama { $$.reg = 0xe0c0 | $2.ea; $$.ea = $2; } +| ASR szbwl shftarg { $$.reg = 0xe000 | ($2<<6) | $3; } +| LSL eama { $$.reg = 0xe3c0 | $2.ea; $$.ea = $2; } +| LSL szbwl shftarg { $$.reg = 0xe108 | ($2<<6) | $3; } +| LSR eama { $$.reg = 0xe2c0 | $2.ea; $$.ea = $2; } +| LSR szbwl shftarg { $$.reg = 0xe008 | ($2<<6) | $3; } +| ROL eama { $$.reg = 0xe7c0 | $2.ea; $$.ea = $2; } +| ROL szbwl shftarg { $$.reg = 0xe118 | ($2<<6) | $3; } +| ROR eama { $$.reg = 0xe6c0 | $2.ea; $$.ea = $2; } +| ROR szbwl shftarg { $$.reg = 0xe018 | ($2<<6) | $3; } +| ROXL eama { $$.reg = 0xe5c0 | $2.ea; $$.ea = $2; } +| ROXL szbwl shftarg { $$.reg = 0xe100 | ($2<<6) | $3; } +| ROXR eama { $$.reg = 0xe4c0 | $2.ea; $$.ea = $2; } +| ROXR szbwl shftarg { $$.reg = 0xe000 | ($2<<6) | $3; } +; + +brop: + BCC { $$.opc = 0x6400; $$.len = 1; } +| BCS { $$.opc = 0x6500; $$.len = 1; } +| BEQ { $$.opc = 0x6700; $$.len = 1; } +| BGE { $$.opc = 0x6c00; $$.len = 1; } +| BGT { $$.opc = 0x6e00; $$.len = 1; } +| BHI { $$.opc = 0x6200; $$.len = 1; } +| BLE { $$.opc = 0x6f00; $$.len = 1; } +| BLS { $$.opc = 0x6300; $$.len = 1; } +| BLT { $$.opc = 0x6d00; $$.len = 1; } +| BMI { $$.opc = 0x6b00; $$.len = 1; } +| BNE { $$.opc = 0x6600; $$.len = 1; } +| BPL { $$.opc = 0x6a00; $$.len = 1; } +| BVC { $$.opc = 0x6800; $$.len = 1; } +| BVS { $$.opc = 0x6900; $$.len = 1; } +| BSR { $$.opc = 0x6100; $$.len = 1; } +| BRA { $$.opc = 0x6000; $$.len = 1; } +| BCC szs { $$.opc = 0x6400; $$.len = 0; } +| BCS szs { $$.opc = 0x6500; $$.len = 0; } +| BEQ szs { $$.opc = 0x6700; $$.len = 0; } +| BGE szs { $$.opc = 0x6c00; $$.len = 0; } +| BGT szs { $$.opc = 0x6e00; $$.len = 0; } +| BHI szs { $$.opc = 0x6200; $$.len = 0; } +| BLE szs { $$.opc = 0x6f00; $$.len = 0; } +| BLS szs { $$.opc = 0x6300; $$.len = 0; } +| BLT szs { $$.opc = 0x6d00; $$.len = 0; } +| BMI szs { $$.opc = 0x6b00; $$.len = 0; } +| BNE szs { $$.opc = 0x6600; $$.len = 0; } +| BPL szs { $$.opc = 0x6a00; $$.len = 0; } +| BVC szs { $$.opc = 0x6800; $$.len = 0; } +| BVS szs { $$.opc = 0x6900; $$.len = 0; } +| BSR szs { $$.opc = 0x6100; $$.len = 0; } +| BRA szs { $$.opc = 0x6000; $$.len = 0; } +; + +btop: + BCHG { $$ = 0x0040; } +| BCLR { $$ = 0x0080; } +| BSET { $$ = 0x00c0; } +| BTST { $$ = 0x0000; } +; + +monop: + CLR szbwl { $$ = 0x4200 | ($2<<6); } +| NBCD { $$ = 0x4800; } +| NEG szbwl { $$ = 0x4400 | ($2<<6); } +| NEGX szbwl { $$ = 0x4000 | ($2<<6); } +| NOT szbwl { $$ = 0x4600 | ($2<<6); } +| SCC { $$ = 0x54c0; } +| SCS { $$ = 0x55c0; } +| SEQ { $$ = 0x57c0; } +| SF { $$ = 0x51c0; } +| SGE { $$ = 0x5cc0; } +| SGT { $$ = 0x5ec0; } +| SHI { $$ = 0x52c0; } +| SLE { $$ = 0x5fc0; } +| SLS { $$ = 0x53c0; } +| SLT { $$ = 0x5dc0; } +| SMI { $$ = 0x5bc0; } +| SNE { $$ = 0x56c0; } +| SPL { $$ = 0x5ac0; } +| ST { $$ = 0x50c0; } +| SVC { $$ = 0x58c0; } +| SVS { $$ = 0x59c0; } +| TAS { $$ = 0x4ac0; } +| TST szbwl { $$ = 0x4a00 | ($2<<6); } +; + +mdop: + DIVS { $$ = 0x81c0; } +| DIVU { $$ = 0x80c0; } +| MULS { $$ = 0xc1c0; } +| MULU { $$ = 0xc0c0; } +; + +dbop: + DBCC { $$ = 0x54c8; } +| DBCS { $$ = 0x55c8; } +| DBEQ { $$ = 0x57c8; } +| DBGE { $$ = 0x5cc8; } +| DBGT { $$ = 0x5ec8; } +| DBHI { $$ = 0x52c8; } +| DBLE { $$ = 0x5fc8; } +| DBLS { $$ = 0x53c8; } +| DBLT { $$ = 0x5dc8; } +| DBMI { $$ = 0x5bc8; } +| DBNE { $$ = 0x56c8; } +| DBPL { $$ = 0x5ac8; } +| DBVC { $$ = 0x58c8; } +| DBVS { $$ = 0x59c8; } +| DBF { $$ = 0x51c8; } +| DBT { $$ = 0x50c8; } +; + +direct: + ILLEGAL { $$ = 0x4afc; } +| NOP { $$ = 0x4e71; } +| RESET { $$ = 0x4e70; } +| RTE { $$ = 0x4e73; } +| RTR { $$ = 0x4e77; } +| RTS { $$ = 0x4e75; } +| TRAPV { $$ = 0x4e76; } +; + +jop: + JMP { $$ = 0x4ec0; } +| JSR { $$ = 0x4e80; } +| PEA { $$ = 0x4840; }; + +shftarg: + dreg ',' dreg { $$ = ($1<<9) | 0x20 | $3; } +| '#' NUMBER ',' dreg { $$ = (($2 & 7)<<9) | $4; }; + +bcdarg: + ea0 ',' ea0 { $$ = (($1.ea & 7) << 9) | ($3.ea & 7); } +| ea4 ',' ea4 { $$ = (($1.ea & 7) << 9) | 0x0008 | ($3.ea & 7); }; + +dualarg: + dreg ',' eaa { if (($3.ea & 070)==0) { /* dx,dy must be swapped */ + $$.reg = ($3.ea & 7)<<9; $3.ea = $1 & 7; $$.ea = $3; } + else { $$.reg = ($1<<9) | 0x100; $$.ea = $3; } } +| eama ',' dreg { $$.reg = ($3<<9); $$.ea = $1; }; + +areg: + A0 { $$=0; } +| A1 { $$=1; } +| A2 { $$=2; } +| A3 { $$=3; } +| A4 { $$=4; } +| A5 { $$=5; } +| A6 { $$=6; } +| A7 { $$=7; }; + +dreg: + D0 { $$=0; } +| D1 { $$=1; } +| D2 { $$=2; } +| D3 { $$=3; } +| D4 { $$=4; } +| D5 { $$=5; } +| D6 { $$=6; } +| D7 { $$=7; }; + +szs: + SSIZE { $$ = 1; oplen = 0; } + +szwl: + WSIZE { $$ = 0; oplen = 1; } +| LSIZE { $$ = 1; oplen = 2; }; + +szbwl: + BSIZE { $$ = 0; oplen = 0; } +| WSIZE { $$ = 1; oplen = 1; } +| LSIZE { $$ = 2; oplen = 2; }; + +szmv: + BSIZE { $$ = 1; oplen = 0; } +| WSIZE { $$ = 3; oplen = 1; } +| LSIZE { $$ = 2; oplen = 2; }; + +szm: + WSIZE { $$ = 3; oplen = 1; } +| LSIZE { $$ = 2; oplen = 2; }; + +reglist: + regs { $$ = $1; } +| regs '/' reglist { $$.x = $1.x | $3.x; $$.d = $1.d | $3.d; }; + +regs: + areg { $$.x = movemx[$1]; $$.d = movemd[$1]; } +| dreg { $$.x = movemx[$1+8]; $$.d = movemd[$1+8]; } +| areg '-' areg { int i,l=$1,h=$3; if (l>h) { l=$3; h=$1; } $$.x = $$.d = 0; + for (i=l; i<=h; i++) { $$.d |= movemx[i]; $$.d |= movemd[i]; } } +| dreg '-' dreg { int i,l=$1,h=$3; if (l>h) { l=$3; h=$1; } $$.x = $$.d = 0; + for (i=l; i<=h; i++) { $$.x |= movemx[i+8]; $$.d |= movemd[i+8]; } } +; + +eama: ea1 | ea2 | ea3 | ea4 | ea5 | ea6 | ea70 | ea72 | ea73 | ea74; +eaa: ea0 | ea1 | ea2 | ea3 | ea4 | ea5 | ea6 | ea70; +ead: ea0 | ea2 | ea3 | ea4 | ea5 | ea6 | ea70 | ea72 | ea73 | ea74; +eaall: ea0 | eama; +eada: ea0 | ea2 | ea3 | ea4 | ea5 | ea6 | ea70; +eadas: eada | easr; +eac: ea2 | ea5 | ea6 | ea70 | ea72 | ea73; +eacai: ea2 | ea3 | ea5 | ea6 | ea70; +eacad: ea2 | ea4 | ea5 | ea6 | ea70; + +ea0: + dreg { $$.ea = $1; $$.cnt = 0; }; +ea1: + areg { $$.ea = 010 | $1; $$.cnt = 0; }; +ea2: + '(' areg ')' { $$.ea = 020 | $2; $$.cnt = 0; }; +ea3: + '(' areg POSTINC { $$.ea = 030 | $2; $$.cnt = 0; }; +ea4: + PREDEC areg ')' { $$.ea = 040 | $2; $$.cnt = 0; }; +ea5: + '(' NUMBER ',' areg ')' { $$.ea = 050 | $4; $$.cnt = 1; $$.arg[0] = $2; }; +ea6: + '(' NUMBER ',' areg ',' dreg szwl ')' + { $$.ea = 060 | $4; $$.cnt = 1; $$.arg[0] = 0x8000 | ($6<<12) | ($7<<11) | ($2 & 0xff); } +| '(' NUMBER ',' areg ',' areg szwl ')' + { $$.ea = 060 | $4; $$.cnt = 1; $$.arg[0] = ($6<<12) | ($7<<11) | ($2 & 0xff); }; +ea70: + '(' NUMBER ')' szwl { if ($4==0) { $$.ea = 070; $$.cnt = 1; $$.arg[0] = $2; } + else { $$.ea = 071; $$.cnt = 2; $$.arg[0] = $2 >> 16; $$.arg[1] = $2 & 0xffff; } } +| '(' NUMBER ')' { int tmp = ($2>>15) & 0x1ffff; if (tmp==0 || tmp==0x1ffff) { $$.ea = 070; $$.cnt = 1; $$.arg[0] = $2; } + else { $$.ea = 070; $$.cnt = 2; $$.arg[0] = $2 >> 16; $$.arg[1] = $2 & 0xffff; } }; +ea72: + '(' NUMBER ',' PC ')' { $$.ea = 072; $$.cnt = 1; $$.arg[0] = $2; } +| NUMBER { $$.ea = 072; $$.cnt = 1; $$.arg[0] = $1; }; +ea73: + '(' NUMBER ',' PC ',' dreg szwl ')' + { $$.ea = 073; $$.cnt = 1; $$.arg[0] = 0x8000 | ($6<<12) | ($7<<11) | ($2 & 0xff); } +| '(' NUMBER ',' PC ',' areg szwl ')' + { $$.ea = 073; $$.cnt = 1; $$.arg[0] = ($6<<12) | ($7<<11) | ($2 & 0xff); }; +ea74: + '#' NUMBER { $$.ea = 074; if (oplen==0) { $$.cnt = 1; $$.arg[0] = $2 & 0xff; } + else if (oplen==1) { $$.cnt = 1; $$.arg[0] = $2 & 0xffff; } + else { $$.cnt = 2; $$.arg[0] = $2 >> 16; $$.arg[1] = $2 & 0xffff; } }; +easr: + CCR { $$.ea = 074; $$.cnt = 0; } +| SR { $$.ea = 074; $$.cnt = 1; }; +%% + +static void yyerror(char* s) +{ + /* do not emit anything, but set error flag */ + yyerrc = 1; +} + +struct _optable { + char* mnem; + int token; +}; + +static struct _optable ops[] = { + { "abcd", ABCD }, { "add", ADD }, { "adda", ADDA }, { "addi", ADDI }, + { "addq", ADDQ }, { "addx", ADDX }, { "and", AND }, { "andi", ANDI }, + { "asl", ASL }, { "asr", ASR }, { "bcc", BCC }, { "bcs", BCS }, + { "beq", BEQ }, { "bge", BGE }, { "bgt", BGT }, { "bhi", BHI }, + { "ble", BLE }, { "bls", BLS }, { "blt", BLT }, { "bmi", BMI }, + { "bne", BNE }, { "bpl", BPL }, { "bvc", BVC }, { "bvs", BVS }, + { "bchg", BCHG }, { "bclr", BCLR }, { "bra", BRA }, { "bset", BSET }, + { "bsr", BSR }, { "btst", BTST }, { "chk", CHK }, { "clr", CLR }, + { "cmp", CMP }, { "cmpa", CMPA }, { "cmpi", CMPI }, { "cmpm", CMPM }, + { "dbcc", DBCC }, { "dbcs", DBCS }, { "dbeq", DBEQ }, { "dbf", DBF }, + { "dbge", DBGE }, { "dbgt", DBGT }, { "dbhi", DBHI }, { "dble", DBLE }, + { "dbls", DBLS }, { "dblt", DBLT }, { "dbmi", DBMI }, { "dbne", DBNE }, + { "dbpl", DBPL }, { "dbt", DBT }, { "dbvc", DBVC }, { "dbvs", DBVS }, + { "divs", DIVS }, { "divu", DIVU }, { "eor", EOR }, { "eori", EORI }, + { "exg", EXG }, { "ext", EXT }, { "illegal",ILLEGAL }, { "jmp", JMP }, + { "jsr", JSR }, { "lea", LEA }, { "link", LINK }, { "lsl", LSL }, + { "lsr", LSR }, { "move", MOVE }, { "movea", MOVEA }, { "movem", MOVEM }, + { "movep", MOVEP }, { "moveq", MOVEQ }, { "muls", MULS }, { "mulu", MULU }, + { "nbcd", NBCD }, { "neg", NEG }, { "negx", NEGX }, { "nop", NOP }, + { "not", NOT }, { "or", OR }, { "ori", ORI }, { "pea", PEA }, + { "reset", RESET }, { "rol", ROL }, { "ror", ROR }, { "roxl", ROXL }, + { "roxr", ROXR }, { "rte", RTE }, { "rtr", RTR }, + { "rts", RTS }, { "scc", SCC }, { "scs", SCS }, { "seq", SEQ }, + { "sf", SF }, { "sge", SGE }, { "sgt", SGT }, { "shi", SHI }, + { "sle", SLE }, { "sls", SLS }, { "slt", SLT }, { "smi", SMI }, + { "sne", SNE }, { "spl", SPL }, { "st", ST }, { "svc", SVC }, + { "svs", SVS }, { "stop", STOP }, { "sub", SUB }, { "suba", SUBA }, + { "subi", SUBI }, { "subq", SUBQ }, { "subx", SUBX }, { "swap", SWAP }, + { "tas", TAS }, { "trap", TRAP }, { "trapv", TRAPV }, { "tst", TST }, + { "unlk", UNLK }, { "a0", A0 }, { "a1", A1 }, { "a2", A2 }, + { "a3", A3 }, { "a4", A4 }, { "a5", A5 }, { "a6", A6 }, + { "a7", A7 }, { "d0", D0 }, { "d1", D1 }, { "d2", D2 }, + { "d3", D3 }, { "d4", D4 }, { "d5", D5 }, { "d6", D6 }, + { "d7", D7 }, { "ccr", CCR }, { "sr", SR }, { "usp", USP }, + { "pc", PC }, + { 0, 0 } +}; + +typedef struct _ophash { + struct _ophash* next; + struct _optable* op; +} OPHASH; +#define OPHASHSIZE 97 + +static OPHASH **ophash = 0; + +static int getophash(const char* s) +{ + int h = 0; + while (*s++) h += (int)*s; + return h % OPHASHSIZE; +} + +static int oplookup(const char* s) +{ + int idx = getophash(s); + OPHASH* oph = ophash[idx]; + if (oph) { + if (oph->next) { + while (oph) { + if (!strcmp(s,oph->op->mnem)) return oph->op->token; + oph = oph->next; + } + return 0; + } + return oph->op->token; + } + return 0; +} + +static void init_ophash() +{ + struct _optable* op = ops; + OPHASH* oph; + ophash = (OPHASH**)calloc(sizeof(OPHASH*),OPHASHSIZE); + while (op->mnem) { + int idx = getophash(op->mnem); + oph = (OPHASH*)malloc(sizeof(OPHASH)); + oph->next = ophash[idx]; + oph->op = op; + ophash[idx] = oph; + op++; + } +} + +static char* yystream; + +int yylex() +{ + char ident[30]; + char *p = ident; + char c = yystream[0]; + + while (c != 0 && (c=='\t' || c==' ')) { + c = *++yystream; + } + if (c==0) return EOF; + + if (isalpha(c)) { + while (isalnum(c) && (p-ident)<28) { + *p++ = tolower(c); c = *++yystream; + } + *p = 0; + if (p>ident) { return oplookup(ident); } + return EOF; + } else if (isdigit(c)) { + *p++ = c; + if (yystream[1]=='x' || yystream[1]=='X') { *p++ = 'x'; yystream++; } + c = *++yystream; + while ((isdigit(c) || isxdigit(c)) && (p-ident)<28) { + *p++ = c; c = *++yystream; + } + *p = 0; + yylval.num = strtol(ident,0,0); + return NUMBER; + } else if (c=='$') { + if (isdigit(yystream[1]) || isxdigit(yystream[1])) { + c = *++yystream; + while ((isdigit(c) || isxdigit(c)) && (p-ident)<28) { + *p++ = c; c = *++yystream; + } + *p = 0; + yylval.num = strtol(ident,0,16); + return NUMBER; + } else return '$'; + } else if (c == '-' && yystream[1] == '(') { + yystream += 2; return PREDEC; + } else if (c == ')' && yystream[1] == '+') { + yystream += 2; return POSTINC; + } else if (c == '.') { + switch (yystream[1]) { + case 'b': yystream += 2; return BSIZE; + case 'w': yystream += 2; return WSIZE; + case 'l': yystream += 2; return LSIZE; + case 's': yystream += 2; return SSIZE; + default: yystream++; return '.'; + } + } else { + ++yystream; return c; + } +} + +static t_value *yyvalptr; +static t_addr yyaddr; + +t_stat parse_sym(char* c, t_addr a, UNIT* u, t_value* val, int32 sw) +{ + char ch; + + if (!ophash) init_ophash(); + + yyvalptr = val; + yyaddr = a; + + yystream = c; + yyerrc = 0; + + ch = *yystream; + while (ch != 0 && (ch=='\t' || ch==' ')) { + ch = *++yystream; + } + if (ch == 0) return 0; + + if (sw & SWMASK('Y')) yydebug = 1 - yydebug; + if ((sw & SWMASK('A')) || ch=='\'') { + if ((ch = yystream[1])) { + val[0] = (uint32)ch; + return SCPE_OK; + } else return SCPE_ARG; + } + if ((sw & SWMASK('C')) || ch=='"') { + if ((ch = yystream[1])) { + val[0] = ((uint32)ch << 8) | (uint32)yystream[1]; + return SCPE_OK; + } else return SCPE_ARG; + } + + yyparse(); + printf("rc=%d\n",yyrc); + if (yyerrc) return SCPE_ARG; + return yyrc; +} + +static int _genop(t_value arg) +{ +// printf("_genop(%x)@%x\n",arg,(int)yyvalptr); + *yyvalptr = arg; + yyvalptr++; + return -1; +} + +static int _genea(struct _ea arg) +{ + int i; + for (i=0; i + +static t_bool symtrace = TRUE; +static void m68k_sim_init(void); +static t_stat hdump_cmd(int32 arg,char* buf); +static t_stat symset_cmd(int32 arg,char* buf); +static t_stat symclr_cmd(int32 arg,char* buf); +static t_stat symlist_cmd(int32 arg,char* buf); +static t_stat symtrace_cmd(int32 arg,char* buf); + +static CTAB m68k_sim_cmds[] = { + {"STEP", &run_cmd, RU_STEP, + "s{tep} {n} simulate n instructions\n" }, + {"HEXDUMP", &hdump_cmd, 0, + "hex{dump} range dump memory\n" }, + {"SYMSET", &symset_cmd, 0, + "syms{et} name=value define symbolic name for disassembler/tracer\n"}, + {"SYMCLR",&symclr_cmd, 0, + "symc{lr} {-a|name} clear symbolic name / all symbolic names\n"}, + {"SYMLIST", &symlist_cmd, 0, + "syml{ist} [name] list symbol table\n"}, + {"SYMTRACE", &symtrace_cmd, 1, + "symt{race} enable symbolic tracing\n"}, + {"NOSYMTRACE", &symtrace_cmd, 0, + "nosymt{race} disable symbolic tracing\n"}, + {0,0,0,0} +}; + +void (*sim_vm_init)(void) = &m68k_sim_init; + +typedef struct _symhash { + struct _symhash* nnext; + struct _symhash* vnext; + char* name; + t_addr val; +} SYMHASH; +#define SYMHASHSIZE 397 + +static SYMHASH *symbyname = 0; +static SYMHASH *symbyval = 0; + +static void sym_clearall(void) +{ + int i; + SYMHASH *p,*n; + + if (!symbyname) return; + for (i=0; innext; + free(n->name); + free(n); + } + symbyname[i].nnext = symbyval[i].vnext = 0; + } + return; +} + +static void m68k_sim_init(void) +{ + int i; + sim_vm_cmd = m68k_sim_cmds; + + sym_clearall(); + symbyname = (SYMHASH*)calloc(sizeof(SYMHASH),SYMHASHSIZE); + symbyval = (SYMHASH*)calloc(sizeof(SYMHASH),SYMHASHSIZE); + for (i=0; iname)) p = p->nnext; + *n = p; + return p != 0; +} + +static t_bool sym_lookupval(t_addr val, SYMHASH **v) +{ + int hash = getvhash(val); + SYMHASH *p = symbyval[hash].vnext; + while (p && p->val != val) p = p->vnext; + *v = p; + return p != 0; +} + +static t_bool sym_enter(const char* name,t_addr val) +{ + int nhash = getnhash(name); + int vhash = getvhash(val); + SYMHASH *v, *n, *e; + + if (sym_lookupname(name,&n) || sym_lookupval(val,&v)) return FALSE; + n = symbyname[nhash].nnext; + v = symbyval[vhash].vnext; + e = (SYMHASH*)malloc(sizeof(SYMHASH)); + e->nnext = n; + e->vnext = v; + e->name = malloc(strlen(name)+1); + strcpy(e->name,name); + e->val = val; + symbyname[nhash].nnext = symbyval[vhash].vnext = e; + return TRUE; +} + +static t_bool sym_delete(const char* name) +{ + int hash = getnhash(name); + SYMHASH *p, *q, **n, **v; + n = &symbyname[hash].nnext; + while ((p = *n) != 0) { + if (!strcmp(p->name,name)) { /*found*/ + hash = getvhash(p->val); + v = &symbyval[hash].vnext; + while ((q = *v) != 0) { + if (q->val == p->val) { /*found*/ + *v = q->vnext; + break; + } + v = &(q->vnext); + } + *n = p->nnext; + free(p->name); + free(p); + return TRUE; + } + } + return FALSE; +} + +static t_stat symset_cmd(int32 arg,char* buf) +{ + char *name,*vstr; + t_addr val; + + if ((name = strtok(buf, "= ")) == 0) return SCPE_2FARG; + if ((vstr = strtok(NULL, " \t\n")) == 0) return SCPE_2FARG; + val = strtol(vstr, 0, 16); + if (!sym_enter(name, val)) + printf("Name or value already exists\n"); + return SCPE_OK; +} + +static t_stat symclr_cmd(int32 arg,char* buf) +{ + char* token; + if (buf[0] == '-' && buf[1]=='a') { + sym_clearall(); + return SCPE_OK; + } else { + token = strtok(buf," \t\n"); + if (!token) return SCPE_2FARG; + return sym_delete(token) ? SCPE_OK : SCPE_ARG; + } +} + +static t_stat symlist_cmd(int32 arg,char* buf) +{ + int i; + SYMHASH* n; + char *name; + t_bool found = FALSE; + + name = strtok(buf," \t\n"); + if (name) { + if (sym_lookupname(name,&n)) + printf(" %s = 0x%08x\n",n->name,n->val); + else + printf("Unknown\n"); + } else { + for (i=0; iname,n->val); + n = n->nnext; + found = TRUE; + } + } + if (!found) printf("Symbol table is empty\n"); + } + return SCPE_OK; +} + +static t_stat symtrace_cmd(int32 arg,char* buf) +{ + if (!*buf) + symtrace = arg ? TRUE : FALSE; + + printf("Symbolic tracing %sabled\n",symtrace ? "en" : "dis"); + return SCPE_OK; +} + +static void putascii(uint32* buf) +{ + int i; + putchar('|'); + for (i=0; i<16; i++) { + if (isprint(buf[i])) putchar(buf[i]); + else putchar('.'); + } + putchar('|'); +} + +static t_stat hdump_cmd(int32 arg, char* buf) +{ + int i; + t_addr low, high, base, top; + char *token; + uint32 byte[16]; + t_bool ascii = FALSE; + t_bool first = TRUE; + + if (buf[0]=='-' && buf[1]=='a') { + ascii = TRUE; + buf += 2; + while (*buf && isspace(*buf)) buf++; + } + memset(byte,0,sizeof(uint32)*16); + + token = strtok(buf,"- \t\n"); + if (!token) return SCPE_2FARG; + low = strtol(token,0,16); + token = strtok(NULL,"- \t\n"); + if (!token) return SCPE_2FARG; + high = strtol(token,0,16); + + base = low - (low % 16); + top = (high + 15) - ((high+15) % 16); + for (; base high) printf(" "); + else { + i = base %16; + if (ReadPB(base,byte+i) != SCPE_OK) printf("?? "); + else printf("%02x ",byte[i] & 0xff); + } + } + if (!first && ascii) putascii(byte); + putchar('\n'); + return SCPE_OK; +} + +char* m68k_getsym(t_addr val,const char* fmt, char* outbuf) +{ + SYMHASH *v; + if (symtrace && sym_lookupval(val,&v)) + return v->name; + else { + sprintf(outbuf,fmt,val); + return outbuf; + } +} + diff --git a/SAGE/m68k_sys.c b/SAGE/m68k_sys.c new file mode 100644 index 00000000..3f07a829 --- /dev/null +++ b/SAGE/m68k_sys.c @@ -0,0 +1,999 @@ +/* m68k_sys.c: assembler/disassembler/misc simfuncs for generic m68k_cpu + + Copyright (c) 2009, Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version + 15-Mar-10 HV fix 2nd arg bug in disassembling btst + 24-Apr-10 HV fix _fsymea for jsr.l + 27-Apr-10 HV fix stop instr + 27-Jun-10 HV improve error handling in Motorola S0 reader + 20-Jul-10 HV fix disassemble error for LINK +*/ + +#include "m68k_cpu.h" +#include +#include + +#if defined(_WIN32) +#include +#else +#include +#endif + +t_stat set_iobase(UNIT *uptr, int32 val, char *cptr, void *desc) +{ + DEVICE* dptr; + PNP_INFO* pnp; + t_stat rc; + uint16 newbase; + + if (!cptr) return SCPE_ARG; + if (!uptr) return SCPE_IERR; + if (!(dptr = find_dev_from_unit(uptr))) return SCPE_IERR; + if (!(pnp = (PNP_INFO*)dptr->ctxt)) return SCPE_IERR; + + newbase = get_uint (cptr, 16, 0xFF, &rc); + if (rc != SCPE_OK) return rc; + + if (dptr->flags & DEV_DIS) { + printf("Device not enabled yet.\n"); + pnp->io_base = newbase; + } else { + dptr->flags |= DEV_DIS; + dptr->reset(dptr); + pnp->io_base = newbase; + dptr->flags &= ~DEV_DIS; + dptr->reset(dptr); + } + return SCPE_OK; +} + +t_stat show_iobase(FILE *st, UNIT *uptr, int32 val, void *desc) +{ + DEVICE *dptr; + PNP_INFO *pnp; + + if (!uptr) return SCPE_IERR; + if (!(dptr = find_dev_from_unit(uptr))) return SCPE_IERR; + if (!(pnp = (PNP_INFO *) dptr->ctxt)) return SCPE_IERR; + + fprintf(st, "I/O=0x%02X-0x%02X", pnp->io_base, pnp->io_base + pnp->io_size - pnp->io_incr); + return SCPE_OK; +} + +t_stat m68k_set_cpu(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + if (value < 0 || value > CPU_TYPE_68030) + return SCPE_ARG; + + cputype = (value & UNIT_CPUTYPE_MASK) >> UNIT_CPU_V_TYPE; + uptr->flags &= ~UNIT_CPUTYPE_MASK; + uptr->flags |= value; + return SCPE_OK; +} + +t_stat m68k_show_cpu(FILE* st,UNIT *uptr, int32 value, void *desc) +{ + fprintf(st,"TYPE=%s",(char*)desc); + return SCPE_OK; +} + +t_stat m68k_alloc_mem() +{ + if (M == NULL) + M = (uint8*)calloc(MEMORYSIZE, 1); + else + M = (uint8*)realloc(M, MEMORYSIZE); + return M == NULL ? SCPE_MEM : SCPE_OK; +} + +t_stat m68k_set_size(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + t_stat rc; + uptr->capac = value; + if ((rc=m68k_alloc_mem()) != SCPE_OK) return rc; + return SCPE_OK; +} + +t_stat m68k_set_fpu(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags |= value; + return SCPE_OK; +} +t_stat m68k_set_nofpu(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags |= value; + return SCPE_OK; +} + +t_stat m68kcpu_set_flag(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags |= value; + return SCPE_OK; +} + +t_stat m68kcpu_set_noflag(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + uptr->flags &= ~value; + return SCPE_OK; +} + + +t_stat m68kcpu_ex(t_value* eval_array, t_addr addr, UNIT* uptr, int32 sw) +{ + uint32 val = 0; + t_stat rc = (sw & SWMASK('V')) ? ReadVW(addr,&val) : ReadPW(addr,&val); + if (rc==SCPE_OK) *eval_array = val; + return rc; +} + +t_stat m68kcpu_dep(t_value value, t_addr addr, UNIT* uptr, int32 sw) +{ + return (sw & SWMASK('V')) ? WriteVW(addr,value) : WritePW(addr,value); +} + +static int getHex(FILE* fptr,int* chksum) +{ + char buf[3]; + int c; + if ((c = fgetc(fptr))==EOF) return EOF; + buf[0] = c; + if ((c = fgetc(fptr))==EOF) return EOF; + buf[1] = c; + buf[2] = 0; + return strtol(buf,0,16); +} + +/* Motorola S-Record reader + * Format: + * type 2 Bytes (S0, S1, S2, S3, S5, S7, S8, S9) + * reclength 2 Bytes + * address 4,6,8 Bytes + * data 0...2n + * checksum 2 Bytes (lsb of 1'comp of fields reclength-data + */ +static t_stat m68k_sread(FILE* fptr) +{ + int typ; + t_addr addr=0, a; + int d, len, chksum, i; + int end = FALSE; + int line = 0; + + fseek(fptr,0l,SEEK_SET); + for(;;) { + while ((i = fgetc(fptr)) == '\r' || i == '\n'); + line++; + if (end && i == EOF) return SCPE_OK; + if (i != 'S') { printf("Line %d: expected S but did not find one (found %x)\n",line,i); return SCPE_FMT; } + + typ = fgetc(fptr); + chksum = 0; + len = getHex(fptr,&chksum); + addr = getHex(fptr,&chksum); + a = getHex(fptr,&chksum); + if (len==EOF || addr==EOF || a==EOF) { typ = 'X'; goto error; } + addr = (addr << 8) | a; + i = 3; + + switch (typ) { + case '0': + for (i=2; i>9)&7) + '0' +#define OPLEN_FIELD(inst) (inst>>6)&3 +#define EA_FIELD(inst) inst&077 +#define EAMOD_FIELD(inst) inst & 070 +#define BWL_CHAR(oplen) (oplen==0) ? 'b' : ((oplen==1) ? 'w' : 'l') +#define DATA_B(x) (x&0xff) +#define DATA_W(x) (x&0xffff) + +static t_stat _fsymea(FILE* of,t_addr addr,int ea, int oplen,t_value* rest) +{ + int eamod = EAMOD_FIELD(ea); + char eareg = REG0_CHAR(ea); + t_value offb = DATA_B(rest[0]); + t_value offw = DATA_W(rest[0]); + t_value offw2 = DATA_W(rest[1]); + char da = (rest[0] & 0x8000)? 'a' : 'd'; + char xreg = ((rest[0]>>12) & 7) + '0'; + char wl = (rest[0] & 0x800) ? 'l' : 'w'; + + switch (eamod) { + case 000: fprintf(of,"d%c",eareg); return 0; + case 010: fprintf(of,"a%c",eareg); return 0; + case 020: fprintf(of,"(a%c)",eareg); return 0; + case 030: fprintf(of,"(a%c)+",eareg); return 0; + case 040: fprintf(of,"-(a%c)",eareg); return 0; + case 050: fprintf(of,"($%x,a%c)",offw,eareg); return -2; + case 060: + if (offb) + fprintf(of,"($%x,a%c,%c%c.%c)",offb,eareg,da,xreg,wl); + else + fprintf(of,"(a%c,%c%c.%c)",eareg,da,xreg,wl); + return -2; + case 070: + switch (eareg) { + case '0': fprintf(of,"($%x).w",(uint32)((uint16)offw)); return -2; + case '1': + if (offw) + fprintf(of,"($%x%04x).l",offw,offw2); + else + fprintf(of,"($%x).l",offw2); + return -4; + case '2': //fprintf(of,"($%x,pc)",offw); + if (offw & 0x8000) offw |= 0xffff0000; + fprintf(of,"$%x",addr+offw+2); + return -2; + case '3': + if (offb) + fprintf(of,"($%x,pc,%c%c.%c)",offb,da,xreg,wl); + else + fprintf(of,"(pc,%c%c.%c)",da,xreg,wl); + return -2; + case '4': + switch(oplen) { + case 0: fprintf(of,"#$%x",offb); return -2; + case 1: fprintf(of,"#$%x",offw); return -2; + case 2: + if (offw) + fprintf(of,"#$%x%04x",offw,offw2); + else + fprintf(of,"#$%x",offw2); + return -4; + case 3: fprintf(of,"ccr"); return 0; + case 4: fprintf(of,"sr"); return 0; + default: return SCPE_ARG; + } + default: return SCPE_ARG; + } + default: return SCPE_ARG; + } +} + +static t_stat _fsymead(FILE* of,int dir,char reg9,t_addr addr,int ea,int oplen,t_value* rest) +{ + int rc; + if (dir) { + fprintf(of,"d%c,",reg9); rc = _fsymea(of,addr,ea,oplen,rest); + } else { + rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); fprintf(of,",d%c",reg9); + } + return rc-1; +} + +static t_stat _fsymimm(FILE* of,int oplen,t_value* rest) +{ + t_value offb = rest[0] & 0xff; + t_value offw = rest[0] & 0xffff; + t_value offw2 = rest[1] & 0xffff; + switch(oplen) { + case 0: fprintf(of,"#$%x",offb); return 1; + case 1: fprintf(of,"#$%x",offw); return 1; + case 2: fprintf(of,"#$%x%04x",offw,offw2); return 2; + default: return SCPE_ARG; + } +} + +static t_stat _fsym0(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + int rc; + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + int bitnum= DATA_B(rest[0]); + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + char* s = 0; + + switch (inst & 000700) { + case 000400: + if (eamod==010) { + fprintf(of,"movep.w $%x(a%c),d%c",rest[0],reg0,reg9); return -3; + } else s = "btst"; + break; + case 000500: + if (eamod==010) { + fprintf(of,"movep.l $%x(a%c),d%c",rest[0],reg0,reg9); return -3; + } else s = "bchg"; + break; + case 000600: + if (eamod==010) { + fprintf(of,"movep.w d%c,$%x(a%c)",reg9,rest[0],reg0); return -3; + } else s = "bclr"; + break; + case 000700: + if (eamod==010) { + fprintf(of,"movep.l d%c,$%x(a%c)",reg9,rest[0],reg0); return -3; + } else s = "bset"; + break; + } + if (s) { + fprintf(of,"%s d%c,",s,reg9); rc = _fsymea(of,addr,ea,3,rest); ONERR_QUIT(); return rc-1; + } + + switch (inst & 007000) { + case 000000: + s = "ori"; break; + case 001000: + s = "andi"; break; + case 002000: + s = "subi"; break; + case 003000: + s = "addi"; break; + case 004000: + switch (inst & 000700) { + case 000000: + s = "btst"; break; + case 000100: + s = "bchg"; break; + case 000200: + s = "bclr"; break; + case 000300: + s = "bset"; break; + default: + return SCPE_ARG; + } + fprintf(of,"%s #%x,",s,bitnum); rc = _fsymea(of,addr,ea,0,rest+1); ONERR_QUIT(); return rc-3; + case 005000: + s = "eori"; break; + case 006000: + s = "cmpi"; break; + default: + return SCPE_ARG; + } + + fprintf(of,"%s.%c ",s,bwl); rc = _fsymimm(of,oplen,rest); ONERR_QUIT(); + fputc(',',of); rc = _fsymea(of,addr,ea,oplen+3,rest+rc); + return rc - 3 - ((oplen==2) ? 2 : 0); +} + +static t_stat _fsym123(FILE* of,t_value inst,t_addr addr,t_value* rest,char w,int oplen) +{ + int rc, rc2; + int eas = inst & 077; + int eat = ((inst>>9)&7)|((inst&0700)>>3); + char *s = ((eat&070)==010) ? "movea" : "move"; + fprintf(of,"%s.%c ",s,w); + rc = _fsymea(of,addr,eas,oplen,rest); ONERR_QUIT(); rc2 = rc; + fputc(',',of); + rc = _fsymea(of,addr,eat,oplen,rest-rc2/2); ONERR_QUIT(); + return rc2 + rc -1; +} + +static char* moveregs[] = { + "d0","d1","d2","d3","d4","d5","d6","d7","a0","a1","a2","a3","a4","a5","a6","a7" +}; +static char* moveregsp[] = { + "a7","a6","a5","a4","a3","a2","a1","a0","d7","d6","d5","d4","d3","d2","d1","d0" +}; + +#define BITEMIT() if (sl) fputc('/',of); sl = 1; \ + if (hi==lo) fprintf(of,"%s",regs[lo]); \ + else if (ispredec) fprintf(of,"%s-%s",regs[hi],regs[lo]); \ + else fprintf(of,"%s-%s",regs[lo],regs[hi]); \ + lo = hi = -1; +#define BITSEQ() bit = regset & 1; regset >>= 1; \ + if (bit && lo == -1) lo = i; \ + if (bit == 0 && lo != -1) { hi = i-1; BITEMIT(); } + +static void _fsymregs(FILE* of, int regset,int ispredec) +{ + int lo, hi, bit, sl, i; + char** regs = ispredec ? moveregsp : moveregs; + +//printf("regset=%x\n",regset); + sl = 0; + bit = lo = hi = -1; + for (i=0; i<8; i++) { BITSEQ(); } + if (lo != -1) { hi = 7; BITEMIT(); } + bit = -1; + for (i=8; i<16; i++) { BITSEQ(); } + if (lo != -1) { hi = 15; BITEMIT(); } +} + +static t_stat _fsym4(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + t_stat rc; + char reg9 = REG9_CHAR(inst); + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + char reg0 = REG0_CHAR(inst); + int oplen = OPLEN_FIELD(inst); + char* s; + + switch (inst & 000700) { + case 000600: + fprintf(of,"chk "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9); return rc-1; + case 000700: + fprintf(of,"lea "); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9); return rc-1; + case 000000: + switch (inst & 007000) { + case 000000: + s = "negx.b "; break; + case 001000: + s = "clr.b "; break; + case 002000: + s = "neg.b "; break; + case 003000: + s = "not.b "; break; + case 004000: + s = "nbcd "; break; + case 005000: + s = "tst.b "; break; + default: + return SCPE_ARG; + } + fputs(s,of); rc = _fsymea(of,addr,ea,0,rest); ONERR_QUIT(); return rc-1; + case 000100: + switch (inst & 007000) { + case 007000: + switch (inst & 000070) { + case 000000: + case 000010: + fprintf(of,"trap #$%x",inst & 0xf); return -1; + case 000020: + fprintf(of,"link a%c,#$%x",reg0,rest[0]); return -3; + case 000030: + fprintf(of,"unlk a%c",reg0); return -1; + case 000040: + fprintf(of,"move a%c,usp",reg0); return -1; + case 000050: + fprintf(of,"move usp,a%c",reg0); return -1; + case 000060: + switch (inst & 000007) { + case 000000: + s = "reset"; break; + case 000001: + s = "nop"; break; + case 000002: + fprintf(of,"stop #%x",DATA_W(rest[0])); return -3; + case 000003: + s = "rte"; break; + case 000005: + s = "rts"; break; + case 000006: + s = "trapv"; break; + case 000007: + s = "rtr"; break; + default: + return SCPE_ARG; + } + fputs(s,of); return -1; + default: + return SCPE_ARG; + } + case 000000: + s = "negx.w "; break; + case 001000: + s = "clr.w "; break; + case 002000: + s = "neg.w "; break; + case 003000: + s = "not.w "; break; + case 005000: + s = "tst.w "; break; + case 004000: + if (eamod==0) { + fprintf(of,"swap d%c",reg0); return -1; + } else { + fputs("pea ",of); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); return rc-1; + } + default: + return SCPE_ARG; + } + fputs(s,of); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); return rc-1; + + case 000200: + switch (inst & 007000) { + case 000000: + s = "negx.l "; break; + case 001000: + s = "clr.l "; break; + case 002000: + s = "neg.l "; break; + case 003000: + s = "not.l "; break; + case 004000: + if (eamod==0) { + fprintf(of,"ext.w d%c",reg0); return -1; + } else { + fprintf(of,"movem.w "); _fsymregs(of,rest[0],eamod==040); + fputc(',',of); rc = _fsymea(of,addr,ea,oplen==2?1:2,rest+1); return rc-3; + } + case 005000: + s = "tst.l "; break; + case 006000: + fprintf(of,"movem.w "); rc = _fsymea(of,addr,ea,oplen==2?1:2,rest+1); + fputc(',',of); _fsymregs(of,rest[0],0); return rc-3; + case 007000: + s = "jsr "; break; + default: + return SCPE_ARG; + } + fputs(s,of); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); return rc-1; + + case 000300: + switch (inst & 007000) { + case 000000: + fprintf(of,"move sr,"); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); return rc-1; + case 003000: + fprintf(of,"move "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); fputs(",sr",of); return rc-1; + case 002000: + fprintf(of,"move "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); fputs(",ccr",of); return rc-1; + case 004000: + if (eamod==0) { + fprintf(of,"ext.l d%c",reg0); return -1; + } else { + fprintf(of,"movem.l "); _fsymregs(of,rest[0],eamod==040); + fputc(',',of); rc = _fsymea(of,addr,ea,oplen==2?1:2,rest+1); return rc-3; + } + case 005000: + switch (inst & 000077) { + case 000074: + fputs("illegal",of); return -1; + default: + fprintf(of,"tas "); rc = _fsymea(of,addr,ea,0,rest); return rc-1; + } + case 006000: + fprintf(of,"movem.l "); rc = _fsymea(of,addr,ea,oplen==2?1:2,rest+1); + fputc(',',of); _fsymregs(of,rest[0],0); return rc-3; + case 007000: + fputs("jmp ",of); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); return rc-1; + default: + return SCPE_ARG; + } + default: + return SCPE_ARG; + } +} + +static char* conds[] = { "ra","sr","hi","ls","cc","cs","ne","eq","vc","vs","pl","mi","ge","lt","gt","le" }; +static char* conds2[] = { "t", "f","hi","ls","cc","cs","ne","eq","vc","vs","pl","mi","ge","lt","gt","le" }; + +static t_stat _fsym5(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + t_stat rc; + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + int reg0 = REG0_CHAR(inst); + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + t_addr a; + + if (oplen==3) { + char* cond = conds2[(inst>>8)&0xf]; + if (eamod==010) { + a = rest[0] & 0xffff; + if (a & 0x8000) a |= 0xffff0000; + //printf("addr=%x a=%x sum=%x\n",addr,a,addr+a+2); + fprintf(of,"db%s d%c,$%x",cond,reg0,addr+a+2); + return -3; + } else { + fprintf(of,"s%s ",cond); rc = _fsymea(of,addr,ea,0,rest); return rc-3; + } + } else { + int data = (inst>>9) & 07; + char *s = (inst & 0x0100) ? "subq" : "addq"; + + if (data==0) data = 8; + fprintf(of,"%s.%c #%d,",s,bwl,data); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); return rc-1; + } + +} +static t_stat _fsym6(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + char* cond = conds[(inst>>8)&0xf]; + t_addr a = inst & 0xff; + if (a) { + if (a & 0x80) a |= 0xffffff00; + fprintf(of,"b%s.s $%x",cond,addr+a+2); return -1; + } else { + a = rest[0] & 0xffff; + if (a & 0x8000) a |= 0xffff0000; + fprintf(of,"b%s.w $%x",cond,addr+a+2); return -3; + } +} + +static t_stat _fsym7(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + int reg9 = REG9_CHAR(inst); + switch (inst & 000400) { + case 000000: + fprintf(of,"moveq #$%x,d%c",(int32)((int8)(inst&0xff)),reg9); return -1; + default: + return SCPE_ARG; + } +} + +static t_stat _fsym8(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + t_stat rc; + int oplen = OPLEN_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + int ea = EA_FIELD(inst); + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + char bwl = BWL_CHAR(oplen); + + switch (inst & 000700) { + case 000000: + case 000100: + case 000200: + fprintf(of,"or.%c ",bwl); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9); return rc-1; + case 000300: + fprintf(of,"divu.w "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9); return rc-1; + case 000400: + switch (eamod) { + case 000: + fprintf(of,"sbcd d%c,d%c",reg0,reg9); return -1; + case 010: + fprintf(of,"sbcd -(a%c),-(a%c)",reg0,reg9); return -1; + default: + fprintf(of,"or.%c d%c,",bwl,reg9); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + return rc-1; + } + case 000500: + case 000600: + fprintf(of,"or.%c d%c,",bwl,reg9); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + return rc-1; + case 000700: + fprintf(of,"divs.w "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9); return rc-1; + } + return SCPE_ARG; /* Not reached, but silence agressive compiler warnings */ +} + +static t_stat _fsym9(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + t_stat rc; + int oplen = OPLEN_FIELD(inst); + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + char bwl = BWL_CHAR(oplen); + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + + switch (inst & 000700) { + case 000000: + case 000100: + case 000200: + fprintf(of,"sub.%c ",bwl); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9);return rc-1; + case 000300: + fprintf(of,"suba.w "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9);return rc-1; + case 000400: + switch (eamod) { + case 000: + fprintf(of,"subx.%c d%c,d%c",bwl,reg9,reg0); return -1; + case 001: + fprintf(of,"subx.%c d%c,d%c",bwl,reg9,reg0); return -1; + default: + fprintf(of,"sub.%c d%c,",bwl,reg9); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); return rc-1; + } + case 000500: + case 000600: + fprintf(of,"sub.%c d%c,",bwl,reg9); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); return rc-1; + case 000700: + fprintf(of,"suba.l "); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9);return rc-1; + default: + return SCPE_ARG; + } +} + +static t_stat _fsyma(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + fprintf(of,"trapa #$%x",inst&0xfff); return -1; +} + +static t_stat _fsymb(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + int rc; + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + + switch (inst & 000700) { + case 000000: + case 000100: + case 000200: + fprintf(of,"cmp.%c ",bwl); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + fprintf(of,",d%c",reg9); return rc-1; + case 000300: + fprintf(of,"cmpa.w "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9); return rc-1; + case 000400: + case 000500: + case 000600: + if (eamod==010) { + fprintf(of,"cmpm.%c (a%c)+,(a%c)+",bwl,reg0,reg9); return -1; + } else { + fprintf(of,"eor.%c d%c,",bwl,reg9); rc = _fsymea(of,addr,ea,oplen,rest); ONERR_QUIT(); + return rc-1; + } + case 000700: + fprintf(of,"cmpa.l "); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9); return rc-1; + default: + return SCPE_ARG; + } +} + +static t_stat _fsymc(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + char reg9 = REG9_CHAR(inst); + int ea = EA_FIELD(inst); + int reg0 = REG0_CHAR(inst); + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + + switch (inst & 0000770) { + case 0000500: + fprintf(of,"exg d%c,d%c",reg9,reg0); return -1; + case 0000510: + fprintf(of,"exg a%c,a%c",reg9,reg0); return -1; + case 0000610: + fprintf(of,"exg d%c,a%c",reg9,reg0); return -1; + case 0000400: + fprintf(of,"abcd d%c,d%c",reg9,reg0); return -1; + case 0000410: + fprintf(of,"abcd -(a%c),-(a%c)",reg9,reg0); return -1; + default: + break; + } + + switch (inst & 0000700) { + case 0000400: + fprintf(of,"and.%c ",bwl); return _fsymead(of,1,reg9,addr,ea,oplen,rest); + case 0000000: + case 0000100: + case 0000200: + fprintf(of,"and.%c ",bwl); return _fsymead(of,0,reg9,addr,ea,oplen,rest); + case 0000300: + fprintf(of,"mulu.w "); return _fsymead(of,0,reg9,addr,ea,1,rest); + case 0000700: + fprintf(of,"muls.w "); return _fsymead(of,0,reg9,addr,ea,1,rest); + default: + return SCPE_ARG; + } +} + +static t_stat _fsymd(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + int rc; + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + int ea = EA_FIELD(inst); + int eamod = EAMOD_FIELD(inst); + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + + switch (inst & 000700) { + case 000000: + case 000100: + case 000200: + fprintf(of,"add.%c ",bwl); return _fsymead(of,0,reg9,addr,ea,oplen,rest); + case 000300: + fprintf(of,"adda.w "); rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9); return rc-1; + case 000400: + switch (eamod) { + case 000: + fprintf(of,"addx.%c d%c,d%c",bwl,reg9,reg0); return -1; + case 001: + fprintf(of,"addx.%c d%c,d%c",bwl,reg9,reg0); return -1; + default: + fprintf(of,"add.%c ",bwl); return _fsymead(of,1,reg9,addr,ea,oplen,rest); + } + case 000500: + case 000600: + fprintf(of,"add.%c ",bwl); return _fsymead(of,1,reg9,addr,ea,oplen,rest); + case 000700: + fprintf(of,"adda.l "); rc = _fsymea(of,addr,ea,2,rest); ONERR_QUIT(); + fprintf(of,",a%c",reg9); return rc-1; + } + return SCPE_ARG; /* Not reached, but silence agressive compiler warnings */ +} + +static t_stat _fsyme(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + int rc; + int oplen = OPLEN_FIELD(inst); + char bwl = BWL_CHAR(oplen); + int op = (oplen==3 ? (inst>>9) : (inst>>3)) & 3; + char dir = (inst&0x100) ? 'l' : 'r'; + int ir = inst & 0x20; + int ea = EA_FIELD(inst); + char reg9 = REG9_CHAR(inst); + char reg0 = REG0_CHAR(inst); + char *s; + + switch (op) { + case 0: s = "as"; break; + case 1: s = "ls"; break; + case 2: s = "rox"; break; + case 3: s = "ro"; break; + default: s = "??"; break; + } + fprintf(of,"%s%c",s,dir); + if (oplen<3) { + fprintf(of,".%c ",bwl); + if (ir) + fprintf(of,"d%c,d%c",reg9,reg0); + else { + if (reg9=='0') reg9 = '8'; + fprintf(of,"#%d,d%c",reg9-'0',reg0); + } + return -1; + } else { + fputc(' ',of); + rc = _fsymea(of,addr,ea,1,rest); ONERR_QUIT(); return rc-1; + } +} + +static t_stat _fsymf(FILE* of,t_value inst,t_addr addr,t_value* rest) +{ + fprintf(of,"trapf #$%x",inst&0xfff); return -1; +} + +t_stat fprint_sym(FILE* of, t_addr addr, t_value* val, UNIT* uptr, int32 sw) +{ + int32 c1, c2, inst; + + c1 = (val[0] >> 8) & 0177; + c2 = val[0] & 0177; + if (sw & SWMASK ('A')) { + fprintf (of, (c2 < 040)? "<%02x>": "%c", c2); + return SCPE_OK; + } + if (sw & SWMASK ('C')) { + fprintf (of, (c1 < 040)? "<%02x>": "%c", c1); + fprintf (of, (c2 < 040)? "<%02x>": "%c", c2); + return -1; + } + if (!(sw & SWMASK ('M'))) return SCPE_ARG; + + inst = val[0]; + switch ((inst>>12) & 0xf) { + case 0x0: return _fsym0(of,inst,addr,val+1); + case 0x1: return _fsym123(of,inst,addr,val+1,'b',0); + case 0x2: return _fsym123(of,inst,addr,val+1,'l',2); + case 0x3: return _fsym123(of,inst,addr,val+1,'w',1); + case 0x4: return _fsym4(of,inst,addr,val+1); + case 0x5: return _fsym5(of,inst,addr,val+1); + case 0x6: return _fsym6(of,inst,addr,val+1); + case 0x7: return _fsym7(of,inst,addr,val+1); + case 0x8: return _fsym8(of,inst,addr,val+1); + case 0x9: return _fsym9(of,inst,addr,val+1); + case 0xa: return _fsyma(of,inst,addr,val+1); + case 0xb: return _fsymb(of,inst,addr,val+1); + case 0xc: return _fsymc(of,inst,addr,val+1); + case 0xd: return _fsymd(of,inst,addr,val+1); + case 0xe: return _fsyme(of,inst,addr,val+1); + case 0xf: return _fsymf(of,inst,addr,val+1); + } + return SCPE_OK; +} diff --git a/SAGE/readme-sage.txt b/SAGE/readme-sage.txt new file mode 100644 index 00000000..52eebb3d --- /dev/null +++ b/SAGE/readme-sage.txt @@ -0,0 +1,91 @@ +This is version 0.5 of a simulator for the SAGE-68K computer. See www.sageandstride.org for details. + +This is called Version 0.5 because it still lacks a few things and has a number of known bugs. + +Features and problems +- currently is at the level of a SAGE-II system with two floppy drives +- Currently runs CP/M-68K 1.2 (IMD-Disk included) +- Console and SIO can be redirected to a telnet session +- does not run UCSD-Pascal yet (in progress) +- does not support IEEE-interface yet (and maybe won't ever - not really useful) +- does not support Winchester operation yet, although BIOS ROMs are included +- m68k_cpu.c has a number of not yet implemented instructions (although sufficient for CP/M-68K!) + (implementation in progress) +- does not yet fully support 68010 CPU (in progress, not needed for Sage, though) +- does not implement 68881 FPU (in progress, not needed for Sage, though) +- has stubs for MMU integration, but does not yet implement one - passthrough (in progress, not needed for Sage, though) + +- still contains some timing bug in floppy operation (timing loop, 8253 emulation, IRQ speed) which + results in rather long floppy recognition time (disk change), after that I/O is at acceptable speed +- probably there is still a bug in console/sio telnet handling when the character buffer + is full (no automatic draining, will be investigated) +- no optimization of simulation speed at all, but runs acceptable with current PCs. +- not yet tested under anything else than MINGW + +Holger Veit, March 2011 + + + +$ BIN/sage + +Sage-II/IV 68k simulator V3.8-2 +sim> show dev +Sage-II/IV 68k simulator configuration + +CPU, BIOS=sage-ii.hex +PIC, I/O=0xFFC041-0xFFC043 +TIMER1, I/O=0xFFC001-0xFFC007 +TIMER2, I/O=0xFFC081-0xFFC087 +DIP, I/O=0xFFC021-0xFFC027, GROUPA=11100111, GROUPB=11111000 +FD, I/O=0xFFC051-0xFFC053, 2 units +CONS, I/O=0xFFC071-0xFFC073, 2 units +SIO, I/O=0xFFC031-0xFFC033, 2 units +LP, I/O=0xFFC061-0xFFC067 +sim> quit +Goodbye +Debug output disabled + +$ cp SAGE/FILES/68k.sim . +$ cp SAGE/FILES/cpm68k12.imd . +$ cp SAGE/sage-ii.hex . +$ BIN/sage 68k.sim + +Sage-II/IV 68k simulator V3.8-2 +Debug output to "debug.log" +Loading boot code from sage-ii.hex + +SAGE II Startup Test [1.2] + +RAM Size = 512K + + Booting from Floppy + +SAGE CP/M-68k Bootstrap v2.1 + +SAGE CP/M-68k v1.2 447K TPA + +A>STARTUP + +A>SETENV TERM TVI950 + +A>SETENV PATH |A0: + +A>dir +A: MINCE SWP : MINCE 68K : CPM SYS : SAGEBIOS SYS : PIP 68K +A: STAT 68K : AR68 68K : LO68 68K : AS68 68K : MIND SUB +A: DDT 68K : SAGE4UTL 68K : INIT 68K : DUMP 68K : COPY 68K +A: DDT68000 68K : P SUB : ASGO SUB : PE SUB : AS SUB +A: LNK SUB : M SUB : ARMATH SUB : FIND 68K : RED SUB +A: SCREEN 68K : MCC SUB : LINKCORE SUB : SETPRNTR 68K : AS68SYMB DAT +A: E SUB : REDASM SUB : CORE SUB : PRINT 68K : SETENV 68K +A: STARTUP SUB : HALT 68K : SPACE SUB : SIG TXT : SPACEM SUB +A: ORBIT SUB : TLNK SUB : BRWNIES TXT +A>stat a: + +A: RW, FREE SPACE: 0K +A>^E +Simulation stopped, PC: 0007C8C4 (stop #2000) +sim>quit +Goodbye +Debug output disabled + diff --git a/SAGE/sage_aux.c b/SAGE/sage_aux.c new file mode 100644 index 00000000..c27e21a6 --- /dev/null +++ b/SAGE/sage_aux.c @@ -0,0 +1,62 @@ +/* sage_aux.c: serial device for sage-II system + + Copyright (c) 2009, Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 12-Oct-09 HV Initial version +*/ + +#include "sage_defs.h" + +static t_stat sageaux_reset(DEVICE* dptr); + +UNIT sageaux_unit[] = { + { UDATA (NULL, UNIT_FIX | UNIT_BINK, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK, 0) } +}; + +REG sageaux_reg[] = { + { NULL } +}; + +static MTAB sageaux_mod[] = { + { 0 } +}; + +DEVICE sageaux_dev = { + "AUX", sageaux_unit, sageaux_reg, sageaux_mod, + 4, 16, 32, 2, 16, 16, + NULL, NULL, &sageaux_reset, + NULL, NULL, NULL, + NULL, DEV_DISABLE|DEV_DIS, 0, + NULL, NULL, NULL +}; + +static t_stat sageaux_reset(DEVICE* dptr) +{ + printf("sageaux_reset\n"); + return SCPE_OK; +} + diff --git a/SAGE/sage_cons.c b/SAGE/sage_cons.c new file mode 100644 index 00000000..decb8e0a --- /dev/null +++ b/SAGE/sage_cons.c @@ -0,0 +1,464 @@ +/* sage_sio.c: serial devices for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 12-Oct-09 HV Initial version + 24-Jul-10 HV Added TMXR code to attach CONS and SIO to network +*/ + +#include "sim_defs.h" +#include "sim_timer.h" +#include "sage_defs.h" +#include "sim_sock.h" +#include "sim_tmxr.h" + +#define SIOPOLL 0 +#define SIOTERM 1 + +#define SIO_POLL_FIRST 1 /* immediate */ +#define SIO_POLL_RATE 100 /* sample 100 times /sec */ +#define SIO_POLL_WAIT 15800 /* about 10ms */ +#define SIO_OUT_WAIT 200 + +static t_stat sio_reset(DEVICE* dptr); +static t_stat sioterm_svc(UNIT*); +static t_stat siopoll_svc(UNIT*); +static t_stat sio_attach(UNIT*,char*); +static t_stat sio_detach(UNIT*); +static t_stat sio_txint(I8251* chip); +static t_stat sio_rxint(I8251* chip); +extern DEVICE sagesio_dev; + +UNIT sio_unit[] = { + { UDATA (&siopoll_svc, UNIT_ATTABLE, 0), SIO_POLL_WAIT }, + { UDATA (&sioterm_svc, UNIT_IDLE, 0), SIO_OUT_WAIT } +}; + +static SERMUX sio_mux = { + SIO_POLL_FIRST, /*pollfirst*/ + SIO_POLL_RATE, /*pollrate*/ + { 0 }, /*ldsc*/ + { 1, 0, 0, 0 }, /*desc*/ + &sio_unit[SIOTERM], /*term_unit*/ + &sio_unit[SIOPOLL] /*poll unit*/ +}; + +static I8251 u58 = { + {0,0,U58_ADDR,4,2}, + &sagesio_dev,NULL,NULL,i8251_reset, + &sio_txint,&sio_rxint, + &sio_unit[SIOPOLL],&sio_unit[SIOTERM], + &sio_mux +}; + +REG sio_reg[] = { + { DRDATA(INIT, u58.init, 3) }, + { HRDATA(MODE, u58.mode, 8) }, + { HRDATA(SYNC1, u58.sync1, 8) }, + { HRDATA(SYNC2, u58.sync2, 8) }, + { HRDATA(CMD, u58.cmd, 8) }, + { HRDATA(IBUF, u58.ibuf, 8) }, + { HRDATA(OBUF, u58.obuf, 8) }, + { HRDATA(STATUS, u58.status, 8) }, + { HRDATA(STATUS, u58.bitmask, 8), REG_HRO }, + { 0 } +}; + +static MTAB sio_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { 0 } +}; + +DEVICE sagesio_dev = { + "SIO", sio_unit, sio_reg, sio_mod, + 2, 16, 32, 2, 16, 16, + NULL, NULL, &sio_reset, + NULL, &sio_attach, &sio_detach, + &u58, DEV_DEBUG, 0, + i8251_dt, NULL, NULL +}; + +static t_stat sioterm_svc(UNIT* uptr) +{ + DEVICE* dptr = find_dev_from_unit(uptr); + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + t_stat rc; + int ch = chip->obuf; + + /* suppress NUL bytes after CR LF */ + switch (ch) { + case 0x0d: + chip->crlf = 1; break; + case 0x0a: + chip->crlf = chip->crlf==1 ? 2 : 0; break; + case 0: + if (chip->crlf==2) goto set_stat; + default: + chip->crlf = 0; + } + + /* TODO? sim_tt_outcvt */ + + /* attached to a telnet port? */ + if (mux->poll->flags & UNIT_ATT) { + if ((rc=tmxr_putc_ln(&mux->ldsc, ch & chip->bitmask)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return SCPE_OK; + } else + tmxr_poll_tx(&mux->desc); + } else { + /* no, use normal terminal output */ + if ((rc=sim_putchar_s(ch & chip->bitmask)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return rc==SCPE_STALL ? SCPE_OK : rc; + } + } +set_stat: + chip->status |= I8251_ST_TXEMPTY; + if (chip->cmd & I8251_CMD_TXEN) { + chip->status |= I8251_ST_TXRDY; + return sio_txint(chip); + } + chip->status &= ~I8251_ST_TXRDY; + return SCPE_OK; +} + +static t_stat siopoll_svc(UNIT* uptr) +{ + int32 c; + DEVICE* dptr = find_dev_from_unit(uptr); + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + + sim_activate(uptr, uptr->wait); /* restart it again */ + + /* network attached? */ + if (mux->poll->flags & UNIT_ATT) { + if (tmxr_poll_conn(&mux->desc) >= 0) /* new connection? */ + mux->ldsc.rcve = 1; + tmxr_poll_rx(&mux->desc); + if (!tmxr_rqln(&mux->ldsc)) return SCPE_OK; + /* input ready */ + c = tmxr_getc_ln(&mux->ldsc); + if ((c & TMXR_VALID)==0) return SCPE_OK; + c &= 0xff; /* extract character */ + } else + return SCPE_OK; + + if (!(chip->cmd & I8251_CMD_RXE)) { /* ignore data if receiver not enabled */ + chip->status &= ~I8251_ST_RXRDY; + return SCPE_OK; + } + + /* got char */ + if (c & SCPE_BREAK) { /* a break? */ + c = 0; + chip->status |= I8251_ST_SYNBRK; + } else + chip->status &= ~I8251_ST_SYNBRK; + + /* TODO? sim_tt_icvt */ + chip->ibuf = c & chip->bitmask; + if (chip->status & I8251_ST_RXRDY) + chip->status |= I8251_ST_OE; + chip->status |= I8251_ST_RXRDY; + return sio_rxint(chip); +} + +static t_stat sio_reset(DEVICE* dptr) +{ + t_stat rc; + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + + if ((rc = (dptr->flags & DEV_DIS) ? + del_iohandler(chip) : + add_iohandler(mux->poll,chip,i8251_io)) != SCPE_OK) return rc; + + u58.reset(&u58); + mux->term->wait = 1000; /* TODO adjust to realistic speed */ + + /* network attached? */ + if (mux->poll->flags & UNIT_ATT) { + mux->poll->wait = mux->pfirst; + sim_activate(mux->poll,mux->poll->wait); /* start poll routine */ + } else + sim_cancel(mux->poll); + sim_cancel(mux->term); + return SCPE_OK; +} + +static t_stat sio_attach(UNIT* uptr, char* cptr) +{ + return mux_attach(uptr,cptr,&sio_mux); +} + +static t_stat sio_detach(UNIT* uptr) +{ + return mux_detach(uptr,&sio_mux); +} + +static t_stat sio_txint(I8251* chip) +{ + TRACE_PRINT0(DBG_UART_IRQ,"Raise TX Interrupt"); + return sage_raiseint(SIOTX_PICINT); +} + +static t_stat sio_rxint(I8251* chip) +{ + TRACE_PRINT0(DBG_UART_IRQ,"Raise RX Interrupt"); + return sage_raiseint(SIORX_PICINT); +} + +/***************************************************************************************************/ + +#define CONSPOLL 0 +#define CONSTERM 1 + +#define CONS_POLL_FIRST 1 /* immediate */ +#define CONS_POLL_RATE 100 /* sample 100 times /sec */ +#define CONS_POLL_WAIT 15800 /* about 10ms */ +#define CONS_OUT_WAIT 200 + +static t_stat cons_reset(DEVICE* dptr); +static t_stat cons_txint(I8251* chip); +static t_stat cons_rxint(I8251* chip); +static t_stat conspoll_svc(UNIT*); +static t_stat consterm_svc(UNIT*); +static t_stat cons_attach(UNIT*,char*); +static t_stat cons_detach(UNIT*); +extern DEVICE sagecons_dev; + +UNIT cons_unit[] = { + { UDATA (&conspoll_svc, UNIT_ATTABLE, 0), CONS_POLL_WAIT }, + { UDATA (&consterm_svc, UNIT_IDLE, 0), CONS_OUT_WAIT } +}; + +static SERMUX cons_mux = { + CONS_POLL_FIRST, + CONS_POLL_RATE, + { 0 }, + { 1, 0, 0, 0 }, + &cons_unit[CONSTERM], + &cons_unit[CONSPOLL] +}; + +static I8251 u57 = { + { 0,0,U57_ADDR,4,2}, + &sagecons_dev,NULL,NULL,&i8251_reset, + &cons_txint,&cons_rxint, + &cons_unit[CONSPOLL],&cons_unit[CONSTERM], + &cons_mux +}; + +REG cons_reg[] = { + { DRDATA(INIT, u57.init, 3) }, + { HRDATA(MODE, u57.mode, 8) }, + { HRDATA(SYNC1, u57.sync1, 8) }, + { HRDATA(SYNC2, u57.sync2, 8) }, + { HRDATA(CMD, u57.cmd, 8) }, + { HRDATA(IBUF, u57.ibuf, 8) }, + { HRDATA(OBUF, u57.obuf, 8) }, + { HRDATA(STATUS, u57.status, 8) }, + { HRDATA(BITS, u57.bitmask,8), REG_HRO }, + { 0 } +}; + +static MTAB cons_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { 0 } +}; + +DEVICE sagecons_dev = { + "CONS", cons_unit, cons_reg, cons_mod, + 2, 16, 32, 2, 16, 16, + NULL, NULL, &cons_reset, + NULL, &cons_attach, &cons_detach, + &u57, DEV_DEBUG, 0, + i8251_dt, NULL, NULL +}; + +static t_stat cons_reset(DEVICE* dptr) +{ + t_stat rc; + int32 wait; + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + + if ((rc = (dptr->flags & DEV_DIS) ? + del_iohandler(chip) : + add_iohandler(mux->poll,chip,&i8251_io)) != SCPE_OK) return rc; + + u57.reset(&u57); + + /* initialize POLL timer */ + wait = mux->poll->wait = CONS_POLL_WAIT; + sim_rtcn_init(wait, TMR_CONS); + + u57.oob = TRUE; /* this is the console */ + sim_activate(mux->poll, wait); + sim_cancel(mux->term); + return SCPE_OK; +} + +/* this service is started when a unit is attached, or characters are available on keyboard */ +static t_stat conspoll_svc(UNIT* uptr) +{ + int32 c, kbdc; + DEVICE* dptr = find_dev_from_unit(uptr); + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + + uptr->wait = sim_rtcn_calb(mux->prate, TMR_CONS); /* calibrate timer */ + sim_activate(uptr, uptr->wait); /* restart it again */ + + kbdc = sim_poll_kbd(); /* check keyboard */ + if (kbdc==SCPE_STOP) return kbdc; /* handle CTRL-E */ + + /* network-redirected input? */ + if (mux->poll->flags & UNIT_ATT) { + if (tmxr_poll_conn(&mux->desc) >= 0) /* incoming connection */ + mux->ldsc.rcve = 1; + + tmxr_poll_rx(&mux->desc); /* poll for input */ + if (!tmxr_rqln(&mux->ldsc)) return SCPE_OK; + /* input ready */ + c = tmxr_getc_ln(&mux->ldsc); + if ((c & TMXR_VALID)==0) return SCPE_OK; + c &= 0xff; /* extract character */ + } else { + c = kbdc; /* use char polled from keyboard instead */ + if (c < SCPE_KFLAG) return c; /* ignore data if not valid */ + } + + if (!(chip->cmd & I8251_CMD_RXE)) { /* ignore data if receiver not enabled */ + chip->status &= ~I8251_ST_RXRDY; + return SCPE_OK; + } + + /* got char */ + if (c & SCPE_BREAK) { /* a break? */ + c = 0; + chip->status |= I8251_ST_SYNBRK; + } else + chip->status &= ~I8251_ST_SYNBRK; + + /* TODO? sim_tt_icvt */ + chip->ibuf = c & chip->bitmask; + if (chip->status & I8251_ST_RXRDY) + chip->status |= I8251_ST_OE; + chip->status |= I8251_ST_RXRDY; + return cons_rxint(chip); +} + +static t_stat consterm_svc(UNIT* uptr) +{ + DEVICE* dptr = find_dev_from_unit(uptr); + I8251* chip = (I8251*)dptr->ctxt; + SERMUX* mux = chip->mux; + t_stat rc; + + int ch = chip->obuf; + + /* suppress NUL bytes after CR LF */ + switch (ch) { + case 0x0d: + chip->crlf = 1; break; + case 0x0a: + chip->crlf = (chip->crlf==1) ? 2 : 0; break; + case 0: + if (chip->crlf==2) goto set_stat; + default: + chip->crlf = 0; + } + + /* TODO? sim_tt_outcvt */ + + /* attached to a telnet port? */ + if (mux->poll->flags & UNIT_ATT) { + if ((rc=tmxr_putc_ln(&mux->ldsc, ch & chip->bitmask)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return SCPE_OK; + } else + tmxr_poll_tx(&mux->desc); + } else { + /* no, use normal terminal output */ + if ((rc=sim_putchar_s(ch & chip->bitmask)) != SCPE_OK) { + sim_activate(uptr, uptr->wait); + return rc==SCPE_STALL ? SCPE_OK : rc; + } + } +set_stat: + chip->status |= I8251_ST_TXEMPTY; + if (chip->cmd & I8251_CMD_TXEN) { + chip->status |= I8251_ST_TXRDY; + return cons_txint(chip); + } + chip->status &= ~I8251_ST_TXRDY; + return SCPE_OK; +} + +static t_stat cons_txint(I8251* chip) +{ + TRACE_PRINT0(DBG_UART_IRQ,"Raise TX Interrupt"); + return sage_raiseint(CONSTX_PICINT); +} + +static t_stat cons_rxint(I8251* chip) +{ + TRACE_PRINT0(DBG_UART_IRQ,"Raise RX Interrupt"); + return m68k_raise_autoint(CONSRX_AUTOINT); +} + +static t_stat cons_attach(UNIT* uptr,char* cptr) +{ + return mux_attach(uptr,cptr,&cons_mux); +} + +static t_stat cons_detach(UNIT* uptr) +{ + return mux_detach(uptr,&cons_mux); +} + +t_stat mux_attach(UNIT* uptr, char* cptr, SERMUX* mux) +{ + t_stat rc; + + mux->desc.ldsc = &mux->ldsc; + if ((rc = tmxr_attach(&mux->desc, uptr, cptr)) == SCPE_OK) { + mux->poll->wait = mux->pfirst; + sim_activate(mux->poll,mux->poll->wait); + } + return rc; +} + +t_stat mux_detach(UNIT* uptr,SERMUX* mux) +{ + t_stat rc = tmxr_detach(&mux->desc, uptr); + mux->ldsc.rcve = 0; + sim_cancel(mux->poll); + sim_cancel(mux->term); + return rc; +} diff --git a/SAGE/sage_cpu.c b/SAGE/sage_cpu.c new file mode 100644 index 00000000..4c5a9eb3 --- /dev/null +++ b/SAGE/sage_cpu.c @@ -0,0 +1,195 @@ +/* sage_cpu.c: CPU simulator for sage-II/IV system + + Copyright (c) 20092010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include "sage_defs.h" + +static t_stat sagecpu_reset(DEVICE* dptr); +static t_stat sagecpu_boot(int unit,DEVICE* dptr); +static t_stat sage_translateaddr(t_addr in,t_addr* out, IOHANDLER** ioh,int rw,int fc,int dma); +static t_stat sage_mem(t_addr addr,uint8** mem); +static t_stat sagecpu_set_bios(UNIT *uptr, int32 value, char *cptr, void *desc); +static t_stat sagecpu_show_bios(FILE *st, UNIT *uptr, int32 val, void *desc); +static uint8* ROM = 0; +static int rom_enable = TRUE; /* LS74 U51 in CPU schematic */ + +extern int32 DR[]; +extern t_addr AR[]; + +#define UNIT_CPU_V_BIOS UNIT_CPU_V_FREE /* has custom BIOS */ +#define UNIT_CPU_BIOS (1 << UNIT_CPU_V_BIOS) + + +#define MAX_ROMSIZE 16384 +#ifdef SAGE_IV +char* biosfile = "sage-iv.hex"; +#else +char* biosfile = "sage-ii.hex"; +#endif + +static MTAB sagecpu_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "BIOS", "BIOS", &sagecpu_set_bios, &sagecpu_show_bios }, + M68KCPU_STDMOD, + { 0 } +}; +UNIT sagecpu_unit = { + UDATA (NULL, UNIT_FIX|UNIT_BINK|CPU_TYPE_68000|UNIT_CPU_EXC|UNIT_CPU_STOP|UNIT_CPU_PRVIO, SAGEMEM) +}; + +#define DBG_CPU_OSCPM DBG_CPU_CUSTOM1 +DEBTAB sagecpu_dt[] = { + { "EXC", DBG_CPU_EXC }, + { "PC", DBG_CPU_PC }, + { "INT", DBG_CPU_INT }, + { "CTRACE", DBG_CPU_CTRACE }, + { "BTRACE", DBG_CPU_BTRACE }, + { "OSCPM", DBG_CPU_OSCPM }, + { NULL, 0 } +}; + +DEVICE sagecpu_dev = { + "CPU", &sagecpu_unit, m68kcpu_reg, sagecpu_mod, + 1, 16, 32, 2, 16, 16, + &m68kcpu_ex, &m68kcpu_dep, &sagecpu_reset, + &sagecpu_boot, NULL, NULL, + NULL, DEV_DEBUG, 0, + sagecpu_dt, NULL, NULL +}; + +static t_stat sagecpu_set_bios(UNIT *uptr, int32 value, char *cptr, void *desc) +{ + FILE* fp; + if (cptr==NULL) return SCPE_ARG; + if ((fp=fopen(cptr,"r"))==0) return SCPE_OPENERR; + fclose(fp); + + biosfile = malloc(strlen(cptr)+1); + strcpy(biosfile,cptr); + + /* enforce reload of BIOS code on next boot */ + if (ROM != 0) free(ROM); + ROM = 0; + return SCPE_OK; +} + +static t_stat sagecpu_show_bios(FILE *st, UNIT *uptr, int32 val, void *desc) +{ + fprintf(st, "BIOS=%s", biosfile); + return SCPE_OK; +} + +t_stat sagecpu_boot(int32 unitno,DEVICE* dptr) +{ + t_stat rc; + + if (!ROM) return SCPE_IERR; + + if (*ROM==0) { + printf("Loading boot code from %s\n",biosfile); + if ((rc = load_cmd(0,biosfile)) != SCPE_OK) return rc; + } + return m68kcpu_boot(unitno,dptr); +} + +/* special logic: capture essential TRAP 8-14 for debugging */ +static void sage_trapcallback(DEVICE* dptr,int trapnum) +{ + if ((dptr->dctrl & DBG_CPU_OSCPM) && sim_deb) { + if (trapnum>=0x08 && trapnum<=0x0e) { + fprintf(sim_deb,"SAGE: TRAP #%x: D0=%x A0=%x\n",trapnum,DR[0],AR[0]); + } + if (trapnum==2) { + fprintf(sim_deb,"SAGE: CPM BDOS #%d D1=0x%x D2=0x%x\n",DR[0]&0xff,DR[1],DR[2]); + } + if (trapnum==3) { + fprintf(sim_deb,"SAGE: CPM BIOS #%d D1=0x%x D2=0x%x\n",DR[0]&0xff,DR[1],DR[2]); + } + } +} + +static t_stat sagecpu_reset(DEVICE* dptr) +{ + t_stat rc; + + /* set CPU pointers */ + m68kcpu_dev = &sagecpu_dev; + m68kcpu_unit = &sagecpu_unit; + + /* redefine memory handlers */ + TranslateAddr = &sage_translateaddr; + Mem = &sage_mem; + + if (!ROM) ROM = (uint8*)calloc(MAX_ROMSIZE,1); + rom_enable = TRUE; + + if ((rc=m68kcpu_reset(dptr)) != SCPE_OK) return rc; + + /* redirect callbacks */ + m68kcpu_trapcallback = &sage_trapcallback; + + return SCPE_OK; +} + +uint8 ioemul[4] = { 0,0,0,0 }; + +/* sage memory */ +static t_stat sage_mem(t_addr addr,uint8** mem) +{ + t_addr a; +// printf("Try to access %x\n",addr); fflush(stdout); + if (rom_enable && addr >= 0 && addr < MAX_ROMSIZE) { /* boot rom mapped to zero page */ + *mem = ROM+addr; + return SCPE_OK; + } + a = addr - 0xfe0000; /* boot rom at normal ROM page */ + if (a >= 0 && a < MAX_ROMSIZE) { + rom_enable = FALSE; + *mem = ROM+a; + return SCPE_OK; + } + a = addr - 0xffc0fe; + if (a >= 0 && a < 2) { /* boot rom diagnostic address: black hole */ + ioemul[0] = ioemul[1] = 0; + *mem = ioemul+a; + return SCPE_OK; + } + a = addr - 0xff0000; + if (a >= 0 && a < 0x10000) { + *mem = ioemul; + return SCPE_OK; + } + if (addr > MEMORYSIZE) return SIM_NOMEM; + return m68k_mem(addr,mem); +} + +t_stat sage_translateaddr(t_addr in,t_addr* out, IOHANDLER** ioh,int rw,int fc,int dma) +{ + static uint32 bptype[] = { R_BKPT_SPC|SWMASK('R'), W_BKPT_SPC|SWMASK('W') }; + t_addr ma = in & addrmask; + if (sim_brk_summ && sim_brk_test(ma, bptype[rw])) return STOP_IBKPT; + return m68k_translateaddr(in,out,ioh,rw,fc,dma); +} diff --git a/SAGE/sage_defs.h b/SAGE/sage_defs.h new file mode 100644 index 00000000..61e42288 --- /dev/null +++ b/SAGE/sage_defs.h @@ -0,0 +1,152 @@ +/* sage_defs.h: simulator header file for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 10-Jan-10 HV Defines for certain chip bits/registers + 04-Oct-09 HV Initial version +*/ + +#ifndef SAGE_DEFS_H_ +#define SAGE_DEFS_H_ + +#include "sim_defs.h" +#include "m68k_cpu.h" + +/* don't define this yet, won't work */ +#undef SAGE_IV + +#define UNIT_CPU_V_ROM UNIT_CPU_V_FREE /* has switchable ROM */ +#define UNIT_CPU_ROM (1 << UNIT_CPU_V_ROM) + +#define SAGEMEM (128*1024) + +#define ROMBASE 0xfe0000 /* base address of ROM */ +#ifdef SAGE_IV +#define ROMSIZE 0x004000 /* size of ROM (4K words) */ +#else +#define ROMSIZE 0x002000 /* size of ROM (4K words) */ +#endif + +/* simh timers */ +#define TMR_RTC1 0 +#define TMR_RTC2 1 +#define TMR_CONS 2 +#define TMR_INT 3 + +/* definitions for certain chips */ +#include "chip_defs.h" + +/* PIC base address */ +#define U73_ADDR 0xffc041 +extern t_stat sage_raiseint(int level); /* sage specific interrupt handler */ + +/* 8255 for dip switches and floppy control */ +#define U22_ADDR 0xffc021 +extern uint32 *u22_portc; /* exposed for use by FD device */ +#define U22C_FRES 0x80 +#define U22C_PCRMP 0x40 +#define U22C_MOT 0x20 +#define U22C_SL1 0x10 +#define U22C_SL0 0x08 +#define U22C_FDIE 0x04 +#define U22C_RDY 0x02 +#define U22C_TC 0x01 + +/* 8253 timer units */ +#define U75_ADDR 0xffc001 +#define U74_ADDR 0xffc081 +#define TIMER2C0_PICINT 6 +#define TIMER2C2_PICINT 0 + +/* FDC */ +#define U21_ADDR 0xffc051 +extern I8272 u21; +#define FDC_AUTOINT 6 + +/* LP port */ +#define U39_ADDR 0xffc061 +#define LP_PICINT 5 +#define SI_PICINT 7 + +#define U39B_FDI 0x01 +#define U39B_WP 0x02 +#define U39B_RG 0x04 +#define U39B_CD 0x08 +#define U39B_BUSY 0x10 +#define U39B_PAPER 0x20 +#define U39B_SEL 0x40 +#define U39B_FAULT 0x80 +#define U39C_PRES 0x01 +#define U39C_SC 0x02 +#define U39C_SI 0x04 +#define U39C_LEDR 0x08 +#define U39C_STROBE 0x10 +#define U39C_PRIME 0x20 +#define U39C_RCNI 0x40 +#define U39C_RMI 0x80 + + +/* SIO port */ +#define U58_ADDR 0xffc031 +#define SIORX_PICINT 1 +#define SIOTX_PICINT 3 + +/* CONS port */ +#define U57_ADDR 0xffc071 +#define CONSRX_AUTOINT 5 +#define CONSTX_PICINT 2 + +/* unimplemented */ +#define IEEEBASE 0xffc011 /* IEEE-488 interface (TMS9914) */ + +/* winchester board: not yet */ +#define S2651d 0xffc401 /* aux serial 4 */ +#define S2651d_DATA (S2651d+0) /* RW data port aux 4 */ +#define S2651d_STATUS (S2651d+2) /* R status aux 4 */ +#define S2651d_MODE (S2651d+4) /* W mode aux 4 */ +#define S2651d_CTRL (S2651d+6) /* W mode aux 4 */ + +#define S2651c 0xffc441 /* aux serial 3 */ +#define S2651c_DATA (S2651c+0) /* RW data port aux 3 */ +#define S2651c_STATUS (S2651c+2) /* R status aux 3 */ +#define S2651c_MODE (S2651c+4) /* W mode aux 3 */ +#define S2651c_CTRL (S2651c+6) /* W mode aux 3 */ + +#define S2651b 0xffc481 /* aux serial 2 */ +#define S2651b_DATA (S2651b+0) /* RW data port aux 2 */ +#define S2651b_STATUS (S2651b+2) /* R status aux 2 */ +#define S2651b_MODE (S2651b+4) /* W mode aux 2 */ +#define S2651b_CTRL (S2651b+6) /* W mode aux 2 */ + +#define S2651a 0xff4c1 /* aux serial 1 */ +#define S2651a_DATA (S2651a+0) /* RW data port aux 1 */ +#define S2651a_STATUS (S2651a+2) /* R status aux 1 */ +#define S2651a_MODE (S2651a+4) /* W mode aux 1 */ +#define S2651a_CTRL (S2651a+6) /* W mode aux 1 */ + +/* must be included at the end */ +#include "m68k_cpu.h" + +#endif + diff --git a/SAGE/sage_fd.c b/SAGE/sage_fd.c new file mode 100644 index 00000000..76c58046 --- /dev/null +++ b/SAGE/sage_fd.c @@ -0,0 +1,139 @@ +/* sage_fd.c: Floppy device for sage-II system + + Copyright (c) 2009,2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include "sage_defs.h" + +static t_stat sagefd_reset(DEVICE* dptr); +static t_stat sagefd_boot(int32 unit_num,DEVICE* dptr); +static void sagefd_seldrv(I8272* chip,int drvnum); +static void sagefd_interrupt(I8272* chip,int delay); +extern DEVICE sagefd_dev; +static t_stat fdcint_svc(UNIT*); + +/* this is the FDC chip */ +I8272 u21 = { + { 0, 0, U21_ADDR, 4, 2 }, + &sagefd_dev, + NULL, NULL, &i8272_reset, &sagefd_seldrv, &sagefd_interrupt +}; + +UNIT sagefd_unit[] = { + { UDATA (&fdcint_svc, UNIT_FIX + UNIT_ATTABLE + UNIT_DISABLE + UNIT_ROABLE, I8272_CAPACITY), 58200 }, + { UDATA (&fdcint_svc, UNIT_FIX + UNIT_ATTABLE + UNIT_DISABLE + UNIT_ROABLE, I8272_CAPACITY), 58200 } +}; + +REG sagefd_reg[] = { + { NULL } +}; + +static MTAB sagefd_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { UNIT_I8272_WLK, 0, "WRTENB", "WRTENB", NULL }, + { UNIT_I8272_WLK, UNIT_I8272_WLK, "WRTLCK", "WRTLCK", NULL }, + { UNIT_I8272_VERBOSE, 0, "QUIET", "QUIET", NULL }, + { UNIT_I8272_VERBOSE, UNIT_I8272_VERBOSE, "VERBOSE", "VERBOSE", NULL }, + { 0 } +}; + +DEVICE sagefd_dev = { + "FD", sagefd_unit, sagefd_reg, sagefd_mod, + 2, 16, 32, 2, 16, 16, + NULL, NULL, &sagefd_reset, + &sagefd_boot, &i8272_attach, &i8272_detach, + &u21, (DEV_DISABLE|DEV_DEBUG), 0, + i8272_dt, NULL, NULL +}; + +static void sagefd_seldrv(I8272* chip,int drvnum) +{ + /* this routine defeats the standard drive select in i8272.c + * which interprets the US0/US1 bits of various commands. + * Sage uses 8255 portc bits for that, and always leaves + * US0/US1 = 0, despite which drive is selected. + * The actual code to select drives is in sage_stddev.c in u22callc() + */ + return; +} + +static t_stat sagefd_reset(DEVICE* dptr) +{ + t_stat rc; + I8272* chip = (I8272*)dptr->ctxt; + + /* fixup device link */ + i8272_dev = dptr; + + rc = (dptr->flags & DEV_DIS) ? /* Disconnect I/O Ports */ + del_iohandler((void*)chip) : + add_iohandler(&sagefd_unit[0],(void*)chip,i8272_io); + if (rc != SCPE_OK) return rc; + return (*chip->reset)(chip); +} + +static t_stat fdcint_svc(UNIT* unit) +{ +#if DBG_MSG==1 + I8272* chip; + DEVICE* dptr; + if (!unit) return -1; + dptr = find_dev_from_unit(unit); + if (!dptr) return -1; + chip = (I8272*)dptr->ctxt; +#endif + if (*u22_portc & U22C_FDIE) { + TRACE_PRINT0(DBG_FD_IRQ,"FDCINT_SVC: deliver interrupt"); + m68k_raise_autoint(FDC_AUTOINT); + + } else { + TRACE_PRINT0(DBG_FD_IRQ,"FDCINT_SVC: int not granted"); + } + return SCPE_OK; +} + + +static t_stat sagefd_boot(int32 unit_num,DEVICE* dptr) +{ + printf("sagefd_boot\n"); + return SCPE_OK; +} + +static void sagefd_interrupt(I8272* chip,int delay) +{ + TRACE_PRINT0(DBG_FD_IRQ,"SAGEFD_INT: request interrupt"); + sim_activate(&sagefd_unit[0],delay); +} + +/* dummy routines for i8272 - sage does not use DMA */ +void PutByteDMA(uint32 addr, uint8 data) +{ +} + +uint8 GetByteDMA(uint32 addr) +{ + return 0; +} diff --git a/SAGE/sage_hd.c b/SAGE/sage_hd.c new file mode 100644 index 00000000..f5c267a2 --- /dev/null +++ b/SAGE/sage_hd.c @@ -0,0 +1,84 @@ +/* sage_fd.c: Harddisk device for sage-II system + + Copyright (c) 2009, Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 12-Oct-09 HV Initial version +*/ + +#include "sage_defs.h" + +static t_stat sagehd_reset(DEVICE* dptr); +static t_stat sagehd_boot(int32 unit_num,DEVICE* dptr); +static t_stat sagehd_attach(UNIT* uptr, char* file); +static t_stat sagehd_detach(UNIT* uptr); + + +UNIT sagehd_unit[] = { + { UDATA (NULL, UNIT_FIX | UNIT_BINK | UNIT_DISABLE | UNIT_ROABLE, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK | UNIT_DISABLE | UNIT_DIS | UNIT_ROABLE, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK | UNIT_DISABLE | UNIT_DIS | UNIT_ROABLE, 0) }, + { UDATA (NULL, UNIT_FIX | UNIT_BINK | UNIT_DISABLE | UNIT_DIS | UNIT_ROABLE, 0) } +}; + +REG sagehd_reg[] = { + { NULL } +}; + +/* +static MTAB sagehd_mod[] = { + { NULL } +}; +*/ +DEVICE sagehd_dev = { + "HD", sagehd_unit, sagehd_reg, /*sagehd_mod*/NULL, + 4, 16, 32, 2, 16, 16, + NULL, NULL, &sagehd_reset, + &sagehd_boot, &sagehd_attach, &sagehd_detach, + NULL, DEV_DISABLE|DEV_DIS, 0, + NULL, NULL, NULL +}; + +static t_stat sagehd_reset(DEVICE* dptr) +{ + printf("sagehd_reset\n"); + return SCPE_OK; +} + +static t_stat sagehd_boot(int32 unit_num,DEVICE* dptr) +{ + printf("sagehd_boot\n"); + return SCPE_OK; +} + +static t_stat sagehd_attach(UNIT* uptr, char* file) +{ + printf("sagehd_attach\n"); + return SCPE_OK; +} + +static t_stat sagehd_detach(UNIT* uptr) +{ + printf("sagehd_detach\n"); + return SCPE_OK; +} diff --git a/SAGE/sage_ieee.c b/SAGE/sage_ieee.c new file mode 100644 index 00000000..3db6512e --- /dev/null +++ b/SAGE/sage_ieee.c @@ -0,0 +1,62 @@ +/* sage_ieee.c: IEEE 488 device for Sage-II-system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 12-Oct-09 HV Initial version +*/ + +/* N O T Y E T I M P L E M E N T E D ! ! ! */ +#include "sage_defs.h" + +#if 0 +static t_stat sageieee_reset(DEVICE* dptr); + +UNIT sageieee_unit = { + UDATA (NULL, UNIT_FIX | UNIT_BINK, 0) +}; + +REG sageieee_reg[] = { + { NULL } +}; + +static MTAB sageieee_mod[] = { + { 0 } +}; + +DEVICE sageieee_dev = { + "IEEE", &sageieee_unit, sageieee_reg, sageieee_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sageieee_reset, + NULL, NULL, NULL, + NULL, DEV_DISABLE|DEV_DIS, 0, + NULL, NULL, NULL +}; + +static t_stat sageieee_reset(DEVICE* dptr) +{ + printf("sageieee_reset\n"); + return SCPE_OK; +} + +#endif diff --git a/SAGE/sage_lp.c b/SAGE/sage_lp.c new file mode 100644 index 00000000..02b301bb --- /dev/null +++ b/SAGE/sage_lp.c @@ -0,0 +1,247 @@ +/* sage_lp.c: Printer device for sage-II system + + Copyright (c) 2009, Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include "sage_defs.h" + +#define UNIT_V_OFFLINE (UNIT_V_UF + 0) /* unit offline */ +#define UNIT_OFFLINE (1 << UNIT_V_OFFLINE) + +static t_stat sagelp_reset(DEVICE* dptr); +static t_stat sagelp_attach(UNIT *uptr, char *cptr); +static t_stat sagelp_detach(UNIT *uptr); +static t_stat sagelp_output(UNIT *uptr); +static t_stat u39_reset(I8255* chip); +static t_stat u39_calla(I8255* chip,int rw); +static t_stat u39_callb(I8255* chip,int rw); +static t_stat u39_callc(I8255* chip,int rw); +static t_stat u39_ckmode(I8255* chip,uint32 data); +extern DEVICE sagelp_dev; + +/* The LP Centronics device in sage is implemented by a 8255 with the following settings: + * port A output data + * port B input status from printer, and from misc devices + * B0 Floppy interrupt flag + * B1 Floppy write protect flag + * B2 Modem ringing indicator + * B3 Modem carrier detect + * B4 Printer BUSY flag + * B5 Printer PAPER flag + * B6 Printer SELECT flag (on/offline) + * B7 Printer FAULT flag + * port C lower half output control for misc devices + * C0 Parity error reset + * C1 IEEE enable + * C2 Interrupt level 7 + * C3 activity LED + * port C upper half input status from printers + * C4 printer STROBE flag + * C5 printer PRIME flag + * C6 printer ACK INT clear + * C7 modem Ringing/Carrier INT clear (MI) + */ + +static I8255 u39 = { + { 0,0,U39_ADDR,8,2}, + &sagelp_dev, + i8255_write,i8255_read,u39_reset,u39_calla,u39_callb,u39_callc,u39_ckmode +}; + +UNIT sagelp_unit = { + UDATA (NULL, UNIT_SEQ|UNIT_ATTABLE|UNIT_TEXT, 0), SERIAL_OUT_WAIT +}; + +REG sagelp_reg[] = { + { HRDATA(PORTA, u39.porta, 8) }, + { HRDATA(PORTB, u39.portb, 8) }, + { HRDATA(PORTC, u39.portc, 8) }, + { HRDATA(CTRL, u39.ctrl, 8) }, + { GRDATA (BUF, sagelp_unit.buf, 16, 8, 0) }, + { DRDATA (POS, sagelp_unit.pos, T_ADDR_W), PV_LEFT }, + { NULL } +}; + +static MTAB sagelp_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { UNIT_OFFLINE, UNIT_OFFLINE, "offline", "OFFLINE", NULL }, + { UNIT_OFFLINE, 0, "online", "ONLINE", NULL }, + { 0 } +}; + +DEBTAB sagelp_dt[] = { + { "WRA", DBG_PP_WRA }, + { "RDB", DBG_PP_RDB }, + { "RDC", DBG_PP_RDC }, + { "WRC", DBG_PP_WRC }, + { "WRMODE", DBG_PP_MODE }, + { NULL, 0 } +}; + +DEVICE sagelp_dev = { + "LP", &sagelp_unit, sagelp_reg, sagelp_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sagelp_reset, + NULL, &sagelp_attach, &sagelp_detach, + &u39, (DEV_DISABLE|DEV_DEBUG), 0, + sagelp_dt, NULL, NULL +}; + +t_stat sagelp_reset(DEVICE* dptr) +{ + t_stat rc; + if ((rc = (dptr->flags & DEV_DIS) ? /* Disconnect I/O Ports */ + del_iohandler(dptr->ctxt) : + add_iohandler(&sagelp_unit,dptr->ctxt,i8255_io)) != SCPE_OK) return rc; + + return u39.reset(&u39); +} + +/* we don't accept any mode and combination that a 8255 can do, because + * u39 is hardwired to porta=output, portb=input and portc=output + */ + +static t_stat u39_calla(I8255* chip, int rw) +{ + if (rw) { + sagelp_unit.buf = chip->porta; + TRACE_PRINT1(DBG_PP_WRA,"WR PortA = 0x%x",chip->porta); + } + return SCPE_OK; +} + +static t_stat u39_callb(I8255* chip, int rw) +{ + if (rw==0) { /* only when reading port */ + /* propagate FDC Write Protect */ + int portb = 0; + I8272_DRIVE_INFO* dip = &u21.drive[u21.fdc_curdrv]; + if (dip->uptr && (dip->uptr->flags & UNIT_I8272_WLK)) { + portb |= U39B_WP; + TRACE_PRINT1(DBG_PP_RDB,"RD PortB: WP+=%d",(portb&U39B_WP)?1:0); + } + + /* propagate FDC interrupt */ + if (u21.irqflag) { + portb |= U39B_FDI; + TRACE_PRINT0(DBG_PP_RDB,"RD PortB: FDI+=1"); + } else { + TRACE_PRINT0(DBG_PP_RDB,"RD PortB: FDI+=0"); + } + chip->portb = portb; + } + return SCPE_OK; +} + +static t_stat u39_callc(I8255* chip,int rw) +{ + if (rw==1) { + if (I8255_FALLEDGE(portc,U39C_STROBE)) { + sagelp_output(&sagelp_unit); + TRACE_PRINT1(DBG_PP_RDC,"RD PortC: STROBE-=%d",chip->portc&U39C_STROBE?1:0); + } + if (I8255_RISEEDGE(portc,U39C_SI)) { +/* printf("rising edge on SI: PC=%x!\n",PCX);*/ + TRACE_PRINT1(DBG_PP_RDC,"RD PortC: SI+=%d",chip->portc&U39C_SI?1:0); + sage_raiseint(SI_PICINT); + } + } + return SCPE_OK; +} + +static t_stat u39_ckmode(I8255* chip,uint32 data) +{ + TRACE_PRINT1(DBG_PP_MODE,"WR Mode: 0x%x",data); + + /* BIOS initializes port A as input, later LP is initialized to output */ + if (!(data==0x82 || data==0x92)) { + /* hardwired: + * d7=1 -- mode set flag + * d6=0 -+ group a mode 0: basic I/O + * d5=0 -+ + * d4=0 -- port a = output / input + * d3=0 -- port c upper = output + * d2=0 -- group b mode 0: basic I/O + * d1=1 -- port b = input + * d0=0 -- port c lower = output + */ + printf("u39_ckmode: unsupported ctrl=0x%02x\n",data); + return STOP_IMPL; + } + chip->portc = 0; /* reset port */ + return SCPE_OK; +} + +static t_stat u39_reset(I8255* chip) +{ + sagelp_unit.buf = 0; + sim_cancel (&sagelp_unit); + return SCPE_OK; +} + +static t_stat sagelp_attach (UNIT *uptr, char *cptr) +{ + t_stat rc; + rc = attach_unit(uptr, cptr); + if ((sagelp_unit.flags & UNIT_ATT) == 0) + u39.portb |= U39B_PAPER; /* no paper */ + + return rc; +} + +static t_stat sagelp_detach (UNIT *uptr) +{ + u39.portb |= U39B_PAPER; /* no paper */ + return detach_unit (uptr); +} + +static t_stat sagelp_output(UNIT *uptr) +{ + if ((uptr->flags & UNIT_ATT)==0) { + u39.portb |= U39B_PAPER; /* unattached means: no paper */ + return SCPE_UNATT; + } else if (uptr->flags & UNIT_OFFLINE) { + u39.portb &= ~U39B_SEL; /* offline means: SEL = 0 */ + return STOP_OFFLINE; + } + u39.portb &= ~U39B_PAPER; /* has paper */ + u39.portb |= U39B_SEL; /* is online */ + u39.portb |= U39B_FAULT; /* no fault */ + u39.portb &= ~U39B_BUSY; /* not busy */ + if ((u39.portc & U39C_STROBE)==0) { /* strobe presented */ + fputc (uptr->buf & 0177, uptr->fileref); /* put out char */ + if (ferror (uptr->fileref)) { + perror ("LP I/O error"); + clearerr (uptr->fileref); + return SCPE_IOERR; + } + sagelp_unit.pos = ftell(uptr->fileref); /* update pos */ + u39.portc |= U39C_STROBE; /* XXX reset strobe directly */ + sage_raiseint(LP_PICINT); + return SCPE_OK; + } + return SCPE_OK; +} diff --git a/SAGE/sage_stddev.c b/SAGE/sage_stddev.c new file mode 100644 index 00000000..ac1f0629 --- /dev/null +++ b/SAGE/sage_stddev.c @@ -0,0 +1,633 @@ +/* sage_stddev.c: Standard devices for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include "sim_defs.h" +#include "m68k_cpu.h" +#include "sage_defs.h" + +/*********************************************************************************** + * 8259-5 interrupt controller + * + * IRQ output hardwired to Interrupt Priority Level 1 in the Sage + * Level 2: from external bus (wired to HDC board, AUX devices) + * Level 3: from external bus + * Level 4: IEEE 488 Interrupt U6 + * Level 5: Console Uart U67 Receiver Interrupt + * Level 6: FDI floppy controller + * Level 7: nonmaskable RAM parity error (not possible in simh) + * + * hardwired inputs: + * IR0 = Output 2 of U74 real time clock + * IR1 = Modem Uart U58 Receiver Interrupt + * IR2 = Console Uart U67 Transmitter Interrupt + * IR3 = Modem Uart U58 Receiver Interrupt + * IR4 = Modem Carrier Detect Interrupt U38 + * IR5 = LP Port Acknowledge U39/U38 + * IR6 = Output 0 of U74 real time clock + * IR7 = Output C2 of U39 + * + * Notes: + * INTA- is hardwired to VCC, so vectoring is not possible + * SP- is hardwired to VCC, so buffered mode is not possible, and device is a master. + * CAS0-2 lines are open, no need to handle + * UCSD bios and boot prom do not program the PIC for rotating priorities, + * so effectively prio is always 7. + * + **********************************************************************************/ +extern DEVICE sagepic_dev; +static t_stat sagepic_reset(DEVICE* dptr); +static I8259 u73 = { {0,0,U73_ADDR,4,2}, + &sagepic_dev,NULL,NULL,i8259_reset +}; + +UNIT sagepic_unit = { + UDATA (NULL, UNIT_IDLE, 0) +}; + +REG sagepic_reg[] = { + { DRDATA(STATE, u73.state, 8) }, + { HRDATA(IRR, u73.irr, 8) }, + { HRDATA(IMR, u73.imr, 8) }, + { HRDATA(ISR, u73.isr, 8) }, + { HRDATA(ICW1, u73.icw1, 8) }, + { HRDATA(ICW2, u73.icw2, 8) }, + { HRDATA(ICW4, u73.icw4, 8) }, + { HRDATA(OCW2, u73.prio, 3) }, + { NULL } +}; + +static MTAB sagepic_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { 0 } +}; + +DEVICE sagepic_dev = { + "PIC", &sagepic_unit, sagepic_reg, sagepic_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sagepic_reset, + NULL, NULL, NULL, + &u73, DEV_DEBUG, 0, + i8259_dt, NULL, NULL +}; + +static t_stat sagepic_reset(DEVICE* dptr) +{ + t_stat rc; + if ((rc = (dptr->flags & DEV_DIS) ? + del_iohandler(dptr->ctxt) : + add_iohandler(&sagepic_unit,dptr->ctxt,i8259_io)) != SCPE_OK) return rc; + return u73.reset(&u73); +} + +t_stat sage_raiseint(int level) +{ + return i8259_raiseint(&u73,level); +} + +/****************************************************************************************************** + * DIP switches at the back panel. + * + * In the technical manual, switches are layed out 12345678 left to right, + * but here seen as two HEX digits 8765 4321, i.e. 0xc0 is bit 8 and bit 7 set on + * + * a "d" (down) means switch is off or "0", and a "u" (up) means switch is on or "1" + * + * Note that programatically dip switches are port a and b of the onboard 8255 U22 + * which also through port c serves part of the FDC signals + * + * group-a: + * 8 7 6 5 4 3 2 1 + * | | | | | d d d--- 19,2K baud + * | | | | | d d u--- 9600 baud + * | | | | | d u d--- 4800 baud + * | | | | | d u u--- 2400 baud + * | | | | | u d d--- 1200 baud + * | | | | | u d u--- 600 baud + * | | | | | u u d--- 300 baud + * | | | | | u u u--- reserved + * | | | | d--------- even parity + * | | | | u--------- parity disabled + * | | d d----------- boot to debugger + * | | d u----------- boot to floppy 0 + * | | u d----------- boot to harddisk 0 partition 0 + * | | u u----------- reserved + * | d--------------- 96 tpi drive + * | u--------------- 48 tpi drive + * x----------------- reserved + * + * group-b: + * 8 7 6 5 4 3 2 1 + * | | | +-+-+-+-+--- device talk and listen address + * | | u------------- enable talk + * | | d------------- disable talk + * | u--------------- enable listen + * | d--------------- disable listen + * u----------------- 2 consecutive addresses + * d----------------- 1 address + */ + +#if defined(SAGE_IV) + uint32 groupa = 0xd7; /* used by cons device, 19k2, no parity, boot floppy 0 */ + uint32 groupb = 0xf8; /* used by ieee device */ +#else + uint32 groupa = 0xe7; /* used by cons device, 19k2, no parity, boot winchester 0 */ + uint32 groupb = 0xf8; /* used by ieee device */ +#endif + +static t_stat sagedip_reset(DEVICE* dptr); +static t_stat set_groupa(UNIT *uptr, int32 val, char *cptr, void *desc); +static t_stat show_groupa(FILE *st, UNIT *uptr, int32 val, void *desc); +static t_stat set_groupb(UNIT *uptr, int32 val, char *cptr, void *desc); +static t_stat show_groupb(FILE *st, UNIT *uptr, int32 val, void *desc); +static t_stat u22_reset(I8255* chip); +static t_stat u22_calla(I8255* chip,int rw); +static t_stat u22_callb(I8255* chip,int rw); +static t_stat u22_callc(I8255* chip,int rw); +static t_stat u22_ckmode(I8255* chip,uint32 data); + +extern DEVICE sagedip_dev; +static I8255 u22 = { + { 0,0,U22_ADDR,8,2 }, + &sagedip_dev,i8255_write,i8255_read,u22_reset,u22_calla,u22_callb,u22_callc,u22_ckmode +}; +uint32* u22_portc = &u22.portc; /* this is used in the FD device as well, but whole 8255 is handled here */ + +UNIT sagedip_unit = { + UDATA (NULL, UNIT_IDLE, 0) +}; + +REG sagedip_reg[] = { + { HRDATA(PORTA, u22.porta, 8) }, + { HRDATA(PORTB, u22.portb, 8) }, + { HRDATA(PORTC, u22.portc, 8) }, + { HRDATA(CTRL, u22.ctrl, 8) }, + { NULL } +}; + +static MTAB sagedip_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { MTAB_XTD|MTAB_VDV, 0, "GROUPA", "GROUPA", &set_groupa, &show_groupa, NULL }, + { MTAB_XTD|MTAB_VDV, 0, "GROUPB", "GROUPB", &set_groupb, &show_groupb, NULL }, + { 0 } +}; + +/* Debug Flags */ +DEBTAB sagedip_dt[] = { + { "RDA", DBG_PP_RDA }, + { "RDB", DBG_PP_RDB }, + { "WRC", DBG_PP_WRC }, + { "WRMODE", DBG_PP_MODE }, + { NULL, 0 } +}; + +DEVICE sagedip_dev = { + "DIP", &sagedip_unit, sagedip_reg, sagedip_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sagedip_reset, + NULL, NULL, NULL, + &u22, DEV_DEBUG, 0, + sagedip_dt, NULL, NULL +}; + +static t_stat sagedip_reset(DEVICE* dptr) +{ + t_stat rc; + + if ((rc = (dptr->flags & DEV_DIS) ? /* Disconnect I/O Ports */ + del_iohandler(dptr->ctxt) : + add_iohandler(&sagedip_unit,dptr->ctxt,i8255_io)) != SCPE_OK) return rc; + + /* clear 8255 ctrl register */ + return u22.reset(&u22); +} + +static t_stat set_gr(char* cptr, uint32* sw) +{ + int i; + char c; + + if (!cptr) return SCPE_ARG; + + *sw = 0; + for (i=0; *cptr && i<8; i++) { + c = *cptr++; + *sw <<= 1; + if (c=='1') *sw |= 1; + else if (c=='0') continue; + else if (c==0) break; + else return SCPE_ARG; + } + return SCPE_OK; +} + +static t_stat set_groupa(UNIT *uptr, int32 val, char *cptr, void *desc) +{ + return set_gr(cptr,&groupa); +} + +static t_stat set_groupb(UNIT *uptr, int32 val, char *cptr, void *desc) +{ + return set_gr(cptr,&groupb); +} + +static t_stat show_gr(FILE* st, char* prefix, uint32 gr) +{ + int i; + fputs(prefix, st); + for (i = 0x80; i > 0; i = i >> 1) + fprintf(st,"%c", gr&i ? '1' : '0'); + return SCPE_OK; +} + +static t_stat show_groupa(FILE *st, UNIT *uptr, int32 val, void *desc) +{ + return show_gr(st, "GROUPA=", groupa); +} + +static t_stat show_groupb(FILE *st, UNIT *uptr, int32 val, void *desc) +{ + return show_gr(st, "GROUPB=", groupb); +} + +static t_stat u22_reset(I8255* chip) +{ + chip->ctrl = 0; + chip->portc = 0; + return SCPE_OK; +} + +extern I8272 u21; + +static t_stat u22_calla(I8255* chip,int rw) +{ + if (rw==0) { + chip->porta = groupa & 0xff; + TRACE_PRINT1(DBG_PP_RDA,"WR PortA: 0x%x",groupa); + } + return SCPE_OK; +} + +static t_stat u22_callb(I8255* chip,int rw) +{ + if (rw==0) { + chip->portb = groupb & 0xff; + TRACE_PRINT1(DBG_PP_RDA,"WR PortB: 0x%x",groupb); + } + return SCPE_OK; +} + +/* callback handler for FDC bits */ +static t_stat u22_callc(I8255* chip,int rw) +{ + /* bit0: TC+ positive enforce that internal data counter of FDC is reset + * bit1: RDY+ positive enable the FDC + * bit2: FDIE+ positive enable FDC interrupt (handled directly by reading portc in sage_fd.c) + * bit3: SL0- negative select of drive 0 + * bit4: SL1- negative select of drive 1 + * bit5: MOT- negative switch on drive motor (ignored) + * bit6: PCRMP- negative precompensation (ignored) + * bit7: FRES+ positive FDC reset + */ + + if (I8255_ISSET(portc,U22C_TC)) { /* TC+ */ + i8272_finish(&u21); /* terminate a read/write in progress */ + } + if (I8255_ISCLR(portc,U22C_RDY)) { /* RDY+ */ + i8272_abortio(&u21); /* abort current op */ + } + if (I8255_ISCLR(portc,U22C_SL0)) { /* SL0- */ + u21.fdc_curdrv = 0; + } else if (I8255_ISCLR(portc,U22C_SL1)) { /* SL1- */ + u21.fdc_curdrv = 1; + } else if (I8255_ISSET(portc,U22C_SL0|U22C_SL1)) { /* deselect drives */ + u21.fdc_curdrv = 0; + } + if (I8255_ISSET(portc,U22C_FRES)) { /* FRES+ */ + i8272_reset(&u21); + } + TRACE_PRINT(DBG_PP_WRC,(sim_deb,"PORTC Flags: %s%s%s%s%s%s%s%s", + I8255_ISSET(portc,U22C_TC)?"TC ":"", + I8255_ISSET(portc,U22C_RDY)?"RDY ":"", + I8255_ISSET(portc,U22C_FDIE)?"FDIE ":"", + I8255_ISSET(portc,U22C_SL0)?"":"SL0 ", + I8255_ISSET(portc,U22C_SL1)?"":"SL1 ", + I8255_ISSET(portc,U22C_MOT)?"":"MOT ", + I8255_ISSET(portc,U22C_PCRMP)?"":"PCRMP ", + I8255_ISSET(portc,U22C_FRES)?"FRES ":"")); + return SCPE_OK; +} + +static t_stat u22_ckmode(I8255* chip, uint32 data) +{ + /* hardwired: + * d7=1 -- mode set flag + * d6=0 -+ group a mode 0: basic I/O + * d5=0 -+ + * d4=1 -- porta = input + * d3=0 -- portc upper = output + * d2=0 -- group b mode 0: basic I/O + * d1=1 -- portb = input + * d0=0 -- portc lower = output + */ + TRACE_PRINT1(DBG_PP_MODE,"WR Mode: 0x%x",data); + if (data != 0x92) { + printf("u22_ckmode: unsupported ctrl=0x%02x\n",data); + return STOP_IMPL; + } + return SCPE_OK; +} + +/*********************************************************************************** + * Two 8553 timers U75 (TIMER1) and U74 (TIMER2) + * Each contain three 8/16 bit timers + * In the sage hardwired in the following way: + * + * +---------+ + * 615kHz--+->|Timer1 C1|---> Baud ser0 + * | +---------+ + * +->|Timer1 C2|---> Baud ser1 + * +---------+ + * +---------+ +---------+ + * 64kHz---+->|Timer1 C0|--->|Timer2 C0|--> PIC IR6 + * | |div 64000| |mode0 | + * | +---------+ +---------+ + * | +---------+ +---------+ + * +->|Timer2 C1|--->|Timer2 C2|--> PIC IR0 + * | | | | + * +---------+ +---------+ + * + * NOT UNITS: Timer1 C1 and C2 are programmed in mode 2 as clock dividers for the USARTs + * In this emulation we allow programming them, but since they don't produce interrupts, + * their work is ignored. + * + * Timer1 C0 and timer2 C0 form a clock divider which produces an interrupt at PIC level 6 + * Likewise, timer2 C1 and timer2 C2 form a clock divider which produces an interrupt at PIC level 0 + * + * Typically, the first one in cascade is programmed in mode 2, the second one in mode 0. + * Timer1 C0 is explicitly programmed as a divider by 64k, so that it feeds timer2 C0 + * with a 1Hz clock. + * + * The way the timers are hardwired makes certain mode settings impossible: all GATE + * inputs are set to VCC, so MODE1 and MODE5 are impossible, and MODE4 becomes a + * variant of MODE0. MODE3 is used by the baudrate generators. The timers may run in + * 8 bit mode, but analysis of existing BIOS code (BOOT PROM and UCSD BIOS) uncovered + * they are used in 16 bit mode only. + * So, this implementation only contains the most likely usages, and the other ones have + * to be added when there is a necessity. + * + * Notes on actual implementation: + * Since we know the input clocks, we have just to take care about the division factors + * stored in T1C0 and T2C1. Whenever one of these timers are read out, the actual count + * has to be calculated on the fly. The actual cnt registers only hold the count factors + * programmed, but are never counted down, as, in the case of the 64kHz clock this would + * mean to trigger sim_* events 64000 times a second. + * + ***********************************************************************************/ + +/************************************************************************************ + * timer 1 + ***********************************************************************************/ +static t_stat sagetimer1_reset(DEVICE* dptr); +static t_stat timer1_svc(UNIT* uptr); +static t_stat u75_ckmode(I8253* chip, uint32 data); +static t_stat u75_call0(I8253* chip,int addr, uint32* value); + +static t_stat sagetimer2_reset(DEVICE* dptr); +static t_stat timer2_svc(UNIT* uptr); +static t_stat u74_ckmode(I8253* chip, uint32 data); +static t_stat u74_call1(I8253* chip,int addr, uint32* value); + +extern DEVICE sagetimer1_dev; +extern DEVICE sagetimer2_dev; + +/* forward timer 2 */ +UNIT sagetimer2_unit = { + UDATA (&timer2_svc, UNIT_IDLE, 0) +}; + +static I8253 u74 = { {0,0,U74_ADDR,8,2}, + &sagetimer2_dev,&sagetimer2_unit,i8253_reset,u74_ckmode, + { { 0, }, { u74_call1, }, { 0, } } +}; + +/* timer 1 */ +UNIT sagetimer1_unit = { + UDATA (&timer1_svc, UNIT_IDLE, 1) +}; + +static I8253 u75 = { {0,0,U75_ADDR,8,2}, + &sagetimer1_dev,&sagetimer1_unit,i8253_reset,u75_ckmode, + { { u75_call0, }, { 0, }, { 0, } } +}; + +REG sagetimer1_reg[] = { + { HRDATA(INIT, u75.init, 8), REG_HRO }, + { HRDATA(STATE0,u75.cntr[0].state, 8),REG_HRO }, + { HRDATA(STATE1,u75.cntr[1].state, 8),REG_HRO }, + { HRDATA(STATE2,u75.cntr[2].state, 8),REG_HRO }, + { HRDATA(MODE0, u75.cntr[0].mode, 8) }, + { HRDATA(MODE1, u75.cntr[1].mode, 8) }, + { HRDATA(MODE2, u75.cntr[2].mode, 8) }, + { HRDATA(CNT0, u75.cntr[0].count, 16) }, + { HRDATA(CNT1, u75.cntr[1].count, 16) }, + { HRDATA(CNT2, u75.cntr[2].count, 16) }, + { HRDATA(LATCH0,u75.cntr[0].latch, 16) }, + { HRDATA(LATCH1,u75.cntr[1].latch, 16) }, + { HRDATA(LATCH2,u75.cntr[2].latch, 16) }, + { HRDATA(DIV0, u75.cntr[0].divider, 16),REG_HRO }, + { HRDATA(DIV1, u75.cntr[1].divider, 16),REG_HRO }, + { HRDATA(DIV2, u75.cntr[2].divider, 16),REG_HRO }, + { NULL } +}; + +static MTAB sagetimer1_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { 0 } +}; + +DEVICE sagetimer1_dev = { + "TIMER1", &sagetimer1_unit, sagetimer1_reg, sagetimer1_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sagetimer1_reset, + NULL, NULL, NULL, + &u75, DEV_DEBUG, 0, + i8253_dt, NULL, NULL +}; + +static t_stat sagetimer1_reset(DEVICE* dptr) +{ + t_stat rc; + if (!(rc = (dptr->flags & DEV_DIS) ? + del_iohandler(dptr->ctxt) : + add_iohandler(&sagetimer1_unit,dptr->ctxt,i8253_io)) != SCPE_OK) return rc; + return u75.reset(&u75); +} + +static t_stat timer1_svc(UNIT* uptr) +{ + int32 wait; + I8253CNTR* t1c0 = &u75.cntr[0]; + I8253CNTR* t2c0 = &u74.cntr[0]; + +// fprintf(sim_deb,"TIMER1: timer1_svc called T1C0=%d T2C0=%d\n",t1c0->count,t2c0->count); + /* we call this service 64000 times a second to decrement counter T1C0. + * When T1C0 reaches 0, it will decrement T2C0 */ + t1c0->count--; + if (t1c0->count <= 0) { + /* reload from divider */ + t1c0->count = t1c0->divider; + /* decrement T2C0 counter and raise interrupt 6 if counter is zero */ + if (t2c0->count == 0) { + sage_raiseint(TIMER2C0_PICINT); +// printf("timer1 heartbeat\n"); + t2c0->count = 65536; + } + t2c0->count--; + } + + /* adjust timing */ + wait = sim_rtcn_calb(64000,TMR_RTC1); + sim_activate(u75.unit,wait); /* 64000 ticks per second */ + return SCPE_OK; +} + +static t_stat u75_ckmode(I8253* chip,uint32 mode) +{ + /* @TODO check valid modes */ + return SCPE_OK; +} + +static t_stat u75_call0(I8253* chip,int rw,uint32* value) +{ + if (rw==1) { + I8253CNTR* cntr = &chip->cntr[0]; + if ((cntr->mode & I8253_BOTH) && (cntr->state & I8253_ST_MSBNEXT)) { + sim_cancel(chip->unit); + return SCPE_OK; /* not fully loaded yet */ + } else { + /* start the CK0 clock at 64000Hz */ + sim_activate(chip->unit,sim_rtcn_init(64000,TMR_RTC1)); /* use timer1 C0 for this clock */ + } + } + return SCPE_OK; +} + + +/************************************************************************************ + * timer 2 + ***********************************************************************************/ + +REG sagetimer2_reg[] = { + { HRDATA(INIT, u74.init, 8), REG_HRO }, + { HRDATA(STATE0,u74.cntr[0].state, 8),REG_HRO }, + { HRDATA(STATE1,u74.cntr[1].state, 8),REG_HRO }, + { HRDATA(STATE2,u74.cntr[2].state, 8),REG_HRO }, + { HRDATA(MODE0, u74.cntr[0].mode, 8) }, + { HRDATA(MODE1, u74.cntr[1].mode, 8) }, + { HRDATA(MODE2, u74.cntr[2].mode, 8) }, + { HRDATA(CNT0, u74.cntr[0].count, 16) }, + { HRDATA(CNT1, u74.cntr[1].count, 16) }, + { HRDATA(CNT2, u74.cntr[2].count, 16) }, + { HRDATA(LATCH0,u74.cntr[0].latch, 16) }, + { HRDATA(LATCH1,u74.cntr[1].latch, 16) }, + { HRDATA(LATCH2,u74.cntr[2].latch, 16) }, + { HRDATA(DIV0, u74.cntr[0].divider, 16),REG_HRO }, + { HRDATA(DIV1, u74.cntr[1].divider, 16),REG_HRO }, + { HRDATA(DIV2, u74.cntr[2].divider, 16),REG_HRO }, + { NULL } +}; + +static MTAB sagetimer2_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "IO", "IO", &set_iobase, &show_iobase, NULL }, + { 0 } +}; + +DEVICE sagetimer2_dev = { + "TIMER2", &sagetimer2_unit, sagetimer2_reg, sagetimer2_mod, + 1, 16, 32, 2, 16, 16, + NULL, NULL, &sagetimer2_reset, + NULL, NULL, NULL, + &u74, DEV_DEBUG, 0, + i8253_dt, NULL, NULL +}; + +static t_stat sagetimer2_reset(DEVICE* dptr) +{ + t_stat rc; + if ((rc = (dptr->flags & DEV_DIS) ? + del_iohandler(dptr->ctxt) : + add_iohandler(&sagetimer2_unit,dptr->ctxt,i8253_io)) != SCPE_OK) return rc; + return u74.reset(&u74); +} + +static t_stat u74_ckmode(I8253* chip,uint32 mode) +{ + /* @TODO check valid modes */ + return SCPE_OK; +} + +static t_stat u74_call1(I8253* chip,int rw,uint32* value) +{ + if (rw==1) { + I8253CNTR* cntr = &chip->cntr[1]; + if ((cntr->mode & I8253_BOTH) && (cntr->state & I8253_ST_MSBNEXT)) { + sim_cancel(chip->unit); + return SCPE_OK; /* not fully loaded yet */ + } else { + /* start the CK0 clock at 64000Hz */ + sim_activate(chip->unit,sim_rtcn_init(64000,TMR_RTC1)); /* use timer1 C0 for this clock */ + } + } + return SCPE_OK; +} + +static t_stat timer2_svc(UNIT* uptr) +{ + int32 wait; + I8253CNTR* t2c1 = &u74.cntr[1]; + I8253CNTR* t2c2 = &u74.cntr[2]; + + /* we call this service 64000 times a second to decrement counter T2C1. + * When T2C1 reaches 0, it will decrement T2C2 */ + t2c1->count--; + if (t2c1->count <= 0) { + /* reload from divider */ + t2c1->count = t2c1->divider; + /* decrement T2C2 counter and raise interrupt 0 if counter is zero */ + if (t2c2->count == 0) { +// printf("timer2 heartbeat\n"); + sage_raiseint(TIMER2C2_PICINT); + } + t2c2->count--; + } + + /* adjust timing */ + wait = sim_rtcn_calb(64000,TMR_RTC1); + sim_activate(u74.unit,wait); /* 64000 ticks per second */ + return SCPE_OK; +} diff --git a/SAGE/sage_sys.c b/SAGE/sage_sys.c new file mode 100644 index 00000000..c4eee9d9 --- /dev/null +++ b/SAGE/sage_sys.c @@ -0,0 +1,71 @@ +/* sage_sys.c: SYS definitions for sage-II system + + Copyright (c) 2009-2010 Holger Veit + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + Holger Veit BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Holger Veit et al shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Holger Veit et al. + + 04-Oct-09 HV Initial version +*/ + +#include +#include "sage_defs.h" + +extern DEVICE sagecpu_dev; +extern DEVICE sagepic_dev; +extern DEVICE sagetimer1_dev; +extern DEVICE sagetimer2_dev; +extern DEVICE sagedip_dev; +extern DEVICE sagefd_dev; +extern DEVICE sagecons_dev; +extern DEVICE sagesio_dev; +extern DEVICE sagelp_dev; +#if 0 +extern DEVICE sageieee_dev; +#endif +#ifdef SAGE_IV +extern DEVICE sagehd_dev; +extern DEVICE sageaux_dev; +#endif + +char sim_name[] = "Sage-II/IV 68k"; + +REG *sim_PC = &m68kcpu_reg[18]; +int sim_emax = SIM_EMAX; +DEVICE *sim_devices[] = { + &sagecpu_dev, + &sagepic_dev, + &sagetimer1_dev, + &sagetimer2_dev, + &sagedip_dev, + &sagefd_dev, + &sagecons_dev, + &sagesio_dev, + &sagelp_dev, +#if 0 + &sageieee_dev, +#endif +#ifdef SAGE_IV + &sagehd_dev, + &sageaux_dev, +#endif + NULL +}; diff --git a/Visual Studio Projects/PDQ3.vcproj b/Visual Studio Projects/PDQ3.vcproj new file mode 100644 index 00000000..577c290a --- /dev/null +++ b/Visual Studio Projects/PDQ3.vcproj @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Visual Studio Projects/SAGE.vcproj b/Visual Studio Projects/SAGE.vcproj new file mode 100644 index 00000000..04db9e2f --- /dev/null +++ b/Visual Studio Projects/SAGE.vcproj @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Visual Studio Projects/Simh.sln b/Visual Studio Projects/Simh.sln index e48fc6bb..58927e55 100644 --- a/Visual Studio Projects/Simh.sln +++ b/Visual Studio Projects/Simh.sln @@ -109,6 +109,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alpha", "alpha.vcproj", "{1 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sigma", "sigma.vcproj", "{7DDB6DF6-3837-4DE3-80D7-63181195021F}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sage", "SAGE.vcproj", "{9D0DAC36-2C75-41CD-905C-93B2F5ADF9E2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PDQ3", "PDQ3.vcproj", "{D4F5761A-B543-40ED-9892-12A0255C2B6D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -271,6 +275,14 @@ Global {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Debug|Win32.Build.0 = Debug|Win32 {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Release|Win32.ActiveCfg = Release|Win32 {7DDB6DF6-3837-4DE3-80D7-63181195021F}.Release|Win32.Build.0 = Release|Win32 + {9D0DAC36-2C75-41CD-905C-93B2F5ADF9E2}.Debug|Win32.ActiveCfg = Debug|Win32 + {9D0DAC36-2C75-41CD-905C-93B2F5ADF9E2}.Debug|Win32.Build.0 = Debug|Win32 + {9D0DAC36-2C75-41CD-905C-93B2F5ADF9E2}.Release|Win32.ActiveCfg = Release|Win32 + {9D0DAC36-2C75-41CD-905C-93B2F5ADF9E2}.Release|Win32.Build.0 = Release|Win32 + {D4F5761A-B543-40ED-9892-12A0255C2B6D}.Debug|Win32.ActiveCfg = Debug|Win32 + {D4F5761A-B543-40ED-9892-12A0255C2B6D}.Debug|Win32.Build.0 = Debug|Win32 + {D4F5761A-B543-40ED-9892-12A0255C2B6D}.Release|Win32.ActiveCfg = Release|Win32 + {D4F5761A-B543-40ED-9892-12A0255C2B6D}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/alpha/alpha_defs.h b/alpha/alpha_defs.h index 4ea2a7c8..6f1ee907 100644 --- a/alpha/alpha_defs.h +++ b/alpha/alpha_defs.h @@ -28,14 +28,14 @@ Alpha Program Office. */ -#ifndef ALPHA_DEFS_H_ -#define ALPHA_DEFS_H_ 0 +#ifndef _ALPHA_DEFS_H_ +#define _ALPHA_DEFS_H_ 0 #include "sim_defs.h" #include #if defined (__GNUC__) -#define INLINE +#define INLINE inline #else #define INLINE #endif diff --git a/makefile b/makefile index 12135e16..65533098 100644 --- a/makefile +++ b/makefile @@ -1097,7 +1097,6 @@ TX0 = ${TX0D}/tx0_cpu.c ${TX0D}/tx0_dpy.c ${TX0D}/tx0_stddev.c \ ${TX0D}/tx0_sys.c ${TX0D}/tx0_sys_orig.c ${DISPLAYL} TX0_OPT = -I ${TX0D} $(DISPLAY_OPT) - SSEMD = SSEM SSEM = ${SSEMD}/ssem_cpu.c ${SSEMD}/ssem_sys.c SSEM_OPT = -I ${SSEMD} @@ -1122,6 +1121,19 @@ ALPHA = ${ALPHAD}/alpha_500au_syslist.c ${ALPHAD}/alpha_cpu.c \ ${ALPHAD}/alpha_mmu.c ${ALPHAD}/alpha_sys.c ALPHA_OPT = -I ${ALPHAD} -DUSE_ADDR64 -DUSE_INT64 +SAGED = SAGE +SAGE = ${SAGED}/sage_cpu.c ${SAGED}/sage_sys.c ${SAGED}/sage_stddev.c \ + ${SAGED}/sage_cons.c ${SAGED}/sage_fd.c ${SAGED}/sage_lp.c \ + ${SAGED}/m68k_cpu.c ${SAGED}/m68k_mem.c ${SAGED}/m68k_scp.c \ + ${SAGED}/m68k_parse.tab.c ${SAGED}/m68k_sys.c \ + ${SAGED}/i8251.c ${SAGED}/i8253.c ${SAGED}/i8255.c ${SAGED}/i8259.c ${SAGED}/i8272.c +SAGE_OPT = -I ${SAGED} -DHAVE_INT64 -DUSE_SIM_IMD + +PDQ3D = PDQ-3 +PDQ3 = ${PDQ3D}/pdq3_cpu.c ${PDQ3D}/pdq3_sys.c ${PDQ3D}/pdq3_stddev.c \ + ${PDQ3D}/pdq3_mem.c ${PDQ3D}/pdq3_debug.c ${PDQ3D}/pdq3_fdc.c +PDQ3_OPT = -I ${PDQ3D} -DUSE_SIM_IMD + # # Build everything (not the unsupported/incomplete simulators) @@ -1404,3 +1416,15 @@ ${BIN}alpha${EXE} : ${ALPHA} ${SIM} ${MKDIRBIN} ${CC} ${ALPHA} ${SIM} ${ALPHA_OPT} $(CC_OUTSPEC) ${LDFLAGS} +sage : ${BIN}sage${EXE} + +${BIN}sage${EXE} : ${SAGE} ${SIM} + ${MKDIRBIN} + ${CC} ${SAGE} ${SIM} ${SAGE_OPT} $(CC_OUTSPEC) ${LDFLAGS} + +pdq3 : ${BIN}pdq3${EXE} + +${BIN}pdq3${EXE} : ${PDQ3} ${SIM} + ${MKDIRBIN} + ${CC} ${PDQ3} ${SIM} ${PDQ3_OPT} $(CC_OUTSPEC) ${LDFLAGS} +