; Orange programmer module v1.2 ; (c) 2000 Alex Plusov ; CHIP=Test All HPL keywords for Orange3 SOCKET=0 CDELAY=1 PINO=P0,0 PINO=P1,1 PINO=P2,2 PINO=P3,3 PINO=#P4,4 ;invert PINI=PI1,1 PINO=RW,9 R0=Protect,H7 R1=TEST,B3 R2=TESTREG2,D RB=BLKSIZE,H RF=SIZE,H INFO="Test chip, test chip, test chip, test chip" [!SETUP] R2=12345 [_FUNSTART] P0=0,P0=1 [INIT] VCC=3000 ; init reg: R2=0x12 [READ] ;_FUNSTART R0=ADR DATA=R0 ;RW=1,RW=0 [WRITE] ; set pin: P1=1 P0=DATA[1] P2=ADR[2] P3=R1[3] ; set const CONST=0x123B CONST=1010B CONST=123BH ;DataBit: DATA[7]=1 DATA[6]=PI1 DATA[2]=R0[1] ;If PI1?1 {R1[4]=1} R1[4]?1 {R2=0x1234} R2?0x1234 ;Loops LOOP(2,0){P1=R1[I],R2[I]=PI1} LOOP(7,0){R1[I]=DATA[I],DATA[I]=R1[I]} ; Check P1=1 PI1?1 ; user regs R1[7]=1 R1[2]=PI1 R1[R2]=1 R0=+1 R0=-2 R0=^0x0FFF R0=|1 R0=<<1 R0=>>2 R7=R2 R0=+R1 R0=-R2 R0=^R3 R0=|R4 R0=*R4 R4=2 R0=/R4 R0=%R4 LOOP(0,7){R1[I]=ADR[I],DATA[I]=R1[I]} ;nested loops: LOOP(0,7){ P1=0,LOOP(6,1){P1=0,P1=1} } ; рекурсия :) [_RECALL] P0=1 _RECALL [Errors] PRINT=E("Test errors:") ;R1=1,,R2=2 ; Пустая команда ; Константы: ;DATA[c]=0 ;DATA[1]=1Z456 ;DATA[2]=5 ;P3=7 ;P3=I1 ;PI1?Q ;P3=R5[I] ;R3=0xR7 ; Циклы: ;LOOP=ADR(0,2){I=PI1} ;попытка записи ADR ;LOOP=(14,17){R0[I]=ADR[I]} ;большие границы цикла для Reg ;LOOP=(1,33){P2=ADR[I]} ;большие границы цикла для Adr ;LOOP=(1,0){P=2 ;Цикл не закрыт ;LOOP=(1,0){} ; Пустое тело цикла ; рекурсия :) ;_RECALL [MathTest] R0=0 R0[17]=1 PRINT=("R0=%08lXH",R0); ; Вложенные циклы: LOOP=(0,2000){ R0?3{BREAK} R1=0 LOOP=(0,100){ R1?6{BREAK} R1=+2 } R0=+1 } PRINT=("R0=%lXH,R1=%lXH",R0,R1); ;PRINT=("Hello, World!") R0=0x12345678 PRINT=("R0=%08lXH",R0) R0=0x1234800F R1=0x2234FFFF R1=^R0 R1?!0x30007FF0{PRINT=("ERROR=%08lXH",R1)} R1=0x17FF0 R0=4 R1[R0]=0 R1?0x17FE0 R1=+0x15 R1?0x17FF5 R1=&0xFFFF R1=>>8 R1?0xF57F R1=&0xFF07 R1?0xF507 R1=|0xF030 R1?0xF537 R0=0 R1=0 R2=0 LOOP=(0,15){R0?3{R0=0,R1[R2]=1},R0=+1,R2=+1} ; FEDCBA9876543210 R1?1001001001001000B R1=1234 R1=%1000 R1?234 R1=100 R1?<200 R1?>99 [PrintTest] R0=0x1234 PRINT=("R0=%04lXH\nR0=%lu",R0,R0) ADR=0x23456 PRINT=("ADR=%05lX\nline 2\nline 3\nline 4\nline 5",ADR) P1=0 R0=0 P=2 R0[0]=PI1 PRINT=("PINI=%lX",R0) P1=1 P=2 R0[0]=PI1 PRINT=("PINI=%lX",R0) ;LOOP=(0,15){R0[I]=R1[I]} ;R1?0x7FF5 R1=0 LOOP=(0,6000){ PRINT=S("Counter %lu",R1) R1=+1 P=50000 } [BoxTest] PRINT=("Normal Box") PRINT=I("Info Box") PRINT=E("Error Box") PRINT=A("Ask Box") RA?0{PRINT=("Select 'Cancel'")} RA?1{PRINT=("Select 'OK'")} [InputTest] R0=0x12345 R4=0x54321 GET=("Enter code:",R0,R4,R3,R2) P=50000 RA?1{PRINT=("R0=%04lXH R4=%lXH",R0,R4)} [END] P1=0 [ADRMATH] ADR=0 PRINT=("ADR=%06lXH",ADR) ADR=+0x100 PRINT=("ADR=%06lXH",ADR) ADR=-0x200 PRINT=("ADR=%06lXH",ADR) [LogTest] P=600000 R0=1; LOOP=(0,100){ PRINT=L("Line %04u\n",R0) R0=+1 P=80000 } LOOP=(0,0x7FFFFFF){ PRINT=S("OK") }