home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / emulators / Atari / c64.lzh / C64 / DOC / ARTIKEL.TXT next >
Text File  |  1986-02-06  |  22KB  |  384 lines

  1. wOHL JEDER, DER SICH ETWAS INTENSIVER MIT SEINEM cOMPUTER 
  2.  
  3. BESCHFTIGT HAT, WIRD SICH SCHON EINMAL GERGERT HABEN, DA 
  4.  
  5. AUSGERECHNET DAS pROGRAMM, DAS ER GERNE BESITZEN WRDE, AUF 
  6.  
  7. SEINEM rECHNER NICHT LUFT. bESONDERS VIEL PROFESSIONELLE 
  8.  
  9. sOFTWARE IST Z.b. FR ANDERE bETRIEBSSYSTEME WIE ms-dos ODER cp/m 
  10.  
  11. ZU ERHALTEN. dA DIESE sYSTEME JEDOCH FR ANDERE pROZESSOREN ALS 
  12.  
  13. DEN 68000 GESCHRIEBEN SIND, IST ES EIGENTLICH NICHT MGLICH, 
  14.  
  15. DEREN pROGRAMME AUF DEM aTARI st ZU VERWENDEN. gANZ AUSWEGLOS IST 
  16.  
  17. DIE sITUATION NUN ABER AUCH NICHT. fR DIE OBEN GENANNTEN 
  18.  
  19. bETRIEBSSYSTEME GIBT ES INZWISCHEN eMULATOREN AUF DEM mARKT, DIE 
  20.  
  21. ES ERMGLICHEN, AUCH pROGRAMME, DIE FR ANDERE pROZESSOREN ODER 
  22.  
  23. bETRIEBSSYSTEME GESCHRIEBEN WORDEN SIND, AUF DEM st LAUFEN ZU 
  24.  
  25. LASSEN. vON DIESEN pROGRAMMEN SIND DIE mac-eMULATOREN BESONDERS 
  26.  
  27. HERVORZUHEBEN. dA DER mACINTOSH WIE DER st EBENFALLS MIT EINEN 
  28.  
  29. 68000-pROZESSOR ARBEITET, IST ES IN DIESEM fALL MGLICH, DURCH 
  30.  
  31. EIN ENTSPRECHENDES pROGRAMM NICHT NUR DAS mACINTOSH-
  32.  
  33. bETRIEBSSYSTEM AUF DEM st ZU IMPLEMENTIEREN, SONDERN DABEI AUCH 
  34.  
  35. NOCH EINE GRERE gESCHWINDIGKEIT IM pROGRAMMABLAUF ZU ERREICHEN, 
  36.  
  37. ALS DIES AUF DEM "oRIGINAL" mac-sYSTEM DER fALL IST. dIE uRSACHE 
  38.  
  39. HIERFR LIEGT DARIN, DA DER 68000 BEIM st HHER GETAKTET IST, 
  40.  
  41. ALS IM mACINTOSH. lEIDER DRFTE DIESE aRT VON eMULATOREN EIN 
  42.  
  43. sONDERFALL BLEIBEN, DENN DIE BEKANNTESTEN bETRIEBSSYSTEME LAUFEN 
  44.  
  45. NUN EINMAL NUR AUF rECHNERN, DIE KEINEN pROZESSOR DER 68000-
  46.  
  47. fAMILIE BENUTZEN. iN DIESEM fALL BLEIBT ALS aUSWEG NUR DIE 
  48.  
  49. sOFTWARE-eMULATION DES ENTSPRECHENDEN pROZESSORS. dER 
  50.  
  51. gESCHWINDIGKEITSVERLUST, DER DABEI AUFTRITT, LT SICH LEIDER 
  52.  
  53. NICHT VERMEIDEN. aLLERDINGS KANN MAN BEI ENTSPRECHENDER 
  54.  
  55. pROGRAMMIERUNG TROTZDEM RECHT AKZEPTABLE gESCHWINDIGKEITEN 
  56.  
  57. ERREICHEN, AUCH WENN MAN DIESES NICHT JEDEM AUF DEM mARKT 
  58.  
  59. BEFINDLICHEN eMULATOR ANMERKT.
  60.  
  61. aLS aTARI- UND c64-bESITZER HABE ICH MICH DAMIT BESCHFTIGT, DAS 
  62.  
  63. bETRIEBSSYSTEM DES c64 SO GUT WIE MGLICH AUF DEM st ZU 
  64.  
  65. IMPLEMENTIEREN. fR DIE sPIELE-fREAKS HEIT DAS ABER LEIDER 
  66.  
  67. NICHT, DA NUN DER st IN DER lAGE IST, c64-sPIELE ZU VERARBEITEN. 
  68.  
  69. dAZU IST DER aUFBAU DER BEIDEN cOMPUTER ZU VERSCHIEDEN. dENNOCH 
  70.  
  71. LT SICH BIS AUF EINIGE SPEZIELLE fHIGKEITEN DES c64 EIN 
  72.  
  73. BRAUCHBARER eMULATOR ENTWICKELN. wAS MAN BEI DER pROGRAMMIERUNG 
  74.  
  75. EINES SOLCHEN eMULATORPROGRAMMS BEACHTEN SOLLTE, WIRD gEGENSTAND 
  76.  
  77. DES aRTIKELS SEIN. dA DIESER tEIL kENNTNISSE IN aSSEMBLER-
  78.  
  79. pROGRAMMIERUNG VORAUSSETZT, DRFTE ER VOR ALLEM FR aSSEMBLER-
  80.  
  81. pROGRAMMIERER INTERESSANT SEIN. aUERDEM MCHTE ICH KURZ EIN PAAR 
  82.  
  83. fEATURES DES c64-eMULATORS BESCHREIBEN. kONKRETERE hINWEISE 
  84.  
  85. FINDEN SICH AUF DER lESERSERVICE-dISKETTE, AUF DER SICH DER 
  86.  
  87. eMULATOR BEFINDET.
  88.  
  89. bEVOR MAN SICH UM DIE iMPLEMENTIERUNG EINES KONKRETEN 
  90.  
  91. bETRIEBSSYSTEMS KMMERN KANN, GEHT ES ERST EINMAL DARUM, SICH 
  92.  
  93. DETAILLIERTE iNFORMATIONEN BER DEN ZU EMULIERENDEN pROZESSOR ZU 
  94.  
  95. BESORGEN. (dABEI SETZE ICH NATRLICH VORAUS, DA MAN DIE 
  96.  
  97. pROGRAMMIERUNG DES 68000 GUT BEHERRSCHT.) uM SICH NHER MIT DEM 
  98.  
  99. EIGENTLICHEN bETRIEBSSYSTEM BESCHFTIGEN ZU KNNEN, MU 
  100.  
  101. SCHLIELICH ERST EINMAL DIE eMULATION FR DEN ENTSPRECHENDEN 
  102.  
  103. pROZESSOR STEHEN. fR DIE BEKANNTESTEN pROZESSOREN, WIE IM fALL 
  104.  
  105. DES c64 FR DEN 6502, IST ES KEIN pROBLEM, AN DIE ENTSPRECHENDE 
  106.  
  107. lITERATUR ZU KOMMEN. wICHTIG SIND VOR ALLEM iNFORMATIONEN BER 
  108.  
  109. DIE bEHANDLUNG DER fLAGS DES pROZESSORS BEI DEN VERSCHIEDENEN 
  110.  
  111. bEFEHLSTYPEN SOWIE EINE bESCHREIBUNG EVENTUELLER bESONDERHEITEN 
  112.  
  113. DES pROZESSORS. zU BEACHTEN IST, DA Z.b. DAS cARRY-fLAG DURCHAUS 
  114.  
  115. NICHT IN ALLEN pROZESSOREN DIE GLEICHE bEDEUTUNG HAT. gERADE DER 
  116.  
  117. 6502 HAT HIER SEINE bESONDERHEIT. iM GNSTIGSTEN fALL HAT MAN 
  118.  
  119. SCHON EINMAL MIT DEM ZU EMULIERENDEN pROZESSOR GEARBEITET, WAS 
  120.  
  121. SICH IM WEITEREN vERLAUF DER pROGRAMMIERUNG ALS GROER vORTEIL 
  122.  
  123. ERWEISEN WIRD.
  124.  
  125. bEI DER EIGENTLICHEN pROGRAMMIERUNG DES eMULATORS SPIELT DIE 
  126.  
  127. gESCHWINDIGKEIT DER bEFEHLSAUSWERTUNG EINE BESONDERS GROE rOLLE. 
  128.  
  129. dA DER 68000 MIT DEN bEFEHLSCODES DES 6502 BERHAUPT NICHTS 
  130.  
  131. ANFANGEN KANN, MU JEDER oPCODE INTERPRETIERT WERDEN, HNLICH WIE 
  132.  
  133. ES EIN basic-iNTERPRETER MIT EINEM basic-pROGRAMM MACHT. fR 
  134.  
  135. JEDEN 6502-cODE MU EINE rOUTINE IN 68000-aSSEMBLER ENTWICKELT 
  136.  
  137. WERDEN, DIE aKTIONEN VORNIMMT, DIE DEM ENTSPRECHENDEN 6502-bEFEHL 
  138.  
  139. ENTSPRECHEN. hIERIN LIEGT AUCH DER gRUND, WARUM ES NICHT MGLICH 
  140.  
  141. IST, MIT EINEM sOFTWARE-eMULATOR DIE GLEICHE gESCHWINDIGKEIT ZU 
  142.  
  143. ERREICHEN, WIE SIE DAS sYSTEM BESITZT, DAS EMULIERT WIRD. oBWOHL 
  144.  
  145. DER 68000 MIT 8 mhZ GETAKTET IST UND DER 6510 IM c64 MIT NUR 
  146.  
  147. KNAPP 1 mhZ, BEDEUTET DIE iNTERPRETATION DER bEFEHLSBYTES EINEN 
  148.  
  149. vERLUST AN gESCHWINDIGKEIT. dIE EIGENTLICHE bEARBEITUNG DER 
  150.  
  151. EINZELNEN oPCODES IN DEN ENTSPRECHENDEN rOUTINEN KANN JEDOCH 
  152.  
  153. DURCHAUS SCHNELLER VOM 68000 AUSGEFHRT WERDEN, ALS VOM 6502. sO 
  154.  
  155. BENTIGT DER c64-eMULATOR ZUM sETZEN DES cARRY-fLAGS 4 tAKTYKLEN, 
  156.  
  157. DER 6502 BRAUCHT 2 tAKTZYKLEN. rECHNET MAN DIESE aNGABEN AUF DIE 
  158.  
  159. tAKTFREQUENZEN DER BEIDEN pROZESSOREN UM, SO SCHNEIDET DER 68000 
  160.  
  161. DEUTLICH BESSER AB. aLLERDINGS MU NUN NOCH DIE zEIT ADDIERT 
  162.  
  163. WERDEN, DIE DER eMULATOR BENTIGT, BIS ER DIE aDRESSE DER rOUTINE 
  164.  
  165. ZUM sETZEN DES fLAGS ERMITTELT HAT. dIESER vORGANG NIMMT JEDOCH 
  166.  
  167. SO VIEL zEIT IN aNSPRUCH, DA DER 6502 SCHLIELICH DOCH DER 
  168.  
  169. sCHNELLERE IST. dA DIE tAKTFREQUENZ NEUERER pROZESSORTYPEN IMMER 
  170.  
  171. WEITER STEIGT, WIRD ES WOHL NUR EINE fRAGE DER zEIT SEIN, BIS ES 
  172.  
  173. MGLICH IST, EINEN 8 bIT-pROZESSOR MINDESTENS MIT DER 
  174.  
  175. gESCHWINDIGKEIT ZU EMULIEREN, MIT DER DIESER pROZESSOR 
  176.  
  177. NORMALERWEISE BETRIEBEN WIRD.
  178.  
  179. nUN WIEDERHOLT SICH DER vORGANG DER iNTERPRETATION DES FOLGENDEN 
  180.  
  181. bEFEHLSBYTES NATRLICH BEI JEDEM NEUEN 6502-oPCODE. dESHALB IST 
  182.  
  183. ES GERADE AN DIESER sTELLE BESONDERS WICHTIG, EINE MGLICHST 
  184.  
  185. SCHNELLE aUSWERTUNG DES NCHSTEN bEFEHLSBYTES ZU ERREICHEN. sPART 
  186.  
  187. MAN HIER NUR EINEN tAKTZYKLUS EIN, SO STEIGT DIE gESCHWINDIGKEIT 
  188.  
  189. DER eMULATION BEREITS MERKLICH. wIE KANN NUN DAS NCHSTE 
  190.  
  191. bEFEHLSBYTE AUSGEWERTET WERDEN? iM ALLGEMEINEN WIRD HIERZU DIESES 
  192.  
  193. bYTE IN EIN dATENREGISTER GELADEN UND DANN DIE aDRESSE DER 
  194.  
  195. ZUGEHRIGEN eMULATIONSROUTINE AUS DIESEM bYTE BERECHNET. dIES 
  196.  
  197. KANN Z.b. DURCH DEN FOLGENDEN aLGORITHMUS GESCHEHEN:
  198.  
  199.  
  200.  
  201. loop:  clr d0
  202.  
  203.        move.b (a0)+,d0
  204.  
  205.        asl #2,d0
  206.  
  207.        move.l (a1,d0),a0           aLGORITHMUS 1
  208.  
  209.        jsr (a0)
  210.  
  211.        bra loop
  212.  
  213.  
  214.  
  215. gEHT MAN DAVON AUS, DA a0 AUF DAS NCHSTE bEFEHLSBYTE IM 6502-
  216.  
  217. aDRERAUM ZEIGT UND a1 DEN aNFANG EINER tABELLE MIT 
  218.  
  219. sPRUNGADRESSEN AUF DIE ENTSPRECHENDEN eMULATIONSROUTINEN ENTHLT, 
  220.  
  221. WRDE OBIGES pROGRAMMFRAGMENT DEN aNFORDERUNGEN GERECHT. 
  222.  
  223. aLLERDINGS LT DIE gESCHWINDIGKEIT DER iNTERPRETATION NOCH VIEL 
  224.  
  225. ZU WNSCHEN BRIG. uM EINE HHERE gESCHWINDIGKEIT ZU ERREICHEN, 
  226.  
  227. KANN MAN DEN asl-bEFEHL DURCH ZWEI add-bEFEHLE ERSETZEN UND DIE 
  228.  
  229. OBIGE rOUTINE FR JEDEN ZU EMULIERENDEN oPCODE NEU PROGRAMMIEREN, 
  230.  
  231. WAS DANN SO AUSSEHEN KNNTE:
  232.  
  233.  
  234.  
  235.        clr d0
  236.  
  237.        move.b (a0)+,d0
  238.  
  239.        add d0,d0
  240.  
  241.        add d0,d0
  242.  
  243.        move.l (a1,d0),a0           aLGORITHMUS 2
  244.  
  245.        jmp (a0)
  246.  
  247.  
  248.  
  249. iN DIESEM fALL WIRD DIE NCHSTE AUSZUFHRENDE rOUTINE NICHT MEHR 
  250.  
  251. ALS uNTERPROGRAMM ANGESPRUNGEN, SO DA MAN NICHT MIT rts ZU EINER 
  252.  
  253. BERGEORDNETEN iNTERPRETATIONSROUTINE ZURCKKEHREN KANN. eBEN AUS 
  254.  
  255. DIESEM gRUND MU SICH DER OBIGE pROGRAMMTEIL AM eNDE JEDER 
  256.  
  257. eMULATIONS-uNTERROUTINE BEFINDEN, ALSO FR JEDEN oPCODE EINMAL IM 
  258.  
  259. pROGRAMM VORHANDEN SEIN. dADURCH WIRD DAS eMULATORPROGRAMM ZWAR 
  260.  
  261. LNGER, DAFR ABER DEUTLICH SCHNELLER, DA DER aUFRUF UND DIE 
  262.  
  263. rCKKEHR AUS EINEM uNTERPROGRAMM BESONDERS VIEL zEIT BENTIGT. 
  264.  
  265. uND gESCHWINDIGKEIT IST FR EINEN sOFTWARE-eMULATOR DAS HCHSTE 
  266.  
  267. gEBOT! dARBER HINAUS HAT MAN AUF DEM st GENUG sPEICHERPLATZ, UM 
  268.  
  269. BEI EINEM eMULATOR FR EINEN pROZESSOR MIT NUR 64k aDRERAUM 
  270.  
  271. NICHT SPAREN ZU MSSEN.
  272.  
  273. dER OBEN DARGESTELLTE aLGORITHMUS 2 FINDET SICH IN HNLICHER fORM 
  274.  
  275. IN ALLEN MIR BEKANNTEN sOFTWARE-eMULATOREN WIEDER. lASSEN SIE UNS 
  276.  
  277. EINMAL EIN WENIG RECHNEN: dIE aUSFHRUNGSGESCHWINDIGKEIT FR 
  278.  
  279. DIESEN aLGORITHMUS BETRGT 46 tAKTZYKLEN. dER 6502 IST 
  280.  
  281. NORMALERWEISE MIT 1mhZ GETAKTET, DER st MIT 8mhZ. aLLEIN DIE 
  282.  
  283. iNTERPRETATION EINES bEFEHLSBYTES WRDE DEMNACH EINE zEIT 
  284.  
  285. VERBRAUCHEN, DIE 46/8 6502-zYKLEN ENTSPRICHT, ALSO FAST 6 6502-
  286.  
  287. zYKLEN. dA DIE KRZESTEN 6502-bEFEHLE 2 tAKTZYKLEN (BEZOGEN AUF 
  288.  
  289. DEN 6502) BRAUCHEN, WRDE NUR DIE aUSWERTUNG DES NCHSTEN bEFEHLS 
  290.  
  291. DURCH DEN eMULATOR SCHON EXTREM VIEL zEIT VERSCHLINGEN. dAS 
  292.  
  293. pRINZIP, DAS IN aLGORITHMUS 2 ZUR iNTERPRETATION VERWENDET WURDE, 
  294.  
  295. KANN JEDOCH NICHT MEHR ENTSCHEIDEND VERKRZT WERDEN. uRSPRNGLICH 
  296.  
  297. ARBEITET AUCH MEIN c64-eMULATOR MIT EINEM VERGLEICHBAREN 
  298.  
  299. aLGORITHMUS.
  300.  
  301. iST MAN ALLERDINGS BEREIT, 64k sPEICHERPLATZ MEHR FR DEN 
  302.  
  303. eMULATOR ZU OPFERN, WAS BEIM st NORMALERWEISE MGLICH IST, SO 
  304.  
  305. KANN MAN DIE SO ZEITKRITISCHE bEFEHLSINTERPRETATION DURCH EINE 
  306.  
  307. VLLIG ANDERE pROGRAMMIERUNG DEUTLICH BESCHLEUNIGEN. hIER DIE 
  308.  
  309. rOUTINE, WIE SIE IN MEINEM eMULATOR VERWENDET WIRD:
  310.  
  311.  
  312.  
  313.        move.b (a0)+,lbl+2(a1)
  314.  
  315. lbl:   jmp $0(a1)             aLGORITHMUS 3
  316.  
  317.  
  318.  
  319. aUCH HIER IST a0 pOINTER AUF DAS NCHSTE bEFEHLSBYTE, a1 IST EIN 
  320.  
  321. SPEZIELLER pOINTER IN DAS 64k-sEGMENT, IN DEM SICH DER eMULATOR 
  322.  
  323. NUN BEFINDET. nUN EIN PAAR eRKLRUNGEN ZU aLGORITHMUS 3, DENN ER 
  324.  
  325. DRFTE NICHT SO EINSICHTIG SEIN, WIE DIE ERSTEN BEIDEN. iM OBIGEN 
  326.  
  327. fALL WIRD DAS bEFEHLSBYTE NMLICH OHNE IRGENDWELCHE WEITEREN 
  328.  
  329. bERECHNUNGEN DIREKT ZUR aDREBILDUNG IM DARAUFFOLGENDEN 
  330.  
  331. sPRUNGBEFEHL VERWENDET. hIERZU AM BESTEN EIN bEISPIEL. nEHMEN WIR 
  332.  
  333. AN, DER NCHSTE 6502-oPCODE, AUF DEN DAS aDREREGISTER a0 ZEIGT, 
  334.  
  335. IST $ea. dIESES bYTE WIRD NUN ALS dISPLACEMENT FR DEN FOLGENDEN 
  336.  
  337. sPRUNGBEFEHL BENUTZT, WOBEI SICH DAS pROGRAMM SELBST VERNDERT. 
  338.  
  339. dIREKT VOR DEM sPRUNG SIEHT DER sPRUNGBEFEHL DANN ALSO 
  340.  
  341. FOLGENDERMAEN AUS:
  342.  
  343.  
  344.  
  345.        jmp $ea00(a2)
  346.  
  347.  
  348.  
  349. dAS 6502-bEFEHLSBYTE BILDET DAS hI-bYTE FR DAS dISPLACEMENT, DAS 
  350.  
  351. lO-bYTE IST IMMER nULL. aUF DIESE aRT UND wEISE SPART MAN SICH 
  352.  
  353. JEGLICHE aDREBERECHNUNG, DA DIE sPRUNGADRESSE AUF DIE PASSENDE 
  354.  
  355. rOUTINE NICHT MEHR EINER tABELLE ENTNOMMEN WIRD, WIE ES BEI DEN 
  356.  
  357. ERSTEN BEIDEN aLGORITHMEN DER fALL IST. aLLERDINGS MU NUN JEDE 
  358.  
  359. rOUTINE ZUR bEHANDLUNG DER oPCODES IN GENAU EINER pAGE aBSTAND 
  360.  
  361. HINTER DEM bEGINN DER VORHERIGEN rOUTINE ANFANGEN, DA DAS lO-bYTE 
  362.  
  363. DES dISPLACEMENTS IMMER nULL IST. sO KOMMT ES AUCH, DAS FR DIESE 
  364.  
  365. aRT DER eMULATION 64k sPEICHERPLATZ BENTIGT WERDEN, NMLICH FR 
  366.  
  367. JEDEN oPCODE DES 6502 256 bYTES. dIE aUSFHRUNGSZEIT VON 
  368.  
  369. aLGORITHMUS 3 BETRGT NUR NOCH 30 tAKTZYKLEN. eR IST ALSO UM 50% 
  370.  
  371. SCHNELLER ALS aLGORITHMUS 2. dIESER gESCHWINDIGKEITSZUWACHS MACHT 
  372.  
  373. SICH DEUTLICH BEMERKBAR, DENN ER SCHLGT JA BEI JEDEM 6502-oPCODE 
  374.  
  375. NEU ZU bUCHE.
  376.  
  377. sOWEIT DAS wICHTIGSTE ZUR iNTERPRETATION DER bEFEHLSBYTES DES 
  378.  
  379. 6502. iST DIESES pROBLEM GELST, SO MU MAN SICH ALS nCHSTES 
  380.  
  381. DARUM KMMERN, WO DIE rEGISTER DES ZU EMULIERENDEN pROZESSORS 
  382.  
  383. "AUFBEWAHRT" WERDEN KNNEN. iN UNSEREM fALL IST DIESE fRAGE RECHT 
  384.  
  385. EINFACH ZU BEANTWORTEN. dER 6502 HAT DREI rEGISTER (aKKUMULATOR, 
  386.  
  387. x- UND y-rEGISTER) SOWIE EINEN 8-bIT-sTACKPOINTER UND DEN 
  388.  
  389. pROGRAMMZHLER. dER 68000 BESITZT INSGESAMT 15 rEGISTER, WENN MAN 
  390.  
  391. a7 ALS sTACKPOINTER EINMAL AUER aCHT LT. eS IST SOMIT KEINE 
  392.  
  393. kUNST, DIESE rEGISTER IN dATEN- BZW. aDREREGISTERN DES 68000 
  394.  
  395. UNTERZUBRINGEN. fR sTACKPOINTER UND pROGRAMMZHLER WIRD JEWEILS 
  396.  
  397. EIN aDREREGISTER, FR DIE ANDEREN 6502-rEGISTER WERDEN DREI 
  398.  
  399. dATENREGISTER VERWENDET, IN DENEN NUR DAS lO-bYTE GENUTZT WIRD. 
  400.  
  401. sCHLIELICH MU DAS pROZESSORSTATUSREGISTER DES 6502 AUCH NOCH 
  402.  
  403. IRGENDWO UNTERGEBRACHT WERDEN. eS IST IM ALLGEMEINEN NICHT 
  404.  
  405. MGLICH, EINFACH DIE fLAGS DES 68000 ZU VERWENDEN, DA SICH DEREN 
  406.  
  407. vERWENDUNG VON DER BEIM 6502 GERINGFGIG UNTERSCHEIDET. dARBER 
  408.  
  409. HINAUS HAT DER 68000 IM gEGENSATZ ZUM 6502 Z.b. KEIN dEZIMALFLAG. 
  410.  
  411. bEI DEN MEISTEN ARITHMETISCHEN oPERATIONEN BESTEHT IN DER 
  412.  
  413. bEHANDLUNG DER fLAGS JEDOCH KEIN uNTERSCHIED. eS EMPFIEHLT SICH, 
  414.  
  415. DIE fLAGS IN EINEM WEITEREN dATENREGISTER UNTERZUBRINGEN UND NUR 
  416.  
  417. BEI bEDARF IN DAS ccr-rEGISTER DES 68000 ZU BERTRAGEN. 
  418.  
  419. sCHLIELICH WIRD DES pROZESSORSTATUSREGISTER NICHT VON JEDEM 
  420.  
  421. bEFEHL BEEINFLUT. nACHDEM BEI rECHENOPERATIONEN DIE fLAGS IM ccr 
  422.  
  423. ENTSPRECHEND GESETZT WORDEN SIND, WERDEN SIE DANN WIEDER IN DAS 
  424.  
  425. RESERVIERTE dATENREGISTER BERTRAGEN.
  426.  
  427. dURCH DIE BESCHRIEBENE vERWENDUNG DER rEGISTER BLEIBEN NOCH 
  428.  
  429. EINIGE rEGISTER DEM pROGRAMMIERER ZUR vERFGUNG. sIE KNNEN DANN 
  430.  
  431. dATEN AUFNEHMEN, DIE WHREND DER eMULATION STNDIG ZUR vERFGUNG 
  432.  
  433. STEHEN SOLLEN, WIE Z.b. EIN pOINTER AUF DEN 64k aDRERAUM DES 
  434.  
  435. 6502 SOWIE AUF DIE 64k, DIE FR DEN eMULATOR RESERVIERT SIND, UND 
  436.  
  437. IN DEM SICH DIE eMULATIONSROUTINEN FR DIE EINZELNEN oPCODES DES 
  438.  
  439. 6502 BEFINDEN. pRINZIPIELL IST ES NATRLICH AUCH MGLICH, DIE 
  440.  
  441. rEGISTERINHALTE DES 6502 IM sPEICHER ABZULEGEN. aLLERDINGS DAUERN 
  442.  
  443. zUGRIFFE AUF DEN sPEICHER VERHLTNISMIG LANGE, SO DA MAN KEINE 
  444.  
  445. BRAUCHBARE gESCHWINDIGKEIT MEHR ERZIELEN KNNTE.
  446.  
  447. wILL MAN pROZESSOREN EMULIEREN, DIE MEHR rEGISTER AUFWEISEN, ALS 
  448.  
  449. DER 6502 SIE BESITZT, SO MU MAN DIE aUFTEILUNG NEU BERDENKEN. 
  450.  
  451. dIES IST BRIGENS BEI DEN MEISTEN ANDEREN pROZESSOREN DER fALL, 
  452.  
  453. Z.b. BEIM 8080, z80 UND 8086. mAN SOLLTE JEDOCH DURCH GESCHICKTE 
  454.  
  455. wAHL DER rEGISTERBELEGUNG STETS DAFR SORGEN, DA ABSOLUTE 
  456.  
  457. zUGRIFFE AUF DEN sPEICHER MGLICHST VERMIEDEN WERDEN, DA SIE 
  458.  
  459. BESONDERS ZEITAUFWENDIG SIND. bEIM c64-eMULATOR KONNTEN DIREKTE 
  460.  
  461. zUGRIFFE AUF DEN sPEICHER VOLLKOMMEN UMGANGEN WERDEN. hIER WIRD 
  462.  
  463. NUR BER aDREREGISTER AUF DEN aDRERAUM DES 6502-pROZESSORS 
  464.  
  465. ZUGEGRIFFEN.
  466.  
  467. wILL MAN MIT DEM 68000 EINEN 8 bIT-pROZESSOR EMULIEREN, SO SIND 
  468.  
  469. EINIGE aDRESSIERUNGSARTEN UND bEFEHLE RECHT LEICHT 
  470.  
  471. NACHZUVOLLZIEHEN, ANDERE STELLEN JEDOCH pROBLEME DAR, BESONDERS 
  472.  
  473. DANN, WENN ES DARUM GEHT, EINE MGLICHST SCHNELLE aUSFHRUNGSZEIT 
  474.  
  475. ZU ERZIELEN. iCH MCHTE HIER ALS bEISPIEL DIE ABSOLUTE 
  476.  
  477. aDRESSIERUNG DES 6502 ANFHREN. eIGENTLICH KEIN pROBLEM, SOLLTE 
  478.  
  479. MAN MEINEN. aBER DENNOCH MU MAN HIER VORSICHTIG SEIN. wIE SIE 
  480.  
  481. SICHER WISSEN, KANN DER 68000 AUF 16 bIT-wORTE NUR DANN 
  482.  
  483. ZUGREIFEN, WENN SIE AUF GERADEN sPEICHERADRESSEN STEHEN. vERSTE 
  484.  
  485. GEGEN DIESE rEGEL FHREN ZU EINEM aDREFEHLER, DER SICH IN DREI 
  486.  
  487. bOMBEN PERSONIFIZIERT. bEI pROGRAMMEN, DIE FR DIESEN pROZESSOR 
  488.  
  489. GESCHRIEBEN SIND, LIEGEN DIE bEFEHLSWORTE UND ABSOLUTEN aDRESSEN 
  490.  
  491. DESHALB NATRLICH IMMER AUF GERADEN aDRESSEN. bEI 8 bIT 
  492.  
  493. pROZESSOREN SIEHT DIE sACHE JEDOCH GANZ ANDERS AUS. dIE OBEN 
  494.  
  495. ANGEFHRTE eINSCHRNKUNG FR ABSOLUTE aDRESSEN BESTEHT HIER 
  496.  
  497. NICHT. eS KANN ALSO OHNE wEITERES PASSIEREN, DA DIE ABSOLUTE 
  498.  
  499. aDRESSE, DIE AUF EINEN sPRUNGBEFEHL DES 6502 FOLGT, AUF EINER 
  500.  
  501. UNGERADEN aDRESSE LIEGT. sOMIT IST ES NICHT MGLICH, DIE aDRESSEN 
  502.  
  503. FR DIE ABSOLUTE aDRESSIERUNG MIT EINEM EINZIGEN bEFEHL AUS DEM 
  504.  
  505. 6502-aDRERAUM IN EIN rEGISTER DES 68000  ZU HOLEN. sOLCHE 
  506.  
  507. aDRESSEN MSSEN HIER GRUNDSTZLICH IN ZWEI EINZELNE bYTES 
  508.  
  509. AUFGESPALTEN WERDEN. dARBER HINAUS EXISTIERT NOCH EIN WEITERES 
  510.  
  511. RGERNIS. iM gEGENSATZ ZUM 68000 WERDEN BEI 8 bIT pROZESSOREN 
  512.  
  513. ABSOLUTE aDRESSEN MIT DEN lO-bYTE ZUERST IM sPEICHER ABGELEGT. 
  514.  
  515. bEVOR MAN EINE SOLCHE aDRESSE VERWENDEN KANN, MSSEN ALSO ERST 
  516.  
  517. DIE BEIDEN aDREBYTES IN DIE RICHTIGE rEIHENFOLGE GEBRACHT 
  518.  
  519. WERDEN. mIT FOLGENDER rOUTINE KNNTE DANN DIE ABSOLUTE aDRESSE 
  520.  
  521. AUS DEM sPEICHER IN EIN dATENREGISTER GEHOLT WERDEN:
  522.  
  523.  
  524.  
  525.        move.b (a0)+,d0
  526.  
  527.        asl #8,d0              aLGORITHMUS 4
  528.  
  529.        move.b (a0)+,d0
  530.  
  531.        ror #8,d0
  532.  
  533.  
  534.  
  535. dIE BEIDEN bYTES FR DIE ABSOLUTE aDRESSE WERDEN HIER EINZELN AUS 
  536.  
  537. DEM sPEICHER GEHOLT UND DURCH sCHIEBEN UND rOTIEREN IN DIE 
  538.  
  539. RICHTIGE rEIHENFOLGE GEBRACHT. sO WEIT, SO GUT. lEIDER BRAUCHEN 
  540.  
  541. sCHIEBE- UND rOTIERBEFEHLE RELATIV VIEL zEIT. aLGORITHMUS 4 MAG 
  542.  
  543. ZWAR LEICHT ZU DURCHSCHAUEN SEIN, BENTIGT JEDOCH 58 tAKTZYKLEN. 
  544.  
  545. dIES IST BESONDERS UNGNSTIG, WENN MAN BEDENKT, DA DIE ABSOLUTE 
  546.  
  547. aDRESSIERUNG RELATIV HUFIG VORKOMMT. iST MAN JEDOCH BEREIT, EIN 
  548.  
  549. aDREREGISTER ZU OPFERN, SO KANN MAN DURCH EINE VLLIG 
  550.  
  551. ANDERSARTIGE pROGRAMMIERUNG EINEN GROEN gESCHWINDIGKEITSVORTEIL 
  552.  
  553. ERLANGEN:
  554.  
  555.  
  556.  
  557.        move.b (a0)+,-(a2)
  558.  
  559.        move.b (a0)+,-(a2)     aLGORITHMUS 5
  560.  
  561.        move (a2)+,d0
  562.  
  563.  
  564.  
  565. iN aLGORITHMUS 5 ZEIGT a2 AUF EINE BELIEBIGE GERADE aDRESSE IM 
  566.  
  567. sPEICHER, AN DER DIE BEIDEN bYTES ZU EINEM wORT ZUSAMMENGESETZT 
  568.  
  569. UND ANSCHLIEEND NACH d0 BERTRAGEN WERDEN. dIESE ETWAS 
  570.  
  571. UNKONVENTIONELLE aRT DER pROGRAMMIERUNG MAG ZWAR UMSTNDLICH 
  572.  
  573. ERSCHEINEN, SIE KOMMT DAFR JEDOCH MIT NUR 32 zYKLEN AUS, DENN 
  574.  
  575. sCHIEBE- UND rOTIERBEFEHLE ENTFALLEN NUN VLLIG. lEIDER IST ES 
  576.  
  577. NICHT MGLICH, DEN sTACKPOINTER, ALSO a7, SO ZU BENUTZEN, WIE IN 
  578.  
  579. DIESEM bEISPIEL a2. dER sTACKPOINTER WIRD NMLICH GRUNDSTZLICH 
  580.  
  581. UM EIN wORT, ALSO ZWEI bYTES, ERHHT ODER ERNIEDRIGT, AUCH WENN 
  582.  
  583. bYTEOPERATIONEN DURCHGEFHRT WERDEN, SO DA ER SICH NICHT AN 
  584.  
  585. sTELLE EINES ANDEREN aDREREGISTERS BENUTZEN LT.
  586.  
  587. dIE OBIGE pROBLEMATIK STELLT NUR EINES VON VIELEN pROBLEMEN DAR, 
  588.  
  589. DIE MAN BEI DER eMULATION EINES 8 bIT pROZESSORS ZU BEWLTIGEN 
  590.  
  591. HAT, WENN MAN UM JEDEN tAKTZYKLUS KMPFEN MU.
  592.  
  593. iST NUN ENDLICH DIE EIGENTLICHE eMULATION DES pROZESSORS 
  594.  
  595. FERTIGGESTELLT, WOBEI NATRLICH FRAGLICH IST, WIEVIELE fEHLER SIE 
  596.  
  597. NOCH ENTHLT, MU MAN ALS NCHSTES SEIN aUGENMERK AUF DIE 
  598.  
  599. iMPLEMENTATION DES bETRIEBSSYSTEMS RICHTEN. sCHLIELICH IST ES 
  600.  
  601. DAS ERSTE UND WICHTIGSTE pROGRAMM, DAS MAN ZUM lAUFEN BRINGEN 
  602.  
  603. MU. lUFT DAS bETRIEBSSYSTEM UNTER DEM eMULATOR EINWANDFREI, SO 
  604.  
  605. KANN MAN DAVON AUSGEHEN, DA SICH KAUM NOCH fEHLER IM pROGRAMM 
  606.  
  607. BEFINDEN, DA ALLE bEFEHLE DES EMULIERTEN pROZESSORS IRGENDWANN 
  608.  
  609. EINMAL AUSGEFHRT WERDEN DRFTEN.
  610.  
  611. nICHT JEDES bETRIEBSSYSTEM LT SICH GLEICH GUT AUF EINEN ANDEREN 
  612.  
  613. cOMPUTER BERTRAGEN. dAS bETRIEBSSYSTEM DES c64 LT IN DIESER 
  614.  
  615. hINSICHT EINIGES ZU wNSCHEN BRIG. iM GNSTIGSTEN fALL GIBT ES 
  616.  
  617. FR JEDE WICHTIGE fUNKTION, DIE VOM sYSTEM ERLEDIGT WERDEN SOLL, 
  618.  
  619. ALSO INSBESONDERE UM DIE bEHANDLUNG DER eIN- UND aUSGABE, EINE 
  620.  
  621. fUNKTIONSNUMMER ODER EINEN sPRUNGVEKTOR. bEIM c64 GIBT ES ZWAR 
  622.  
  623. EINE SOLCHE lISTE VON sPRUNGVEKTOREN, NUR IST SIE LEIDER NICHT SO 
  624.  
  625. VOLLSTNDIG, WIE MAN ES GERNE HTTE. bESSER SIEHT ES DA BEI cp/m 
  626.  
  627. UND ms-dos AUS. hIER GIBT ES WEITAUS MEHR fUNKTIONEN ALS BEIM 
  628.  
  629. c64, SO DA EINE eMULATION ERLEICHTERT WIRD. dIES LIEGT NATRLICH 
  630.  
  631. DARAN, DA DIESE BEIDEN sYSTEM OHNEHIN FR DEN eINSATZ AUF 
  632.  
  633. UNTERSCHIEDLICHEN cOMPUTERN VORGESEHEN SIND, WAS BEIM c64 JA 
  634.  
  635. NICHT UNBEDINGT DER fALL IST. wELCHES sYSTEM MAN AUCH IMMER 
  636.  
  637. EMULIEREN WILL, ALLE aUFGABEN DIE BER SOLCHE vEKTOREN ODER 
  638.  
  639. fUNKTIONSNUMMERN AUFGERUFEN WERDEN, MSSEN VOM eMULATOR BERWACHT 
  640.  
  641. WERDEN. hIERZU EIN KONKRETES bEISPIEL: fR DIE aUSGABE VON 
  642.  
  643. zEICHEN AUF DEM c64 EXISTIERT EIN sPRUNGVEKTOR bsout. dA DIE 
  644.  
  645. bILDSCHIRMDARSTELLUNG DER zEICHEN AUF DEM st GRUNDSTZLICH ANDERS 
  646.  
  647. REALISIERT WIRD ALS AUF DEM c64, MU AN DIESER sTELLE 
  648.  
  649. EINGEGRIFFEN WERDEN. dIE aUSGABE AUF DEM bILDSCHIRM DARF NICHT SO 
  650.  
  651. ERFOLGEN, WIE ES BEIM c64 GESCHEHEN WRDE, DENN DANN WRDE SICH 
  652.  
  653. AUF DEM bILDSCHIRM DES st GAR NICHTS TUN. sIE MU IN EINER 
  654.  
  655. EIGENEN aUSGABEROUTINE PROGRAMMIERT WERDEN. dAS GLEICHE GILT FR 
  656.  
  657. VIELE ANDERE fUNKTIONEN DES bETRIEBSSYSTEMS AUF DEM c64. 
  658.  
  659. nATRLICH MU MAN DARAUF ACHTEN, DA DIE rEGISTER, DIE FR DEN 
  660.  
  661. bETRIEB DES eMULATORS WICHTIGE dATEN ENTHALTEN, NICHT IN DEN 
  662.  
  663. EIGENEN rOUTINEN VERNDERT WERDEN BZW. NUR dATEN ERHALTEN, DIE 
  664.  
  665. VOM bETRIEBSSYSTEM DES c64 ERWARTET WERDEN. dIE load-rOUTINE SOLL 
  666.  
  667. Z.b. DAS eNDE DES GELADENEN pROGRAMMS ALS rCKGABEWERT IN DEN 
  668.  
  669. iNDEXREGISTERN LIEFERN.
  670.  
  671. wIE SCHON ANGESPROCHEN, MU DIE eMULATION DURCH GEEIGNETE 
  672.  
  673. pROGRAMMIERUNG SO GESTALTET WERDEN, DA SIE MGLICHST SCHNELL 
  674.  
  675. ERFOLGT. nEBEN ENTSPRECHENDER pROGRAMMIERUNG DES eMULATORS GIBT 
  676.  
  677. ES NOCH WEITERE mGLICHKEITEN, DIE gESCHWINDIGKEIT VON pROGRAMMEN 
  678.  
  679. AUF DEM st ZU ERHHEN, BESONDERS DANN, WENN ES SICH NICHT UM 
  680.  
  681. pROGRAMME HANDELT, DIE IN gem-uMGEBUNG LAUFEN. iN DIESEM fALL IST 
  682.  
  683. ES NMLICH MGLICH, vEKTOREN, WIE DEN EVNT_TIMER-vEKTOR DES gem 
  684.  
  685. AUF EINEN rts-bEFEHL UMZUBIEGEN, SO DA DIE ZUGEHRIGEN rOUTINEN, 
  686.  
  687. DIE WHREND EINES iNTERRUPTS AUSGEFHRT WERDEN, NICHT MEHR 
  688.  
  689. ANGESPRUNGEN WERDEN. dIES HAT UNTER ANDEREM ZUR fOLGE, DA DIE 
  690.  
  691. uHR DES kONTROLLFELDS NICHT MEHR LUFT, WENN DER eMULATOR AKTIV 
  692.  
  693. IST. dA MAN SIE BEIM c64-eMULATOR OHNEHIN NICHT BENTIGT, IST 
  694.  
  695. DIES ABER KEIN bEINBRUCH. dER lOHN DAFR IST EINE ERHHTE 
  696.  
  697. gESCHWINDIGKEIT. wEITERHIN KANN ES LOHNENSWERT SEIN, DIE mAUS 
  698.  
  699. ABZUSCHALTEN, ODER BESSER NOCH ALLE aKTIONEN, DIE DEN 
  700.  
  701. tASTATURPROZESSOR BETREFFEN, SELBST ZU BERNEHMEN.
  702.  
  703. zUM sCHLU MCHTE ICH NOCH AUF DIE fRAGE EINGEHEN, INWIEWEIT 
  704.  
  705. BERHAUPT EINE kOMPATIBILITT, INSBESONDERE ZUM c64, AUF EINEM 
  706.  
  707. ANDEREN cOMPUTER ZU ERREICHEN IST. BERLEGT MAN SICH, WAS DEN c64 
  708.  
  709. SO ERFOLGREICH GEMACHT HAT, SO SIND DIES IN ERSTER lINIE DIE 
  710.  
  711. UNZHLIGEN sPIELE, DIE FR DIESEN cOMPUTER EXISTIEREN. gERADE 
  712.  
  713. sPIELE REIZEN DIE SPEZIELLEN fHIGKEITEN DES c64 (sPRITES, 
  714.  
  715. rASTERZEILEN-iNTERRUPT, tIMER) BESONDERS AUS. dA DIE hARDWARE DES 
  716.  
  717. st KEINE dARSTELLUNG VON sPRITES ERLAUBT, UND DIESE gRAFIKOBJEKTE 
  718.  
  719. NICHT NUR AUS zEITGRNDEN UNMGLICH DURCH sOFTWARE NACHGEBILDET 
  720.  
  721. WERDEN KNNEN, IST DIE eMULATION VON sPIELEN ALSO IN fRAGE 
  722.  
  723. GESTELLT. wEITERHIN IST ES AUS zEITGRNDEN NICHT MGLICH, DIE 
  724.  
  725. iNTERRUPTROUTINEN DES c64 DURCH DEN eMULATOR AUSFHREN ZU LASSEN, 
  726.  
  727. DA DANN DIE aRBEITSGESCHWINDIGKEIT MERKLICH NACHLASSEN WRDE. 
  728.  
  729. sCHLIELICH SIND GERADE iNTERRUPTS EINE BESONDERS ZEITKRITISCHE 
  730.  
  731. aNGELEGENHEIT, DA SIE SEHR HUFIG AUFTRETEN.
  732.  
  733. dAMIT SIND NUN ABER ALLE WESENTLICHEN eINSCHRNKUNGEN BEI DER 
  734.  
  735. eMULATION AUFGEFHRT. eIN gROTEIL DER pROGRAMME, DIE NICHT AUF 
  736.  
  737. DIE GENANNTEN mGLICHKEITEN ZURCKGREIFEN, KANN VOM c64-eMULATOR 
  738.  
  739. VERARBEITET WERDEN. aUCH HOCHAUFLSENDE gRAFIK IST IN EINEM 
  740.  
  741. GEWISSEN mAE MGLICH. aLLERDINGS MU DIE bITMAP FR DIE gRAFIK 
  742.  
  743. IM bEREICH VON $e000-$ffff, ALSO UNTER DEM bETRIEBSSYSTEM LIEGEN, 
  744.  
  745. DAMIT DER eMULATOR ERKENNT, WANN DER gRAFIKSPEICHER ANGESPROCHEN 
  746.  
  747. WIRD. dA DIE BERPRFUNG DES bILDSCHIRMSPEICHERS UND DER bITMAP 
  748.  
  749. RELATIV VIEL zEIT IN aNSPRUCH NIMMT, HAT EIN vERZICHT AUF DIESE 
  750.  
  751. aUSGABEKONTROLLE EINE WEITERE eRHHUNG DER gESCHWINDIGKEIT ZUR 
  752.  
  753. fOLGE.
  754.  
  755. nEBEN DER eMULATION DES c64 SIND AUCH EINE dRUCKER- UND EINE 
  756.  
  757. fLOPPY-eMULATION, DIE DER 1541 WEITGEHEND ENTSPRICHT, IM eMULATOR 
  758.  
  759. ENTHALTEN. dAS pROGRAMM LUFT BRIGENS IN NIEDRIGER UND IN HOHER 
  760.  
  761. aUFLSUNG, SO DA JEDER st-bESITZER SICH NUN SEINEN EIGENEN c64 
  762.  
  763. VON dISK LADEN KANN.
  764.  
  765.  
  766.  
  767.