wwwwwwwwwx wwwwwwwwwp wpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwww wwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwx wwwwwwwwwwwwwx wwwwwwwwwwwwwx wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwp wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwp wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwww wwwwwww wwwwwww wwwwwww wwwwwwwp wwwwwwp wwwwwww wwwwwwwp wwwwwww wwwwwwp wwwwwww wwwwwwwp wwwwwww wwwwwwp cursorUp CursorDown CDBSE&File &Open... Ctrl+O &Save Ctrl+S Save &As... saveas &Import... import &Export... export Print Set&up... printsetup &Print Pages... Ctrl+P printpages Prin&t Report... printreport Send &Mail... sendmail &Run... E&xit Alt+F4 &Edit &Undo Ctrl+Z Cu&t Ctrl+X &Copy Ctrl+C &Paste Ctrl+V paste C&lear Del clear Select &All Shift+F9 selectall Select Pa&ge Shift+F12 selectpage &Size to Page F11 sizetopage F&ind... F5 Re&place... replace Aut&hor F3 author &Text &Character... F6 character &Paragraph... F7 paragraph &Regular Ctrl+Space regular &Bold Ctrl+B &Italic Ctrl+I italic &Underline Ctrl+U underline Stri&keout Ctrl+K strikeout Superscrip&t/Subscript superscriptSubscript &Normal Script normalscript Su&bscript Ctrl+L subscript Su&perscript Ctrl+Shift+L superscript &Show Hotwords F9 showhotwords &Page &Next Alt+Right &Previous Alt+Left previous &First Alt+Up first &Last Alt+Down &Back Shift+F2 &History... Ctrl+F2 history N&ew Page Ctrl+N newpage &Help &Contents F1 contents Status &Bar F12 statusbar MustRunPrepare klinkRechnerDLL eDataView dezimal doAnimate InitRechner SetTextOnly RegisterA DatenAdressen NegativeFlag RegisterB RegisterP RegisterAS Adressen CarryFlag KYsetText ZeroFlag update RegisterI update SetTextOnly RechnerProgramHandle interner Fehler: unknown DataMode hexadezimal !vGetError dezimal SetDataMode DataFormat interner Fehler: update DataView !vGetError Fehler: printError unlinkRechnerDLL exitRechner DefaultRechnerProgramHandle rechner.dll RechnerProgramHandle NewProgram SetDataMode ConvertValue ConvertUnsignedValue GetAsmLine GetAsmLines GetData SetData GetDataLines GetError GetProgramNumbers GetProgramCounter GetRegister SetRegister ,"T1 String2Int , Tr String2UInt GetFlag SetFlag StepProgram ResetProcessor DefineSymbol SetAsmLine InsertAsmLine DeleteAsmLine PrepareRun LoadProgram SaveProgram ClearProgram NewProgram linkRechnerDLL rechner.dll unlinkRechnerDLL hideDescription SaveDescriptionObject showDescription w+U!! SaveDescriptionObject SaveDescriptionObject hideDescription A*GetFlag RechnerProgramHandle doAnimate StepProgram doAnimate animate &Animate update RechnerObjekt WarningWindow RechnerIsInitialized InitRechner update RechnerObjekt enterPage cancel Neuer Wert f r Adresse DatenAdressen RechnerProgramHandle 55SetData !vGetError String2UInt Adressen *GetData KYsetText G1ConvertValue Fehler: FirstLineNumber buttonClick InitChoice ButtonDown InitChoice rightButtonDown 1,!J(Y -ZeilenNummer 6`MyPopup Adressen PopupAnweisungen FirstLineNumber InitChoice ,%H.% choice 5`MyPopup ButtonStillDown QdoChoice ButtonUp QdoChoice rightButtonUp ,%H.% choice 5`MyPopup MdoChange \tdoInsert WdoDelete doChoice cancel GetAsmLine SetAsmLine -ZeilenNummer MustRunPrepare RechnerProgramHandle changeToLine KYsetText ndere Anweisung an Adresse Adressen DatenAdressen printError RechnerObjekt doChange cancel GetAsmLine -ZeilenNummer MustRunPrepare RechnerProgramHandle changeToLine KYsetText ) ein Adressen DatenAdressen ge Anweisung an Adresse SInsertAsmLine printError RechnerObjekt doInsert MustRunPrepare -ZeilenNummer DatenAdressen RechnerProgramHandle M7DeleteAsmLine Adressen KYsetText printError RechnerObjekt doDelete p~ScrollUp Adressen ScrollUp ScrollDown Adressen ScrollDown Adressen {%ScrollPageUp ScrollPageUp Adressen |ScrollPageDown ScrollPageDown |ScrollTo Slider Adressen SliderArea ScrollPosition Slider SliderArea SetScrollbarPosition DatenAdressen p~ScrollUp ScrollUp DatenAdressen ScrollDown ScrollDown DatenAdressen {%ScrollPageUp ScrollPageUp DatenAdressen |ScrollPageDown ScrollPageDown |ScrollTo Slider DatenAdressen SliderArea ScrollPosition Slider SliderArea SetScrollbarPosition scrollbar1 visibleLines KYsetText setScrollbarPosition FirstLineNumber update visibleLines visibleLines FirstLineNumber TotalLines TotalLines FirstLineNumber checkMyValues ConvertUnsignedValue DatenWerte RechnerProgramHandle visibleLines GetDataLines LcheckMyValues FirstLineNumber setText TotalLines visibleLines FirstLineNumber LcheckMyValues KYsetText scrollTo TotalLines visibleLines FirstLineNumber LcheckMyValues KYSetText Scrollbar1 setScrollbarPosition FirstLineNumber scrollUp TotalLines visibleLines FirstLineNumber LcheckMyValues KYSetText Scrollbar1 setScrollbarPosition FirstLineNumber scrollDown Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollPageUp TotalLines Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollPageDown cancel !vGetError visibleLines FirstLineNumber LCheckMyValues FirstLineNumber Gehe nach Zeile: update Fehler: String2Uint buttonClick changeToLine RechnerProgramHandle GetProgramCounter update scrollbar visibleLines FirstLineNumber KYsetText SetScrollbarPosition FirstLineNumber changeToLine Client visibleLines Anweisungen visibleLines FirstLineNumber FirstLineNumber Client checkMyValues regular italic markText Client RechnerProgramHandle Anweisungen {markText visibleLines GetProgramNumbers LcheckMyValues GetAsmLines GetProgramCounter FirstLineNumber setText visibleLines FirstLineNumber LcheckMyValues KYsetText scrollTo Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollUp Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollDown Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollPageUp Scrollbar visibleLines FirstLineNumber LcheckMyValues KYSetText setScrollbarPosition FirstLineNumber scrollPageDown cancel changeToLine !vGetError LCheckMyValues Gehe nach Zeile: Fehler: String2Uint buttonClick cancel MustRunPrepare SetTextOnly Symbol f r Zeile RechnerProgramHandle A,B,I,P DefineSymbol Fehler: reservierter Bezeichner Fehler: update RechnerObjekt FirstLineNumber !vGetError rightButtonUp chnerObjek InitRechner linkRechnerDLL [doAnimate DataView "dezimal" [MustRunPrepare update UpdateMode ZsyssLockScreenSave sysLockScreenSave Kcode view c"SetTextOnly" setText "Adressen" register "RegisterA" "RegisterAS" "RegisterB" "RegisterI" "RegisterP" flag "NegativeFlag" "ZeroFlag" "CarryFlag" data "DatenAdressen" DataMode 4RechnerProgramHandle ZSetDataModeReturn B"hexadezimal" ule,0) DataFormat le,1) "interner Fehler: unknown 4" & 1(0,GetError()) printError g" & exitRechner unlinkRechnerDLL Zscripts, internal use only linkDLL "rechner.dll" -- allocate a INT NewProgram() display mode (0: , 1: 0 on success R*ConvertValue( ,uint16 -- converts ]the above) POINTER ,WORD) R*ConvertUnsignedValue( R*GetAsmLine( LineNumber): disassemble R*GetAsmLines( count): lines starting will be separated ^INT, GetData( Address) located NewValue) -- change R*GetDataLines( NumberOfDataPerLine, NumberOfLines) -- Each ths returned corresponding Jerror encountered there was no R*GetProgramNumbers( each -- determine a form c+' '+d c+' '+s, -- where c Ucontaining , ' ' -- d z, s symbol assigned present) concatenation these strings, GetProgramCounter( processor s program GetRegister( WhichRegister) -- asserts >=0 (==REGISTER_A_CODE) && 4<=4 (==REGISTER_P_CODE) -- returns s value -- void SetRegister( >=0 (== <=4 (== -- sets String2Int( R*ValueAsString) -- includes support hex numbers xsuccessful nSTRING) String2UInt( -- same , except that unsigned residue k2^16 GetFlag( WhichFlag) -- Meanings WhichFlags -- 0: -- 1: -- 2: -- 3: Halted- CALLBACK SetFlag( !=0) resets ( ==0) -- For meanings see StepProgram( nSteps) -- executes instructions 0 on has xhalted), !=0 otherwise ResetProcessor( processors registers (including pc) flags ( DefineSymbol( R*SymbolName, -- defines 0 on (valid >), <>0 SetAsmLine( lineNumber, R*NewInstruction) -- assembles given )address linenum 0 on t , <>0 InsertAsmLine( inserts means, following * moved 0 on , <>0 DeleteAsmLine( -- deletes machine R*PrepareRun( -- prepares running (resolves symbols) a list warnings -- on ERROR LoadProgram( Rfar* FileName) -- loads 0 on , <>0 on SaveProgram( -- saves 0 on , <>0 on ClearProgram( -- clears area) 0 on , <>0 on e,DefaultRechnerProgramHandle unlinkDLL " showDescription DescriptionObject hideDescription SaveDescriptionObject ZRechnerObjekt doAnimate 4RechnerProgramHandle -- has the processor halted ? GetFlag( ;le,3)<>0 update "&Run" B"animate" ZsysLockScreenSave ZStepProgramReturn e,100) 4RechnerIsInitialized InitRechner "WarningWindow" buttonClick loc 4RechnerProgramHandle ZZeilenNummer,ZeilenNummerHex,NewValue,AdressFeld,ErrorText "DatenAdressen" ) + FirstLineNumber z - 1)\ %"@h0" qvalue ("Neuer Wert f " & & " (0x" & & ")" \ 1(0, \ ConvertValue( e,GetData( String2UInt( X, whether answer valid 1(0,GetError()) "Fehler: " & Zunused SetData( -- update display setText ButtonDown loc InitChoice ZZeilenNummer 3+FirstLineNumber "Adressen" ZPopupMenu "PopupAnweisungen" + 40, MyPopup ButtonStillDown loc ZsysLockScreenSave Zobj,i,c objectFromPoint( B("choice" & i) ButtonUp doChoice ,MyChoice (c=obj) doChange doInsert doDelete -- no 4RechnerProgramHandle ZRechnerObjekt, ,ZeilenNummerHex 6<65536 %"@h0" ndere " & v & " (0x" & & ")"\ 1(0,GetAsmLine( ZNewInstruction (SetAsmLine( -)=0) MustRunPrepare changeToLine setText "DatenAdressen" printError <65536 %"@h0" " & & " (0x" & & ") ein"\ (InsertAsmLine( (DeleteAsmLine( ScrollUp ZsysLockScreenSave "Adressen" ScrollDown ScrollPageUp ScrollPageDown ScrollPosition compute the relative slider ZSlider,SliderArea,SliderHeight,SliderAreaHeight -- tell correct ScrollTo ( SetScrollbarPosition relpos ScrollUp ZsysLockScreenSave "DatenAdressen" ScrollDown ScrollPageUp ScrollPageDown ScrollPosition compute the relative slider ZSlider,SliderArea,SliderHeight,SliderAreaHeight -- tell correct ScrollTo ( SetScrollbarPosition relpos update setText setScrollbarPosition (FirstLineNumber - visibleLines )/(16384- "scrollbar1" checkMyValues TotalLines 65536/4 4RechnerProgramHandle Zt,i,j,NumberOfDataPerLine,dt,DatenAdresse,gd "DatenWerte" 1(0,GetDataLines \ (i>0) 1(0,ConvertUnsignedValue( scrollTo relPos )+0.5) scrollUp SetText ) / ( "Scrollbar1" scrollDown ) / ( scrollPageUp ) / (65536- scrollPageDown ) / (65536- buttonClick ZZeile,ErrorText value ("Gehe nach String2Uint( X, whether answer valid 1(0,GetError()) "Fehler: " & qaddress CheckMyValues ZNewFirstLineNumber A >= update 4RechnerProgramHandle changeToLine GetProgramCounter( :le) +NewLine = + 1), + 1), scrollTo relPos *(65536- )+0.5) scrollUp SetText setScrollbarPosition ( ) / (65536- scrollDown < 65536- ) / (65536- scrollPageUp ) / (65536- scrollPageDown < 65536- >= 65536- 65536- ) / (65536- buttonClick ZZeile,ErrorText value ("Gehe nach String2Uint( X, whether answer valid 1(0,GetError()) "Fehler: " & qaddress CheckMyValues ZZeilenNummer,ZeilenNummerHex,SymbolName `) + %"@h0" " & & " (0x" & & ")" ( "A,B,I,P" reservierter Bezeichner" ( DefineSymbol( ) <> 0 ) "SetTextOnly" "RechnerObjekt" MustRunPrepare tScrollbar :HDMEDIAPATH System Arial Arial Arial Arial Courier Arial Courier MS Sans Serif Courier New Courier New Times New Roman Symbol Arial Arial Arial urier rechner Page id 1 RechnerHelp Page id 2 Page id 3 Hilfe zum Rechner update update update "Adressen" "Anweisungen" rechner buttonClick buttonClick Zrechner &Rechner SystemDokumentation Systemdokumentation 1. Dateien und Bedeutung 1.1 Kategorie Runtime: Notwendig zum Ablauf des Rechners INSTRUCT Instruktionssatz RECHNER.DLL Rechnerfunktionalit RECHNERX.TBK Diese Datei (Buch) 1.2 Kategorie Demo: Demoprogramme TESTLOAD.PRG Rechner-Programm zum Test aller Befehle ADDLONG.PRG Addiert zwei Langzahlen (4Byte) mem[24],mem[25]= (mem[20],mem[21]) + (mem[22],mem[23]) MULTIPLY.PRG Multipliziert zwei Zahlen mem[22]=mem[20]*mem[21]) 1.2 Kategorie Entwicklung: Quelltexte CSTRING.H CSTRING.C Just another C++ String Class ELISTE.H ELISTE.CC C++ template class: Einfach verkettete Liste STACK.H C++ template class: Stacks OPENHASH.H OPENHASH.CC C++ template class: open Hashtable BOOLEAN.H C++ class boolean SYMBOLS.H SYMBOLS.CC class Symbols (Im Rechner definierte Symbole) PARSE-AS.H PARSE-AS.CC Einfacher Parser f r Assemblerinstructionen RECHNERM.H RECHNERM.CC Verwaltung des Speichers des Rechners PROCESSO.H PROCESSO.CC Prozessor des Rechners incl. Operationen RECHNER.H RECHNER.CC class RechnerProgram: Funktionalit ten des Rechners (viele wrapper-Funktionen f r die Mitglieder der anderen Klassen) INTERFAC.CC Implementation der Schnittstelle der rechner.dll RECHNERT.CC Testprogramm ( berholt) RECHNER.DEF Definition der Schnittstelle der rechner.dll RECHNER.DSK RECHNER.PRJ RECHNER.LIB Turbo C++ intern 2. Verwendung des Rechners Der Rechner kann durch die Befehle local rechner set rechner to viewer "rechner" open rechner if visible of rechner hide rechner else show rechner aufgerufen bzw. versteckt werden. 2.1 Arbeiten mit mehreren verschiedenen Programmen Der Rechner unterst tzt die simultane Bearbeitung von bis zu 20 verschiedenen Programmen. Diese Programme werden ber Handles angesprochen. Ein solches Handle mu zuvor durch Aufruf der Funktion NewProgram() alloziert werden. Dem Rechner wird das gew nschte Programm ber die Systemvariable RechnerProgramHandle mitgeteilt. Beispiel: local rechner set rechner to viewer rechner open rechner local program1,program2 -- alloziere Handles f r Programme set program1 to NewProgram() set program2 to NewProgram() system RechnerProgramHandle -- rufe den rechner f r program1 auf set RechnerProgramHandle to program1 show rechner -- aktualisiere die Anzeigen send update to field "RechnerObjekt" \ of page "RechnerSeite" -- rufe den rechner f r program2 auf set RechnerProgramHandle to program2 show rechner -- aktualisiere die Anzeigen send update to field "RechnerObjekt" \ of page "RechnerSeite" 2.2 Laden von vorbereiteten Programmen ber die Funktion LoadProgram(int Handle, \ char far* FileName) kann ein vorbereitetes Programm geladen werden. Das Funktionsergebnis ist im Erfolgsfall gleich 0. Ein eventueller Fehler kann ber GetError() abgefragt werden. (Der Aufruf von GetError() mu erfolgen, um den Fehler zu l schen und weitere Aktionen zu erm glichen!) Beispiel: system RechnerProgramHandle local rechner set rechner to viewer "rechner" open rechner if (LoadProgram(RechnerProgramHandle,\ "demo.prg")<>0) request "Fehler beim Laden:" & \ pointerString(0,GetError()) else show rechner 2.2 Dateiformat der Programmdateien (*.prg) Eine .prg - Datei enth lt die Assembleranweisungen in lesbarer Form (ASCII) mit den zus tzlichen M glichkeiten $1234 setzt die aktuelle Adresse auf 1234 :symbolName definiert das Symbol symbolName Beispiel: load 371 store 372 $1000 load 756 :MySymbol load 891 hrt zum Programm (Darstellung in der Code View) * 0 | load 371 * 1 | store 372 [Viele Zeilen ohne '*'] * 1000 | load 756 *MYSYMBOL | load 891 * 11002 | add ....... SystemDokumentation buttonClick buttonClick Zsysdok "SystemDokumentation" Systemdokumentation RechnerSeite 3f8N= CBQ R,S {<|h| Programm Daten Anweisungen STORE [B+I+1234] SHIFT LOG,NC,L,7 MySavedText visibleLines FirstLine FirstLineNumber RechnerProgramHandle ZeilenNummer Group id 130 of Page id 1 MyPopup BRANCH C,1281 STORE [B+I+2307] LOAD 256 BRANCH -1972 LOAD -139 LOAD [5609] LOAD 4 LOAD -139 LOAD [B+I+5097] STORE [B+I+2305] LOAD -384 LOAD B BRANCH C,1359 STORE [B+I+2307] LOAD -446 BRANCH Z,319ANCH Z,-148 BRANCH Z,-11519-152 BRANCH Z,-11986 BRANCH C,3268791]MULTENDI+2]D 0 LOAD I,0MULTRET]][B+I+0x1fff]fff] STORE [B+I+0x1fff]TORE [B+I+0x1fff] Adressen 2 > p visibleLines FirstLineNumber FirstLine Field id 0 of Page id 1 Client 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 170313 Scrollbar SliderArea Slider {%ScrollPageUp |ScrollPageDown buttonDown ScrollPosition Slider SliderHeight unused Zy,SliderHeight (" - ScrollPageUp ScrollPageDown unused ScrollPosition ScrollbarButtonUp p~ScrollUp buttonDown p~ScrollUp buttonStillDown ScrollUp ScrollbarButtonDown ScrollDown buttonDown ScrollDown buttonStillDown ScrollDown Slider height 5SavePosition oldLoc %SaveMousePosition buttonDown 5SavePosition %SaveMousePosition oldLoc oldLoc height buttonStillDown ScrollPosition buttonUp SavePosition SaveMousePosition height oldLoc Zy,yUp,yDown,sysLockScreenSave & "Area") ScrollPosition 3615,795 SavePosition 3720,870 SaveMousePosition height 3750,2670 oldLoc DatenAdressen visibleLines FirstLineNumber FirstLine TotalLines 60528 60532 60536 60540 60544 60548 60552 60556 0x1f14 65516 65520 65524 65528 655321016 0 1 2 3333 DatenWerte 24260 9732 18313 -15320 2142 -29914 11335 24260 9732 18313 -15318 2142 -29914 11847 24260 9732 18313 9772 32643 50 12148 24260 9732 18315 9776 18187 29742 -222 3190 -218 12407 -218# Register A = RegisterA RechnerProgramHandle GetRegister G1ConvertValue update keyChar SetRegister RechnerProgramHandle String2Int !vGetError Fehler: update leaveField enterField update 4RechnerProgramHandle 1(0,ConvertValue( -le,GetRegister( >le,0))) k=keyEnter Z,ErrorText,unused String2Int( 1(0,GetError()) ><>"" "Fehler: " & SetRegister( 016658 A' = RegisterAS RechnerProgramHandle GetRegister G1ConvertValue update keyChar SetRegister RechnerProgramHandle String2Int !vGetError Fehler: update leaveField enterField update 4RechnerProgramHandle 1(0,ConvertValue( -le,GetRegister( >le,1))) k=keyEnter Z,ErrorText,unused String2Int( 1(0,GetError()) ><>"" "Fehler: " & SetRegister( 016658 B = RegisterB RechnerProgramHandle GetRegister G1ConvertValue update keyChar SetRegister RechnerProgramHandle String2Int !vGetError Fehler: update leaveField enterField update 4RechnerProgramHandle 1(0,ConvertValue( -le,GetRegister( >le,3))) k=keyEnter Z,ErrorText,unused String2Int( 1(0,GetError()) ><>"" "Fehler: " & SetRegister( I = RegisterI RechnerProgramHandle GetRegister G1ConvertValue update keyChar SetRegister RechnerProgramHandle String2Int !vGetError Fehler: update leaveField enterField update 4RechnerProgramHandle 1(0,ConvertValue( -le,GetRegister( >le,2))) k=keyEnter Z,ErrorText,unused String2Int( 1(0,GetError()) ><>"" "Fehler: " & SetRegister( PSW:= Z = ZeroFlag A*GetFlag RechnerProgramHandle update keyChar RechnerProgramHandle y4SetFlag !vGetError update Fehler leaveField enterField update 4RechnerProgramHandle GetFlag( #le,1) k=keyEnter Zt,unused t<>"0" t<>"1" "Fehler" & 1(0,GetError()) SetFlag( le,1, NEG = NegativeFlag A*GetFlag RechnerProgramHandle update keyChar RechnerProgramHandle y4SetFlag !vGetError update Fehler leaveField enterField update 4RechnerProgramHandle GetFlag( #le,0) k=keyEnter Zt,unused t<>"0" t<>"1" "Fehler" & 1(0,GetError()) SetFlag( le,0, 02345 C = CarryFlag A*GetFlag RechnerProgramHandle update keyChar RechnerProgramHandle y4SetFlag !vGetError update Fehler leaveField enterField update 4RechnerProgramHandle GetFlag( #le,2) k=keyEnter Zt,unused t<>"0" t<>"1" "Fehler" & 1(0,GetError()) SetFlag( le,2, hideDescription rechner buttonClick buttonClick hideDescription close "rechner" &Close Scrollbar1 SliderArea Slider {%ScrollPageUp |ScrollPageDown buttonDown ScrollPosition Slider SliderHeight unused Zy,SliderHeight (" - ScrollPageUp ScrollPageDown unused ScrollPosition ScrollbarButtonUp p~ScrollUp buttonDown p~ScrollUp buttonStillDown ScrollUp ScrollbarButtonDown ScrollDown buttonDown ScrollDown buttonStillDown ScrollDown Slider height 5SavePosition oldLoc %SaveMousePosition buttonDown 5SavePosition %SaveMousePosition oldLoc oldLoc SliderArea height buttonStillDown ScrollPosition buttonUp SavePosition SaveMousePosition height oldLoc Zy,yUp,yDown,sysLockScreenSave "SliderArea" ScrollPosition 9080,1240 SavePosition 9225,1350 SaveMousePosition height 9210,2580 oldLoc RechnerHelp buttonUp "RechnerHelp" &Help RechnerObjekt dezimal DataFormat RechnerObjekt: lt die f r den Rechner global wichtigen Skripten MustRunPrepare warnings &Stop warningWindow RechnerProgramHandle MustRunPrepare doAnimate animate doAnimate Fehler PrepareRun &Animate update RechnerObjekt buttonUp 4RechnerProgramHandle ZRechnerObjekt MustRunPrepare 3 <> ZRunPrepareResult 1(0,PrepareRun( "warnings" "warningWindow" x("Fehler" doAnimate "&Stop" B"animate" "&Run" update Fehler MustRunPrepare warnings warningWindow RechnerProgramHandle MustRunPrepare StepProgram doAnimate animate PrepareRun &Animate update RechnerObjekt buttonUp 4RechnerProgramHandle [doAnimate RechnerObjekt "&Run" B"animate" MustRunPrepare ZRunPrepareResult 1(0,PrepareRun( "warnings" "warningWindow" x("Fehler" ZsysLockScreenSave ZStepProgramReturn update &Step animate MustRunPrepare warnings &Stop warningWindow RechnerProgramHandle MustRunPrepare doAnimate doAnimate Fehler PrepareRun &Animate RechnerObjekt buttonUp 4RechnerProgramHandle ZRechnerObjekt MustRunPrepare 3 <> ZRunPrepareResult 1(0,PrepareRun( "warnings" "warningWindow" x("Fehler" doAnimate "&Stop" &Animate RechnerProgramHandle ResetProcessor update RechnerObjekt buttonUp 4RechnerProgramHandle ZResetProcessorReturn update "RechnerObjekt" R&eset dezimal eDataView dezimal RechnerObjekt buttonUp DataView "dezimal" "RechnerObjekt" &Dezimal hexadezimal eDataView hexadezimal RechnerObjekt buttonUp DataView "hexadezimal" "RechnerObjekt" &Hexadezimal CodeView P = RegisterP RechnerProgramHandle GetRegister G1ConvertValue update keyChar SetRegister RechnerProgramHandle String2Int !vGetError Fehler: update rechnerobjekt leaveField enterField update 4RechnerProgramHandle 1(0,ConvertValue( -le,GetRegister( >le,4))) k=keyEnter Z,ErrorText,unused String2Int( 1(0,GetError()) ><>"" "Fehler: " & SetRegister( "rechnerobjekt" 07008 PopupAnweisungen choice1 mouseEnter mouseLeave ndern choice2 mouseEnter mouseLeave choice3 mouseEnter mouseLeave schen .&+ +E DatenAdressen RechnerProgramHandle Lade Programm... LoadProgram filterList openFileDlg Adressen openFileDlg Programme (*.prg),*.prg KYsetText TB30DLG.DLL printError RechnerObjekt buttonUp 4RechnerProgramHandle linkDLL "TB30DLG. STRING openFileDlg( ,INT) filterList = "Programme (*.prg),*. I"Lade ...", It <> ZsysCursorSave ZFileName (LoadProgram( )<>0) printError "RechnerObjekt" setText "Adressen" "DatenAdressen" &Load .&+ +E printError saveAsDlg RechnerProgramHandle filterList Speichere Programm unter Programme (*.prg),*.prg TB30DLG.DLL saveAsDlg RechnerObjekt SaveProgram buttonUp 4RechnerProgramHandle linkDLL "TB30DLG. STRING saveAsDlg( ,INT) filterList = "Programme (*.prg),*. G"Speichere % unter", It <> ZsysCursorSave (SaveProgram( )<>0) printError "RechnerObjekt" Sa&ve .&+ +E RechnerProgramHandle Adressen ClearProgram KYsetText printError RechnerObjekt buttonUp 4RechnerProgramHandle ZsysCursorSave (ClearProgram( Gle)<>0) printError "RechnerObjekt" setText "Adressen" &Clear warningWindow Das Assemblieren Ihres Programms ergab folgende Fehler und Warnungen: Warnings Adresse 0x1ff6: Fehler: undefinertes Symbol buttonClick buttonClick &Schlie IT- Computer RechnerHilfeBedienung Bedienung des Rechners 1. Was Sie sehen Das Display ist aufgeteilt in Code View, Data View, Register View und Control Panel. 1.1 Die Code View Die Code View in der linken Bildschirmh lfte zeigt Ihnen zu jeder Speicherzelle Ihres Rechners die Adresse und den dort gespeicherten Befehl an. Ein * vor einer Adresse zeigt Ihnen an, da Sie dort einmal etwas eingegeben (oder von Datei geladen) haben. Sie haben eine simple M glichkeit zur Definition von Symbolen. Ggf. zeigt Ihnen die Code View dieses Symbol anstelle der numerischen Adresse an. Befehle k nnen sich dieser Symbole bedienen, z.B. BRANCH ENTRYPOINT anstelle BRANCH 1000. Ein schwarzer Balken in der Code View zeigt Ihnen ggf. die aktuelle Position des Prozessors ( = Wert des Registers P) an. 1.2 Die Data View rechts oben im Fenster zeigt Ihnen die Inhalte der Speicherzellen in numerischer Form an. In jeder Zeile steht links eine Adresse x und rechts die Werte der Speicherzellen der Adressen x, x+1, x+2, x+3. 1.3 Die Register View unterhalb der Data View zeigt die Inhalte der Register P (Programmz hler), A (Akkumulator), A' (alter Akkumulator), B (Basisregister), I (Indexregister) sowie die Prozessorflags Z (Zero), NEG (Negativ), C (Carry= bertrag) an. 1.4 Das Control Panel unten im Bildschirm steuert Ihren Rechner (Run, Step, Animate, Reset), erm glicht Ihnen das Speichern, Laden und L schen von Programmen und eine Umschaltung der Zahldarstellung von dezimal auf hexadezimal. 2. Wie Sie arbeiten k chst empfehlen wir Ihnen, sich mit dem Befehlssatz Ihres Rechners vertraut zu machen (w hlen Sie den Abschnitt Befehle dieser Hilfe). Code View, Data View, Register View und Control Panel erm glichen Ihnen ein komfortables Arbeiten mit dem Rechners: 2.1 Die Bedienung der Code View chst einmal k nnen Sie mit Hilfe der Scrollbars im Speicher bl ttern oder durch Anklicken des Adre feldes zu einer bestimmten Adresse springen (Sie werden dann um Eingabe dieser Adresse gebeten). Die neue Adresse k nnen Sie, wie alle numerischen Werte, sowohl dezimal (z.B. 517) als auch hexadezimal (z.B. 0x205) angeben. Ein Anklicken mit der rechten Maustaste gestattet Ihnen die Zuordnung eines Symbols zur angeklickten Adresse. Neue Befehle k nnen Sie durch Anklicken des Befehlsfelds eingeben: Sie erhalten die Auswahl zum ndern, Einf gen und L schen dieser Befehle (an der angeklickten Adresse). 2.2 Die Bedienung der Data View Wie in der Code View erlauben Ihnen auch hier die Scrollbars bzw. das Anklicken des Adre felds das Bl ttern durch die Speicherzellen. Bestehende Werte k nnen Sie durch einfaches Anklicken ndern. 2.3 Die Bedienung der Register View ndern von Registerwerten k nnen Sie das entsprechende Feld anklicken und den neuen Wert eingeben. Nach Abschlu der Eingabe mit oder wird Ihr Wert bernommen. hnliches gilt auch f r die nderung der Prozessorflags, hier sind allerdings nur die Werte 0 bzw. 1 erlaubt. 2.4 Kontrolle ber das Control Panel ber die Kn pfe Run und Animate starten Sie Ihr Programm (wobei Animate jede einzelne Befehlsausf hrung darstellt und Run das ganze Programm auf einmal ausf hrt). Step f hrt den jeweils n chsten Befehl aus, und Reset setzt alle Prozessorregister (einschlie lich des Programmz hlers) wieder auf 0. Zur Vervollst ndigung geben wir Ihnen eine bersicht der brigen Elemente des Control Panels: Die Kn pfe Load, Save und Clear lassen Sie Ihr Programm laden, speichern und l schen. Close schlie t das Rechnerfenster und Help zeigt diese Hilfeseite an. Die Radiobuttons Dezimal und Hexadezimal schalten die Darstellung aller numerischen Werte entsprechend um. te gestattet Ihnen die Zuordnung eines Symbols zur angeklickten Adresse. Neue Befehle k nnen Sie durch Anklicken des Befehlsfelds eingeben: Sie erhalten die Auswahl zum ndern, Einf gen und L schen dieser Befehle (an der angeklickten Adresse). RechnerHilfeBedienung RechnerHilfeBefehle buttonUp ZsysLockScreenSave "RechnerHilfeBedienung" "RechnerHilfeBefehle" &Bedienung RechnerHilfeBedienung RechnerHilfeBefehle buttonUp ZsysLockScreenSave "RechnerHilfeBefehle" "RechnerHilfeBedienung" Be&fehle RechnerHelp buttonUp "RechnerHelp" Sch&lie RechnerHilfeBefehle Der Befehlssatz 1. Mnenomics Hier finden Sie die Befehle Ihres Rechners zusammen mit deren Bedeutung und Auswirkungen auf die Prozessorflags. s10 steht dabei stehts f r einen vorzeichenbehafteten, u13 f r einen vorzeichenlosen Wert mit bis zu 10 bzw. 13 Bits. Mnenomic Bedeutung Flags C Z N ----------------------------------------------------------------- Speicherbefehle LOAD [u13] Z,N (A',A)=(A,memory[u13]) LOAD [B+I+u13] Z,N (A',A)=(A,memory[B+I+u13]) LOAD s10 Z,N (A',A)=(A,s10) LOAD I,s10 I=s10 Z,N LOAD B B=A STORE [u13] memory[u13]=A STORE [B+I+u13] memory[B+I+u13]=A nge, Unterprogrammaufrufe und Verzweigungen JUMP P=A CALL (A,P) = (P+1,A) BRANCH adr P=adr BRANCH Z,adr if (Z) then P=adr BRANCH N,adr if (N) then P=adr BRANCH C,adr if (C) then P=adr Bei Verzweigungen gilt f r den Operanden (Zieladresse adr) die Beschr nkung -211 <= adr - (P+1) < 211 Registerbefehle INCA s10 C,Z,N (A',A)=(A,s10) INCI s10 C,Z,N I=I+s10 ADD C,Z,N (A',A)=(A,A+A') SUB C,Z,N (A',A)=(A,A-A') AND C=0,Z,N (A',A)=(A,A and A') (bitweises and) OR C=0,Z,N (A',A)=(A,A or A') (bitweises or) XOR C=0,Z,N (A',A)=(A,A xor A') (bitweises xor) NEG C=0,Z,N (A',A)=(A,~A) (bitweise Negation) XCHG (A',A,I)=(A,I,A) HALT H lt Prozessor an SHIFT

C,Z,N (A',A)=(A,shift(A)) (Schiebebefehl) Die Parameter

des Schiebebefehls bestehen aus den (durch Kommata getrennten) Komponenten - A oder LOG (default LOG): arithmetisch oder logisch. - C oder NC (default NC): mit oder ohne "Ubertrag. - L oder R (default L): links oder rechts. - number (default 1): Anzahl der Bitpositionen. Restriktion ist hier 0 <= number < 16. 2. Technische Details Ihr Rechner besteht aus den Hardwarekomponenten Hauptspeicher (216 Worte = 128 kByte), Prozessor (mit den Registern A (Akkumulator) A' (Alter Akkumulator) A' enth lt den Wert von A vor einer ausgef hrten arithmetischen Operation, s.o. B (Basisregister) I (Indexregister) Mit B und I k nnen indirekte Speicherzugriffe durchgef hrt werden, s.o. P (Programmz hler) und den Flags C ( berlauf) Z (Zero, Wert der letzten Operation ergab 0) N (Negativ, letzte Operation lieferte negatives Ergebnis) Die Prozessorbefehle besitzen stets eine feste L nge von 16 Bits (einschlie lich eventueller Operanden). Der Speicher wird wortweise adressiert. z.B. bedeutet LOAD [3] RechnerSeite