Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autorzy: dr Ian Logan i dr Frank O'Hara
Tłumaczenie: mgr Jerzy Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

SPIS TREŚCI

Procedury restartu i tablice

"START"

Maskowane przerwanie zostaje wyłączone, a do pary rejestrów DE zostaje wstawiony adres możliwego szczytu RAM.

0000 START        DI                        Wyłącz "przerwanie klawiatury".
                  XOR   A                   +00 dla startu (lecz +FF dla 'NEW').
                  LD    DE,+FFFF            Możliwy szczyt RAM.
                  JP    11CB,START/NEW      Skocz naprzód.

RESTART przy błędzie

Wskaźnik błędu jest ustawiany na pozycję błędu.

0008 ERROR-1      LD    HL,(CH-ADD)         Adres osiągnięty przez
                  LD    (X-PTR),HL          interpreter jest kopiowany do
                  JP    0053,ERROR-2        wskaźnika błędu przed dalszym działaniem.

RESTART wyświetlania znaku w akumulatorze

Rejestr A zawiera kod znaku, który ma być wyświetlony.

0010 PRINT-A-1    JP    15F2,PRINT-A-2      Skocz natychmiast naprzód.
                  DEFB  +FF,+FF,+FF,+FF,+FF Niewykorzystana pamięć.

RESTART pobierania znaku

Zawartość pamięci bieżąco adresowana przez CH-ADD zostaje pobrana. Powrót następuje, jeśli A reprezentuje drukowalny znak, w przeciwnym razie CH-ADD zostaje zwiększone, a test powtórzony.

0018 GET-CHAR     LD    HL,(CH-ADD)         Pobierz wartość adresowaną
                  LD    A,(HL)              przez CH-ADD.
001C TEST-CHAR    CALL  007D,SKIP-OVER      Sprawdź, czy znak jest
                  RET   NC                  drukowalny. Jeśli tak, powróć.

RESTART pobieranie następnego znaku

Gdy wiersz języka BASIC jest interpretowany, procedura ta jest cyklicznie wywoływana, aby przesuwać się wzdłuż wiersza.

0020 NEXT-CHAR    CALL  0074,CH-ADD+1       CH-ADD należy zwiększyć.
                  JR    001C,TEST-CHAR      Skocz wstecz, aby przetestować nową wartość.
                  DEFB  +FF,+FF,+FF         Niewykorzystana pamięć.

RESTART uruchom KALCULATOR

Następuje wejście do kalkulatora zmiennoprzecinkowego pod adresem 335B.
0028 FP-CALC      JP    335B,CALCULATE      Skocz naprzód natychmiast.
                  DEFB  +FF,+FF,+FF,+FF,+FF Niewykorzystana pamięć.

RESTART tworzenia BC miejsc w pamięci

Ta procedura tworzy wolne miejsce w obszarze roboczym. Liczba komórek jest określana przez bieżącą zawartość pary rejestrów BC.

0030 BC-SPACES    PUSH  BC                  Zapamiętaj liczbę komórek.
                  LD    HL,(WORKSP)         Pobierz bieżący adres startu
                  PUSH  HL                  obszaru roboczego i również go zapamiętaj
                  JP    169E,RESERVE        przed przejściem dalej.

PROCEDURA PRZERWAŃ MASKOWANYCH

Gdy wystąpi przerwanie maskowane, zegar czasu rzeczywistego zostaje zwiększony i klawiatura przeskanowana.

0038 MASK-INT     PUSH  AF                  Zapamiętaj bieżące wartości przechowywane 
                  PUSH  HL                  w tych rejestrach.
                  LD    HL,(FRAMES)         Młodsze dwa bajty licznika
                  INC   HL                  ramek są zwiększane
                  LD    (FRAMES),HL         co każde 20ms. (Anglia) Najstarszy
                  LD    A,H                 bajt licznika ramek jest
                  OR    L                   zwiększany tylko wtedy, gdy
                  JR    NZ,0048,KEY-INT     wartość dwóch młodszych bajtów
                  INC   (FRAMES-3)          wynosi zero.
