Sudoku C64
Basic
Actualizado el 27 de Diciembre del 2019 por Adelino (27 códigos) (Publicado el 23 de Octubre del 2019)
10.194 visualizaciones desde el 23 de Octubre del 2019
Programa para Commodore 64.


10 POKE 53280,0: POKE 53281,0
20 PRINT CHR$(151) CHR$(147)
30 Q=1133: W=51456
40 FOR V=9 TO 0 STEP-1
50 C(V)=W: W=W-256
60 POKE C(9)+V+65,V+10
70 POKE C(9)+V+48,V
80 POKE C(9)+V,V+48
90 NEXT
100 POKE C(9)+32,10
110 FOR V=828 TO 958: READ A$
120 A=PEEK(C(9)+ASC(MID$(A$,2)))
130 POKE V,A+16*PEEK(C(9)+ASC(A$))
140 NEXT
150 FOR V=0 TO 2
160 FOR W=0 TO 2
170 READ A$: Q=Q+62
180 FOR N=0 TO 2
190 FOR M=0 TO 2
200 POKE Q+41,91
210 POKE Q-1,66: POKE Q+1,66
220 POKE Q-40,67: POKE Q+40,67
230 IF V+W=0 THEN POKE Q-39,114
240 IF V+W=4 THEN POKE Q+41,113
250 IF N+M=0 THEN POKE Q+39,107
260 IF N+M=4 THEN POKE Q+41,115
270 A=ASC(MID$(A$,3*N+M+1))
280 IF A<49 THEN A=32
290 POKE Q,A: POKE Q+54272,1
300 POKE C(7)+C,Q/256
310 POKE C(6)+C,Q-256*INT(Q/256)
320 POKE C(5)+C,27*V+9*N
330 POKE C(4)+C,27*N+9*M
340 POKE C(3)+C,27*V+9*W
350 C=C+1: Q=Q+2
360 POKE C(2)+C,0
370 POKE C(1)+C,0
380 POKE C(0)+C,0
390 NEXT M,N,W,V
400 POKE 1154,112: POKE 1172,110
410 POKE Q+21,109: POKE Q+39,125
420 A=0: C=0
425 REM ***** TECLADO *****
430 IF A=29 AND C<80 THEN C=C+1
440 IF A=17 AND C<72 THEN C=C+9
450 IF A=157 AND C>0 THEN C=C-1
460 IF A=145 AND C>8 THEN C=C-9
470 Q=PEEK(C(6)+C)+256*PEEK(C(7)+C)
480 IF A>57 OR A<48 AND A-32 GOTO 520
490 IF A=48 THEN A=32
500 POKE Q,A: A=29
510 GOTO 430
520 POKE Q,PEEK(Q)+128
530 GET A$: IF A$="" GOTO 530
540 POKE Q,PEEK(Q)-128
550 A=ASC(A$): IF A<>13 GOTO 430
555 REM ***** VALIDAR *****
560 FOR C=0 TO 80
570 Q=PEEK(C(6)+C)+256*PEEK(C(7)+C)
580 A=PEEK(Q)-48: IF A<0 GOTO 670
590 FOR N=0 TO 2
600 A(N)=C(N)+PEEK(C(N+3)+C)+A
610 IF PEEK(A(N)) THEN POKE Q,32
620 NEXT
630 IF PEEK(Q)=32 GOTO 670
640 POKE A(0),1: POKE A(1),1
650 POKE A(2),1: POKE Q+54272,14
660 B(C/27)=B(C/27)+1
670 NEXT
675 REM ***** ORDENAR *****
680 FOR V=0 TO 2: N=0
690 IF B(1)>B(N) THEN N=1
700 IF B(2)>B(N) THEN N=2
710 B(N)=-1
720 FOR C=27*N TO 27*N+26
730 POKE C(8)+B,C
740 Q=PEEK(C(6)+C)+256*PEEK(C(7)+C)
750 IF PEEK(Q)<49 THEN B=B+1
760 NEXT C,V
770 POKE 254,SGN(B)
780 POKE C(8)+B,255
790 SYS 834
800 GET A$: IF A$<>" " GOTO 800
810 IF PEEK(254)<255 GOTO 790
820 REM ***** ENSAMBLADOR *****
828 DATA A9,20 : REM *LDA #20
830 DATA A0,00 : REM LDY #00
832 DATA 91,B2 : REM STA (B2),Y
834 DATA C6,FE : REM DEC FE
836 DATA 30,78 : REM BMI 958
838 DATA A4,FE : REM LDY FE
840 DATA BE,00,C8: REM LDX C800,Y
843 DATA BD,00,C7: REM *LDA C700,X
846 DATA 85,B3 : REM STA B3
848 DATA BD,00,C6: REM LDA C600,X
851 DATA 85,B2 : REM STA B2
853 DATA A0,00 : REM LDY #00
855 DATA B1,B2 : REM LDA (B2),Y
857 DATA A8 : REM TAY
858 DATA B9,00,C9: REM LDA C900,Y
861 DATA A8 : REM TAY
862 DATA 18 : REM CLC
863 DATA 7D,00,C3: REM ADC C300,X
866 DATA 85,FB : REM STA FB
868 DATA 98 : REM TYA
869 DATA 7D,00,C4: REM ADC C400,X
872 DATA 85,FC : REM STA FC
874 DATA 98 : REM TYA
875 DATA 7D,00,C5: REM ADC C500,X
878 DATA 85,FD : REM STA FD
880 DATA C0,0A : REM CPY #0A
882 DATA F0,0F : REM BEQ 899
884 DATA A6,FB : REM LDX FB
886 DATA DE,00,C0: REM DEC C000,X
889 DATA A6,FC : REM LDX FC
891 DATA DE,00,C1: REM DEC C100,X
894 DATA A6,FD : REM LDX FD
896 DATA DE,00,C2: REM DEC C200,X
899 DATA 88 : REM *DEY
900 DATA F0,B6 : REM BEQ 828
902 DATA C6,FB : REM DEC FB
904 DATA C6,FC : REM DEC FC
906 DATA C6,FD : REM DEC FD
908 DATA A6,FB : REM LDX FB
910 DATA BD,00,C0: REM LDA C000,X
913 DATA D0,F0 : REM BNE 899
915 DATA A6,FC : REM LDX FC
917 DATA BD,00,C1: REM LDA C100,X
920 DATA D0,E9 : REM BNE 899
922 DATA A6,FD : REM LDX FD
924 DATA BD,00,C2: REM LDA C200,X
927 DATA D0,E2 : REM BNE 899
929 DATA FE,00,C2: REM INC C200,X
932 DATA A6,FC : REM LDX FC
934 DATA FE,00,C1: REM INC C100,X
937 DATA A6,FB : REM LDX FB
939 DATA FE,00,C0: REM INC C000,X
942 DATA B9,00,C9: REM LDA C900,Y
945 DATA A0,00 : REM LDY #00
947 DATA 91,B2 : REM STA (B2),Y
949 DATA E6,FE : REM INC FE
951 DATA A4,FE : REM LDY FE
953 DATA BE,00,C8: REM LDX C800,Y
956 DATA 10,8D : REM BPL 843
958 DATA 60 : REM *RTS
1000 REM ***** SUDOKU *****
1010 DATA 5.2......
1020 DATA ....6.9..
1030 DATA .........
1040 DATA .41..7...
1050 DATA ...5...6.
1060 DATA ..5..2...
1070 DATA .97.85...
1080 DATA .......35
1090 DATA .54....96
Comentarios sobre la versión: 1.6 (0)
No hay comentarios