home *** CD-ROM | disk | FTP | other *** search
/ Best of German Only 1 / romside_best_of_german_only_1.iso / anwender / sim / sim51_04.arj / BASIC52.DOC < prev    next >
Text File  |  1992-12-31  |  5KB  |  107 lines

  1.     Im 8052 AH besitzt ein internes EPROM. Darin befindet sich ab Her-
  2.     steller schon ein Programm: ein BASIC-Interpreter.
  3.  
  4.  
  5.     Simulation von BASIC52 auf SIM51.EXE:
  6.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7.     Eine  Simulation von BASIC auf dem SIM51 gibt natürlich nicht viel
  8.     Sinn, da  BASIC52 nicht mehr getestet zu werden braucht. BASIC auf
  9.         dem  SIM51 kann jedoch gut eingesetzt werden,  um die Funktion von
  10.     SIM51 zu veranschaulichen und wurde von mir zum Test verwendet.
  11.  
  12.     BASIC52 prüft zunächst  die Größe des installierten externen RAM's
  13.     (XDATA). Dazu schreibt es einen Wert ins externe RAM und ließt ihn
  14.     anschließend wieder zurück. Für 64 kByte dauert dies lang. BASIC52
  15.     benötigt mindestens 2 kByte externes RAM.  Sinnvoll wird SIM51 auf
  16.     2 kByte RAM konfiguriert (siehe F6-Fenster: RAM für 800h ...0FFFFh
  17.     Festwert #0FFh setzen).
  18.     Nach dem Laden und Start von BASIC52 mit  Go  wird SIM51 bei einem
  19.     Schreibversuch auf  XDATA 800h  anhalten  und einen Fehler melden.
  20.     Dies ist korrekt und so gewollt. Man quittiert mit ESC, und  SIM51
  21.     macht weiter mit execute.
  22.  
  23.     Bei  CODE 421h  beginnt bei  BASIC52 eine Routine, die auf den Em-
  24.     pfang des Space-Zeichens von der serielle Schnittstelle wartet (in
  25.     der Praxis muß der Anwender an seinem Terminal die SPACE drücken).
  26.     BASIC wartet hier, bis RxD (Port 3.0) low wird.  Damit beginnt das
  27.     Startflag des UART.  BASIC zählt die Zeit (Zykluszahl) für die RxD
  28.  
  29.     ───┐    SPACE = 20h, send LSB first    ┌─────┐           ┌─────
  30.        └───────────────────────────────────┘     └───────────┘
  31.        |Start|  0  |  0  |  0  |  0  |  0  |  1  |  0  |  0  |Stop
  32.  
  33.     low bleibt. Damit hat  man die Zeit für die Übertragung von 6 Bit.
  34.     Dieser Wert dient als Vorladewert für die Baudrate (Timer 2).
  35.  
  36.     Hier ist SIM51 anzuhalten  (F5 drücken),  und  "drüber zu lupfen".
  37.     Für den  Vorladewert ist von Hand ein geeigneter Wert einzutragen. 
  38.     Danach kann wieder gestartet werden.
  39.  
  40.     Beispiel Befehlsfolge zum Start von BASIC52 auf SIM51:
  41.  
  42.     SIM51                ; Programmaufruf von DOS-Prompt
  43.       m 52                ; auf 8052 umschalten
  44.       [F6]                ; Memory-Konfiguration
  45.       0800 ... FFFF -> #FF        ; nur XDATA 000..7FFh aktiv
  46.       [F6]                ; zurück
  47.       [F7] [F2] [F7]        ; Terminal-Emulation wählen
  48.       [Alt-T]            ; Terminal-Fenster einblenden
  49.       l basic52.abs            ; BASIC laden
  50.       g , 421            ; Start, Go bis CODE 421h
  51.        [Alt-D] [Up]...[Up] FD   ; RCAP2L =  #0FDh setzen (ergibt maxi-
  52.        {CR}                ; male Baudrate = 125 kBit/s  mit der
  53.                        ; BASIC läuft). zurück mit {CR}.
  54.       g 437                ; weiter ab CODE 437h, Go forever
  55.  
  56.     BASIC52 meldet sich sodann. Solange SIM51 sich im Run-Modus befin-
  57.     det,  können über  die Tastatur Zeichen eingegeben werden, die em-
  58.     fangen werden, als ob sie vom einem Terminal kämen.
  59.  
  60.     Diese Befehlsfolge kann auch abgespeichert werden, und SIM51 damit
  61.     gestartet werden (Auto-Keystroke: siehe Befehl xT, xW file). Genau
  62.     das wurde in den File basic52.key getan. Zum Auto-Start ist einzu-
  63.     geben:
  64.             SIM51 @basic52.key
  65.  
  66.  
  67.     Nach dem Start wie oben beschrieben befindet sich SIM51 im Zustand
  68.      * execute *  . Gestoppt werden kann mit [F5]. Es können aber auch
  69.     BASIC Befehle über die Tastatur eingegeben werden. Beispiel:
  70.  
  71.                PRINT 4 - 5
  72.                PRINT 3 * 2
  73.  
  74.  
  75.  
  76.  
  77.  
  78.     Disassemblieren von BASIC52 mit DIS51.EXE:
  79.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  80.     Der  Disassembler kann aufgerufen werden mit DIS51 BASIC52.ABS. Da
  81.     BASIC52 für eine 8052 CPU geschrieben ist, ist es besser, die 8052
  82.     SFR-Definitionen einzublenden.
  83.  
  84.     Zusätzlich sind alle  bekannten Einsprungadressen  anzugeben. Dies
  85.     sind:
  86.         der Reset und die Interrupt-Einsprünge für INT0, INT1,
  87.         Timer0, Timer1, Timer2 und die serielle Schnittstelle.
  88.  
  89.     Da  BASIC52 intern indirekte Sprünge verwendet (JMP @A+DPTR) blei-
  90.     ben nach einem ersten Durchlauf von DIS51.EXE einige Code-Bereiche
  91.     unübersetzt. DIS52.EXE  muß wiederholt gestartet werden, wenn noch
  92.     zusätzliche Einsprungadresse gefunden sind.
  93.  
  94.     Meißt ist  dies durch ein  bischen Kombinieren bei den JMP @A+DPTR
  95.     Befehlen leicht  herauszufinden.  Zu beachten ist,  das  indirekte
  96.     Sprünge auch über  PUSH einer Sprungadresse auf den Stack  und ein
  97.     anschließendes RET erfolgen können.
  98.  
  99.     Der File  BASIC52.DIN  enthält  schon einige Einsprungadressen von
  100.     BASIC52. Damit kann der Disassembler wie flogt gestartet werden:
  101.  
  102.         A:\DIS51 @A:\BASIC52.DIN
  103.  
  104.  
  105.     Der Aufruf von  DIS51  hat von der  Festplatte aus zu erfolgen, da
  106.     der Output-File BASIC52.D51 auf der Disk keinen Platz mehr hätte.
  107.