0048 KEY-INT      PUSH  BC                  Zapamiętaj bieżące wartości przechowywane
                  PUSH  DE                  w tych rejestrach.
                  CALL  02BF,KEYBOARD       Teraz przeskanuj klawiaturę.
                  POP   DE                  Odtwórz zapamiętane wartości.
                  POP   BC
                  POP   HL
                  POP   AF
                  EI                        Przed powrotem przerwanie maskowane
                  RET                       zostaje włączone.

PROCEDURA "ERROR-2"

Adres powrotu do interpretera wskazuje na "DEFB" , które określa rodzaj błędu. To "DEFB" zostaje pobrane i przeniesione do ERR-NR.

Stos maszynowy zostaje wyczyszczony przed skokiem naprzód w celu wyczyszczenia skoku kalkulatora.

0053 ERROR-2      POP   HL                  Adres na stosie wskazuje
                  LD    L,(HL)              kod błędu
0055 ERROR-3      LD    (ERR-NR),L          Zostaje on przeniesiony do ERR-NR.
                  LD    SP,(ERR-SP)         Maszyna jest czyszczona, przed
                  JP    16C5,SET-STK        wyjściem poprzez SET-STK.
                  DEFB  +FF,+FF,+FF,+FF     Niewykorzystana pamięć.
                  DEFB  +FF,+FF,+FF

PROCEDURA PRZERWANIA NIEMASKOWANEGO

Ta procedura nie jest używana w standardowym Spectrum, lecz ten kod pozwala dokonać resetu systemu po aktywacji linii NMI. Zmienna systemowa pod adresem 5CB0, o nazwie NMIADD, musi posiadać wartość zero, aby doszło do resetu.

0066 RESET        PUSH  AF                  Zapamiętaj bieżące wartości przechowywane 
                  PUSH  HL                  w tych rejestrach.
                  LD    HL,(NMIADD)         Dwa bajty NMIADD
                  LD    A,H                 muszą oba być zero dla resetu
                  OR    L
                  JR    NZ,0070,NO-RESET    Uwaga: Tutaj powinno być 'JR Z'!
                  JP    (HL)                Skocz do START.
0070 NO-RESET     POP   HL                  Odtwórz zapamiętane wartości rejestrów
                  POP   AF
                  RETN                      i powróć

PODPROGRAM "CH-ADD+1"

Adres przechowywany przez CH-ADD zostaje pobrany, zwiększony i zapamiętany. Teraz zawartość pamięci adresowanej przez CH-ADD zostaje pobrana. Punkty wejścia TEMP-PTR1 i TEMP-PTR2 są używane do chwilowego ustawienia CH-ADD.

0074 CH-ADD+1     LD    HL,(CH-ADD)         Pobierz adres.
0077 TEMP-PTR1    INC   HL                  Zwiększ wskaźnik.
0078 TEMP-PTR2    LD    (CH-ADD),HL         Ustaw CH-ADD.
                  LD    A,(HL)              Pobierz adresowaną wartość
                  RET                       i powróć.

PODPROGRAM "SKIP-OVER"

Wartość przekazana do podprogramu w rejestrze A jest sprawdzana, czy tworzy znak drukowalny. Różne kody specjalne powodują zwiększenie HL o 1 lub o 2, a CH-ADD zostaje odpowiednio poprawione.

007D SKIP-OVER    CP    +21                 Powróć z wyzerowanym znacznikiem przeniesienia,
                  RET   NC                  jeśli jest to zwykły kod znaku.
                  CP    +0D                 Powróć, jeśli osiągnięto koniec wiersza
                  RET   Z
                  CP    +10                 Powróć przy kodach od +00 do +0F,
                  RET   C                   lecz z przeniesieniem ustawionym.
                  CP    +18                 Powróć przy kodach od +18 do +20
                  CCF                       znów z ustawionym przeniesieniem.
                  RET   C
                  INC   HL                  Przeskocz raz.
                  CP    +16                 Skocz naprzód przy kodach od +10
                  JR    C,0090,SKIPS        do +15 (INK do OVER).
                  INC   HL                  Przeskocz jeszcze raz (AT i TAB).
0090 SKIPS        SCF                       Wróć z ustawionym znacznikiem przeniesienia
                  LD    (CH-ADD),HL         i CH-ADD zawierającym właściwy adres.
                  RET

