| Indeks | English version |
Powiązany odnośnik: "Uruchamianie programów maszynowych na mikrokomputerze Casio PB-2000C"
Wymagany jest PB-2000C z 64kB RAM i interfejsem FA-7 lub MD-100.
Treść wyświetlacza:
<memory> c file work 58879 7500 50000 1379 free 50000 1379 c,file? 7500,50000 |
NEW
LOAD"MC"
RUN
main() {
char* p;
p=(char*)0xC021;
*p++=0x56;*p++=0x60;*p++=0x55;*p++=0xD1;
*p++=0x08;*p++=0xE0;*p++=0x04;*p++=0x77;
*p++=0x74;*p++=0xC0;*p++=0xB4;*p++=0x84;
*p++=0x0D;*p++=0x04;*p++=0xD1;*p++=0x08;
*p++=0x96;*p++=0x40;*p++=0x77;*p++=0x74;
*p++=0xC0;*p++=0xD1;*p++=0x08;*p++=0x1D;
*p++=0x57;*p++=0x71;*p++=0x74;*p++=0xC0;
*p++=0xD1;*p++=0x08;*p++=0x23;*p++=0x40;
*p++=0x77;*p++=0x74;*p++=0xC0;*p++=0xD1;
*p++=0x00;*p++=0x00;*p++=0x80;*p++=0xD1;
*p++=0x08;*p++=0x3E;*p++=0x41;*p++=0x77;
*p++=0x74;*p++=0xC0;*p++=0xD1;*p++=0x08;
*p++=0xE0;*p++=0x04;*p++=0x77;*p++=0x74;
*p++=0xC0;*p++=0xB0;*p++=0x84;*p++=0x56;
*p++=0x60;*p++=0x45;*p++=0xD6;*p++=0x00;
*p++=0x10;*p++=0x0C;*p++=0xD1;*p++=0x00;
*p++=0x30;*p++=0x00;*p++=0xA0;*p++=0x00;
*p++=0x56;*p++=0x60;*p++=0x65;*p++=0xD6;
*p++=0x00;*p++=0x00;*p++=0x00;*p++=0xD6; /*#*/
*p++=0x20;*p++=0xFF;*p++=0x7F;*p++=0x96; /*#*/
*p++=0x59;*p++=0xD8;*p++=0xFE;*p++=0x1E;
*p++=0x66;*p++=0x26;*p++=0x06;*p++=0xD1;
*p++=0x06;*p++=0x75;*p++=0x02;*p++=0xA6;
*p++=0x07;*p++=0x56;*p++=0x60;*p++=0x54;
*p++=0xDE;*p++=0x08;
}
>E0CE2 0CE2 AE-76 6F-02 FF- |
W rezultacie tych czynności w kalkulatorze powinien pojawić się plik o nazwie "MEMO" zawierający dolne 32kB obrazu pamięci ROM karty + bajt EOF (0x1A). Można go wysłać przez port RS232 za pomocą menu [save].
W celu odczytania górnych 32kB zawartości pamięci ROM karty, potrzebna jest niewielka zmiana programu w języku C i powtórzenie powyższych kroków. Wiersze oznaczone komentarzem /*#*/ należy zastąpić następującymi:
*p++=0x00;*p++=0x00;*p++=0x80;*p++=0xD6; /*#*/ *p++=0x20;*p++=0xFF;*p++=0xFF;*p++=0x96; /*#*/
Zwracam uwagę, że karta jest wkładana do włączonego kalkulatora, przy aktywnej magistrali. Nie jest to niebezpieczne, ale może czasem spowodować zawieszenie kalkulatora (chociaż mnie się to nigdy nie zdarzyło). W takiej sytuacji trzeba zacząć jeszcze raz od początku.
ORG &HC021
START &HC021
PST UA,&H55
; czekanie na otwarcie gniazda karty
LDW $8,&H04E0
L1: CAL SYSCAL
JR NZ,L1
; szukanie pliku o nazwie "MEMO"
NA $4,$SX
LDW $8,&H4096
CAL SYSCAL
; skasowanie istniejącego pliku "MEMO"
LDW $8,&H571D
CAL NC,SYSCAL
; utworzenie nowego sekwencyjnego pliku o nazwie "MEMO"
LDW $8,&H4023
CAL SYSCAL
; zmiana rozmiaru pliku na &H8000 bajtów
LDW $0,&H8000 ;ilość bajtów
LDW $8,&H413E ;powiększenie pliku
CAL SYSCAL
; czekanie na zamknięcie gniazda karty
LDW $8,&H04E0
L2: CAL SYSCAL
JR Z,L2
; wybór karty w banku pamięci 2
PST UA,&H45
PRE IX,&H0C10
LDW $0,&H0030
STW $0,(IX+$31)
; kopiowanie &H8000 bajtów z karty do pliku
PST UA,&H65 ;źródło = bank 2, cel = bank 1
PRE IX,0 ;początkowy adres źródłowy
PRE IY,&H7FFF ;końcowy adres źródłowy
PRE IZ,$25 ;adres docelowy
BUP
OFF
; wywołanie podprogramu o adresie $8,$9 w banku pamięci 0
SYSCAL: GST UA,$6
PHS $6
LDW $6,&H0276-1
PHSW $7
PST UA,&H54
JP $8