0% found this document useful (0 votes)
6 views30 pages

Asmsource 0

The document contains code for various procedures related to error checking and handling in a system, including functions for checking crashes, clearing errors, converting voltage to a string, and printing error messages. It utilizes memory buffers and registers to manage data and perform operations. The code is structured with conditional statements and loops to handle different scenarios effectively.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views30 pages

Asmsource 0

The document contains code for various procedures related to error checking and handling in a system, including functions for checking crashes, clearing errors, converting voltage to a string, and printing error messages. It utilizes memory buffers and registers to manage data and perform operations. The code is structured with conditional statements and loops to handle different scenarios effectively.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 30

;//export Read,Write,WriteC,Verify;

;
;
;//#define MEM_SIZE 2048 // ������ ����� ���������� � ������
;//#define BLOCK_SIZE 64 // ������ ����� �� ������ ����� ���������� �
��������������
; // ������� �������� ��������� �� ��������
������
; // �������� ��������� ���� ����-��� ����� USB
������ �������� �����
; // �� ��������� � ������� ����� 1024 ����
���������� ����� ������������
;//#define WRITE_PAGE_SIZE 8
;
;emem fbuf=0,fsel=2; // ������� ������
; // fbuf - ��, ��� ����� �� ������ ���������
; // fsel - �� �������-�������� ��������� ����
��� ����
;byte buf[64];
;
;string s1;
;
;proc on_dump_check_crash()
PROCON_DUMP_CHECK_CRASH:
PUSHR 5
ENTER 0,5
;{
; R0=V1
; R1=ADDR
; R2=DUMP_ERROR
; var v1, addr, dump_error;
;
;
; dump_error = 0;
;+o
LDB R2,0
;_o
; if(fbuf[0x260] = 0xFF){ dump_error = 1; }
;+o1
LDW R3,608
LDEM 0,R3,R3
MOV R14,R3
LDB R15,255
CMPJNE R14,R15,ON_DUMP_CHECK_CRASH_IF0_END
;-o1
;+o
LDB R2,1
;_o
ON_DUMP_CHECK_CRASH_IF0_END:
; if(fbuf[0x261] = 0xFF){ dump_error = 1; }
;
;+o1
LDW R3,609
LDEM 0,R3,R3
MOV R14,R3
LDB R15,255
CMPJNE R14,R15,ON_DUMP_CHECK_CRASH_IF1_END
;-o1
;+o
LDB R2,1
;_o
ON_DUMP_CHECK_CRASH_IF1_END:
; if(dump_error = 1)
;+o1
;LDB R15,1
;CMPJNE R2,R15,ON_DUMP_CHECK_CRASH_IF2_END
;-o1
CPIJNE R2,1,ON_DUMP_CHECK_CRASH_IF2_END
; {
; lbDumpState = "������ �����!";
SYS 0
LDW R15,STR_0
SYS 1
LDB R15,1
SYS 15
; print("\n..������! �������� ����!");
SYS 0
LDW R15,STR_1
SYS 1
SYS 12
JMP ON_DUMP_CHECK_CRASH_ELSE0_END
ON_DUMP_CHECK_CRASH_IF2_END:
; }
; else
; {
; addr = 0x20; v1 = 0;
;+o
LDB R1,32
;_o
;+o
LDB R0,0
;_o
; while(addr != 0x21)
ON_DUMP_CHECK_CRASH_WHILE0:
;+o1
;LDB R15,33
;CMPJE R1,R15,ON_DUMP_CHECK_CRASH_WHILE0_END
;-o1
CPIJE R1,33,ON_DUMP_CHECK_CRASH_WHILE0_END
; {
; v1 = v1 | fbuf[addr]; addr = addr + 1;
;+o
LDEM 0,R3,R1
MOV R4,R0
OR R4,R3
MOV R0,R4
;_o
;+o
;MOV R3,R1
;ADDB R3,1
;MOV R1,R3
;_o
ADDB R1,1
JMP ON_DUMP_CHECK_CRASH_WHILE0
ON_DUMP_CHECK_CRASH_WHILE0_END:
; }
;
; if(v1 != 0xff)
;+o1
;LDB R15,255
;CMPJE R0,R15,ON_DUMP_CHECK_CRASH_IF3_END
;-o1
CPIJE R0,255,ON_DUMP_CHECK_CRASH_IF3_END
; {
; lbDumpState = "CRASH!";
SYS 0
LDW R15,STR_2
SYS 1
LDB R15,1
SYS 15
; print("\n..��������� CRASH!");
SYS 0
LDW R15,STR_3
SYS 1
SYS 12
JMP ON_DUMP_CHECK_CRASH_ELSE1_END
ON_DUMP_CHECK_CRASH_IF3_END:
; }
; else
; {
; lbDumpState = "������";
SYS 0
LDW R15,STR_4
SYS 1
LDB R15,1
SYS 15
; print("\n..���� ������");
SYS 0
LDW R15,STR_5
SYS 1
SYS 12
ON_DUMP_CHECK_CRASH_ELSE1_END:
; }
ON_DUMP_CHECK_CRASH_ELSE0_END:
; }
PROC_ON_DUMP_CHECK_CRASH_END:
POPR 5
RET 0
; UsedRegs = 0000000000011111
;}
;
;proc on_dump_clear_crash()
PROCON_DUMP_CLEAR_CRASH:
PUSHR 3
ENTER 0,3
;{
; R0=ADDR
; R1=DUMP_ERROR
; var addr, dump_error;
;
; dump_error = 0;
;+o
LDB R1,0
;_o
; if(fbuf[0x260] = 0xFF){ dump_error = 1; }
;+o1
LDW R2,608
LDEM 0,R2,R2
MOV R14,R2
LDB R15,255
CMPJNE R14,R15,ON_DUMP_CLEAR_CRASH_IF0_END
;-o1
;+o
LDB R1,1
;_o
ON_DUMP_CLEAR_CRASH_IF0_END:
; if(fbuf[0x261] = 0xFF){ dump_error = 1; }
;
;+o1
LDW R2,609
LDEM 0,R2,R2
MOV R14,R2
LDB R15,255
CMPJNE R14,R15,ON_DUMP_CLEAR_CRASH_IF1_END
;-o1
;+o
LDB R1,1
;_o
ON_DUMP_CLEAR_CRASH_IF1_END:
; if(dump_error = 0)
;+o1
;LDB R15,0
;CMPJNE R1,R15,ON_DUMP_CLEAR_CRASH_IF2_END
;-o1
JNZ R1,ON_DUMP_CLEAR_CRASH_IF2_END
; {
; print("\n��������� CRASH...");
SYS 0
LDW R15,STR_6
SYS 1
SYS 12
; addr = 0x20;
;+o
LDB R0,32
;_o
; while(addr != 0xA0)
ON_DUMP_CLEAR_CRASH_WHILE0:
;+o1
;LDB R15,160
;CMPJE R0,R15,ON_DUMP_CLEAR_CRASH_WHILE0_END
;-o1
CPIJE R0,160,ON_DUMP_CLEAR_CRASH_WHILE0_END
; {
; fbuf[addr] = 0xFF; fsel[addr] = 2; addr = addr + 1;
;+o
LDB R15,255
STEM 0,R0,R15
;_o
;+o
LDB R15,2
STEM 2,R0,R15
;_o
;+o
;MOV R2,R0
;ADDB R2,1
;MOV R0,R2
;_o
ADDB R0,1
JMP ON_DUMP_CLEAR_CRASH_WHILE0
ON_DUMP_CLEAR_CRASH_WHILE0_END:
; }
;
; addr = 0x2B0;
;+o
LDW R0,688
;_o
; while(addr != 0x800)
ON_DUMP_CLEAR_CRASH_WHILE1:
;+o1
LDW R15,2048
CMPJE R0,R15,ON_DUMP_CLEAR_CRASH_WHILE1_END
;-o1
; {
; fbuf[addr] = 0xFF; fsel[addr] = 2; addr = addr + 1;
;+o
LDB R15,255
STEM 0,R0,R15
;_o
;+o
LDB R15,2
STEM 2,R0,R15
;_o
;+o
;MOV R2,R0
;ADDB R2,1
;MOV R0,R2
;_o
ADDB R0,1
JMP ON_DUMP_CLEAR_CRASH_WHILE1
ON_DUMP_CLEAR_CRASH_WHILE1_END:
; }
; print("\n..��!");
SYS 0
LDW R15,STR_7
SYS 1
SYS 12
JMP ON_DUMP_CLEAR_CRASH_ELSE0_END
ON_DUMP_CLEAR_CRASH_IF2_END:
; }
; else
; {
; print("\n..������! �������� ����!");
SYS 0
LDW R15,STR_8
SYS 1
SYS 12
ON_DUMP_CLEAR_CRASH_ELSE0_END:
; }
PROC_ON_DUMP_CLEAR_CRASH_END:
POPR 3
RET 0
; UsedRegs = 0000000000000111
;}
;
;proc voltage_to_string(value)
PROCVOLTAGE_TO_STRING:
; R0=VALUE
PUSHR 3
ENTER 1,3
;{
; R1=A
; var a;
; a = value % 100;
;+o
MOV R2,R0
MODB R2,100
MOV R1,R2
;_o
; value /= 100;
;+o
DIVB R0,100
;_o
; if((a % 10) > 5) a += 10 ;
;+o1
MOV R2,R1
MODB R2,10
MOV R14,R2
LDB R15,5
CMPJLE R14,R15,VOLTAGE_TO_STRING_IF0_END
;-o1
;+o
ADDB R1,10
;_o
VOLTAGE_TO_STRING_IF0_END:
; a /= 10;
;+o
DIVB R1,10
;_o
; s1 = #i.value+"."+#i.a;
SYS 0
MOV R15,R0
SYS 3
LDW R15,STR_9
SYS 1
MOV R15,R1
SYS 3
LDB R15,0
SYS 2
PROC_VOLTAGE_TO_STRING_END:
POPR 3
RET 1
; UsedRegs = 0000000000000111
;}
;
;proc print_errors(i)
PROCPRINT_ERRORS:
; R0=I
PUSHR 2
ENTER 1,2
;{
; print("\n ��� ������: "+#i.i);
SYS 0
LDW R15,STR_10
SYS 1
MOV R15,R0
SYS 3
SYS 12
; i = device.pins_error;
;+o
LDD R15,66881
SYS 19
MOV R1,R15
MOV R0,R1
;_o
; if(i & 1) print(" ���� CS (1 �����) �������� � '0'");
;+o1
;MOV R1,R0
;ANDB R1,1
;MOV R14,R1
;LDB R15,0
;CMPJE R14,R15,PRINT_ERRORS_IF0_END
JBRC R0,0,PRINT_ERRORS_IF0_END
;-o1
SYS 0
LDW R15,STR_11
SYS 1
SYS 12
PRINT_ERRORS_IF0_END:
; if(i & 2) print(" ���� CS (1 �����) �������� � '1'");
;+o1
;MOV R1,R0
;ANDB R1,2
;MOV R14,R1
;LDB R15,0
;CMPJE R14,R15,PRINT_ERRORS_IF1_END
JBRC R0,1,PRINT_ERRORS_IF1_END
;-o1
SYS 0
LDW R15,STR_12
SYS 1
SYS 12
PRINT_ERRORS_IF1_END:
; if(i & 4) print(" ���� SO (2 �����) �������� � '0'");
;+o1
;MOV R1,R0
;ANDB R1,4
;MOV R14,R1
;LDB R15,0
;CMPJE R14,R15,PRINT_ERRORS_IF2_END
JBRC R0,2,PRINT_ERRORS_IF2_END
;-o1
SYS 0
LDW R15,STR_13
SYS 1
SYS 12
PRINT_ERRORS_IF2_END:
PROC_PRINT_ERRORS_END:
POPR 2
RET 1
; UsedRegs = 0000000000000011
;}
;
;proc pin_test()
PROCPIN_TEST:
PUSHR 2
ENTER 0,2
;{
; R0=A
; var a;
; print("\n��� ������...");
SYS 0
LDW R15,STR_14
SYS 1
SYS 12
; for(;;)
PIN_TEST_FOR0:
; {
; a = device.pin_test(8,4);
;+o
LDB R1,8
PUSH R1
LDB R1,4
PUSH R1
LDB R15,0
ORW R15,512
SYS 17
MOV R1,R15
MOV R0,R1
;_o
; if(a = 0)
;+o1
;LDB R15,0
;CMPJNE R0,R15,PIN_TEST_IF0_END
;-o1
JNZ R0,PIN_TEST_IF0_END
; {
; print(" OK");
SYS 0
LDW R15,STR_15
SYS 1
SYS 12
; break;
JMP PIN_TEST_FOR0_END
PIN_TEST_IF0_END:
; }
; if(a = 0) break;
;+o1
;LDB R15,0
;CMPJNE R0,R15,PIN_TEST_IF1_END
;-o1
JNZ R0,PIN_TEST_IF1_END
JMP PIN_TEST_FOR0_END
PIN_TEST_IF1_END:
; PIN_TEST_WINDOW = a;
; // ������� �� ���� ���-������� ************
; // 0 - ���� OK
; // 1 - ���������
; // 2 - �������� ������
; //*****************************************
;+o
OUT 2,R0
;_o
; a = PIN_TEST_RESULT;
;+o
;IN R1,3
;MOV R0,R1
;_o
IN R0,3
; if(a != 1) break;
;+o1
;LDB R15,1
;CMPJE R0,R15,PIN_TEST_IF2_END
;-o1
CPIJE R0,1,PIN_TEST_IF2_END
JMP PIN_TEST_FOR0_END
PIN_TEST_IF2_END:
JMP PIN_TEST_FOR0
PIN_TEST_FOR0_END:
; }
; return(a);
MOV R15,R0
;JMP PROC_PIN_TEST_END
PROC_PIN_TEST_END:
POPR 2
RET 0
; UsedRegs = 0000000000000011
;}
;
;proc init()
PROCINIT:
PUSHR 3
ENTER 0,3
;{
; R0=I
; R1=TEMP
; var i,temp;
; if(WINDOW = 0) ShowWindow;
;+o1
;IN R2,33
;MOV R14,R2
;LDB R15,0
;CMPJNE R14,R15,INIT_IF0_END
;-o1
JNZIO 33,INIT_IF0_END
SYS 10
INIT_IF0_END:
; i = device.init(vcc); // �������� ������������ - �������� ������
;+o
LDMB R2,VCC
PUSH R2
LDB R15,1
ORW R15,256
SYS 17
MOV R2,R15
MOV R0,R2
;_o
; if(pin_tester)
;+o1
LDMB R2,pin_tester
;MOV R14,R2
;LDB R15,0
;CMPJE R14,R15,INIT_IF1_END
;-o1
CPIJE R2,0,INIT_IF1_END
; {
; if(pin_test() != 0)
;+o1
CALL PROCpin_test
MOV R2,R15
MOV R14,R2
LDB R15,0
CMPJE R14,R15,INIT_IF2_END
;-o1
; {
; device.poweroff();
LDB R15,2
SYS 18

SYS 11
; CloseWindow;
; return;
JMP PROC_INIT_END
INIT_IF2_END:
; }
INIT_IF1_END:
; }
; i = device.connect_power_pins(8,4);
;+o
LDB R2,8
PUSH R2
LDB R2,4
PUSH R2
LDB R15,3
ORW R15,512
SYS 17
MOV R2,R15
MOV R0,R2
;_o
; temp = i >> 16;
;+o
MOV R2,R0
RR R2,16
MOV R1,R2
;_o
; i &= 0xFFFF;
;+o
ANDW R0,65535
;_o
; voltage_to_string(i);
; //print("\nVCC = "+s1+" �");
; //print("\n"+#i.temp);
PUSH R0
CALL PROCVOLTAGE_TO_STRING
; if(temp < 450)
;+o1
LDW R15,450
CMPJGE R1,R15,INIT_IF3_END
;-o1
; {
; Device.PowerOff();
LDB R15,2
SYS 18

; print("\n ���������� �� �������!");


SYS 0
LDW R15,STR_16
SYS 1
SYS 12
; mbox("���������� �� �������!",2);
SYS 0
LDW R15,STR_17
SYS 1
ORD R15,131072
SYS 9
; return(255);
LDB R15,255
JMP PROC_INIT_END
INIT_IF3_END:
; }
; return(0);
LDB R15,0
;JMP PROC_INIT_END
PROC_INIT_END:
POPR 3
RET 0
; UsedRegs = 0000000000000111
;}
;
;proc check_sr(mode)
PROCCHECK_SR:
; R0=MODE
PUSHR 4
ENTER 1,4
;{
; R1=ERROR
; R2=TEMP
; var error,temp;
; error = device.read_sr();
;+o
LDB R15,4
SYS 17
MOV R3,R15
MOV R1,R3
;_o
; if(error = 255)
;+o1
;LDB R15,255
;CMPJNE R1,R15,CHECK_SR_IF0_END
;-o1
CPIJNE R1,255,CHECK_SR_IF0_END
; {
; temp = mbox("������� ������� ���������� ����� ������������� ��������.\
n�������� ���������� ����������. \n\n����������?",1);
;+o
SYS 0
LDW R15,STR_18
SYS 1
ORD R15,65536
SYS 9
MOV R2,R15
; if(temp = 0) return(255);
;+o1
;LDB R15,0
;CMPJNE R2,R15,CHECK_SR_IF1_END
;-o1
JNZ R2,CHECK_SR_IF1_END
LDB R15,255
JMP PROC_CHECK_SR_END
CHECK_SR_IF1_END:
CHECK_SR_IF0_END:
; }
; if(mode)
;+o1
;LDB R15,0
;CMPJE R0,R15,CHECK_SR_IF2_END
;-o1
JZ R0,CHECK_SR_IF2_END
; {
; error = (error >> 2) & 3;
;+o
MOV R3,R1
RR R3,2
ANDB R3,3
MOV R1,R3
;_o
; if(error)
;+o1
;LDB R15,0
;CMPJE R1,R15,CHECK_SR_IF3_END
;-o1
JZ R1,CHECK_SR_IF3_END
; {
; temp = mbox("��������� ������� ���������� �������� �� ������.\n����
������ ����� ������?",1);
;+o
SYS 0
LDW R15,STR_19
SYS 1
ORD R15,65536
SYS 9
MOV R2,R15
; if(temp = 1)
;+o1
;LDB R15,1
;CMPJNE R2,R15,CHECK_SR_IF4_END
;-o1
CPIJNE R2,1,CHECK_SR_IF4_END
; {
; sr_value = 0;
;+o
LDB R3,0
STMB SR_VALUE,R3
;_o
; error = device.write_sr(0);
;+o
LDB R3,0
PUSH R3
LDB R15,5
ORW R15,256
SYS 17
MOV R3,R15
MOV R1,R3
;_o
; if(error)
;+o1
;LDB R15,0
;CMPJE R1,R15,CHECK_SR_IF5_END
;-o1
JZ R1,CHECK_SR_IF5_END
; {
; print("\n������ ������ �������� �������");
SYS 0
LDW R15,STR_20
SYS 1
SYS 12
CHECK_SR_IF5_END:
; }
CHECK_SR_IF4_END:
; }
CHECK_SR_IF3_END:
; }
CHECK_SR_IF2_END:
; }
; return(0);
LDB R15,0
;JMP PROC_CHECK_SR_END
PROC_CHECK_SR_END:
POPR 4
RET 1
; UsedRegs = 0000000000001111
;}
;
;proc Read()
PROCREAD:
PUSHR 5
ENTER 0,5
;{
; R0=I
; R1=TEMP
; R2=ADR
; R3=ERROR
; var i,temp,adr,error;
;
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R4,R15
MOV R14,R4
LDB R15,0
CMPJE R14,R15,READ_IF0_END
;-o1
JMP PROC_READ_END
READ_IF0_END:
; if(check_sr(0))
;+o1
LDB R4,0
PUSH R4
CALL PROCcheck_sr
MOV R4,R15
MOV R14,R4
LDB R15,0
CMPJE R14,R15,READ_IF1_END
;-o1
; {
; device.poweroff();
LDB R15,2
SYS 18

; return;
JMP PROC_READ_END
READ_IF1_END:
; }
; PBPOS = 0;PBMAX = 2048;
;+o
LDB R4,0
OUT 1,R4
;_o
;+o
LDW R4,2048
OUT 0,R4
;_o
; error= 0;
;+o
LDB R3,0
;_o
; for(adr = 0; adr < 2048; adr += 64)
LDB R2,0
READ_FOR1:
;+o1
LDW R15,2048
CMPJGE R2,R15,READ_FOR1_END
; {
; i = device.read_block(adr,64);
;+o
PUSH R2
LDB R4,64
PUSH R4
LDB R15,6
ORW R15,512
SYS 17
MOV R4,R15
MOV R0,R4
;_o
; i = device.pins_error;
;+o
LDD R15,66881
SYS 19
MOV R4,R15
MOV R0,R4
;_o
; if(i != 0)
;+o1
;LDB R15,0
;CMPJE R0,R15,READ_IF2_END
;-o1
JZ R0,READ_IF2_END
; {
; print("\n ������ �����. ");
SYS 0
LDW R15,STR_21
SYS 1
SYS 12
; print_errors(i);
PUSH R0
CALL PROCPRINT_ERRORS
; error = 255;
;+o
LDB R3,255
;_o
; break;
JMP READ_FOR1_END
READ_IF2_END:
; }
; block(fbuf[adr] = device.buf,64);
; ����� ���������
MOV R15,R2
; ����� ������ - ����������� 1279
LDW R14,1279
; ������ �����
; ORD 00400000
ORD R14,4194304
SYS 21
; PBPOS = adr+64;
;+o
MOV R4,R2
ADDB R4,64
OUT 1,R4
;_o
ADDB R2,64
JMP READ_FOR1
READ_FOR1_END:
; }
; Device.PowerOff();
LDB R15,2
SYS 18

; if(error = 0)
;+o1
;LDB R15,0
;CMPJNE R3,R15,READ_IF3_END
;-o1
JNZ R3,READ_IF3_END
; {
; print("\n������ ���������. "+#i.2048+" ���� ���������." );
SYS 0
LDW R15,STR_22
SYS 1
LDW R15,2048
SYS 3
LDW R15,STR_23
SYS 1
SYS 12
SYS 11
; CloseWindow;
READ_IF3_END:
; }
PROC_READ_END:
POPR 5
RET 0
; UsedRegs = 0000000000011111
;}
;
;proc verify()
PROCVERIFY:
PUSHR 6
ENTER 0,6
;{
; R0=I
; R1=TEMP
; R2=ADR
; R3=ERROR
; var i,temp,adr,error;
;
; if(WINDOW = 0) ShowWindow;
;+o1
;IN R4,33
;MOV R14,R4
;LDB R15,0
;CMPJNE R14,R15,VERIFY_IF0_END
;-o1
JNZIO 33,VERIFY_IF0_END
SYS 10
VERIFY_IF0_END:
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R4,R15
MOV R14,R4
LDB R15,0
CMPJE R14,R15,VERIFY_IF1_END
;-o1
JMP PROC_VERIFY_END
VERIFY_IF1_END:
; PBPOS = 0;PBMAX = 2048-1;
;+o
LDB R4,0
OUT 1,R4
;_o
;+o
LDW R4,2047
OUT 0,R4
;_o
; error= 0;
;+o
LDB R3,0
;_o
; temp = 0;
;+o
LDB R1,0
;_o
; for(adr = 0; adr < 2048; adr += 64)
LDB R2,0
VERIFY_FOR2:
;+o1
LDW R15,2048
CMPJGE R2,R15,VERIFY_FOR2_END
; {
; i = device.read_block(adr,64);
;+o
PUSH R2
LDB R4,64
PUSH R4
LDB R15,6
ORW R15,512
SYS 17
MOV R4,R15
MOV R0,R4
;_o
; if(i != 0)
;+o1
;LDB R15,0
;CMPJE R0,R15,VERIFY_IF2_END
;-o1
JZ R0,VERIFY_IF2_END
; {
; print("\n ������ �����. ");
SYS 0
LDW R15,STR_24
SYS 1
SYS 12
; print_errors(i);
PUSH R0
CALL PROCPRINT_ERRORS
; error = 255;
;+o
LDB R3,255
;_o
; break;
JMP VERIFY_FOR2_END
VERIFY_IF2_END:
; }
;
; block(buf = device.buf,64);
;
; �� ������ - ���������
LDW R15,BUF
; ����� ������ - ����������� 1279
LDW R14,1279
; ������ �����
; ORD 00400000
ORD R14,4194304
SYS 20
; for(i = 0 ; i < 64; i++)
LDB R0,0
VERIFY_FOR3:
;+o1
LDB R15,64
CMPJGE R0,R15,VERIFY_FOR3_END
; {
; if(buf[i] != fbuf[adr+i])
;+o1
;MOV R4,R0
;ADDW R4,buf
;LDIB R4,R4
ARDB R4,buf+R0
MOV R14,R4
MOV R4,R2
ADD R4,R0
LDEM 0,R5,R4
MOV R15,R5
CMPJE R14,R15,VERIFY_IF3_END
;-o1
; {
; fsel[adr+i] = 255;
;+o
MOV R5,R2
ADD R5,R0
LDB R15,255
STEM 2,R5,R15
;_o
; temp++;
;+o
ADDB R1,1
;_o
JMP VERIFY_ELSE0_END
VERIFY_IF3_END:
; }
; else fsel[adr+i] = 0;
;
;+o
MOV R5,R2
ADD R5,R0
LDB R15,0
STEM 2,R5,R15
;_o
VERIFY_ELSE0_END:
ADDB R0,1
JMP VERIFY_FOR3
VERIFY_FOR3_END:
; }
; PBPOS = adr+64;
;+o
MOV R4,R2
ADDB R4,64
OUT 1,R4
;_o
ADDB R2,64
JMP VERIFY_FOR2
VERIFY_FOR2_END:
; }
; Device.PowerOff();
LDB R15,2
SYS 18

; if(error = 0)
;+o1
;LDB R15,0
;CMPJNE R3,R15,VERIFY_IF4_END
;-o1
JNZ R3,VERIFY_IF4_END
; {
; print("\n�������� ���������. "+#i.2048+" ���� ���������. ������������:
"+#i.temp);
SYS 0
LDW R15,STR_25
SYS 1
LDW R15,2048
SYS 3
LDW R15,STR_26
SYS 1
MOV R15,R1
SYS 3
SYS 12
SYS 11
; CloseWindow;
VERIFY_IF4_END:
; }
PROC_VERIFY_END:
POPR 6
RET 0
; UsedRegs = 0000000000111111
;}
;
;proc read_sr()
PROCREAD_SR:
PUSHR 2
ENTER 0,2
;{
; R0=A
; var a;
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R1,R15
MOV R14,R1
LDB R15,0
CMPJE R14,R15,READ_SR_IF0_END
;-o1
JMP PROC_READ_SR_END
READ_SR_IF0_END:
; a = device.read_sr();
;+o
LDB R15,4
SYS 17
MOV R1,R15
MOV R0,R1
;_o
; device.poweroff();
LDB R15,2
SYS 18

; print("\nSR = "+#h1.a);
SYS 0
LDW R15,STR_27
SYS 1
MOV R15,R0
SYS 5
SYS 12
; a = (a >> 2) & 3;
;+o
MOV R1,R0
RR R1,2
ANDB R1,3
MOV R0,R1
;_o
; if(a = 0) print(": ��� ������ �� ������.");
;+o1
;LDB R15,0
;CMPJNE R0,R15,READ_SR_IF1_END
;-o1
JNZ R0,READ_SR_IF1_END
SYS 0
LDW R15,STR_28
SYS 1
SYS 12
READ_SR_IF1_END:
; if(a = 1) print(": a����� 0�600-0�7FF - ������ ������");
;+o1
;LDB R15,1
;CMPJNE R0,R15,READ_SR_IF2_END
;-o1
CPIJNE R0,1,READ_SR_IF2_END
SYS 0
LDW R15,STR_29
SYS 1
SYS 12
READ_SR_IF2_END:
; if(a = 2) print(": a����� 0�400-0�7FF - ������ ������");
;+o1
;LDB R15,2
;CMPJNE R0,R15,READ_SR_IF3_END
;-o1
CPIJNE R0,2,READ_SR_IF3_END
SYS 0
LDW R15,STR_30
SYS 1
SYS 12
READ_SR_IF3_END:
; if(a = 3) print(": �� ���������� - ������ ������");
;+o1
;LDB R15,3
;CMPJNE R0,R15,READ_SR_IF4_END
;-o1
CPIJNE R0,3,READ_SR_IF4_END
SYS 0
LDW R15,STR_31
SYS 1
SYS 12
READ_SR_IF4_END:
; sr_value = a;
;+o
STMB SR_VALUE,R0
;_o
PROC_READ_SR_END:
POPR 2
RET 0
; UsedRegs = 0000000000000011
;}
;
;proc Write()
PROCWRITE:
PUSHR 5
ENTER 0,5
;{
; R0=I
; R1=TEMP
; R2=ADR
; R3=ERROR
; var i,temp,adr,error;
;
; if(Flags & 2)
;+o1
LDMD R4,Flags
ANDB R4,2
MOV R14,R4
LDB R15,0
CMPJE R14,R15,WRITE_IF0_END
;-o1
; {
; temp = mbox("������������� ����������������?",1);
;+o
SYS 0
LDW R15,STR_32
SYS 1
ORD R15,65536
SYS 9
MOV R1,R15
; if(temp = 0)
;+o1
;LDB R15,0
;CMPJNE R1,R15,WRITE_IF1_END
;-o1
JNZ R1,WRITE_IF1_END
; {
; print("\n���������������� �������� �������������");
SYS 0
LDW R15,STR_33
SYS 1
SYS 12
; return;
JMP PROC_WRITE_END
WRITE_IF1_END:
; }
WRITE_IF0_END:
; }
;
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R4,R15
MOV R14,R4
LDB R15,0
CMPJE R14,R15,WRITE_IF2_END
;-o1
JMP PROC_WRITE_END
WRITE_IF2_END:
; temp = check_sr(1);
;+o
LDB R4,1
PUSH R4
CALL PROCCHECK_SR
;MOV R4,R15
;MOV R1,R4
MOV R1,R15
;_o
; if(temp)
;+o1
;LDB R15,0
;CMPJE R1,R15,WRITE_IF3_END
;-o1
JZ R1,WRITE_IF3_END
; {
; device.poweroff();
LDB R15,2
SYS 18

; return;
JMP PROC_WRITE_END
WRITE_IF3_END:
; }
;
; PBPOS = 0;PBMAX = 2048-1;
;+o
LDB R4,0
OUT 1,R4
;_o
;+o
LDW R4,2047
OUT 0,R4
;_o
; error= 0;
;+o
LDB R3,0
;_o
; temp = 0;
;+o
LDB R1,0
;_o
; if(page_mode = 0)
;+o1
LDMB R4,page_mode
;MOV R14,R4
;LDB R15,0
;CMPJNE R14,R15,WRITE_IF4_END
;-o1
JNZ R4,WRITE_IF4_END
; {
; for(adr = 0; adr < 2048; adr++)
LDB R2,0
WRITE_FOR4:
;+o1
LDW R15,2048
CMPJGE R2,R15,WRITE_FOR4_END
; {
; error = device.write_byte(adr,fbuf[adr]);
;+o
PUSH R2
LDEM 0,R4,R2
PUSH R4
LDB R15,7
ORW R15,512
SYS 17
MOV R4,R15
MOV R3,R4
;_o
; if(error != 0)
;+o1
;LDB R15,0
;CMPJE R3,R15,WRITE_IF5_END
;-o1
JZ R3,WRITE_IF5_END
; {
; print("\n ������ ������");
SYS 0
LDW R15,STR_34
SYS 1
SYS 12
; print_errors(error);
PUSH R3
CALL PROCPRINT_ERRORS
; break;
;JMP WRITE_FOR4_END
JMP WRITE_ELSE0_END
WRITE_IF5_END:
; }
; PBPOS = adr;
;+o
OUT 1,R2
;_o
ADDB R2,1
JMP WRITE_FOR4
WRITE_FOR4_END:
; }
JMP WRITE_ELSE0_END
WRITE_IF4_END:
; }
; else
; {
; for(adr = 0; adr < 2048; adr += 8)
LDB R2,0
WRITE_FOR5:
;+o1
LDW R15,2048
CMPJGE R2,R15,WRITE_FOR5_END
; {
; block(device.buf=fbuf[adr],8);
; ����� ������� � ����������: 1279
LDW R14,1279
; ����� ������� - ���������
MOV R15,R2
; ������ �����
; ORD = 00080000
ORD R14,524288
SYS 23
; error = device.write_page(adr,8);
;+o
PUSH R2
LDB R4,8
PUSH R4
LDB R15,8
ORW R15,512
SYS 17
MOV R4,R15
MOV R3,R4
;_o
; if(error != 0)
;+o1
;LDB R15,0
;CMPJE R3,R15,WRITE_IF6_END
;-o1
JZ R3,WRITE_IF6_END
; {
; print("\n ������ ������, ����� "+#i.adr+" (0x"+#h2.adr+")");
SYS 0
LDW R15,STR_35
SYS 1
MOV R15,R2
SYS 3
LDW R15,STR_36
SYS 1
MOV R15,R2
SYS 6
LDW R15,STR_37
SYS 1
SYS 12
; print_errors(error);
PUSH R3
CALL PROCPRINT_ERRORS
; break;
JMP WRITE_FOR5_END
WRITE_IF6_END:
; }
; PBPOS = adr+8;
;+o
MOV R4,R2
ADDB R4,8
OUT 1,R4
;_o
ADDB R2,8
JMP WRITE_FOR5
WRITE_FOR5_END:
; }
WRITE_ELSE0_END:
; }
; device.poweroff();
LDB R15,2
SYS 18

; if(error = 0)
;+o1
;LDB R15,0
;CMPJNE R3,R15,WRITE_IF7_END
;-o1
JNZ R3,WRITE_IF7_END
; {
; print("\n������ ���������. "+#i.2048+" ���� ��������.");
SYS 0
LDW R15,STR_38
SYS 1
LDW R15,2048
SYS 3
LDW R15,STR_39
SYS 1
SYS 12
SYS 11
; CloseWindow;
WRITE_IF7_END:
; }
PROC_WRITE_END:
POPR 5
RET 0
; UsedRegs = 0000000000011111
;}
;
;proc WriteC()
PROCWRITEC:
PUSHR 5
ENTER 0,5
;{
; R0=I
; R1=TEMP
; R2=ADR
; R3=ERROR
; var i,temp,adr,error;
;
; if(Flags & 2)
;+o1
LDMD R4,Flags
ANDB R4,2
MOV R14,R4
LDB R15,0
CMPJE R14,R15,WRITEC_IF0_END
;-o1
; {
; temp = mbox("������������� ����������������?",1);
;+o
SYS 0
LDW R15,STR_40
SYS 1
ORD R15,65536
SYS 9
MOV R1,R15
; if(temp = 0)
;+o1
;LDB R15,0
;CMPJNE R1,R15,WRITEC_IF1_END
;-o1
JNZ R1,WRITEC_IF1_END
; {
; print("\n���������������� �������� �������������");
SYS 0
LDW R15,STR_41
SYS 1
SYS 12
; return;
JMP PROC_WRITEC_END
WRITEC_IF1_END:
; }
WRITEC_IF0_END:
; }
;
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R4,R15
MOV R14,R4
LDB R15,0
CMPJE R14,R15,WRITEC_IF2_END
;-o1
JMP PROC_WRITEC_END
WRITEC_IF2_END:
; PBPOS = 0;PBMAX = 2048-1;
;+o
LDB R4,0
OUT 1,R4
;_o
;+o
LDW R4,2047
OUT 0,R4
;_o
; error= 0;
;+o
LDB R3,0
;_o
; temp = 0;
;+o
LDB R1,0
;_o
; for(adr = 0; adr < 2048; adr++)
LDB R2,0
WRITEC_FOR6:
;+o1
LDW R15,2048
CMPJGE R2,R15,WRITEC_FOR6_END
; {
; if(fsel[adr] != 0)
;+o1
LDEM 2,R4,R2
MOV R14,R4
LDB R15,0
CMPJE R14,R15,WRITEC_IF3_END
;-o1
; {
; error = device.write_byte(adr,fbuf[adr]);
;+o
PUSH R2
LDEM 0,R4,R2
PUSH R4
LDB R15,7
ORW R15,512
SYS 17
MOV R4,R15
MOV R3,R4
;_o
; if(error != 0)
;+o1
;LDB R15,0
;CMPJE R3,R15,WRITEC_IF4_END
;-o1
JZ R3,WRITEC_IF4_END
; {
; print("\n ������ ������, ����� "+#i.adr+" (0x"+#h2.adr+")");
SYS 0
LDW R15,STR_42
SYS 1
MOV R15,R2
SYS 3
LDW R15,STR_43
SYS 1
MOV R15,R2
SYS 6
LDW R15,STR_44
SYS 1
SYS 12
; print_errors(error);
PUSH R3
CALL PROCPRINT_ERRORS
; break;
JMP WRITEC_FOR6_END
JMP WRITEC_ELSE0_END
WRITEC_IF4_END:
; }
; else temp++;
;+o
ADDB R1,1
;_o
WRITEC_ELSE0_END:
WRITEC_IF3_END:
; }
; PBPOS = adr;
;+o
OUT 1,R2
;_o
ADDB R2,1
JMP WRITEC_FOR6
WRITEC_FOR6_END:
; }
; device.poweroff();
LDB R15,2
SYS 18

; if(error = 0)
;+o1
;LDB R15,0
;CMPJNE R3,R15,WRITEC_IF5_END
;-o1
JNZ R3,WRITEC_IF5_END
; {
; print("\n������ ���������. "+#i.temp+" ���� ��������.");
SYS 0
LDW R15,STR_45
SYS 1
MOV R15,R1
SYS 3
LDW R15,STR_46
SYS 1
SYS 12
SYS 11
; CloseWindow;
WRITEC_IF5_END:
; }
PROC_WRITEC_END:
POPR 5
RET 0
; UsedRegs = 0000000000011111
;}
;
;
;proc write_sr()
PROCWRITE_SR:
PUSHR 3
ENTER 0,3
;{
; R0=A
; R1=TEMP
; var a,temp;
; if(Flags & 2)
;+o1
LDMD R2,Flags
ANDB R2,2
MOV R14,R2
LDB R15,0
CMPJE R14,R15,WRITE_SR_IF0_END
;-o1
; {
; temp = mbox("������������� ����������������?",1);
;+o
SYS 0
LDW R15,STR_47
SYS 1
ORD R15,65536
SYS 9
MOV R1,R15
; if(temp = 0)
;+o1
;LDB R15,0
;CMPJNE R1,R15,WRITE_SR_IF1_END
;-o1
JNZ R1,WRITE_SR_IF1_END
; {
; print("\n���������������� �������� �������������");
SYS 0
LDW R15,STR_48
SYS 1
SYS 12
; return;
JMP PROC_WRITE_SR_END
WRITE_SR_IF1_END:
; }
WRITE_SR_IF0_END:
; }
; if(init() != 0) return;
;+o1
CALL PROCinit
MOV R2,R15
MOV R14,R2
LDB R15,0
CMPJE R14,R15,WRITE_SR_IF2_END
;-o1
JMP PROC_WRITE_SR_END
WRITE_SR_IF2_END:
; a = sr_value << 2;
;+o
LDMB R2,SR_VALUE
RL R2,2
MOV R0,R2
;_o
; a = device.write_sr(a);
;+o
PUSH R0
LDB R15,5
ORW R15,256
SYS 17
MOV R2,R15
MOV R0,R2
;_o
; if(a != 0)
;+o1
;LDB R15,0
;CMPJE R0,R15,WRITE_SR_IF3_END
;-o1
JZ R0,WRITE_SR_IF3_END
; {
; print("\n������ ������ �������� �������.");
SYS 0
LDW R15,STR_49
SYS 1
SYS 12
; device.poweroff();
LDB R15,2
SYS 18

; return;
JMP PROC_WRITE_SR_END
WRITE_SR_IF3_END:
; }
; a = device.read_sr();
;+o
LDB R15,4
SYS 17
MOV R2,R15
MOV R0,R2
;_o
; device.poweroff();
LDB R15,2
SYS 18

; print("\nSR = "+#h1.a);
SYS 0
LDW R15,STR_50
SYS 1
MOV R15,R0
SYS 5
SYS 12
; a = (a >> 2) & 3;
;+o
MOV R2,R0
RR R2,2
ANDB R2,3
MOV R0,R2
;_o
; if(a = 0) print(": ��� ������ �� ������.");
;+o1
;LDB R15,0
;CMPJNE R0,R15,WRITE_SR_IF4_END
;-o1
JNZ R0,WRITE_SR_IF4_END
SYS 0
LDW R15,STR_51
SYS 1
SYS 12
WRITE_SR_IF4_END:
; if(a = 1) print(": a����� 0�600-0�7FF - ������ ������");
;+o1
;LDB R15,1
;CMPJNE R0,R15,WRITE_SR_IF5_END
;-o1
CPIJNE R0,1,WRITE_SR_IF5_END
SYS 0
LDW R15,STR_52
SYS 1
SYS 12
WRITE_SR_IF5_END:
; if(a = 2) print(": a����� 0�400-0�7FF - ������ ������");
;+o1
;LDB R15,2
;CMPJNE R0,R15,WRITE_SR_IF6_END
;-o1
CPIJNE R0,2,WRITE_SR_IF6_END
SYS 0
LDW R15,STR_53
SYS 1
SYS 12
WRITE_SR_IF6_END:
; if(a = 3) print(": �� ���������� - ������ ������");
;+o1
;LDB R15,3
;CMPJNE R0,R15,WRITE_SR_IF7_END
;-o1
CPIJNE R0,3,WRITE_SR_IF7_END
SYS 0
LDW R15,STR_54
SYS 1
SYS 12
WRITE_SR_IF7_END:
PROC_WRITE_SR_END:
POPR 3
RET 0
; UsedRegs = 0000000000000111

You might also like