TABLICA SYMBOLI

Wszystkie symbole używane prze Spectrum są rozwijane przez odwołania do tej tablicy. Ostatni kod każdego symbolu jest w negatywie przez ustawienie bitu nr 7.

0095 BF 52 4E C4 49 4E 4B 45                '?' R  N 'D' I  N  K  E 
009D 59 A4 50 C9 46 CE 50 4F                 Y '$' P 'I' F 'N' P  O 
00A5 49 4E D4 53 43 52 45 45                 I  N 'T' S  C  R  E  E 
00AD 4E A4 41 54 54 D2 41 D4                 N '$' A  T  T 'R' A 'T'
00B5 54 41 C2 56 41 4C A4 43                 T  A 'B' V  A  L '$' C 
00BD 4F 44 C5 56 41 CC 4C 45                 O  D 'E' V  A 'L' L  E 
00C5 CE 53 49 CE 43 4F D3 54                'N' S  I 'N' C  O 'S' T 
00CD 41 CE 41 53 CE 41 43 D3                 A 'N' A  S 'N' A  C 'S'
00D5 41 54 CE 4C CE 45 58 D0                 A  T 'N' L 'N' E  X 'P'
00DD 49 4E D4 53 51 D2 53 47                 I  N 'T' S  Q 'R' S  G 
00E5 CE 41 42 D3 50 45 45 CB                'N' A  B 'S' P  E  E 'K'
00ED 49 CE 55 53 D2 53 54 52                 I 'N' U  S 'R' S  T  R 
00F5 A4 43 48 52 A4 4E 4F D4                '$' C  H  R '$' N  O 'T'
00FD 42 49 CE 4F D2 41 4E C4                 B  I 'N' O 'R' A  N 'D'
0105 3C BD 3E BD 3C BE 4C 49                 < '=' > '=' < '>' L  I 
010D 4E C5 54 48 45 CE 54 CF                 N 'E' T  H  E 'N' T 'O'
0115 53 54 45 D0 44 45 46 20                 S  T  E 'P' D  E  F    
011D 46 CE 43 41 D4 46 4F 52                 F 'N' C  A 'T' F  O  R 
0125 4D 41 D4 4D 4F 56 C5 45                 M  A 'T' M  O  V 'E' E 
012D 52 41 53 C5 4F 50 45 4E                 R  A  S 'E' O  P  E  N 
0135 20 A3 43 4C 4F 53 45 20                   '#' C  L  O  S  E    
013D A3 4D 45 52 47 C5 56 45                '#' M  E  R  G 'E' V  E 
0145 52 49 46 D9 42 45 45 D0                 R  I  F 'Y' B  E  E 'P'
014D 43 49 52 43 4C C5 49 4E                 C  I  R  C  L 'E' I  N 
0155 CB 50 41 50 45 D2 46 4C                'K' P  A  P  E 'R' F  L 
015D 41 53 C8 42 52 49 47 48                 A  S 'H' B  R  I  G  H 
0165 D4 49 4E 56 45 52 53 C5                'T' I  N  V  E  R  S 'E'
016D 4F 56 45 D2 4F 55 D4 4C                 O  V  E 'R' O  U 'T' L 
0175 50 52 49 4E D4 4C 4C 49                 P  R  I  N 'T' L  L  I 
017D 53 D4 53 54 4F D0 52 45                 S 'T' S  T  O 'P' R  E 
0185 41 C4 44 41 54 C1 52 45                 A 'D' D  A  T 'A' R  E 
018D 53 54 4F 52 C5 4E 45 D7                 S  T  O  R 'E' N  E 'W'
0195 42 4F 52 44 45 D2 43 4F                 B  O  R  D  E 'R' C  O 
019D 4E 54 49 4E 55 C5 44 49                 N  T  I  N  U 'E' D  I 
01A5 CD 52 45 CD 46 4F D2 47                'M' R  E 'M' F  O 'R' G 
01AD 4F 20 54 CF 47 4F 20 53                 O     T 'O' G  O     S 
01B5 55 C2 49 4E 50 55 D4 4C                 U 'B' I  N  P  U 'T' L 
01BD 4F 41 C4 4C 49 53 D4 4C                 O  A 'D' L  I  S 'T' L 
01C5 45 D4 50 41 55 53 C5 4E                 E 'T' P  A  U  S 'E' N 
01CD 45 58 D4 50 4F 4B C5 50                 E  X 'T' P  O  K 'E' P 
01D5 52 49 4E D4 50 4C 4F D4                 R  I  N 'T' P  L  O 'T'
01DD 52 55 CE 53 41 56 C5 52                 R  U 'N' S  A  V 'E' R 
01E5 41 4E 44 4F 4D 49 5A C5                 A  N  D  O  M  I  Z 'E'
01ED 49 C6 43 4C D3 44 52 41                 I 'F' C  L 'S' D  R  A 
01F5 D7 43 4C 45 41 D2 52 45                'W' C  L  E  A 'R' R  E 
01FD 54 55 52 CE 43 4F 50 D9                 T  U  R 'N' C  O  P 'Y'

