Jump to content

Tursi

Members
  • Content Count

    7,205
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by Tursi


  1. 3 hours ago, wierd_w said:

    My recent foray into running classic99 on WINE demonstrated quite clearly to me that it works just fine, as long as the wine prefix is 32bit.

     

    It crashes right away in a 64bit prefix.  Since most systems these days are 64bit, the default WINE has is to make a 64bit prefix.  Delve into the WINE documentation (or just google search), and use the necessary console-fu to generate and use a 32bit prefix for use with classic99.

    That's kind of interesting, though. Does it offer any kind of crash log that suggests WHY it crashes? Or does it just not like 32-bit apps?

     

    Does a 64-bit build behave any differently? (Note: lots of build warnings in this - no promises for long term use. Just a test.)

     

    Classic99x64_nosupport.zip


  2. On 9/30/2020 at 7:50 AM, eebuckeye said:

    Those are all extremely good!  Does the TI have any Ragtime songs such as the Entertainer?

    I knew I had this.. I found it while browsing some old disk images. ;)

     

     
    50 CALL CHARSET :: FOR A=1 TO 14 :: CALL COLOR(A,2,1) :: NEXT A
    60 CALL DELSPRITE(ALL)
    100 !By Dan Hawes
    110 !7570 S. Bridgewater Ct.
    120 !Salt Lake City, UT 84121
    130 !Finished June 11, 1986
    140 D=366.875 :: C=326.875 :: E=411.875 :: F=438 :: G=490 :: A=550 :: B=617.5 :: D1=388.75 :: G1=519.375 :: A1=582.5 :: C1=346.25 :: F1=462.5
    150 H,M,JH,K=0
    160 HDE=562.5 :: Q=750 :: EI=375 :: S=180.5
    170 CALL SCREEN(14)
    180 FOR I=2 TO 12 :: CALL COLOR(I,16,1) :: NEXT I
    190 CALL CHAR(128,"00000000000000000103070703010000003C3C2020202020A0E0E0E0C0800000")
    210 CALL CHAR(134,"8142241818244281") :: CALL CHAR(137,"8142241818244281") :: CALL COLOR(13,7,16) :: CALL COLOR(14,11,16)
    220 CALL CLEAR
    230 CALL HCHAR(1,1,134,32) :: CALL HCHAR(24,1,134,32) :: CALL VCHAR(1,1,134,24) :: CALL VCHAR(1,32,134,24)
    240 CALL HCHAR(2,2,137,30) :: CALL HCHAR(23,2,137,30) :: CALL VCHAR(2,2,137,21) :: CALL VCHAR(2,31,137,21)
    250 DISPLAY AT(4,8):"*************" :: DISPLAY AT(8,8):"*************" :: CALL VCHAR(4,10,42,4) :: CALL VCHAR(4,22,42,4)
    260 DISPLAY AT(5,12.5):"THE    *" :: DISPLAY AT(7,9):"ENTERTAINER*"
    270 DISPLAY AT(14,1.5):"* MUSIC BY SCOTT JOPLIN *" :: DISPLAY AT(22,3.5):" 1986 DANIEL C. HAWES"
    280 CALL MAGNIFY(4) :: FOR I=1 TO 7 :: CALL SPRITE(#I,128,17-I*1.2,I*6+90,RND*180+I*4,RND*-5-1,0) :: NEXT I
    290 CALL SOUND(S,C*4,6,C*2,6) :: CALL SOUND(S,C1*4,6,C1*2,6)
    300 CALL SOUND(S,D*4,4,D*2,4) :: CALL SOUND(S,E*4,4,E*2,4) :: CALL SOUND(S,C*2,4,C*4,4) :: CALL SOUND(EI,A,4,A*2,4)
    310 CALL SOUND(S,B,5,B*2,5) :: CALL SOUND(EI,G,6,G*2,6) :: CALL SOUND(S,D,7,D*2,7) :: CALL SOUND(S,E,8,E*2,8)
    320 CALL SOUND(S,C,8,C*2,8) :: CALL SOUND(EI,A/2,8,A,8) :: CALL SOUND(S,B,9,B/2,9) :: CALL SOUND(E,G,10,G/2,10)
    330 CALL SOUND(S,D,11,D/2,11) :: CALL SOUND(S,E,11,E/2,11) :: CALL SOUND(S,C,11,C/2,11) :: CALL SOUND(EI,A/2,11,A/4,11)
    340 CALL SOUND(S,B/4,12,B/2,12) :: CALL SOUND(S,A/2,12,A/4,12) :: CALL SOUND(S,G1/2,13,G1/4,13)
    350 CALL SOUND(EI,G/2,17,G/4,17) :: CALL SOUND(EI,40000,1)
    360 CALL SOUND(EI,G*2,0,B,0,G/4,0)
    370 CALL SOUND(S,D,8) :: CALL SOUND(S,D1,8)
    380 CALL SOUND(S,E,8,C/2,8) :: CALL SOUND(S,C*2,8,C/2,8)
    390 CALL SOUND(S,C*2,8,G/2,8,E/2,8) :: CALL SOUND(S,E,8,G/2,8,E/2,8) :: CALL SOUND(EI,C*2,8,E/2,8)
    400 CALL SOUND(S,E,8,A1/2,8,G/2,8) :: CALL SOUND(S,C*2,8,A1/2,8,G/2,8) :: CALL SOUND(EI,C*2,8,F/4,8)
    410 CALL SOUND(EI,C*2,8,C,8,F/2,8) :: CALL SOUND(S,C*2,8,E/2,8) :: CALL SOUND(S,C*2,6,C*4,6)
    420 CALL SOUND(S,D*2,4,D*4,4,F/4,4) :: CALL SOUND(S,D1*2,2,D1*4,2,F1/4,2) :: CALL SOUND(S,E*2,0,E*4,0,G/4,0)
    430 CALL SOUND(S,C*2,0,C*4,0,G/4,0) :: CALL SOUND(S,D*2,0,D*4,0,G/2,0) :: CALL SOUND(S,E*2,0,E*4,0,G/2,0)
    440 CALL SOUND(S,E*2,0,E*4,0,G/4,0) :: CALL SOUND(S,B,0,B*2,0,G/4,0) :: CALL SOUND(EI,D*2,0,D*4,0,B/2,0)
    450 CALL SOUND(EI,C*4,2,E*2,2,C/2,2) :: CALL SOUND(EI,C*4,4,E*2,4,G/2,4) :: CALL SOUND(EI,C,8) :: IF T=1 THEN RETURN
    460 CALL SOUND(S,D,8) :: CALL SOUND(S,D1,8,G/4,8) :: CALL SOUND(S,E,8,C/2,8) :: CALL SOUND(S,C*2,8,C/2,8)
    470 CALL SOUND(S,C*2,8,G/2,8,E/2,8) :: CALL SOUND(S,E,8,G/2,8,E/2,8) :: CALL SOUND(EI,C*2,8,E/2,8)
    480 CALL SOUND(S,E,8,A1/2,8,G/2,8) :: CALL SOUND(S,C*2,8,A1/2,8,G/2,8) :: CALL SOUND(EI,C*2,8,F/4,8)
    490 CALL SOUND(EI,C*2,8,C,8,F/2,8) :: CALL SOUND(EI,C*2,8,E/2,8) :: CALL SOUND(S,A,6,A*2,6,D1/2,6)
    500 CALL SOUND(S,G,4,G*2,4,D1/2,4) :: CALL SOUND(S,F1,2,F1*2,2,D/2,2) :: CALL SOUND(S,A,0,A*2,0,D/2,0)
    510 CALL SOUND(S,C*2,0,C*4,0,F1/2,0) :: CALL SOUND(S,E*2,0,E*4,0,F1/2,0) :: CALL SOUND(S,E*2,0,E*4,0,F1/4,0)
    520 CALL SOUND(S,D*2,0,D*4,0,F1/4,0) :: CALL SOUND(S,C*2,0,C*4,0,F1/2,0) :: CALL SOUND(S,A,0,A*2,0,F1/2,0)
    530 CALL SOUND(EI,D*2,0,F*2,0,G/2,0) :: CALL SOUND(EI,D*2,0,F*2,0,F/2,0) :: CALL SOUND(EI,E/2,2) :: H=H+1
    540 CALL SOUND(S,D,4,D/2,4) :: CALL SOUND(S,D1,6)
    550 T=1 :: GOSUB 380 :: T=0
    560 CALL SOUND(S,C*2,0,C*4,0)
    570 CALL SOUND(S,D*2,0,D*4,0,G/4,0) :: CALL SOUND(S,E*2,0,E*4,0,C/2,0) :: CALL SOUND(S,C*2,0,C*4,0,C/2,0)
    580 CALL SOUND(S,D*2,0,D*4,0,C,0) :: CALL SOUND(S,E*2,0,E*4,0,C,0) :: CALL SOUND(S,E*2,0,E*4,0,A1/4,0)
    590 CALL SOUND(S,C*2,0,C*4,0,A1/4,0) :: CALL SOUND(S,D*2,0,D*4,0,A1/2,0) :: CALL SOUND(S,C*2,0,C*4,0,A1/2,0)
    600 CALL SOUND(S,E*2,0,E*4,0,A/4,0) :: CALL SOUND(S,C*2,0,C*4,0,A/4,0) :: CALL SOUND(S,D*2,0,D*4,0,A/2,0)
    610 CALL SOUND(S,E*2,0,E*4,0,A/2,0) :: CALL SOUND(S,E*2,0,E*4,0,G1/4,0) :: CALL SOUND(S,C*2,0,C*4,0,G1/4,0)
    620 CALL SOUND(S,D*2,0,D*4,0,G1/2,0) :: CALL SOUND(S,C*2,0,C*4,0,G1/2,0) :: CALL SOUND(S,G*2,0,E*4,0,G/4,0)
    630 CALL SOUND(S,E*2,0,C*4,0,G/4,0) :: CALL SOUND(S,D*4,0,F*2,0,G/2,0) :: CALL SOUND(S,G*2,0,E*4,0,G/2,0)
    640 CALL SOUND(S,G*2,0,E*4,0,G/4,0) :: CALL SOUND(S,D*2,0,B*2,0,G/4,0) :: CALL SOUND(EI,F*2,0,D*4,0,B/2,0)
    650 ON H GOTO 660,670,1040
    660 CALL SOUND(EI,E*2,0,C*4,0,C/2,0) :: CALL SOUND(EI,E*2,0,C*4,0,G/4,0) :: CALL SOUND(EI,C/2,0) :: CALL SOUND(EI,40000,1) :: GOTO 370
    670 CALL SOUND(EI,E*2,0,C*4,0,C/2,0) :: CALL SOUND(EI,E*2,4,C*4,4,G/4,4) :: CALL SOUND(EI,C/2,8) :: CALL SOUND(S,C*2,8,E*2,8)
    680 CALL SOUND(S,D*2,6,F*2,6) :: CALL SOUND(S,D1*2,5,F1*2,5)
    690 CALL SOUND(EI,G*2,4,E*2,4,C/2,4)
    700 CALL SOUND(S,A*2,4,C,4) :: CALL SOUND(S,B,4,G*2,4,C,4) :: CALL SOUND(S,B,4,G*2,4,G/4,4)
    710 CALL SOUND(S,C*2,4,E*2,4,G/4,4) :: CALL SOUND(S,D*2,4,F*2,4,G/2,4) :: CALL SOUND(S,D1*2,4,F1*2,4,G/2,4)
    720 CALL SOUND(EI,G*2,4,E*2,4,C/2,4) :: CALL SOUND(S,A*2,4,E,4) :: CALL SOUND(S,G,4,G*2,4,E,4)
    730 CALL SOUND(S,G,4,G*2,4,G/4,4) :: CALL SOUND(S,E*2,4,G/4,4) :: CALL SOUND(S,C*2,4,E,4,C,4)
    740 CALL SOUND(S,G,4,E,4,C,4) :: CALL SOUND(S,F,8,A,4,F/4,4) :: CALL SOUND(S,B,4,F,8,F/4,4)
    750 CALL SOUND(S,C*2,4,F,8,A,4) :: CALL SOUND(S,D*2,4,F,8,A,4) :: CALL SOUND(S,G1,8,E*2,4,F/4,4)
    760 CALL SOUND(S,D*2,4,G1,8,F/4,4) :: CALL SOUND(S,C*2,4,G1,8,G1/2,4) :: CALL SOUND(S,D*2,4,G1,8,G1/2,4) :: IF T1=1 THEN RETURN
    770 CALL SOUND(S,G,4,E/2,4) :: CALL SOUND(S,C*2,4,E*2,4,E/2,4) :: CALL SOUND(S,D*2,4,F*2,4,C,4)
    780 CALL SOUND(S,E*2,4,G*2,4,C,4) :: CALL SOUND(S,F*2,3,A*2,3,G/4,3) :: CALL SOUND(S,E*2,3,G*2,3,G/4,3)
    790 CALL SOUND(S,C*2,2,E*2,2,G/2,2) :: CALL SOUND(S,D*2,1,F*2,1,G/2,1) :: CALL SOUND(EI,E*2,0,G*2,0,C/2,0)
    800 CALL SOUND(S,A*2,0,G/2,0) :: CALL SOUND(S,B,0,G*2,0,G/2,0) :: CALL SOUND(S,B,0,G*2,0,G/4,0)
    810 CALL SOUND(S,C*2,0,E*2,0,G/4,0) :: CALL SOUND(S,D*2,0,F*2,0,C,0) :: CALL SOUND(S,D1*2,0,F1*2,0,C,0)
    820 CALL SOUND(EI,E*2,0,G*2,0,C/2,0) :: CALL SOUND(S,A*2,0,E,0) :: CALL SOUND(S,G,0,G*2,0,E,0)
    830 CALL SOUND(S,G,0,G*2,0,E/2,0) :: CALL SOUND(S,G,0,G*2,0,E/2,0) :: CALL SOUND(S,A,0,A*2,0,D1/2,0)
    840 CALL SOUND(S,A1,0,A1*2,0,D1/2,0) :: CALL SOUND(S,G*2,0,B*2,0,D/2,0) :: CALL SOUND(S,G*2,0,B*2,0,D/2,0)
    850 CALL SOUND(S,B*2,0,G*2,0,D,0) :: CALL SOUND(S,D,0,F1*2,0,B*2,0) :: CALL SOUND(S,F1*2,0,B*2,0,D/2,0)
    860 CALL SOUND(S,A*2,0,D/2,0) :: CALL SOUND(S,C*2,0,F*2,0,A,0) :: CALL SOUND(S,D*2,0,A,0)
    870 CALL SOUND(EI,G/2,0,B,0,G*2,0) :: CALL SOUND(EI,B,0,G*2,0,F/2,0) :: CALL SOUND(S,B,0,G*2,0,E/2,0)
    880 CALL SOUND(S,C*2,0,E*2,0,E/2,0) :: CALL SOUND(S,D*2,0,F*2,0,D/2,0) :: CALL SOUND(S,D1*2,0,F1*2,0,D/2,0)
    890 T1=1 :: GOSUB 690 :: T1=0
    900 CALL SOUND(S,C*2,6,E/2,4) :: CALL SOUND(S,E,4,C*2,6,E/2,4)
    910 CALL SOUND(S,G,4,C*2,6,C,4) :: CALL SOUND(S,B,4,C*2,6,C,4) :: CALL SOUND(S,A1,4,C*2,6,C/2,4)
    920 CALL SOUND(S,G,4,C/2,4) :: CALL SOUND(S,F1,4,A1/2,4,E,4) :: CALL SOUND(S,G,4,A1/2,4,E,4)
    930 CALL SOUND(EI,C*2,4,C,4,F/2,4) :: M=M+1 :: CALL SOUND(S,A,4,C,4,F/2,4) :: CALL SOUND(S,C*2,4,C,4,F/2,4)
    940 CALL SOUND(S,C*2,4,C1,4,F1/2,4) :: CALL SOUND(S,A,4,C1,4,F1/2,4) :: CALL SOUND(S,C*2,4,F1/2,4,C1,4)
    950 CALL SOUND(S,A,4,C1,4,F1/2,4) :: CALL SOUND(S,G,4,E,4,G/2,4) :: CALL SOUND(S,C*2,4,E,4,G/2,4)
    960 CALL SOUND(S,E*2,4,C,4,G/2,4) :: CALL SOUND(S,G*2,4,C,4,G/2,4) :: CALL SOUND(S,G*2,4,E,4,A/2,4)
    970 CALL SOUND(S,E*2,4,E,4,A/2,4) :: CALL SOUND(S,C*2,4,C,4,A/2,4) :: CALL SOUND(S,G,4,C,4,A/2,4)
    980 CALL SOUND(EI,F1,4,A,4,C,4) :: CALL SOUND(EI,F,4,C*2,4,A/2,4) :: CALL SOUND(S,G,4,E*2,4,G/2,4)
    990 CALL SOUND(S,D*2,4,F,4,G/2,4) :: CALL SOUND(S,D*2,4,F,4,G/4,4) :: CALL SOUND(S,E,4,C*2,4,G/4,4) :: IF T2K=1 THEN RETURN
    1000 ON M GOTO 1010,1030
    1010 CALL SOUND(EI,C,4,E,4,C*2,4) :: CALL SOUND(EI,G/2,4,E,4,C*2,4) :: CALL SOUND(S,E/2,4)
    1020 CALL SOUND(S,C*2,4,E*2,4,E/2,4) :: CALL SOUND(S,D/2,3,D*2,3,F*2,3) :: CALL SOUND(S,D1*2,2,F1*2,2,D/2,2) :: GOTO 690
    1030 CALL SOUND(EI,C*2,4,E,4,C,4) :: CALL SOUND(EI,C*2,6,E,6,G/2,6) :: CALL SOUND(EI,C/2,8) :: GOTO 370
    1040 CALL SOUND(EI,C/2,4,E*2,4,C*4,4) :: CALL SOUND(EI,E*2,4,C*4,4,G/4,4) :: CALL SOUND(EI,C*8,0,C*4,0,C/2,0)
    1050 CALL SOUND(EI,40000,1)
    1060 CALL SOUND(S,A*2,2,F*2,2,F/4,2) :: CALL SOUND(S,G1*2,2,F*2,2,F/4,2) :: CALL SOUND(S,A*2,2,F*2,2,A/2,2)
    1070 CALL SOUND(S,A*2,2,C*2,2,A/2,2) :: CALL SOUND(S,F*2,2,C/2,2) :: CALL SOUND(S,A*2,2,C/2,2)
    1080 CALL SOUND(S,C*4,2,F/2,2) :: CALL SOUND(S,A*2,2,F/2,2) :: CALL SOUND(EI,A1*2,2,F*2,2,A1/4,2)
    1090 CALL SOUND(S,A1,2,D,2,A1/2,2) :: CALL SOUND(S,A,2,D,2,A1/2,2) :: CALL SOUND(S,A1,2,F/4,2)
    1100 CALL SOUND(S,C*2,2,F/4,2) :: CALL SOUND(EI,D*2,2,A1,2,F,2) :: CALL SOUND(S,F*2,2,D*2,2,D/2,2)
    1110 CALL SOUND(S,E*2,2,D/2,2) :: CALL SOUND(S,F*2,2,D*2,2,A/2,2) :: CALL SOUND(S,F*2,2,A,2,A/2,2)
    1120 CALL SOUND(S,D*2,2,A/4,2) :: CALL SOUND(S,F*2,2,A/4,2) :: CALL SOUND(S,A*2,2,F,2,A/2,2)
    1130 CALL SOUND(S,F*2,2,F,2,A/2,2) :: CALL SOUND(EI,G*2,2,A1*2,2,G/4,2) :: CALL SOUND(S,G,2,D,2,A1/2,2)
    1140 CALL SOUND(S,F1,2,D,2,A1/2,2) :: CALL SOUND(S,G,2,D/2,2) :: CALL SOUND(S,A,2,D/2,2)
    1150 CALL SOUND(S,A1,2,D,2,A1/2,2) :: CALL SOUND(S,G*2,2,D,2,A1/2,2) :: CALL SOUND(EI,D*2,2,A1,2,A1/2,2)
    1160 CALL SOUND(S,G*2,2,D,2,A1/2,2) :: CALL SOUND(S,D*2,2,A1,2,A1/2,2) :: CALL SOUND(S,D*2,2,A1,2,G/4,2)
    1170 CALL SOUND(S,G*2,2,G/4,2) :: CALL SOUND(EI,D*2,2,B,2,G1/4,2) :: IF T2=1 THEN RETURN
    1180 CALL SOUND(S,C*2,2,A/2,2,A/4,2)
    1190 CALL SOUND(S,F,2,A/2,2,A/4,2) :: CALL SOUND(S,A,2,C,2,A/2,2) :: CALL SOUND(S,C*2,2,C,2,A/2,2)
    1200 CALL SOUND(S,F*2,2,D/2,2) :: CALL SOUND(S,A,2,D/2,2) :: CALL SOUND(S,D*2,2,F,2,A/2,2)
    1210 CALL SOUND(S,F*2,2,F,2,A/2,2) :: CALL SOUND(S,E*2,2,E/2,2) :: CALL SOUND(S,G1*2,2,E/2,2)
    1220 CALL SOUND(S,B*2,2,B/2,2,D,2) :: CALL SOUND(S,E*4,2,B/2,2,D,2) :: CALL SOUND(S,E*4,2,G1/4,2)
    1230 CALL SOUND(S,D*4,2,G1/4,2) :: CALL SOUND(S,B*2,2,B/2,2,E,2) :: CALL SOUND(S,C*4,2,B/2,2,E,2)
    1240 CALL SOUND(EI,A*2,2,C,2,F/2,2) :: CALL SOUND(EI,A*2,2,E/2,2) :: CALL SOUND(EI,A1*2,0,G*2,0,G/2,0)
    1250 CALL SOUND(EI,A1*2,2,G*2,2,C/2,2)
    1260 T2=1 :: GOSUB 1060 :: T2=0
    1270 CALL SOUND(S,C*2,2,F,2,A/2,2) :: CALL SOUND(S,C*2,2,F,2,F/2,2) :: CALL SOUND(S,C*2,2,F,2,E/2,2) :: JH=JH+1
    1280 CALL SOUND(S,C*2,2,F,2,D/2,2) :: CALL SOUND(HDE,F*2,0,G1,0,C1/2,0) :: CALL SOUND(S,F*2,2,C1/2,2)
    1290 CALL SOUND(S,A*2,2,A,2,C/2,2) :: CALL SOUND(S,C*4,2,C*2,2,C/2,2) :: CALL SOUND(S,C*4,2,C*2,2,A/2,2)
    1300 CALL SOUND(S,G*2,2,A1,2,A/2,2) :: CALL SOUND(S,G*2,2,A1,2,C/2,2) :: CALL SOUND(S,C*2,2,C/2,2)
    1310 CALL SOUND(S,D*2,2,A1,2,C/2,2) :: CALL SOUND(S,E*2,2,C/2,2) :: ON JH GOTO 1320,1340
    1320 CALL SOUND(EI,F*2,2,A,2,F/4,2) :: CALL SOUND(S,B,2) :: CALL SOUND(S,C*2,2) :: CALL SOUND(S,D*2,2)
    1330 CALL SOUND(S,E*2,2) :: CALL SOUND(S,F*2,2) :: CALL SOUND(S,G*2,2) :: GOTO 1060
    1340 CALL SOUND(EI,F*2,2,A,2,F/2,2) :: CALL SOUND(EI,C/2,2) :: CALL SOUND(EI,F*4,0,A*2,0,F/2,0) :: CALL SOUND(EI,40000,1)
    1350 T2K=1 :: GOSUB 930 :: T2K=0
    1360 CALL SOUND(Q,C/2,4,E,4,C*2,4) :: CALL SOUND(EI,C*4,0,E*2,0,C/2,0) :: CALL SOUND(EI,40000,1)
    1370 CALL SOUND(EI,A,8,F*2,8,F/4,8) :: CALL SOUND(S,G1,8,E*2,8,C,8) :: CALL SOUND(S,A,8,F*2,8,C,8)
    1380 CALL SOUND(S,A,8,F*2,8,A/4,8) :: CALL SOUND(S,G1,8,E*2,8,A/4,8) :: CALL SOUND(EI,A,8,F*2,8,C,8)
    1390 CALL SOUND(S,F/4,8) :: CALL SOUND(S,A,8,F/4,8) :: CALL SOUND(S,F,8,D*2,8,F/2,8)
    1400 CALL SOUND(S,A,8,F/2,8) :: CALL SOUND(S,C*2,8,A/4,8) :: CALL SOUND(S,D*2,8,A/4,8)
    1410 CALL SOUND(S,C*2,8,F/2,8) :: CALL SOUND(S,A,8,F/2,8) :: CALL SOUND(E,E*2,8,G*2,8,C/2,8)
    1420 CALL SOUND(S,D1*2,8,F1*2,8,G/2,8) :: CALL SOUND(S,E*2,8,G*2,8,G/2,8) :: CALL SOUND(S,E*2,7,G*2,7,G/4,7)
    1430 CALL SOUND(S,D1*2,7,F1*2,7,G/4,7) :: CALL SOUND(EI,E*2,6,G*2,6,G/2,6) :: CALL SOUND(S,C/2,6)
    1440 CALL SOUND(S,C*2,5,C/2,5) :: CALL SOUND(S,G,4,E*2,4,C,4) :: CALL SOUND(S,C*2,4,C,4)
    1450 CALL SOUND(S,D*2,4,G/4,4) :: CALL SOUND(S,E*2,3,G/4,3) :: CALL SOUND(S,D*2,3,C,3) :: CALL SOUND(S,C*2,3,C,3) :: IF T3=1 THEN RETURN
    1460 CALL SOUND(EI,B*2,2,D*4,2,G/4,2) :: CALL SOUND(S,A1*2,2,C1*2,2,B,2)
    1470 CALL SOUND(S,B*2,2,D*4,2,B,2) :: CALL SOUND(S,B*2,2,D*4,2,B/4,2) :: CALL SOUND(S,A1*2,2,C1*2,2,B/4,2)
    1480 CALL SOUND(EI,B*2,2,D*4,2,G/2,2) :: CALL SOUND(S,G/4,2) :: CALL SOUND(S,F*2,2,G/4,2)
    1490 CALL SOUND(S,B,2,A*2,2,F/2,2) :: CALL SOUND(S,F*2,2,F/2,2) :: CALL SOUND(S,G*2,1,D/2,1)
    1500 CALL SOUND(S,A*2,1,D/2,1) :: CALL SOUND(S,G*2,1,B,1) :: CALL SOUND(S,F*2,1,B,1)
    1510 CALL SOUND(S,F1/2,0,D1/2,0,C*4,0) :: CALL SOUND(S,F1/2,0,D1/2,0,C*4,0) :: CALL SOUND(Q,F1/2,0,D1/2,0,C*4,0)
    1520 CALL SOUND(EI,A*2,0,D1/2,0,F1/2,0) :: CALL SOUND(EI,G*2,2,G/2,2,E/2,2) :: CALL SOUND(S,E,4,G,4)
    1530 CALL SOUND(S,E,4,G,4) :: CALL SOUND(EI,E,6,G,6) :: CALL SOUND(EI,E,7,G,7) :: K=K+1
    1540 T3=1 :: GOSUB 1370 :: T3=0
    1550 CALL SOUND(S,A,2,F/2,2) :: CALL SOUND(S,G1,2,F/2,2) :: CALL SOUND(S,A,2,D/2,2) :: CALL SOUND(S,A,2,G*2,2,D/2,2)
    1560 CALL SOUND(S,A,2,G*2,2,E/2,2) :: CALL SOUND(S,A,2,F*2,2,E/2,2) :: CALL SOUND(S,A,2,F*2,2,F/2,2)
    1570 CALL SOUND(S,C*2,2,F/2,2) :: CALL SOUND(S,G,2,E*2,2,G/2,2) :: CALL SOUND(S,D1*2,2,G/2,2)
    1580 CALL SOUND(S,E*2,2,E,2,C,2) :: CALL SOUND(S,A*2,2,E,2,C,2) :: CALL SOUND(S,A*2,2,C1,2,F1/2,2)
    1590 CALL SOUND(S,C*4,2,C1,2,F1/2,2) :: CALL SOUND(S,G*2,2,E,2,G/2,2) :: CALL SOUND(S,E*2,2,E,2,G/2,2)
    1600 CALL SOUND(EI,F1,2,C*2,2,A/2,2) :: CALL SOUND(EI,F1,2,C*2,2,D/2,2) :: CALL SOUND(S,G,2,E*2,2,G/2,2)
    1610 CALL SOUND(S,F,2,D*2,2,G/2,2) :: CALL SOUND(S,F,2,D*2,2,B,2) :: CALL SOUND(S,E,2,C*2,2,B,2)
    1620 CALL SOUND(EI,E,2,C*2,2,C,2) :: CALL SOUND(S,E,2,G,2) :: CALL SOUND(S,E,4,G,4) :: CALL SOUND(EI,E,6,G,6)
    1630 CALL SOUND(EI,E,8,G,8) :: ON K GOTO 1370,1640
    1640 CALL SOUND(EI,C*2,8,E,8,C,8) :: CALL SOUND(EI,C*2,4,E,4,G/2,4) :: CALL SOUND(EI,C*4,0,E*2,0,C/2,0)
    1650 FOR COL=14 TO 22 :: CALL HCHAR(COL,4,32,26) :: NEXT COL :: CALL DELSPRITE(ALL)
    1660 CALL SOUND(1,-1,30)
    1670 REM RUN "DSK1.GHOSTBUSTX"
    1680 CALL SAY("#PRESS##ENTER##TO##HERE##IT##AGAIN#,#OR##PRESS##ANY##OTHER##KEY##TO##STOP#")
    1690 CALL KEY(0,K,S) :: IF S=0 THEN 1690 ELSE IF K=13 THEN 140 ELSE CALL CLEAR :: IF P=0 THEN END ELSE CALL SAY("GOODBYE") :: END

     

     

    It was on a disk of music files I'd accumulated, and linked together to make a XB music box of sorts... ;)

     

    Basic_MUSIC.DSK

    • Like 6
    • Thanks 1

  3. 18 hours ago, HOME AUTOMATION said:

    I suppose... interrupts need to be on when the key is depressed, in order to be detected. But need to be off when KSCAN runs. Dunno for sure though. But, this seems to always work for me.:cool:

    No, the TI keyboard is literally just a grid of switches. They don't trigger interrupts, so interrupts don't need to be enabled. There's no storage and no caching of status. The KSCAN function literally reads the keyboard by enabling each column, and seeing if any rows on that column are pressed - this is why KSCAN takes a fair bit of time to run. :) It also means you only know the state of the keyboard at the exact time that you scan it.

     

    I don't see in a quick scan why interrupts should interfere with KSCAN, but all console software in the TI runs on the assumption that interrupts are normally disabled. When you violate assumptions in other people's code, you tend to get bugs. ;)

     

     

    • Thanks 1

  4. 10 hours ago, GDMike said:

    Shoot, I need to do a hex view on final Grom, and other .bin files to see what they look like so I can write a program that distinguishes them out for me on a PC in a nice orderly fashion. 

    ROM or GROM Cartridge header is documented nicely at Nouspikel.com: http://www.unige.ch/medecine/nouspikel/ti99/headers.htm#header summary

     

    (edit: huh, guess it's not Nouspikel.com anymore ;) )

     

     

    • Like 1
    • Thanks 1

  5. Dead modulator wasn't all that uncommon, I know a few people switched from RF to composite video rather than get a new one.

     

    Also, dumb question, but you slid the tv/computer switch on the modulator, right? ;) In addition to switching the video, there's a power switch inside the box, so it won't do anything if it's not on.

     

     


  6. GROMs only have one address - even GRAM uses the same address counter, so there's only one thing to save/restore. However, Editor/Assembler doesn't require you to save the GROM address to return to it. The GPL interpreter /generally/ assumes that it needs to set the GROM address for every new instruction. The problems mentioned above are specific to those DSRs.

     

    (Edit: and frankly - I wonder how true it is. They corrupt the GROM address, okay - but who cares? It's possible those guidelines were written before the GPL interpreter was finished? And doing what, anyway? Just a KSCAN, right?)

     

    As for BLWP @0 - this does all the same initialization and startup that turning on the console or resetting does -- but no reset pulse is sent out to the hardware. Again, generally this is not a big deal on the 4A, since most of the hardware doesn't do very much on hardware reset, but it's worth noting that it's not exactly the same.

     

    • Like 1

  7. There aren't very many incompatible programs -- and frankly these days, if you come across a deal breaker we can probably fix it. ;)

     

    You can consider installing a switch as well, that will let you go back to the original timing, which solves the incompatibility issues.

     

    All that said, I got tired of the increased complexity and ... well, that PDF /is/ my 8-bit version. ;)

     

    But when I was using my TI as my sole console, I really appreciated the speed up.

     


  8. That would be extremely CPU demanding, and probably wouldn't work very well. I don't know how many changes you can get per scanline, but likely only a couple. It's easy enough to find out though, it's only a handful of instructions to write the background register and increment in a tight loop. You don't need delays on the VDP registers. If you reset the loop on the NMI, then you should be able to get a stable picture and can zoom in to see how many changes per scanline you get. My bet is 2.5. ;)

     

    The trick of changing data on a certain scanline was used on the TI in the Don't Mess With Texas demo. See starting at 5:22, three effects. Usually there's a little slop in detecting either by sprite collision or 5S, but Rasmus pulled off some really stable effects there. ;) 

     

     

    • Like 1

  9. 8 hours ago, Asmusr said:

     

    This demo requires SAMS. There is a new maze, new wall textures, and lots of new monster textures borrowed from Buzzkill's 32x32 tileset for Angband. I have replaced the gun with a compass, and if you view the map you only see the areas you have visited. The monsters are harmless for now, so the only challenge to complete the 'game' is to find your way to the bottom left corner.

     

    P. S. I have not done anything yet to optimize the drawing of 'sprites'.

    texcaster8.bin 512 kB · 10 downloads

    That's a system seller there! ;)

     


  10. 7 hours ago, GDMike said:

    I can't wait to get my F18A from eBay. I'm checking every day 🙂. Oh it's coming, so many were made so yup..it's going to just show up, just like a console.

    Ok..who am I kidding....

    crawlingback under the rock..

    But I'm wondering, is there an F18A kit like can one be made easily?

    Well... they aren't standalone devices - all the ones purchased ended up inside machines. You're more likely to find a machine with an F18A on EBay than a standalone F18A.

     

    That said, you could go post in the Wanted forum here. Between MSX, Coleco, TI and Arcade, a lot of the people who bought them are on AtariAge, but they aren't constrained to the TI subforum. :)

     

    • Like 3

  11. 6 hours ago, Asmusr said:

    Moving off topic, but would a co-processor in a sidecar cartridge be able to push data to the VDP at the same time as the main CPU executed a program on the 16-bit bus in scratchpad? 

    My instinct is no... I am pretty sure the 8-bit bus still sees activity even with 16-bit accesses (just that the multiplexer doesn't kick in). I would have to double check (but am feeling lazy), but I thought the VDP was attached to the 16-bit side of the bus anyway...

     

    The 9900 has the ability to suspend for external DMA masters, but TI locked that pin down instead of exposing it to the expansion port. Not that that's exactly what you had in mind either. :)

    • Like 1

  12. Classic99 will also read and write the track dumps, though I don't guarantee the track dumps will be useful anywhere else after writing. ;)

     

    Sector dumps are where most of the TI images standardized. There were very few (if any?) TI disks that required a track dump to operate, and some research years back cast doubt whether the inter-sector data on PC99-originated dumps was correct anyway.

     

    • Like 2

  13. 7 hours ago, jedimatt42 said:

    Interestingly, classic99 creates a FIAD that has a data sector with no records in it... so 0xFF, followed by all 0x00s  , when run the following in BASIC: 

    Classic99's DSR does not attempt to replicate a TI Disk Controller.

     

    (Edit: since the emulator includes the real TI disk controller, you can also test that. But don't use the Classic99 DSR to guess how a TI controller works. ;) )

     

     


  14. Finally back on this task, and tonight I pushed up something I've wanted forever, and one of the reasons I started this update - md2psg. MD is MegaDrive, aka the Sega Genesis. MegaDrive VGMs can now be read and output in a format loosely compatible with the PSGs used here.

     

    It's far from perfect. I think the envelopes must be working, but honestly I am having a lot of trouble understanding how the MD generates the final volume on a channel at any given time, since emulators work at the sample level. What I have seems good enough as a starting point, anyway.

     

    Of course, with 6 FM channels PLUS a TI PSG in there, the task of getting 10 channels playing on a TI is left as an exercise for the reader. ;) But that's the point of this whole toolchain - to provide the tools needed to tweak and manipulate this sort of music into something usable.

     

    I've posted a video here with a number of conversions. Since the video was recorded I fixed the desynchronization issue that broke Scrap Brain Zone, and also rebalanced the volumes by default a bit, so I think the starting point is pretty decent. It also converts the tune in one pass for both chips - in the video you'll see me running the two converters separately.

     

    https://open.lbry.com/@tursilion:1/VgmComp2---Sega-Genesis-to-SN-Example:f

     

    Of course, the files are are pushed up to Github with binaries and docs in the dist folder. It's nearly there, just a few tools left to build (and another player if I decide I want to do it... waiting till I get that far before I delete it ;) )

     

    • Like 7

  15. 1 hour ago, oddemann said:

    Can you copy program file OUT of C99?

    I want to re-number a program (don't have tools outside the TI to do that). Want to add my program lines to a program, then put it into C99, re-number it and take it out to continue to add lines.

    Can you do that in C99 or do you know a way around that? I use LibreOffice to write and fix code.

    You can renumber your program in BASIC or XB with the "RES" command. With no arguments, it will start at 100 and increment by 10, or you can specify it as "RES start,increment" (like RES 50,5)

     

    But to get it out of Classic99, just use the LIST command to a device.

     

    LIST "CLIP" will list it to the Windows clipboard, and then you can paste it into your favorite text editor.

    If DSK1 is a file folder, as shipped, you can list to a Windows text file with LIST "DSK1.?W.FILE.TXT" (there are shorter ways but "?W" will make it work regardless of configuration.) If you have a different drive set as files you can select it instead of DSK1. If you are using disk images, obviously this won't work. :)

     

    • Like 6

  16. 2 hours ago, whoami999ster said:

    PS. the pgm. source includes some SPECTRA routines tha throw an error with opcode RET ... since doesn't exist. I substituted RET with B *R11 and seems to work .. but do you know why or the reason of such RET opcode implemented in the SPECTRA routines? ...

    RET was a standard replacement for B *R11. I thought that Editor/Assembler first used it, but when I looked in the manual, EA actually used "RT". 

     

    Suffice to say whatever assembler SPECTRA used supported RET. ;)

     

     


  17. The local UHF station in my grandparent's town of Peachland, BC, clearly used a TI for the community messages channel (back in the 90s). From the font to a double-size magnified sprite of Mr Bojangles dancing across the top of the screen, I recognized it instantly. ;) Sadly, no pictures.

     

    • Like 4
×
×
  • Create New...