Skip to content

Commit 940f567

Browse files
committed
Tests, some skipped
1 parent a4c9e4d commit 940f567

File tree

1 file changed

+208
-2
lines changed

1 file changed

+208
-2
lines changed

tests/integration/via.js

Lines changed: 208 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,8 @@ REM REAL BBC! YES: 128
817817
PRINT ?(R%)`);
818818
expectArray(testMachine, [128]);
819819
});
820-
it("VIA.PB7 - sys via checks", async function () {
820+
// TODO fix! this is broken currently
821+
it.skip("VIA.PB7 - sys via checks", async function () {
821822
const testMachine = await runViaProgram(`
822823
PRINT "RUN AFTER FRESH BOOT"
823824
R% = ${resultAddress}
@@ -852,6 +853,211 @@ IF E% <> A% THEN R$ = "FAIL!"
852853
IF E% <> A% THEN ?R% = 255
853854
PRINT R$ + ": " + N$ + ": " + STR$(A%)
854855
ENDPROC`);
855-
expectArray(testMachine, [255]); // TODO set to 0 and fix! this is broken currently
856+
expectArray(testMachine, [0]);
857+
});
858+
it("VIA.T11 - How does T1 tick across expiry?", async function () {
859+
const testMachine = await runViaProgram(`
860+
REM RESET ACR TO DEFAULT BOOT + MOS 1.2 STATE
861+
R% = ${resultAddress}
862+
PRINT "VIA TEST: HOW DOES T1 TICK ACROSS EXPIRY?"
863+
PRINT "REAL BBC: 1, 0, 255, 4, 3, 2"
864+
?&FE6B = 0
865+
REM QUICK CHECKS TO SEE IF TIMERS ARE RUNNING ETC.
866+
PRINT "USER VIA IFR: " + STR$(?&FE6D)
867+
FOR A%=0 TO 1
868+
PRINT "USER VIA T1CH: " + STR$(?&FE65)
869+
PRINT "USER VIA T1CL: " + STR$(?&FE64)
870+
NEXT
871+
DIM MC% 100
872+
PROCtimeit(1)
873+
PROCtimeit(2)
874+
PROCtimeit(3)
875+
PROCtimeit(4)
876+
PROCtimeit(5)
877+
PROCtimeit(6)
878+
END
879+
DEF PROCtimeit(N%)
880+
P% = MC%
881+
[
882+
OPT 0
883+
SEI
884+
LDX #0
885+
LDY #0
886+
LDA #4
887+
STA &FE64
888+
LDA #0
889+
STA &FE65
890+
]
891+
FOR A%=1 TO N%
892+
[
893+
OPT 0
894+
NOP
895+
]
896+
NEXT
897+
[
898+
OPT 0
899+
LDA &FE64
900+
STA &FE6A
901+
CLI
902+
RTS
903+
]
904+
CALL MC%
905+
PRINT "USER VIA T1CL: " + STR$(?&FE6A)
906+
?R% = ?&FE6A
907+
R% = R% + 1
908+
ENDPROC`);
909+
expectArray(testMachine, [1, 0, 255, 4, 3, 2]);
910+
});
911+
it("VIA.T12 - When do T1L writes take effect vs. timer expiry?", async function () {
912+
const testMachine = await runViaProgram(`
913+
DIM MC% 100
914+
R% = ${resultAddress}
915+
P% = MC%
916+
[
917+
OPT 3
918+
SEI
919+
LDA #&00
920+
STA &FE6B
921+
LDA #&7F
922+
STA &FE6E
923+
LDA #&02
924+
STA &FE64
925+
LDA #&00
926+
STA &FE65
927+
LDA #&FF
928+
STA &FE66
929+
LDA &FE64
930+
STA R%
931+
LDA #&03
932+
STA &FE64
933+
LDA #&00
934+
STA &FE65
935+
NOP
936+
NOP
937+
LDA #&FF
938+
STA &FE66
939+
LDA &FE64
940+
STA R%+1
941+
CLI
942+
RTS
943+
]
944+
CALL MC%
945+
REM REAL BBC: 253, 0
946+
PRINT "VIA TEST: WHEN DO T1L WRITES TAKE EFFECT VS. TIMER EXPIRY?"
947+
PRINT "REAL BBC: 253, 0"
948+
PRINT ?(R%)
949+
PRINT ?(R%+1)`);
950+
expectArray(testMachine, [253, 0]);
951+
});
952+
it("VIA.T21 - user VIA T2 to pulse counting?", async function () {
953+
const testMachine = await runViaProgram(`
954+
REM USER VIA T2 TO PULSE COUNTING
955+
REM FREEZES T2
956+
R% = ${resultAddress}
957+
PRINT "VIA TEST: T2 IN PULSE COUNTING MODE"
958+
PRINT "REAL BBC: 1, 255, 255"
959+
?&FE6B = &20
960+
?&FE68 = 1
961+
?&FE69 = 0
962+
R%?0 = ?&FE68
963+
?&FE68 = &FF
964+
?&FE69 = &FF
965+
R%?1 = ?&FE68
966+
R%?2 = ?&FE68
967+
PRINT "USER VIA T2CL: " + STR$(R%?0)
968+
PRINT "USER VIA T2CL: " + STR$(R%?1)
969+
PRINT "USER VIA T2CL: " + STR$(R%?2)`);
970+
expectArray(testMachine, [1, 255, 255]);
971+
});
972+
it("VIA.T22 - T2 ticking past expiry", async function () {
973+
const testMachine = await runViaProgram(`
974+
REM RESET ACR TO DEFAULT BOOT + MOS 1.2 STATE
975+
R% = ${resultAddress}
976+
PRINT "VIA TEST: T2 TICKING PAST EXPIRY"
977+
PRINT "REAL BBC: 1, 0, 255, 254, 253, 252"
978+
?&FE6B = 0
979+
REM QUICK CHECKS TO SEE IF TIMERS ARE RUNNING ETC.
980+
PRINT "USER VIA IFR: " + STR$(?&FE6D)
981+
FOR A%=0 TO 1
982+
PRINT "USER VIA T2CH: " + STR$(?&FE69)
983+
PRINT "USER VIA T2CL: " + STR$(?&FE68)
984+
NEXT
985+
DIM MC% 100
986+
PROCtimeit(1)
987+
PROCtimeit(2)
988+
PROCtimeit(3)
989+
PROCtimeit(4)
990+
PROCtimeit(5)
991+
PROCtimeit(6)
992+
END
993+
DEF PROCtimeit(N%)
994+
P% = MC%
995+
[
996+
OPT 0
997+
SEI
998+
LDX #0
999+
LDY #0
1000+
LDA #4
1001+
STA &FE68
1002+
LDA #0
1003+
STA &FE69
1004+
]
1005+
FOR A%=1 TO N%
1006+
[
1007+
OPT 0
1008+
NOP
1009+
]
1010+
NEXT
1011+
[
1012+
OPT 0
1013+
LDA &FE68
1014+
STA &FE6A
1015+
CLI
1016+
RTS
1017+
]
1018+
CALL MC%
1019+
PRINT "USER VIA T2CL: " + STR$(?&FE6A)
1020+
?R% = ?&FE6A
1021+
R% = R% + 1
1022+
ENDPROC`);
1023+
expectArray(testMachine, [1, 0, 255, 254, 253, 252]);
1024+
});
1025+
// Disabled, @scarybeasts comments:
1026+
// I fixed everything except VIA.T23, which doesn't seem important. It's tricky for code to really rely on T2
1027+
// values after toggling ACR 0x20 because results will vary depending on what is attached and generating pulses
1028+
// from external.
1029+
it.skip("VIA.T22 - what values do we get freezing and starting T2?", async function () {
1030+
const testMachine = await runViaProgram(`
1031+
DIM MC% 100
1032+
R% = ${resultAddress}
1033+
P% = MC%
1034+
[
1035+
OPT 3
1036+
SEI
1037+
LDA #&40
1038+
STA &FE4B
1039+
LDA #&FF
1040+
STA &FE48
1041+
STA &FE49
1042+
LDA #&60
1043+
STA &FE4B
1044+
LDA &FE48
1045+
STA R%
1046+
LDA #&40
1047+
STA &FE4B
1048+
LDA &FE48
1049+
STA R%+1
1050+
LDA #&60
1051+
STA &FE4B
1052+
CLI
1053+
RTS
1054+
]
1055+
CALL MC%
1056+
REM REAL BBC: 251, 249
1057+
PRINT "VIA TEST: WHAT VALUES DO WE GET FREEZING AND STARTING T2?"
1058+
PRINT "REAL BBC: 251, 249"
1059+
PRINT ?(R%)
1060+
PRINT ?(R%+1)`);
1061+
expectArray(testMachine, [251, 249]);
8561062
});
8571063
});

0 commit comments

Comments
 (0)