★ CODING ★ LISTINGS ★ ZEGAR DLA AMSTRADA (BAJTEK) ★ |
Zegar dla Amstrada (Bajtek)![]() | Coding Listings |
My wykorzystamy tę zaletę (Czytelnicy znający zasady pracy mikroprocesora wiedzą, że w celu zapewnienia w miarę dokładnej pracy zegara wykorzystywany jest mechanizm przerwań, czyli sprzętowego (zewnętrznego) wymuszania skoku do określonego adresu w pamięci komputera) do napisania własnego zegara, który będzie pracował niezależnie od aktualnie wykonywanych programów i będzie podawał czas w normalnej formie (czyli godz.:min.:sek.). Wyposażymy go również w budzik i możliwości sterowania z BASIC-u. Żeby być całkowicie w zgodzie z prawdą należy zauważyć, że nasz zegar, tak jak zresztą i maszynowy, nie pracują, jeśli jakiś program wyłączy przerwania, co jest możliwe za pomocą odpowiedniego rozkazu maszynowego. System i BASIC wyłączają przerwania właściwie tylko w czasie zapisu lub odczytu danych na taśmę lub dyskietkę. Po wpisaniu i uruchomieniu zamieszczonego obok programu należy odpowiedzieć na pytanie o wersję Amstrada (Schneidera), gdyż od tego zależą adresy pewnych procedur systemowych wykorzystywanych przez program (np. dzielenie przez 10). Opracowany na podstawie „Schneider International" nr 12/1985 – zmiany dotknęły komend sterujących (z niem. na polski).20 DATA &3C, &A4, &35, &C0, &36, &32, &23, &7E, &C6, &01, &27, &77, &FE, &60, &20, &2C 30 DATA &36, &00, &23, &7E, &c6, &01, &27, &77, &FE, &60, &20, &20, &36, &00, &23, &7E 40 DATA &C6, &01, &27, &77, &FE, &24, &20, &14, &36, &00, &18, &10, &01, &00, &00, &00 50 DATA &00, &00, &00, &00, &00, &00, &00, &88, &0F, &A4, &00, &00, &C5, &D5, &CD, &A6 60 DATA &A4, &3A, &92, &a4, &B7, &28, &0A, &CD, &65, &A4, &23, &01, &00, &48, &CD, &93 70 DATA &A4, &D1, &C1, &AF, &C9, &11, &3D, &A4, &21, &91, &A4, &06, &03, &1A, &4F, &E6 80 DATA &0F, &C6, &30, &2B, &77, &79, &1F, &1F, &1F, &1F, &E6, &0F, &C6, &30, &2B, &77 90 DATA &13, &2B, &36, &3A, &10, &E7, &C9, &00, &3A, &30, &30, &3A, &30, &30, &3A, &32 100 DATA &35, &00, &01, &7E, &B7, &C8, &E5, &C5, &E1, &C5, &CD, &A3, &A4, &C1, &E1, &04 110 DATA &23, &18, &F0, &CF, &47, &93, &11, &CA, &A4, &21, &3D, &A4, &7E, &FE, &03, &D0 120 DATA &23, &1A, &BE, &C0, &13, &23, &1A, &BE, &C0, &CD, &C6, &A4, &21, &CC, &A4, &01 130 DATA &01, &46, &CD, &93, &A4, &C9, &CF, &DD, &94, &C9, &01, &00, &42, &55, &44, &5a 140 DATA &49, &4b, &20, &31, &20, &20, &00, &21, &E9, &A4, &CD, &D4, &BC, &38, &09, &01 150 DATA &15, &A5, &21, &11, &A5, &CD, &D1, &BC, &C9, &55, &53, &54, &41, &D7, &41, &4c 160 DATA &41, &52, &cD, &54, &45, &4b, &53, &D4, &53, &54, &4f, &d0, &57, &4c, &41, &43 170 DATA &da, &57, &59, &4c, &41, &43, &da, &53, &54, &41, &52, &d4, &43, &5a, &41, &D3 180 DATA &00, &73, &46, &15, &A5, &E9, &A4, &C3, &43, &A5, &C3, &51, &A5, &C3, &84, &A5 190 DATA &C3, &3C, &A5, &C3, &31, &A5, &C3, &37, &A5, &A3, &00, &A4, &C3, &9B, &A5, &00 200 DATA &00, &3E, &01, &32, &92, &A4, &C9, &AF, &32, &92, &A4, &C9, &21, &42, &A4, &CD 210 DATA &DD, &BC, &C9, &FD, &21, &3E, &A4, &CD, &59, &A5, &FD, &2B, &FD, &36, &00, &00 220 DATA &C9, &FD, &21, &CA, &A4, &CD, &59, &A5, &C9, &FE, &02, &C0, &26, &00, &DD, &6E 230 DATA &00, &CD, &71, &A5, &FD, &77, &00, &DD, &6E, &02, &CD, &71, &A5, &FD, &77, &01 240 DATA &C9, &11, &0A, &00, &D7, &b3, &1D, &7D, &17, &17, &17, &17, &E6, &F0, &6F, &7B 250 DATA &E6, &0F, &B5, &C9, &FE, &01, &C0, &DD, &66, &01, &DD, &6E, &00, &23, &5E, &23 260 DATA &56, &01, &0A, &00, &21, &CC, &A4, &EB, &ED, &B0, &C9, &FE, &01, &C0, &DD, &6E 270 DATA &00, &DD, &66, &01, &7E, &FE, &08, &D8, &E5, &CD, &65, &A4, &E1, &23, &5E, &23 280 DATA &56, &21, &89, &A4, &01, &08, &00, &ED, &B0, &C9, &00, &00, &00, &00, &00, &00 290 adr=&A400:suma=0: koniec=&A5BA 310 IF HIMEM>&A3FF THEN MEMORY &A3FF 320 FOR a=adr TO koniec 330 READ b:POKE a,b:suma=suma+b 340 NEXT a:IF suma<>48339 THEN PRINT "Popraw DATA !!!":END 350 INPUT "464,664 czy 6128 (1/2/3):",a% 360 IF a%3 THEN 350 370 IF a%=1 THEN POKE &A4A4, &4A:POKE &A4C7, &D8: POKE &A574, &CD:POKE &A575, &C1:POKE &A576, &BD ELSE IF a%=3 THEN POKE &A4A4, &4B:POKE &A 4C7, &E1:POKE &A575, &AE 380 CALL &A400 |
| ![]() |
|