CS Бе 520,530,540/6╠Е MO$│"C" з Ў:И CS Бе 490,495,500/A╤Бе 400/H╓:Г/gрRR$│ Т:Е RR$│"" з 480 :Д Р/nф:Г/Кх:Г CMP COLOR SELECTIONS/Сц:Г/┘ъPA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND0!яPA(0)│0:PA(1)│37:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND0iЇPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND0p∙:Г0М■:Г RGB COLOR SELECTIONS0У:Г0█PA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND1#PA(0)│0:PA(1)│52:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND1kPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND1r&:Г1Щ0:Г MODULE: GRAPHICS INITIALIZATION1а::Г1┼Dф 1:А I│0 е 3:у I,PA(I):Л:ч1,0:Р1╠v:Г2А:Г MODULE: DATABASE OR CARTESIAN XYZ WORLD COORDINATES FOR 3D CUBE2IГ:Г (SORTED AS BOTTOM 0, SIDES 1-4, TOP 5)2PЕ:Г2ФКЖ 30,-30,30,30,-30,-30,-30,-30,-30,-30,-30,30,30,-30,30,0,-30,02╪ФЖ 30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,30,30,-30,0,0,-303ЮЖ -30,30,-30,-30,30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,0,03\иЖ -30,30,30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,0,0,303Ъ▓Ж 30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,30,30,30,0,03┌╝Ж -30,30,-30,30,30,-30,30,30,30,-30,30,30,-30,30,-30,0,30,03с╨:Г3ш┌:Г3я':Г45':Г 3D PIPELINE ROUTINES (MOST OF THE BLAME FALLS ON LEE ADAMS...)4<'$:Г4q'.:Г MODULE: CALCULATE YAW/PIT/ROL ROTATION ANGLES4x'8:Г4и'BА I│0 е 2:SR(I)│ Е(R(I)):CR(I)│ Х(R(I)):Л:Р4п'L:Г4·'V:Г MODULE: ROTATION/TRANSLATION AND PROJECTION CALCULATIONS TO CONVERT5;'[:Г CARTESIAN WORLD COORDINATES TO SCREEN COORDINATES5B'`:Г5q'jX│мX :Г INVERT X-COORDINATE (WHY? I DUNNO)5x'n:Г5г'o:Г ROTATION CALCS (WORLD COORDINATES?)5к'p:Г5ш'tXA│CR(0)нXмSR(0)нZ:YA│CR(1)нYмSR(1)нXA:ZA│SR(0)нXлCR(0)нZ5я'В:Г6'Г:Г ROTATION CALCS (OBJECT COORDINATES?)6"'Д:Г6a'ИX│CR(1)нXAлSR(1)нY:Y│SR(2)нZAлCR(2)нYA:Z│CR(2)нZAмSR(2)нYA6h'М:Г6Ч'Н:Г TRANSLATION CALCS ON OBJECT COORDINATES6Ю'О:Г6╖'ТX│XлMX:Y│YлMY:Z│ZлMZ6╛'Ц:Г7'Ч:Г PERSPECTIVE PROJECTION CALCULATION FROM WORLD TO VIEW COORDINATES7'Ш:Г7P'ЬSX│DнXоZ:SY│DнYоZ :Г NOTE: IF Z=0 BAD THINGS COME YOUR WAY...7W'а:Г7К'б:Г TRANSLATION FROM VIEW TO SCREEN COORDINATES7С'в:Г7и'жSX│160лSX:SY│96лSY7п'л:Г7╡'░Р7╝N :Г8N*:Г MODULE: 128K (OR HIGHER) COCO 3 DOUBLE-BUFFERING FOR THE LAZY...YO!8N4:Г8UN>:Г FOR MORE INFO: https://retrocomputing.stackexchange.com/q/263658\NH:Г8мNR:Г BUFFER 0 IS LOCATED IN PHYSICAL MEMORY FROM &H60000-&H63FFF (PGS $30-31)8№NW:Г BUFFER 1 IS LOCATED IN PHYSICAL MEMORY FROM &H64000-&H67FFF (PGS $32-33)9N\:Г9@NfТ &HFF9D,&HC0л((1мMB)н8) :Г SHOW THE PRIOR HIDDEN BUFFER9GNp:Г9СNz:Г SET THE REGISTERS TO MAP IN OUR SELECTED BUFFER, THEN PRE-CLEAR IT9▄NД:Г FOR DRAWING ON; THE PAGE OFFSET IS CALCULATED USING THE BUFFER #...9уNО:Г:+NШЕ MB│0 з Т &HFFA9,&H30:Т &HFFAA,&H31 :Д Т &HFFA9,&H32:Т &HFFAA,&H33:sNЭЕ MB│0 з Т &HE6E2,&H20:Т &HE6E7,&H60 :Д Т &HE6E2,&H60:Т &HE6E7,&HA0:нNв:ГIF MB=0 THEN POKE &HFF9D,&HC8 ELSE POKE &HFF9D,&HC0:│Nзц:ўNмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN:■N╢:Г;u0:Г ERROR HANDLING;u5:Г;.u:Т65496,0:т80:Ю;БuDЗ "ERROR NUMBER"; м;"OCCURRED ON LINE"; н;"- LIKELY DUE TO SOME MATH ISSUE...";ЗuNЗ;НuXК9D,&HC8 ELSE POKE &HFF9D,&HC0:│Nзц:ўNмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN:■N╢:Г                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ZY...YO!8N4:Г8UN>:Г FOR MORE INFO: https://retrocomputing.stackexchange.com/q/263658\NH:Г8мNR:Г BUFFER 0 IS LOCATED IN PHYSICAL MEMORY FROM &H60000-&H63FFF (PGS $30-31)8№NW:Г BUFFER 1 IS LOCATED IN PHYSICAL MEMORY FROM &H64000-&H67FFF (PGS $32-33)9N\:Г9DNf:ГPOKE &HFF9D,&HC0+((1-MB)*8) ' SHOW THE PRIOR HIDDEN BUFFER9pNgЕ MB│0 з Т &HFF9D,&HC8 :Д Т &HFF9D,&HC09wNp:Г9┴Nz:Г SET THE REGISTERS TO MAP IN OUR SELECTED BUFFER, THEN PRE-CLEAR IT: NД:Г FOR DRAWING ON; THE PAGE OFFSET IS CALCULATED USING THE BUFFER #...:NО:Г:[NШЕ MB│0 з Т &HFFA9,&H30:Т &HFFAA,&H31 :Д Т &HFFA9,&H32:Т &HFFAA,&H33:aNЭц:ЫNв:ГIF MB=0 THEN POKE &HFF9D,&HC8 ELSE POKE &HFF9D,&HC0:бNзц:хNмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN:ьN╢:Г;u0:Г ERROR HANDLING; u5:Г;u:Т65496,0:т80:Ю;ouDЗ "ERROR NUMBER"; м;"OCCURRED ON LINE"; н;"- LIKELY DUE TO SOME MATH ISSUE...";uuNЗ;{uXК9D,&HC8 ELSE POKE &HFF9D,&HC0:бNзц:хNмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN:ьN╢:Г;u0:Г ERROR HANDL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 О&И Ё Бе 350&!И я Бе 30000&(Z:Г&dd:Г ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING&Хi:Г FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!&╤j:Г (C) 2025 BY ANDREW L. AYERS - AND A BIG SHOUT-OUT TO' k:Г CAPTAIN OBVLIOUS, WITHOUT HIS HELP, THIS WOULDN'T BE' l:Г POSSIBLE...''n:Г'=s:Г INITIALIZATION'Dt:Г'iw:Г THERE'S NO WAY WE COULDN'T...'гxТ 65497,0 :Г ...WE'RE CREEPING BETWEEN THE BULLFROGS.'кy:Г'хzPI│3.14159:TA│2нPI :Г DEFINE PI AND TAU - WE NEED 'EM!(*{D│400 :Г THIS ACTS AS A DIVISOR FOR FOV DISTORTION ADJUSTMENT...(1|:Г(Г}:Г THE FOLLOWING DEFINE THE INITIAL YAW/PIT/ROL ANGLES IN RADIANS (0-6.28318)(К~:Г(╨R(0)│TAм1:R(1)│TAм1:R(2)│TAм4 :Г THESE ARE ALL ARBITRARILY SET...(╫А:Г)&Б:Г RADIAN ANGLE TO UPDATE ROTATION BY PER FRAME; DON'T MAKE THEM NEGATIVE,)EВ:Г BECAUSE IT WILL FAIL...)LГ:Г)qДAN(0)│0.05:AN(1)│0.04:AN(2)│0.07)xЕ:Г)│Ж:Г TRANSLATION VALUES FOR THE CUBE - MZ IS CRITICAL...)║З:Г*ИMX│0:MY│0:MZ│м250 :Г MZ VALUE CAN'T BE TOO NEGATIVE, OR IT WILL FAIL...* Й:Г*6ЛБж 400 :Г GET USER OPTIONS FIRST...*_МБж 580 :Г INITIALIZE GRAPHIC SCREEN*fк:Г*w┤:Г MAIN LOOP*~╡:Г*н╖Бж 20070 :Г DOUBLE-BUFFERING! THAT'S IT!!!*ч╕Бж 10050 :Г CALCULATE ROTATION ANGLES FOR YAW/PIT/ROL*ї╣А I│1 е 6+N╛Н X,Y,Z:Бж 10090:ъ(SX,SY)м(SX,SY),╜:А J│1 е 4:Н X,Y,Z:Бж 10090:ъм(SX,SY),╜:Л:Н X,Y,Z+T├Л+n╟:Г ROTATE THE CUBE...+}╚А I│0 е 3:+з═: R(I)│R(I)лAN(I):Е R(I)▓TA з R(I)│0+н╬Л+с╥П :Г RESTORE THE DATABASE OF OBJECT COORDINATES+ы·Бе183+Є:Г,T:Г MODULE: RETURN TO BASIC,Y:Г,2^ф1:ц:Т65496,0:т80:Ю:Ў,ohК:З "THANKS FOR WATCHING! HOPE YOU ENJOYED IT - ALA":Ц:К,vr:Г,Ц|:Г MODULE: GET USER OPTIONS,ЭЖ:Г,▀Рт80:Ю:З"ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING"-СЗ:З"FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!"-NТЗ:З"COPYRIGHT (C) 2025 BY ANDREW L. AYERS (09.03.2025)"-ЭУЗ:З"A BIG SHOUT-OUT TO CAPTAIN OBVLIOUS - WITHOUT HIS HELP, THIS WOULDN'T"-│ФЗ"BE POSSIBLE..."-║Х:Г-└ЦЗ-ўЧЗ"DO YOU USE (R)GB OR (C)OMPOSITE?";:Бж480:MO$│RR$.ШЕ MO$┤▓"R" ░ MO$┤▓"C" з 400.Щ:Г.?ЪЗ:З:З"SELECT A COLOR SET:":З.jЯЗ "(1) WHITE LINES ON DARK BACKGROUND".ХдЗ "(2) AMBER LINES ON DARK BACKGROUND".└оЗ "(3) DARK LINES ON GREEN BACKGROUND".ъ╕Бж 480:CS│ Й(RR$):Е CS┤0 ▒ CS▓3 з 440/┬Е MO$│"R" з ў:И  |&И Ё Бе 350&!И я Бе 30000&(Z:Г&dd:Г ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING&Хi:Г FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!&╤j:Г (C) 2025 BY ANDREW L. AYERS - AND A BIG SHOUT-OUT TO' k:Г CAPTAIN OBVLIOUS, WITHOUT HIS HELP, THIS WOULDN'T BE' l:Г POSSIBLE...''n:Г'=s:Г INITIALIZATION'Dt:Г'iw:Г THERE'S NO WAY WE COULDN'T...'гxТ 65497,0 :Г ...WE'RE CREEPING BETWEEN THE BULLFROGS.'кy:Г'хzPI│3.14159:TA│2нPI :Г DEFINE PI AND TAU - WE NEED 'EM!(*{D│400 :Г THIS ACTS AS A DIVISOR FOR FOV DISTORTION ADJUSTMENT...(1|:Г(Г}:Г THE FOLLOWING DEFINE THE INITIAL YAW/PIT/ROL ANGLES IN RADIANS (0-6.28318)(К~:Г(╨R(0)│TAм1:R(1)│TAм1:R(2)│TAм4 :Г THESE ARE ALL ARBITRARILY SET...(╫А:Г)&Б:Г RADIAN ANGLE TO UPDATE ROTATION BY PER FRAME; DON'T MAKE THEM NEGATIVE,)EВ:Г BECAUSE IT WILL FAIL...)LГ:Г)qДAN(0)│0.05:AN(1)│0.04:AN(2)│0.07)xЕ:Г)│Ж:Г TRANSLATION VALUES FOR THE CUBE - MZ IS CRITICAL...)║З:Г*ИMX│0:MY│0:MZ│м250 :Г MZ VALUE CAN'T BE TOO NEGATIVE, OR IT WILL FAIL...* Й:Г*6ЛБж 400 :Г GET USER OPTIONS FIRST...*_МБж 580 :Г INITIALIZE GRAPHIC SCREEN*fк:Г*w┤:Г MAIN LOOP*~╡:Г*н╖Бж 20070 :Г DOUBLE-BUFFERING! THAT'S IT!!!*ч╕Бж 10050 :Г CALCULATE ROTATION ANGLES FOR YAW/PIT/ROL*ї╣А I│1 е 6+N╛Н X,Y,Z:Бж 10090:ъ(SX,SY)м(SX,SY),╜:А J│1 е 4:Н X,Y,Z:Бж 10090:ъм(SX,SY),╜:Л:Н X,Y,Z+T├Л+n╟:Г ROTATE THE CUBE...+}╚А I│0 е 3:+з═: R(I)│R(I)лAN(I):Е R(I)▓TA з R(I)│0+н╬Л+с╥П :Г RESTORE THE DATABASE OF OBJECT COORDINATES+ы·Бе183+Є:Г,T:Г MODULE: RETURN TO BASIC,Y:Г,2^ф1:ц:Т65496,0:т80:Ю:Ў,ohК:З "THANKS FOR WATCHING! HOPE YOU ENJOYED IT - ALA":Ц:К,vr:Г,Ц|:Г MODULE: GET USER OPTIONS,ЭЖ:Г,▀Рт80:Ю:З"ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING"-СЗ:З"FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!"-NТЗ:З"COPYRIGHT (C) 2025 BY ANDREW L. AYERS (09.03.2025)"-ЭУЗ:З"A BIG SHOUT-OUT TO CAPTAIN OBVLIOUS - WITHOUT HIS HELP, THIS WOULDN'T"-│ФЗ"BE POSSIBLE..."-║Х:Г-└ЦЗ-ўЧЗ"DO YOU USE (R)GB OR (C)OMPOSITE?";:Бж480:MO$│RR$.ШЕ MO$┤▓"R" ░ MO$┤▓"C" з 400.Щ:Г.?ЪЗ:З:З"SELECT A COLOR SET:":З.jЯЗ "(1) WHITE LINES ON DARK BACKGROUND".ХдЗ "(2) AMBER LINES ON DARK BACKGROUND".└оЗ "(3) DARK LINES ON GREEN BACKGROUND".ъ╕Бж 480:CS│ Й(RR$):Е CS┤0 ▒ CS▓3 з 440/┬Е MO$│"R" з ў:И CS Бе 520,530,540/6╠Е MO$│"C" з Ў:И CS Бе 490,495,500/A╤Бе 400/H╓:Г/gрRR$│ Т:Е RR$│"" з 480 :Д Р/nф:Г/Кх:Г CMP COLOR SELECTIONS/Сц:Г/┘ъPA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND0!яPA(0)│0:PA(1)│37:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND0iЇPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND0p∙:Г0М■:Г RGB COLOR SELECTIONS0У:Г0█PA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND1#PA(0)│0:PA(1)│52:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND1kPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND1r&:Г1Щ0:Г MODULE: GRAPHICS INITIALIZATION1а::Г1┼Dф 1:А I│0 е 3:у I,PA(I):Л:ч1,0:Р1╠v:Г2А:Г MODULE: DATABASE OR CARTESIAN XYZ WORLD COORDINATES FOR 3D CUBE2IГ:Г (SORTED AS BOTTOM 0, SIDES 1-4, TOP 5)2PЕ:Г2ФКЖ 30,-30,30,30,-30,-30,-30,-30,-30,-30,-30,30,30,-30,30,0,-30,02╪ФЖ 30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,30,30,-30,0,0,-303ЮЖ -30,30,-30,-30,30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,0,03\иЖ -30,30,30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,0,0,303Ъ▓Ж 30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,30,30,30,0,03┌╝Ж -30,30,-30,30,30,-30,30,30,30,-30,30,30,-30,30,-30,0,30,03с╨:Г3ш┌:Г3я':Г45':Г 3D PIPELINE ROUTINES (MOST OF THE BLAME FALLS ON LEE ADAMS...)4<'$:Г4q'.:Г MODULE: CALCULATE YAW/PIT/ROL ROTATION ANGLES4x'8:Г4и'BА I│0 е 2:SR(I)│ Е(R(I)):CR(I)│ Х(R(I)):Л:Р4п'L:Г4·'V:Г MODULE: ROTATION/TRANSLATION AND PROJECTION CALCULATIONS TO CONVERT5;'[:Г CARTESIAN WORLD COORDINATES TO SCREEN COORDINATES5B'`:Г5q'jX│мX :Г INVERT X-COORDINATE (WHY? I DUNNO)5x'n:Г5г'o:Г ROTATION CALCS (WORLD COORDINATES?)5к'p:Г5ш'tXA│CR(0)нXмSR(0)нZ:YA│CR(1)нYмSR(1)нXA:ZA│SR(0)нXлCR(0)нZ5я'В:Г6'Г:Г ROTATION CALCS (OBJECT COORDINATES?)6"'Д:Г6a'ИX│CR(1)нXAлSR(1)нY:Y│SR(2)нZAлCR(2)нYA:Z│CR(2)нZAмSR(2)нYA6h'М:Г6Ч'Н:Г TRANSLATION CALCS ON OBJECT COORDINATES6Ю'О:Г6╖'ТX│XлMX:Y│YлMY:Z│ZлMZ6╛'Ц:Г7'Ч:Г PERSPECTIVE PROJECTION CALCULATION FROM WORLD TO VIEW COORDINATES7'Ш:Г7P'ЬSX│DнXоZ:SY│DнYоZ :Г NOTE: IF Z=0 BAD THINGS COME YOUR WAY...7W'а:Г7К'б:Г TRANSLATION FROM VIEW TO SCREEN COORDINATES7С'в:Г7и'жSX│160лSX:SY│96лSY7п'л:Г7╡'░Р7╝N :Г8N*:Г MODULE: 128K (OR HIGHER) COCO 3 DOUBLE-BUFFERING FOR THE LA ю&Т65497,0:ф1:F│2&0А I│0 е 319:PAGE│I ░ 1&SЕ PAGE ┤▓ 0 з Бж 100 :Д Бж 110&hЕ F┤▓0 з ц:F│Fм1&ЛЕ PAGE ┤▓ 0 з Бж 201 :Д Бж 211&ЧЛ I:Бе1&╖dВ MAP IN PAGE 0 FOR DRAWING&╚eТ&HFFA9,&H30&┘fТ&HFFAA,&H31&▀iР& nВ MAP IN PAGE 1 FOR DRAWING'oТ&HFFA9,&H32'!pТ&HFFAA,&H33''sР'<╚В DISPLAY PAGE 0'w╔ъ(O(0),0)м(319мO(0),191),╛:ъ(I,0)м(319мI,191),╜:O(0)│I'К╩Т&HFF9D,&HC0:Р'Я╥В DISPLAY PAGE 1'┌╙ъ(O(1),0)м(319мO(1),191),╛:ъ(I,0)м(319мI,191),╜:O(1)│I'э╘Т&HFF9D,&HC8:РE 1 FOR DRAWING                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ю&Т65497,0:ф3:F│2&0А I│0 е 639:PAGE│I ░ 1&SЕ PAGE ┤▓ 0 з Бж 100 :Д Бж 110&hЕ F┤▓0 з ц:F│Fм1&ЛЕ PAGE ┤▓ 0 з Бж 201 :Д Бж 211&ЧЛ I:Бе1&╖dВ MAP IN PAGE 0 FOR DRAWING&╚eТ&HFFA9,&H30&┘fТ&HFFAA,&H31&▀iР& nВ MAP IN PAGE 1 FOR DRAWING'oТ&HFFA9,&H32'!pТ&HFFAA,&H33''sР'<╚В DISPLAY PAGE 0'w╔ъ(O(0),0)м(639мO(0),191),╛:ъ(I,0)м(639мI,191),╜:O(0)│I'К╩Т&HFF9D,&HC0:Р'Я╥В DISPLAY PAGE 1'┌╙ъ(O(1),0)м(639мO(1),191),╛:ъ(I,0)м(639мI,191),╜:O(1)│I'э╘Т&HFF9D,&HC8:РE 1 FOR DRAWING                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ┬┬#$┼                               HS1PFLIPBAS ёHS3PFLIPBAS!ёWIRECUBEBAS"QIRECUB2BASACKTESTBAS%чIRECUB3BASСIRECUB4BAS&Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 N&И Ё Бе 350&!И я Бе 30000&(Z:Г&dd:Г ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING&Хi:Г FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!&╤j:Г (C) 2025 BY ANDREW L. AYERS - AND A BIG SHOUT-OUT TO' k:Г CAPTAIN OBVLIOUS, WITHOUT HIS HELP, THIS WOULDN'T BE' l:Г POSSIBLE...''n:Г'=s:Г INITIALIZATION'Dt:Г'iw:Г THERE'S NO WAY WE COULDN'T...'гxТ 65497,0 :Г ...WE'RE CREEPING BETWEEN THE BULLFROGS.'кy:Г'хzPI│3.14159:TA│2нPI :Г DEFINE PI AND TAU - WE NEED 'EM!(*{D│400 :Г THIS ACTS AS A DIVISOR FOR FOV DISTORTION ADJUSTMENT...(1|:Г(Г}:Г THE FOLLOWING DEFINE THE INITIAL YAW/PIT/ROL ANGLES IN RADIANS (0-6.28318)(К~:Г(╨R(0)│TAм1:R(1)│TAм1:R(2)│TAм4 :Г THESE ARE ALL ARBITRARILY SET...(╫А:Г)&Б:Г RADIAN ANGLE TO UPDATE ROTATION BY PER FRAME; DON'T MAKE THEM NEGATIVE,)EВ:Г BECAUSE IT WILL FAIL...)LГ:Г)qДAN(0)│0.05:AN(1)│0.04:AN(2)│0.07)xЕ:Г)│Ж:Г TRANSLATION VALUES FOR THE CUBE - MZ IS CRITICAL...)║З:Г*ИMX│0:MY│0:MZ│м250 :Г MZ VALUE CAN'T BE TOO NEGATIVE, OR IT WILL FAIL...* Й:Г*6ЛБж 400 :Г GET USER OPTIONS FIRST...*_МБж 580 :Г INITIALIZE GRAPHIC SCREEN*fк:Г*w┤:Г MAIN LOOP*~╡:Г*н╖Бж 20070 :Г DOUBLE-BUFFERING! THAT'S IT!!!*ч╕Бж 10050 :Г CALCULATE ROTATION ANGLES FOR YAW/PIT/ROL*ї╣А I│1 е 6+N╛Н X,Y,Z:Бж 10090:ъ(SX,SY)м(SX,SY),╜:А J│1 е 4:Н X,Y,Z:Бж 10090:ъм(SX,SY),╜:Л:Н X,Y,Z+T├Л+n╟:Г ROTATE THE CUBE...+}╚А I│0 е 3:+з═: R(I)│R(I)лAN(I):Е R(I)▓TA з R(I)│0+н╬Л+с╥П :Г RESTORE THE DATABASE OF OBJECT COORDINATES+ы·Бе183+Є:Г,T:Г MODULE: RETURN TO BASIC,Y:Г,2^ф1:ц:Т65496,0:т80:Ю:Ў,vhЗ "THANKS FOR WATCHING! HOPE YOU ENJOYED IT - ALA":DN│1:Бе40000,}r:Г,Э|:Г MODULE: GET USER OPTIONS,дЖ:Г,цРт80:Ю:З"ROTATING WIREFRAME CUBE WITH SIMPLE DOUBLE-BUFFERING"-СЗ:З"FOR 128K OR HIGHER COLOR COMPUTER 3 ONLY!"-UТЗ:З"COPYRIGHT (C) 2025 BY ANDREW L. AYERS (09.03.2025)"-дУЗ:З"A BIG SHOUT-OUT TO CAPTAIN OBVLIOUS - WITHOUT HIS HELP, THIS WOULDN'T"-║ФЗ"BE POSSIBLE..."-┴Х:Г-╟ЦЗ-■ЧЗ"DO YOU USE (R)GB OR (C)OMPOSITE?";:Бж480:MO$│RR$.ШЕ MO$┤▓"R" ░ MO$┤▓"C" з 400.%Щ:Г.FЪЗ:З:З"SELECT A COLOR SET:":З.qЯЗ "(1) WHITE LINES ON DARK BACKGROUND".ЬдЗ "(2) AMBER LINES ON DARK BACKGROUND".╟оЗ "(3) DARK LINES ON GREEN BACKGROUND".ё╕Бж 480:CS│ Й(RR$):Е CS┤0 ▒ CS▓3 з 440/┬Е MO$│"R" з ў:И CS Бе 520,530,540/=╠Е MO$│"C" з Ў:И CS Бе 490,495,500/H╤Бе 400/O╓:Г/nрRR$│ Т:Е RR$│"" з 480 :Д Р/uф:Г/Сх:Г CMP COLOR SELECTIONS/Шц:Г/ръPA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND0(яPA(0)│0:PA(1)│37:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND0pЇPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND0w∙:Г0У■:Г RGB COLOR SELECTIONS0Ъ:Г0тPA(0)│0:PA(1)│63:PA(2)│0:PA(3)│0:Р :Г WHITE LINES / DARK BACKGROUND1*PA(0)│0:PA(1)│52:PA(2)│0:PA(3)│0:Р :Г AMBER LINES / DARK BACKGROUND1rPA(0)│18:PA(1)│0:PA(2)│0:PA(3)│0:Р :Г DARK LINES / GREEN BACKGROUND1y&:Г1а0:Г MODULE: GRAPHICS INITIALIZATION1з::Г1╠Dф 1:А I│0 е 3:у I,PA(I):Л:ч1,0:Р1╙v:Г2А:Г MODULE: DATABASE OR CARTESIAN XYZ WORLD COORDINATES FOR 3D CUBE2PГ:Г (SORTED AS BOTTOM 0, SIDES 1-4, TOP 5)2WЕ:Г2ЫКЖ 30,-30,30,30,-30,-30,-30,-30,-30,-30,-30,30,30,-30,30,0,-30,02▀ФЖ 30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,30,30,-30,0,0,-303$ЮЖ -30,30,-30,-30,30,30,-30,-30,30,-30,-30,-30,-30,30,-30,-30,0,03cиЖ -30,30,30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,0,0,303б▓Ж 30,30,30,30,30,-30,30,-30,-30,30,-30,30,30,30,30,30,0,03с╝Ж -30,30,-30,30,30,-30,30,30,30,-30,30,30,-30,30,-30,0,30,03ш╨:Г3я┌:Г3Ў':Г4<':Г 3D PIPELINE ROUTINES (MOST OF THE BLAME FALLS ON LEE ADAMS...)4C'$:Г4x'.:Г MODULE: CALCULATE YAW/PIT/ROL ROTATION ANGLES4'8:Г4п'BА I│0 е 2:SR(I)│ Е(R(I)):CR(I)│ Х(R(I)):Л:Р4╢'L:Г5'V:Г MODULE: ROTATION/TRANSLATION AND PROJECTION CALCULATIONS TO CONVERT5B'[:Г CARTESIAN WORLD COORDINATES TO SCREEN COORDINATES5I'`:Г5x'jX│мX :Г INVERT X-COORDINATE (WHY? I DUNNO)5'n:Г5к'o:Г ROTATION CALCS (WORLD COORDINATES?)5▒'p:Г5я'tXA│CR(0)нXмSR(0)нZ:YA│CR(1)нYмSR(1)нXA:ZA│SR(0)нXлCR(0)нZ5Ў'В:Г6"'Г:Г ROTATION CALCS (OBJECT COORDINATES?)6)'Д:Г6h'ИX│CR(1)нXAлSR(1)нY:Y│SR(2)нZAлCR(2)нYA:Z│CR(2)нZAмSR(2)нYA6o'М:Г6Ю'Н:Г TRANSLATION CALCS ON OBJECT COORDINATES6е'О:Г6╛'ТX│XлMX:Y│YлMY:Z│ZлMZ6┼'Ц:Г7'Ч:Г PERSPECTIVE PROJECTION CALCULATION FROM WORLD TO VIEW COORDINATES7'Ш:Г7W'ЬSX│DнXоZ:SY│DнYоZ :Г NOTE: IF Z=0 BAD THINGS COME YOUR WAY...7^'а:Г7С'б:Г TRANSLATION FROM VIEW TO SCREEN COORDINATES7Ш'в:Г7п'жSX│160лSX:SY│96лSY7╢'л:Г7╝'░Р7├N :Г8N*:Г MODULE: 128K (OR HIGHER) COCO 3 DOUBLE-BUFFERING FOR THE LAZY...YO!8N4:Г8\N>:Г FOR MORE INFO: https://retrocomputing.stackexchange.com/q/263658cNH:Г8│NR:Г BUFFER 0 IS LOCATED IN PHYSICAL MEMORY FROM &H60000-&H63FFF (PGS $30-31)9NW:Г BUFFER 1 IS LOCATED IN PHYSICAL MEMORY FROM &H64000-&H67FFF (PGS $32-33)9 N\:Г9GNfТ &HFF9D,&HC0л((1мMB)н8) :Г SHOW THE PRIOR HIDDEN BUFFER9NNp:Г9ЩNz:Г SET THE REGISTERS TO MAP IN OUR SELECTED BUFFER, PATCH HCLS TO KEEP9сN:Г IT FROM CLEARING ALL 4 PAGES (WE ONLY WANT TO CLEAR 2 AT A TIME):,NД:Г THEN CLEAR THE BUFFER SO WE CAN REDRAW THE CUBE IN THE NEW POSITION:3NО:Г:tNШЕ MB│0 з Т&HFFA9,&H30:Т&HFFAA,&H31:Т&HE6E2,&H20:Т&HE6E7,&H60:╡NЪЕ MB│1 з Т&HFFA9,&H32:Т&HFFAA,&H33:Т&HE6E2,&H60:Т&HE6E7,&HA0:╗NЭц:┬Nв:Г;NмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN; N╢:Г;#u0:Г ERROR HANDLING;*u5:Г;=u:Т65496,0:т80:Ю;РuDЗ "ERROR NUMBER"; м;"OCCURRED ON LINE"; н;"- LIKELY DUE TO SOME MATH ISSUE...";ЦuNЗ;ЭuX:Г;хЬ@:Г COMMON END POINT TO ALLOW FOR THE RESET OF HCLS BACK TO DEFAULTS;ьЬJ:Г<1ЬOТ&HE6E2,&H20:Т&HE6E7,&HA0 :Г PATCH HCLS ADDRESS DEFAULTS BACK IN<8ЬT:Г:Г FOR MORE INFO: https://retrocomputing.stackexchange.com/q/263658cNH:Г8│NR:Г BUFFER 0 IS LOCATED IN PHYSICAL MEMORY FROM &H60000-&H63FFF (PGS $30-31)9NW:Г BUFFER 1 IS LOCATED IN PHYSICAL MEMORY FROM &H64000-&H67FFF (PGS $32-33)9 N\:Г9GNfТ &HFF9D,&HC0л((1мMB)н8) :Г SHOW THE PRIOR HIDDEN BUFFER9NNp:Г9ЩNz:Г SET THE REGISTERS TO MAP IN OUR SELECTED BUFFER, PATCH HCLS TO KEEP9сN:Г IT FROM CLEARING ALL 4 PAGES (WE ONLY WANT TO CLEAR 2 AT A TIME):,NД:Г THEN CLEAR THE BUFFER SO WE CAN REDRAW THE CUBE IN THE NEW POSITION:3NО:Г:tNШЕ MB│0 з Т&HFFA9,&H30:Т&HFFAA,&H31:Т&HE6E2,&H20:Т&HE6E7,&H60:╡NЪЕ MB│1 з Т&HFFA9,&H32:Т&HFFAA,&H33:Т&HE6E2,&H60:Т&HE6E7,&HA0:╗NЭц:┬Nв:Г;NмMB│1мMB:Р :Г ...THEN AUTO-SWITCH TO THE OTHER BUFFER AND RETURN; N╢:Г;#u0:Г ERROR HANDLING;*u5:Г;=u:Т65496,0:т80:Ю;РuDЗ "ERROR NUMBER"; м;"OCCURRED ON LINE"; н;"- LIKELY DUE TO SOME MATH ISSUE...";ЦuNЗ;ЭuX:Г;хЬ@:Г COMMON END POINT TO ALLOW FOR THE RESET OF HCLS BACK TO DEFAULTS;ьЬJ:Г<1ЬOТ&HE6E2,&H20:Т&HE6E7,&HA0 :Г PATCH HCLS ADDRESS DEFAULTS BACK IN<8ЬT:Г