TABLICE KLAWISZY

Jest sześć oddzielnych tablic klawiszy. Ostateczny znak zależy od naciśnięcia określonego klawisza oraz używanego trybu.

(a) Główna tablica klawiszy - tryb L z CAPS SHIFT.

0205 42 48 59 36 35 54 47 56                   B      H    Y  6  5  T  G  V
020D 4E 4A 55 37 34 52 46 43                   N      J    U  7  4  R  F  C
0215 4D 4B 49 38 33 45 44 58                   M      K    I  8  3  E  D  X
021D 0E 4C 4F 39 32 57 53 5A                SYMBOL    L    0  9  2  W  S  Z
                                            SHIFT
0225 20 0D 50 30 31 51 41                   SPACE   ENTER  P  0  1  Q  A

(b) Tryb rozszerzony. Klawisze literowe bez SHIFT

022C E3 C4 E0 E4                            READ           BIN           LPRINT       DATA
0230 B4 BC BD BB                            TAN            SGN           ABS          SQR
0234 AF B0 B1 C0                            CODE           VAL           LEN          USR
0238 A7 A6 BE AD                            PI             INKEY$        PEEK         TAB
023C B2 BA E5 A5                            SIN            INT           RESTORE      RND
0240 C2 E1 B3 B9                            CHR$           LLIST         COS          EXP
0244 C1 B8                                  STR$           LN

(c) Tryb rozszerzony. Klawisze literowe z jednym z klawiszy SHIFT.

0246 7E DC DA 5C                            ~              BRIGHT        PAPER        \
024A B7 7B 7D D8                            ATN            {             }            CIRCLE
024E BF AE AA AB                            IN             VAL$          SCREEN$      ATTR
0252 DD DE DF 7F                            INVERSE        OVER          OUT          ©
0256 B5 D6 7C D5                            ASN            VERIFY        |            MERGE
025A 5D DB B6 D9                            ]              FLASH         ACS          INK
025E 5B D7 0C 07                            [              BEEP

(d) Kody sterujące. Klawisze cyfrowe z CAPS SHIFT.

0260 0C 07 06 04                            DELETE         EDIT          CAPS LOCK    TRUE VIDEO
0264 05 08 0A 0B                            INV VIDEO      Kursor w lewo Kursor w dół Kursor w górę
0268 09 0F                                  Kursor w prawo GRAPHICS

(e) Kod symboli. Klawisze literowe z SYMBOL SHIFT.

026A E2 2A 3F CD                            STOP           *             ?            STEP
026E C8 CC CB 5E                            >=             TO            THEN         ^
0272 AC 2D 2B 3D                            AT             -             +            =
0276 2E 2C 3B 22                            .              ,             ;            "
027A C7 3C C3 3E                            <=             <             NOT          >
027E C5 2F C9 60                            OR             /             <>           £
0282 C6 3A                                  AND            :

(f) Tryb rozszerzony. Klawisze cyfrowe z SYMBOL SHIFT.

0284 D0 CE A8 CA                            FORMAT         DEF FN        FN           LINE
0288 D3 D4 D1 D2                            OPEN           CLOSE         MOVE         ERASE
028C A9 CF                                  POINT          CAT

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.