home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / texts / boxes / ass80xx.lst < prev    next >
File List  |  1993-06-05  |  14KB  |  634 lines

  1. PRINT "80XX Singel-Computer Assembler (by Jolly Roger)"
  2. PRINT "Usefull for 8039/8049 boards. Atari Modifications by Zaphod Beeblebrox."
  3. PRINT
  4. DIM op$(255),pa$(255),op(255),pa(255),lb$(200),lb(200),a$(4)
  5. t=0
  6. debug=0
  7. DO
  8.   READ op$(t),pa$(t),op(t),pa(t)
  9.   t=t+1
  10. LOOP WHILE op$(t-1)<>"end"
  11. op$(t)=""
  12. FILESELECT "\*.A49","",n$
  13. IF NOT EXIST(n$)
  14.   END
  15. ENDIF
  16. PRINT "assembling: ";n$
  17. PRINT
  18. error=0
  19. pass=1
  20. @asm
  21. IF error THEN
  22.   PRINT "error occured during pass 1 in line ";linenum;":"
  23.   PRINT normline$
  24.   GOTO error
  25. ENDIF
  26. pass=2
  27. @asm
  28. IF error THEN
  29.   PRINT "error occured during pass 2 in line ";linenum;":"
  30.   PRINT normline$
  31.   GOTO error
  32. ENDIF
  33. FILESELECT "\*.ROM","",o$
  34. OPEN "o",#1,o$
  35. PRINT #1,bincode$;
  36. CLOSE #1
  37. PRINT "assembler finished                 "
  38. GOTO quit
  39. error:
  40. PRINT "assembler stopped                  "
  41. GOTO quit
  42. PROCEDURE asm
  43.   bincode$=""
  44.   linenum=0
  45.   OPEN "i",#1,n$
  46.   PRINT "Pass";pass;"                                     "
  47. getline:
  48.   IF EOF(#1) THEN
  49.     GOTO fileend
  50.   ENDIF
  51.   line$=""
  52. getchar:
  53.   IF EOF(#1) THEN
  54.     GOTO analine
  55.   ENDIF
  56.   a$=INPUT$(1,#1)
  57.   IF ASC(a$)>=ASC("a") AND ASC(a$)<=ASC("z")
  58.     a$=CHR$(ASC(a$)-ASC("a")+ASC("A"))
  59.   ENDIF
  60.   IF a$<>CHR$(10) AND a$<>CHR$(13) THEN
  61.     line$=line$+a$
  62.     GOTO getchar
  63.   ENDIF
  64.   REM analyze line
  65. analine:
  66.   linenum=linenum+1
  67.   PRINT "line ";STR$(linenum);" adress $";RIGHT$("000"+HEX$(LEN(bincode$)),3);CHR$(13);
  68. gotline:
  69.   normline$=line$
  70.   IF debug THEN
  71.     PRINT "ascii:";line$
  72.   ENDIF
  73.   IF INSTR(line$,";") THEN
  74.     line$=LEFT$(line$,INSTR(line$,";")-1)
  75.   ENDIF
  76.   IF line$="" THEN
  77.     GOTO getline
  78.   ENDIF
  79.   IF INSTR(line$,":") THEN
  80.     label$=LEFT$(line$,INSTR(line$,":")-1)
  81.     line$=RIGHT$(line$,LEN(line$)-INSTR(line$,":"))
  82.     IF label$<>"" THEN
  83.       deflabel
  84.       GOTO gotline
  85.     ENDIF
  86.     PRINT "no label before `:'!"
  87.     error=1
  88.     GOTO fileend
  89.   ENDIF
  90.   REM analyze of opcode,param,value/label
  91. anacode:
  92.   IF line$="" THEN
  93.     GOTO getline
  94.   ENDIF
  95.   new=1
  96.   c=0
  97.   a$(1)=""
  98.   a$(2)=""
  99.   a$(3)=""
  100.   FOR tt=1 TO LEN(line$)
  101.     a$=MID$(line$,tt,1)
  102.     IF c>3 THEN
  103.       GOTO endtt
  104.     ENDIF
  105.     IF a$=" " OR a$=CHR$(9) THEN
  106.       new=1
  107.       GOTO endtt
  108.     ENDIF
  109.     IF new=1 THEN
  110.       c=c+1
  111.       new=0
  112.     ENDIF
  113.     a$(c)=a$(c)+a$
  114.   endtt:
  115.   NEXT tt
  116.   IF c>3 THEN
  117.     PRINT "too many arguments!"
  118.     error=1
  119.     GOTO fileend
  120.   ENDIF
  121.   IF INSTR(a$(2),"=") THEN
  122.     IF c>2 THEN
  123.       PRINT "too many arguments!"
  124.       error=1
  125.       GOTO fileend
  126.     ENDIF
  127.     a$(3)=RIGHT$(a$(2),LEN(a$(2))-INSTR(a$(2),"="))
  128.     a$(2)=LEFT$(a$(2),INSTR(a$(2),"="))
  129.     c=3
  130.   ENDIF
  131.   REM search for the opcode
  132.   IF a$(1)="" THEN
  133.     GOTO getline
  134.   ENDIF
  135.   IF a$(1)="PAGE" THEN
  136.     a=VAL(a$(2))*256
  137.     IF a<LEN(bincode$) THEN
  138.       PRINT "cannot skip to ";a;", because ";LEN(bincode$);" already passed!"
  139.       error=1
  140.       GOTO fileend
  141.     ENDIF
  142.   page:
  143.     IF LEN(bincode$)<a THEN
  144.       bincode$=bincode$+CHR$(0)
  145.       GOTO page
  146.     ENDIF
  147.     GOTO getline
  148.   ENDIF
  149.   tt=0
  150. searchcode:
  151.   IF op$(tt)=a$(1) THEN
  152.     GOTO foundcode
  153.   ENDIF
  154.   tt=tt+1
  155.   IF tt<=255 THEN
  156.     GOTO searchcode
  157.   ENDIF
  158.   PRINT "unknown opcode `";a$(1);"'!"
  159.   error=1
  160.   GOTO fileend
  161. foundcode:
  162.   REM global ass
  163.   IF pa(tt)=4 THEN
  164.     IF c<2 THEN
  165.       PRINT "no label found!"
  166.       error=1
  167.       GOTO fileend
  168.     ENDIF
  169.     IF c>2 THEN
  170.       PRINT "only one label allowed!"
  171.       error=1
  172.       GOTO fileenf
  173.     ENDIF
  174.     REM global assembling
  175.     labelget
  176.     IF l=-1 THEN
  177.       PRINT "label `";a$(3);"' not found!"
  178.       error=1
  179.       GOTO fileend
  180.     ENDIF
  181.     bin$=CHR$(op(tt+INT(l/256)))+CHR$(l AND 255)
  182.     GOTO compiled
  183.   ENDIF
  184.   REM local ass without parameter
  185.   IF pa(tt)=3 THEN
  186.     IF c<2 THEN
  187.       PRINT "no label found!"
  188.       error=1
  189.       GOTO fileend
  190.     ENDIF
  191.     IF c>2 THEN
  192.       PRINT "only one label allowed!"
  193.       error=1
  194.       GOTO fileenf
  195.     ENDIF
  196.     REM global assembling
  197.     labelget
  198.     IF l=-1 THEN
  199.       PRINT "label not found!"
  200.       error=1
  201.       GOTO fileend
  202.     ENDIF
  203.     IF INT(LEN(bincode$)/256)<>INT(l/256) THEN
  204.       PRINT "only jumps inside a page with `"+a$(1)+"'!"
  205.       error=1
  206.       GOTO fileend
  207.     ENDIF
  208.     bin$=CHR$(op(tt))+CHR$(l AND 255)
  209.     GOTO compiled
  210.   ENDIF
  211.   REM local ass without parameter
  212.   IF pa(tt)=3.5 THEN
  213.     IF c<2 THEN
  214.       PRINT "no parameters/label found!"
  215.       error=1
  216.       GOTO fileend
  217.     ENDIF
  218.     IF c>2 THEN
  219.       PRINT "only one label allowed!"
  220.       error=1
  221.       GOTO fileend
  222.     ENDIF
  223.     IF LEFT$(a$(2),1)="R" AND MID$(a$(2),3,1)="," THEN
  224.       mr=INSTR("01234567",MID$(a$(2),2,1))-1
  225.       IF mr<0 THEN
  226.         PRINT "you only can use R0-R7 in DJNZ jumps!"
  227.         error=1
  228.         GOTO fileend
  229.       ENDIF
  230.     ENDIF
  231.     REM global assembling
  232.     tt=tt+mr
  233.     a$(2)=RIGHT$(a$(2),LEN(a$(2))-3)
  234.     labelget
  235.     IF l=-1 THEN
  236.       PRINT "label not found!"
  237.       error=1
  238.       GOTO fileend
  239.     ENDIF
  240.     IF INT(LEN(bincode$)/256)<>INT(l/256) THEN
  241.       PRINT "only jumps inside a page with `"+a$(1)+"'!"
  242.       error=1
  243.       GOTO fileend
  244.     ENDIF
  245.     bin$=CHR$(op(tt))+CHR$(l AND 255)
  246.     GOTO compiled
  247.   ENDIF
  248.   IF pa$(tt)="" THEN
  249.     IF c>1 THEN
  250.       PRINT "no arguments are allowed here!"
  251.       error=1
  252.       GOTO fileend
  253.     ENDIF
  254.     bin$=CHR$(op(tt))
  255.     GOTO compiled
  256.   ENDIF
  257.   IF a$(2)="" THEN
  258.     PRINT "argumets expected!"
  259.     error=1
  260.     GOTO fileend
  261.   ENDIF
  262. nextcode:
  263.   IF op$(tt)<>a$(1) THEN
  264.     PRINT "unknown parameter `";a$(2);"'!"
  265.     error=1
  266.     GOTO fileend
  267.   ENDIF
  268.   IF pa$(tt)=a$(2) THEN
  269.     GOTO anapar
  270.   ENDIF
  271.   tt=tt+1
  272.   GOTO nextcode
  273. anapar:
  274.   IF pa(tt)=1
  275.     IF c>2 THEN
  276.       PRINT "no values are allowed here!"
  277.       error=1
  278.       GOTO fileend
  279.     ENDIF
  280.     bin$=CHR$(op(tt))
  281.     GOTO compiled
  282.   ENDIF
  283.   IF c<3 THEN
  284.     PRINT "values are missed!"
  285.     error=1
  286.     GOTO fileend
  287.   ENDIF
  288.   REM compile value
  289.   a$=LEFT$(a$(3),1)
  290.   b$=RIGHT$(a$(3),LEN(a$(3))-1)
  291.   IF a$="%" THEN
  292.     IF LEN(b$)<>8 THEN
  293.       PRINT "only values %00000000-%11111111 with 2 digits allowed!"
  294.       error=1
  295.       GOTO fileend
  296.     ENDIF
  297.     a=(INSTR("01",MID$(b$,1,1))-1)*128
  298.     a=a+(INSTR("01",MID$(b$,2,1))-1)*64
  299.     a=a+(INSTR("01",MID$(b$,3,1))-1)*32
  300.     a=a+(INSTR("01",MID$(b$,4,1))-1)*16
  301.     a=a+(INSTR("01",MID$(b$,5,1))-1)*8
  302.     a=a+(INSTR("01",MID$(b$,6,1))-1)*4
  303.     a=a+(INSTR("01",MID$(b$,7,1))-1)*2
  304.     a=a+(INSTR("01",MID$(b$,8,1))-1)
  305.     IF a<0 THEN
  306.       PRINT "only digits 0 or 1 allowed!"
  307.       error=1
  308.       GOTO fileend
  309.     ENDIF
  310.     bin$=CHR$(op(tt))+CHR$(a)
  311.     GOTO compiled
  312.   ENDIF
  313.   IF a$="$" THEN
  314.     IF LEN(b$)<>2 THEN
  315.       PRINT "only values $00-$ff with 2 digits allowed!"
  316.       error=1
  317.       GOTO fileend
  318.     ENDIF
  319.     a=(INSTR("0123456789ABCDEF",LEFT$(b$,1))-1)*16
  320.     a=a+INSTR("0123456789ABCDEF",RIGHT$(b$,1))-1
  321.     IF a<0 THEN
  322.       PRINT "only digits 0-f allowed!"
  323.       error=1
  324.       GOTO fileend
  325.     ENDIF
  326.     bin$=CHR$(op(tt))+CHR$(a)
  327.     GOTO compiled
  328.   ENDIF
  329.   a$=a$+b$
  330.   IF STR$(VAL(a$))<>a$ THEN
  331.     PRINT "not a valid decimal value!"
  332.     error=1
  333.     GOTO fileend
  334.   ENDIF
  335.   a=VAL(a$)
  336.   IF a<0 OR a>255 THEN
  337.     PRINT "value `";a$(3);"' out of range!"
  338.     error=1
  339.     GOTO fileend
  340.   ENDIF
  341.   bin$=CHR$(op(tt))+CHR$(a)
  342.   GOTO compiled
  343. compiled:
  344.   IF debug THEN
  345.     PRINT LEN(bincode$);" gets ";LEN(bin$);" bytes. Opcode:";a$(1);". Paramter:";a$(2);". Var:";a$(3);".";
  346.   ENDIF
  347.   IF debug THEN
  348.     IF LEN(bin$)=1 THEN
  349.       PRINT ASC(bin$)
  350.     ENDIF
  351.     IF LEN(bincode$)=2 THEN
  352.       PRINT ASC(LEFT$(bin$,1));",";ASC(RIGHT$(bin$,1))
  353.     ENDIF
  354.   ENDIF
  355.   bincode$=bincode$+bin$
  356.   GOTO getline
  357. fileend:
  358.   CLOSE #1
  359. RETURN
  360. > PROCEDURE deflabel
  361.   IF pass=2 THEN
  362.     GOTO nodefine
  363.   ENDIF
  364.   lb$(lb)=label$
  365.   lb(lb)=LEN(bincode$)
  366.   IF debug THEN
  367.     PRINT "label defined:";lb$(lb),lb(lb)
  368.   ENDIF
  369.   lb=lb+1
  370. nodefine:
  371. RETURN
  372. > PROCEDURE labelget
  373.   REM get adress l of a$(2)
  374.   IF pass=1 THEN
  375.     l=LEN(bincode$)
  376.     GOTO nogetlabel
  377.   ENDIF
  378.   l=-1
  379.   IF lb=0 THEN
  380.     GOTO nogetlabel
  381.   ENDIF
  382.   FOR i=0 TO lb-1
  383.     IF lb$(i)=a$(2) THEN
  384.       IF l<>-1 THEN
  385.         PRINT "error label declared twice: `";a$(2);"'"
  386.       ENDIF
  387.       l=lb(i)
  388.     ENDIF
  389.   NEXT i
  390. nogetlabel:
  391. RETURN
  392. quit:
  393. PRINT
  394. PRINT "PRESS ENTER KEY TO EXIT"
  395. quit1:
  396. a$=INKEY$
  397. IF a$<>CHR$(13) THEN
  398.   GOTO quit1
  399. ENDIF
  400. END
  401. REM opcode,parameter,binvalue,1=singel 2=parameter 3=localjump 4=globaljump
  402. DATA "ADD","A,=",3,2
  403. DATA "ADD","A,@R0",96,1
  404. DATA "ADD","A,@R1",97,1
  405. DATA "ADD","A,R0",104,1
  406. DATA "ADD","A,R1",105,1
  407. DATA "ADD","A,R2",106,1
  408. DATA "ADD","A,R3",107,1
  409. DATA "ADD","A,R4",108,1
  410. DATA "ADD","A,R5",109,1
  411. DATA "ADD","A,R6",110,1
  412. DATA "ADD","A,R7",111,1
  413. DATA "ADDC","A,=",19,2
  414. DATA "ADDC","A,@R0",112,1
  415. DATA "ADDC","A,@R1",113,1
  416. DATA "ADDC","A,R0",120,1
  417. DATA "ADDC","A,R1",121,1
  418. DATA "ADDC","A,R2",122,1
  419. DATA "ADDC","A,R3",123,1
  420. DATA "ADDC","A,R4",124,1
  421. DATA "ADDC","A,R5",125,1
  422. DATA "ADDC","A,R6",126,1
  423. DATA "ADDC","A,R7",127,1
  424. DATA "ANL","A,=",83,2
  425. DATA "ANL","A,@R0",80,1
  426. DATA "ANL","A,@R1",81,1
  427. DATA "ANL","A,R0",88,1
  428. DATA "ANL","A,R1",89,1
  429. DATA "ANL","A,R2",90,1
  430. DATA "ANL","A,R3",91,1
  431. DATA "ANL","A,R4",92,1
  432. DATA "ANL","A,R5",93,1
  433. DATA "ANL","A,R6",94,1
  434. DATA "ANL","A,R7",95,1
  435. DATA "ANL","BUS,=",152,2
  436. DATA "ANL","P1,=",153,2
  437. DATA "ANL","P2,=",154,2
  438. DATA "ANLD","P0,A",156,1
  439. DATA "ANLD","P1,A",157,1
  440. DATA "ANLD","P2,A",158,1
  441. DATA "ANLD","P3,A",159,1
  442. DATA "CALL","",20,4
  443. DATA "CALL","",52,4
  444. DATA "CALL","",84,4
  445. DATA "CALL","",116,4
  446. DATA "CALL","",148,4
  447. DATA "CALL","",180,4
  448. DATA "CALL","",212,4
  449. DATA "CALL","",244,4
  450. DATA "CLR","A",39,1
  451. DATA "CLR","C",151,1
  452. DATA "CLR","F0",133,1
  453. DATA "CLR","F1",165,1
  454. DATA "CPL","A",55,1
  455. DATA "CPL","C",167,1
  456. DATA "CPL","F0",149,1
  457. DATA "CPL","F1",181,1
  458. DATA "DA","A",87,1
  459. DATA "DEC","A",7,1
  460. DATA "DEC","R0",200,1
  461. DATA "DEC","R1",201,1
  462. DATA "DEC","R2",202,1
  463. DATA "DEC","R3",203,1
  464. DATA "DEC","R4",204,1
  465. DATA "DEC","R5",205,1
  466. DATA "DEC","R6",206,1
  467. DATA "DEC","R7",207,1
  468. DATA "DIS","I",21,1
  469. DATA "DIS","TCNTI",53,1
  470. DATA "DJNZ","R0,",232,3.5
  471. DATA "DJNZ","R1,",233,3.5
  472. DATA "DJNZ","R2,",234,3.5
  473. DATA "DJNZ","R3,",235,3.5
  474. DATA "DJNZ","R4,",236,3.5
  475. DATA "DJNZ","R5,",237,3.5
  476. DATA "DJNZ","R6,",238,3.5
  477. DATA "DJNZ","R7,",239,3.5
  478. DATA "EN","I",5,1
  479. DATA "EN","TCNTI",37,1
  480. DATA "ENT0","CLK",117,1
  481. DATA "IN","A,P1",9,1
  482. DATA "IN","A,P2",10,1
  483. DATA "INC","@R0",16,1
  484. DATA "INC","@R1",17,1
  485. DATA "INC","A",23,1
  486. DATA "INC","R0",24,1
  487. DATA "INC","R1",25,1
  488. DATA "INC","R2",26,1
  489. DATA "INC","R3",27,1
  490. DATA "INC","R4",28,1
  491. DATA "INC","R5",29,1
  492. DATA "INC","R6",30,1
  493. DATA "INC","R7",31,1
  494. DATA "INS","A,BUS",8,1
  495. DATA "JB0","",18,3
  496. DATA "JB1","",50,3
  497. DATA "JB2","",82,3
  498. DATA "JB3","",114,3
  499. DATA "JB4","",146,3
  500. DATA "JB5","",178,3
  501. DATA "JB6","",210,3
  502. DATA "JB7","",242,3
  503. DATA "JC","",246,3
  504. DATA "JF0","",182,3
  505. DATA "JF1","",118,3
  506. DATA "JMP","",4,4
  507. DATA "JMP","",36,4
  508. DATA "JMP","",68,4
  509. DATA "JMP","",100,4
  510. DATA "JMP","",132,4
  511. DATA "JMP","",164,4
  512. DATA "JMP","",196,4
  513. DATA "JMP","",228,4
  514. DATA "JMPP","@",179,1
  515. DATA "JNC","",230,3
  516. DATA "JNI","",134,3
  517. DATA "JNT0","",38,3
  518. DATA "JNT1","",70,3
  519. DATA "JNZ","",150,3
  520. DATA "JT0","",54,3
  521. DATA "JT1","",86,3
  522. DATA "JTF","",22,3
  523. DATA "JZ","",198,3
  524. DATA "MOV","@R0,=",176,2
  525. DATA "MOV","@R0,A",160,1
  526. DATA "MOV","@R1,=",177,2
  527. DATA "MOV","@R1,A",161,1
  528. DATA "MOV","A,=",35,2
  529. DATA "MOV","A,@R0",240,1
  530. DATA "MOV","A,@R1",241,1
  531. DATA "MOV","A,PSW",199,1
  532. DATA "MOV","A,R0",248,1
  533. DATA "MOV","A,R1",249,1
  534. DATA "MOV","A,R2",250,1
  535. DATA "MOV","A,R3",251,1
  536. DATA "MOV","A,R4",252,1
  537. DATA "MOV","A,R5",253,1
  538. DATA "MOV","A,R6",254,1
  539. DATA "MOV","A,R7",255,1
  540. DATA "MOV","A,T",66,1
  541. DATA "MOV","PSW,A",215,1
  542. DATA "MOV","R0,=",184,2
  543. DATA "MOV","R0,A",168,1
  544. DATA "MOV","R1,=",185,2
  545. DATA "MOV","R1,A",169,1
  546. DATA "MOV","R2,=",186,2
  547. DATA "MOV","R2,A",170,1
  548. DATA "MOV","R3,=",187,2
  549. DATA "MOV","R3,A",171,1
  550. DATA "MOV","R4,=",188,2
  551. DATA "MOV","R4,A",172,1
  552. DATA "MOV","R5,=",189,2
  553. DATA "MOV","R5,A",173,1
  554. DATA "MOV","R6,=",190,2
  555. DATA "MOV","R6,A",174,1
  556. DATA "MOV","R7,=",191,2
  557. DATA "MOV","R7,A",175,1
  558. DATA "MOV","T,A",98,1
  559. DATA "MOVD","A,P0",12,1
  560. DATA "MOVD","A,P1",13,1
  561. DATA "MOVD","A,P2",14,1
  562. DATA "MOVD","A,P3",15,1
  563. DATA "MOVD","P0,A",60,1
  564. DATA "MOVD","P1,A",61,1
  565. DATA "MOVD","P2,A",62,1
  566. DATA "MOVD","P3,A",63,1
  567. DATA "MOVP","A,@A",163,1
  568. DATA "MOVP3","A,@A",227,1
  569. DATA "MOVX","@R0,A",144,1
  570. DATA "MOVX","@R1,A",145,1
  571. DATA "MOVX","A,@R0",128,1
  572. DATA "MOVX","A,@R1",129,1
  573. DATA "NOP","",0,1
  574. DATA "ORL","A,=",67,2
  575. DATA "ORL","A,@R0",64,1
  576. DATA "ORL","A,@R1",65,1
  577. DATA "ORL","A,R0",72,1
  578. DATA "ORL","A,R1",73,1
  579. DATA "ORL","A,R2",74,1
  580. DATA "ORL","A,R3",75,1
  581. DATA "ORL","A,R4",76,1
  582. DATA "ORL","A,R5",77,1
  583. DATA "ORL","A,R6",78,1
  584. DATA "ORL","A,R7",79,1
  585. DATA "ORL","BUS,=",136,2
  586. DATA "ORL","P1,=",137,2
  587. DATA "ORL","P2,=",138,2
  588. DATA "ORLD","P0,A",140,1
  589. DATA "ORLD","P1,A",141,1
  590. DATA "ORLD","P2,A",142,1
  591. DATA "ORLD","P3,A",143,1
  592. DATA "OUTL","BUS,A",2,1
  593. DATA "OUTL","P1,A",57,1
  594. DATA "OUTL","P2,A",58,1
  595. DATA "RET","",131,1
  596. DATA "RETR","",147,1
  597. DATA "RL","A",231,1
  598. DATA "RLC","A",247,1
  599. DATA "RR","A",119,1
  600. DATA "RRC","A",103,1
  601. DATA "SEL","MB0",229,1
  602. DATA "SEL","MB1",245,1
  603. DATA "SEL","RB0",197,1
  604. DATA "SEL","RB1",213,1
  605. DATA "STOP","TCNTI",101,1
  606. DATA "STRT","CNT",69,1
  607. DATA "STRT","T",85,1
  608. DATA "SWAP","A",71,1
  609. DATA "XCH","A,R0",32,1
  610. DATA "XCH","A,R0",40,1
  611. DATA "XCH","A,R1",33,1
  612. DATA "XCH","A,R1",41,1
  613. DATA "XCH","A,R2",42,1
  614. DATA "XCH","A,R3",43,1
  615. DATA "XCH","A,R4",44,1
  616. DATA "XCH","A,R5",45,1
  617. DATA "XCH","A,R6",46,1
  618. DATA "XCH","A,R7",47,1
  619. DATA "XCHD","A,@R0",48,1
  620. DATA "XCHD","A,@R1",49,1
  621. DATA "XRL","A,=",211,2
  622. DATA "XRL","A,@R0",208,1
  623. DATA "XRL","A,@R1",209,1
  624. DATA "XRL","A,R0",216,1
  625. DATA "XRL","A,R1",217,1
  626. DATA "XRL","A,R2",218,1
  627. DATA "XRL","A,R3",219,1
  628. DATA "XRL","A,R4",220,1
  629. DATA "XRL","A,R5",221,1
  630. DATA "XRL","A,R6",222,1
  631. DATA "XRL","A,R7",223,1
  632. DATA "end","",0,0
  633. REM end of code
  634.