þþKD:KINGEQU.M65Œ –>ŠD:KING.DAT X;ªX;Erase P/M Memory´X;¾…CLRPM%>;;zero A + YÈCÒ„CPM1P„PLR08;;zap plyr'sÜ P„PLR18æ P„PLR28ð P„PLR38ú3H„CPM1;;loop again :;;bye.X;"X;Erase screen memory,X;6†CLRSCR$>;;do 1K@%>J'ƒSCRT Q>5†MYSCRN^ PƒSCRhCrƒCS1P@ƒSCR7|3†HƒCS1;;page yet? #ƒSCRš0;;next page¤IƒCS1® :;;done.¸X;ÂX;Erase MYLINEÌX;Ö†ERMYLN%>';;40 charsàQ>êƒERLP†MYLINE8;;on scrnô1þIƒERL :;;doneX;X;Print routine&X;0†EPRINTP„IND2;;save address: '„IND2D †ERMYLN;;clear lineN 3;;Y = 0X„PRL1Q@„IND27;;first charbI„PRL2;;normal? printlM>;;mask inversev„PRL2P†MYLINE8;;on screen€Q@„IND27;;get againŠG„PRL3;;if>$80 end”3;;up countžH„PRL1;;go again¨„PRL3%>w;;two seconds²„PRL4 „WAIT;;wait jiffy¼1;;dec loopÆ I„PRL4Ð :;;leaveÚ„PRL5$>;;wait 10 sec.ä„PRL6 „PRL3î0ø H„PRL6: X;X;Show number of men left X;*‡MENLEFTQ„MEN1;;player one4,;;add color>O>PHP„MENL;;on scrnRQ„MEN2;;same for\,;;player twofO>Pp P„MENLz :;;done.„X;ŽX;Vertical Blank Routine˜X;¢‡VBLANK1Q>;;just KILL¬P†ATRACT;;atract mode.¶ !†SYSVBVÀX;ÊX;Audio promptsÔX;Þ„BEEPQ>;;high toneèH…BTONE;;play itòX;ü„BOOPQ>d;;low tone…BTONEP…AUDF1;;save freqQ>ª;;pure sound P…AUDC1$ …BWAIT;;and leave on.X;8X;Sound OffBX;L†SNDOFFQ>;;now zeroVP…AUDF1;;the sound`P…AUDF2;;registersj P…AUDC1t P…AUDC2~:ˆX;’X;Wait 4 jiffiesœX;¦…BWAIT%>;;wait 4 jiffies°ƒDOW „WAIT;;pause 1 jiffyº1;;decrease loopÄIƒDOW;;do againÎ :;;leaveØX;âX;Turn on screenìX;ö†TURNON$>&†COLOR4;;in color  &†COLOR2$> &†COLOR1($>4„GDLI;;point to DLI2 &†VDSLST< $>5„GDLIF&†VDSLSTP$>À;;turn it onZ &…NMIENd$>>n &†SDMCTLx :;;done‚X;ŒX;Turn off screen–X; ‡TURNOFF$>ª&†SDMCTL;;turn off scrn´ !„WAIT¾X;ÈX;Posit players for boardÒX;Ü…POSPM$>;;get zeroæ &†PCOLR2ð &†PCOLR3ú2&†GPRIOR;;set priority&†SIZEP0;;double wide …CLRPM;;erase P/M"Q>ü;;gold color, P†PCOLR06Q>5„MYPM;;set PMBASE@ P†PMBASEJQ>;;set sizesT P†SIZEP2^ P†SIZEP3hP†GRACTL;;turn on P/MrQ>ÿ;;define plyrs|%>>;;2 + 3 as the†„PDF1P„PLR28;;borders P„PLR38š3¤)> ® H„PDF1¸Q>,;;now positionÂP†HPOSP2;;them on theÌQ>´;;screenÖ P†HPOSP3à :;;later.êX;ôX;Switch playersþX;†SWITCHQ†PLAYER;;get playerN>;;flip itP†PLAYER;;store& :;;done.0X;:X;Wait a 1 jiffyDX;N„WAITQ>;;zero the clockX P†RTCLOKb‚W1Q†RTCLOK;;get clocklF‚W1;;if same loopv :;;leave€X;ŠX;Test player move”X;ž†TESTITP…SAVEA;;save A¨G„MVOK;;empty? yes.²F„MVNK;;bad move¼R>;;objects?Æ E„MVNKÐQ†PLAYER;;get plyr #ÚH„HAV2;;player 2äQ…SAVEA;;charîR> ;;equal 10?øE„MVOK;;no. good.D„MVNK;;bad move. „HAV2Q…SAVEA;;restore AR> ;;> 10? E„MVNK;;yes. bad one.*„MVOK,;;signal good.4 :;;leave.>„MVNK;;;signal bad.H :;;leaveRX;\X;Move + define cursorfX;p†DEFINEQ„PLRX;;get X poszP†HPOSP0;;in horizontal„%„PLRY;;get Y posŽ$>;;and erase top˜A;;half of the¢„DEF0P„PLR08;;cursor¬1¶ H„DEF0À%„PLRY;;get Y againÊ„DEF1Q†DEFPL19;;and put inÔP„PLR08;;the definitionÞ3è2ò(>;;20 bytes yet?üH„DEF1;;no. „DEF2P„PLR08;;now erase under 3;;the cursor. H„DEF2$ :;;done.. X;8 X;Perform a cursor moveB X;L †DOMOVE%…MOVED;;get moveV Q†MOVTAB8;;load and store` P†MOVJMP;;vector inj Q†MOVTAB8;;the tablet P†MOVJMP~ †MOVJMP!ÿÿ;;Move it!ˆ X;’ X;Move LEFTœ X;¦ „LEFT%†TABPOS;;get pos° Q†GAMBRD8;;look leftº FƒDN1;;bad move!Ä %>;;okeh move itÎ ƒLLP'…SAVEY;;back 8 pixelsØ "„PLRXâ  „WAIT;;wait a jiffyì †DEFINEö %…SAVEY 1 IƒLLP "†TABPOS;;new posit ƒDN1:;;done.( X;2 X;Move RIGHT< X;F …RIGHT%†TABPOS;;positionP Q†GAMBRD8;;look rightZ FƒDN1;;bad oned %>;;move rightn ƒRLP'…SAVEY;;8 pixels.x #„PLRX‚ „WAITŒ †DEFINE– %…SAVEY  1ª IƒRLP´ #†TABPOS¾ :È X;Ò X;Move UPÜ X;æ ‚UPQ†TABPOS;;positð ;;;up one lineú S> ? Q†GAMBRD8;;look in board FƒDN2;;bad move!" '†TABPOS;;save posit, %>;;move player6 ƒULP'…SAVEY;;up 16 pixels@ "„PLRYJ „WAITT †DEFINE^ %…SAVEYh 1r IƒULP| :† X; X;Move DOWNš X;¤ „DOWNQ†TABPOS;;posit® ,;;add 13 for line¸ O>;;down ?Ì Q†GAMBRD8;;get pieceÖ FƒDN2;;badà '†TABPOS;;save positê %>;;move playerô ƒDLP'…SAVEY;;down 16 pixelsþ #„PLRY „WAIT †DEFINE %…SAVEY& 10 IƒDLP: ƒDN2:;;all doneD X;N X;Read Stick + buttonX X;b X;MOVED = 0 for leftl X; = 2 for rightv X; = 4 for up€ X; = 6 for downŠ X;” …STICK$†PLAYER;;get playerž Q>;;and reset¨ P†STICK09;;stick values² Q>¼ P†STRIG09Æ Q…MOVED;;put last moveÐ P…OMOVE;;in hold areaÚ „STCKQ>ÿä P…MOVED;;no move madeî „CSTKQ†STICK09;;read stickø R>;;no move F†TRYTRG;;try trigger R> ;;left? HƒST0;;no. Q>;;move is 0* F„STDN4 ƒST0R>;;right?> HƒST1;;no.H Q>;;table offsetR H„STDN;;=2\ ƒST1R>;;up?f HƒST2;;no.p Q>;;offset = 4z H„STDN„ ƒST2R> ;;down?Ž H„CSTK;;no. read again˜ Q>;;make a 6¢ „STDNP…MOVED;;save move¬ ;;;signal move¶ :À †TRYTRGQ†STRIG09;;triggerÊ H„CSTK;;read stickÔ ,;;signal fireÞ :è X;ò X;Add border to game boardü X;‡ADDBORD$> ;;12 linesQ>;;make theP†COLOR2;;screen black$ P†COLOR4.Q>4†MYSCRN 8PƒSCRBQ>5†MYSCRN L PƒSCRV„BOR0%>;;26 chars`Q>T;;red spacej„BOR1P@ƒSCR7;;on screent1;;down loop~I„BOR1;;and run againˆQƒSCR;;now add 40’,;;to screenœO>(;;pointer to¦PƒSCR;;get to next°QƒSCR;;screen lineºO>Ä PƒSCRÎ0;;dec outer loopØI„BOR0;;do againâ:;;all doneìX;öX;Randomize terrain featuresX; ‡TERRAIN%>;;21 features…TERR1Q†RANDOM;;numberR>( D…TERR12R>Q< E…TERR1F>P…TERR2Q†RANDOM;;next numberZR>;;check if pieced D…TERR2nR>x E…TERR2‚P…SAVEA;;save itŒQ†GAMBRD9;;get piece–I…TERR1;;<128 no good Q…SAVEA;;get featureª,;;and add 18´O>¾P†GAMBRD9;;put inÈ 1;;boardÒI…TERR1;;do againÜX;æX;Now assure a path throughðX;ú†DOPATHQ†RANDOMM>;;only 0-3 R>;;=3?F†DOPATH;;yes do again"T?;;times 8,T?6T?@?J$>;;do 8 spacesT…PATH2Q…PATHS8;;get posit^'…SAVEY;;save Yh?rQ>€;;get blank|P†GAMBRD8;;put in†%…SAVEY;;board. get Y3;;up positš0;;dec loop¤I…PATH2;;and loop again®:;;all done¸X;ÂX;Fill play fieldÌX;Ö†SETSCR%>àQ>4†DLIST1;;install myêP†SDLSTL;;display listô Q>5†DLIST1þP†SDLSTL ƒSE1Q†GAMBRD8;;get a pieceF„SNXT;;leave aloneIƒSE2;;have character&Q>;;get empty0ƒSE2T?;;* 2: T?;;* 4D'…SAVEY;;save yN>;;char indexXC;;screen positb T?;;* 2l?vQ†SCRTAB8;;look up addr€P„INDR;;and save itŠQ†SCRTAB8” P„INDRž%>¨ƒSE3Q…CHARS9;;get char²P@„INDR7;;on screen¼2;;up countÆ3Ð)>;;2 yet?Ú HƒSE3;;no.ä%>îQ„INDR;;add 40 to scrnø,;;positionO>(  P„INDR Q„INDR O>* P„INDR4ƒSE4Q…CHARS9;;next half of>P@„INDR7;;characterH2;;goes on screenR3\)>fHƒSE4p%…SAVEY;;restore Yz„SNXT3;;up it.„)>F;;70 yet?Ž HƒSE1;;no.˜ :;;done.¢X;¬X;Copy game board¶X;À…BEGIN-;;no decimalÊQ>;;fix boot statusÔ P…BOOT?ÞQ>4…BEGIN;;make programèP†DOSINI;;reset proofò Q>5…BEGINüP†DOSINIQ>;;init soundP…SKCTL;;stuffQ>;;kill cold start$ P†COLDST. P†AUDCTL8$>€;;erase bottomB…ERZPGP…ZPAGE9;;half ofL2;;page zeroV H…ERZPG`?jƒZGBP†GAMBRD8;;erase GAMBRDt3~HƒZGBˆQ> ;;set # of men’ P„MEN1œ P„MEN2¦%>E;;now copy in°„BEG1Q†BRDSET8;;the newºP†GAMBRD8;;boardÄ1Î I„BEG1Ø%>;;copy in theâƒHTBQ†HITTAB8;;hit pointìP„HTAB8;;tableö1IƒHTB Q>4†SCRTAB;;now we makeP„INDR;;up the screenQ>5†SCRTAB;;definition(P„INDR;;table.2$><Q>4†MYSCRN, ;;startFP„IND2;;screen positPQ>5†MYSCRN, Z P„IND2d ƒSC1%>nƒSC2Q„IND2;;get scrnx,;;and add 2‚O>Œ P„IND2–P@„INDR7;;save in table  Q„IND2ªO>;;now do hi byte´3¾P@„INDR7;;in tableÈ P„IND2Ò3Ü)>;;28 yet?æ HƒSC2;;no.ðQ„INDR;;now add offsetú,;;to tableO>;;positionP„INDR;;and store it. Q„INDR"O>, P„INDR6Q„IND2;;now update@,;;screen pointerJO>4;;52 chars laterT P„IND2^ Q„IND2hO>r P„IND2|2;;up line count†(>;;5 yet? HƒSC1;;no.š …INTRO;;display intro¤ ‡TERRAIN®X;¸X;Start of gameÂX;Ì…CHESS ‡TURNOFFÖ%>4‡VBLANK1;;set Vblankà$>5‡VBLANK1;;vectorêQ>;;Immediate modeô †SETVBV;;set it!þ †CLRSCR;;erase screen ‡ADDBORD;;add border †SETSCR;;set board up …POSPM;;add P/M& †TURNON;;turn it on0X;:…LOOP0Q>N;;position playerD P„PLRXNQ>FX P„PLRYbQ>;;set tabpos.l P†TABPOSvQ>;;make player 1€ P…PLAERŠQ†PLAYER;;get player” F…SCRONžQ>¦;;player 2¨P„PLRX;;reset cursor²Q>;;and tabpos¼P†TABPOS;;pntrs.ÆQ>i;;player IIÐ P…PLAERÚX;ä…SCRON ‡MENLEFT;;# men leftî †SETSCR;;update scrnø„LOOP †DEFINE;;put on cursor$†PLAYER;;player num  „STCK;;read stickD…FIRED;;pressed fire  †DOMOVE;;move cursor*!„LOOP;;and loop....4…FIRED%>;;zero out move>Q>ÿ;;tableHƒFR1P…MOVES8R1\IƒFR1f%†TABPOS;;get table posp'†OLDPOS;;and save itzQ†GAMBRD8;;get piece„P†OLDPCE;;save it.ŽG„LOOP;;blank. loop.˜R>;;trying to move¢E„LOOP;;on terrain?¬$†PLAYER;;get player¶HƒPL2;;have player 2ÀR> ;;trying to moveÊD„CHOK;;on yourself?ÔE„LOOP;;yes!ÞƒPL2R> ;;same thing.è D„LOOPòX;üX;Now we see if the pieceX;selection was a good oneX;„CHOK%>;;check 4$„MCK0Q…GTABH8;;inset table.P†MCHECK;;position8Q…GTABL8;;in programBP†MCHECKL'…SAVEY;;save YV%†TABPOS;;get pos.`†MCHECKQÿÿ8;;and piecej †TESTIT;;test playerstE„UPLP;;bad one~%…SAVEY;;restore YˆC;;possible move’T?;;* 2 andœP…MOVES8;;save move¦„UPLP%…SAVEY;;get Y again°1;;and loop againº I„MCK0ÄX;ÎX;Now see if any move isØX;possible this time.âX;ì%>öƒSMVQ…MOVES8I†HAVMOV;;got one! 1IƒSMVQ>4„ALAS;;print can't(%>5„ALAS;;move.2 †EPRINT< †ERMYLN;;erase lineF!„LOOP;;loop again.P†HAVMOV „BEEP;;beep!Z†TRYMOV …STICK;;read stickd Q…MOVEDnG†TRYMOV;;mask out buttonx%>;;test against‚ƒCMVR…MOVES8;;possible movesŒF…GMOVE;;good move!–1 IƒCMVª „BOOP;;Error!´!†TRYMOV;;try again¾…GMOVE †DOMOVEÈ …STICKÒDƒBEPÜ$†PLAYER;;player #æ%>;;wait 1/2 secondðƒGVMQ>;;and check forúP†RTCLOK;;press of fire„GVM1Q†STRIG09;;buttonFƒBEPQ†RTCLOK;;get clock"F„GVM1;;=0? yes.,„GVM21;;loop again6IƒGVM@%…OMOVE;;now we moveJQ†NEGTAB8;;the cursorTP…UNJSR;;back to its^Q†NEGTAB8;;originalhP…UNJSR;;position.r …UNJSR ÿÿ|!†TRYMOV;;go again†ƒBEP „BEEP;;signal move%†TABPOS;;get positšQ†GAMBRD8;;and piece¤IˆDOBATTLE;;do a combat!®Q†OLDPCE;;just move old¸P†GAMBRD8;;piece on theÂ%†OLDPOS;;boardÌQ>€;;remove previousÖP†GAMBRD8;;characterà †SWITCH;;flip playerê!…LOOP0;;and loopôX;þ ˆDOBATTLE?R> ;;player >10? DƒGP1;;no.'‡PLRTYPE;;player type&1;;decrease index0Q„HTAB8;;get hit points:PƒHTS;;save emDH„INH0;;player 1 hitsNƒGP1'‡PLRTYPE;;player 1X1;;down indexbQ„HTAB8;;hit pointslPƒHTS;;savev„INH0%†OLDPCE;;old piece€ )> ;;>10?ŠD„GP11;;no.”'‡PLRTYPE;;move player 1ž1;;hits out of¨Q„HTAB8;;table² PƒHTS¼H„INH1;;play gameÆ„GP11'‡PLRTYPE;;player #1Ð1;;and get outÚQ„HTAB8;;their hitsäPƒHTSî„INH1 ‡TURNOFF;;screen offøX;Q>@ P…NMIEN;;kill DLI's †BATTLE;;Do battle! $>;;do 2 players*ƒUH0%‡PLRTYPE9;;type #4QƒHTS9;;new hit points>1HP„HTAB8;;save in tableR0\IƒUH0;;do nextfQ†PLAYER;;get the playerp>;;X holds plr #zR†WINNER;;same as winner?„H†CHANGE;;no. lost.ŽN>˜>¢Q†OLDPCE;;old piece¬%†TABPOS;;and move to¶P†GAMBRD8;;the new squareÀX;ʆCHANGEQ>€;;erase old guyÔ %†OLDPOSÞP†GAMBRD8;;save in board.è †SWITCH;;flip playersò"„MEN19;;lower men leftüQ„HTAB;;check if kingsF…DEATH;;are dead yet. Q„HTAB F…DEATH$!…CHESS;;and play chess.X;8X;Handle Death of a teamBX;L…DEATHA;;get playerVN>;;flip it`,;;make scr memjO>tP†TROPHY;;save in string~ †CLRSCRˆ ‡MENLEFT;;show # left’ ‡ADDBORD;;add borderœ †SETSCR¦ …POSPM;;put on P/M° †TURNONºQ>4†TROPHY;;print trophyÄ%>5†TROPHY;;message.Î †EPRINTØ „PRL5;;wait 10 secâ …CLRPM;;remove P/MìQ>@ö P…NMIEN ‡TURNOFF !…BEGIN;;start over.X;X;Introduction Screen(X;2…INTROQ>;;screen off< P†SDMCTLFQ>4…IDLST;;install disp.PP†SDLSTL;;list.Z Q>5…IDLSTdP†SDLSTLnQ†RANDOM;;random #xM>ð;;hit nybble‚P„INTC;;save in colorŒQ> ;;and add charac.–P…CHBAS;;set.  …CLRPM;;remove playersª †CLRSCR´Q>4„DLI1;;install DLI¾P†VDSLST;;address inÈQ>5„DLI1;;vector.ÒP†VDSLSTÜQ>À;;fire DLI!æ P…NMIENð%>;;copy 4 nums.ú‚ICQ„ICLR8;;get numberP†COLOR08;;save in color1;;dec loopI‚IC;;do again"X;,X;Now add text to intro6X;@Q>4„SLN1 ;;start adrJPƒSCR;;of where textTQ>5„SLN1 ;;goes in^PƒSCR;;memory.h$>;;zero Xr„PTILQ„STXT9;;get a position|F…LINFD;;if 0 line feed†?;;in Y reg…PTIL22;;up XšQ„STXT9;;next char¤R>ÿ;;if $FF lin feed® F…LINFD¸R>þ;;if $FE then end F…STITLÌP@ƒSCR7;;in memoryÖ 3;;up YàH…PTIL2;;and do againê…LINFDQƒSCR;;now add a 32ô,;;to memoryþO> ;;pointer PƒSCR;;save it. QƒSCR;;get hi byte O>;;and add carry& PƒSCR;;save it.0 2;;up X: !„PTIL;;do again.D X;N X;Scroll Title ScreenX X;b …STITLQ>=;;turn on narrowl P†SDMCTL;;screen.v Q>5„SLN1;;set LMS to my€ PƒDVC;;memory.Š Q>” PƒDVCž P†ATRACT;;kill atract¨ P…LINES;;lines = 0² „DOLNQ>;;scroll counter¼ P†SCROLC;;is zero.Æ ƒLNL „WAIT;;wait 1 jiffyÐ #†SCROLC;;inc scrol countÚ Q†SCROLC;;get it.ä R>;;done 8 yet?î F„LNDN;;yes. line doneø P†VSCROL;;in VSCROL!Q†CONSOL;;check START key !R>!F‡STARTUP;;if pressed go! !HƒLNL;;loop again.*!„LNDN%>;;zero Y4!'†SCROLC;;counter nil>!'†VSCROL;;same for VSCROLH!QƒDVC;;now add 32 toR! ,;;the LMS\!O> ;;instructionf! PƒDVCp!QƒDVC;;and take carez!O>;;of hi byte.„! PƒDVCŽ!#…LINES;;inc lines done˜!Q…LINES;;get it.¢!R>%;;37 lines yet?¬!F…STITL;;yes. start over¶!%>;;check if thisÀ!ƒCLNR…PLINS8;;line is oneÊ!F„WSEC;;we pause on.Ô!1;;not this oneÞ!IƒCLN;;try next.è!G„DOLN;;do next line.ò!„WSECQ>;;zero clockü! P†RTCLOK"„WSC1Q†RTCLOK;;get it and"R>x;;wait 2 seconds" F„DOLN$"Q†CONSOL;;check CONSOL."R>;;START?8"H„WSC1;;no. loop.B"‡STARTUPQ>@;;kill DLIL" P…NMIENV"!‡TURNOFF;;and play game.`"X;j"X;DLI for intro colorst"X;~"„DLI15;;save Aˆ"&„DLIX;;and X regis.’"„DLL0Q„INTC;;colorœ"P…DCLOR;;save it¦"$>;;loop 8 times°"„DLL1Q…DCLOR;;get colorº"P…WSYNC;;wait syncÄ"P†COLPF3;;store itÎ",;;add for nextØ"O>;;luminanceâ"P…DCLOR;;and save it.ì"0;;dec loop countö"I„DLL1;;and do again#X; #$>;;loop 8 more#„DLL2Q…DCLOR;;get color#;;;and subtract 2(#S>;;from luminance2#P…WSYNC;;wait for sync<#P†COLPF3;;store itF#P…DCLOR;;save colorP#0;;dec loopZ#I„DLL2;;and do againd#7;;restore An#$„DLIX;;and X regs.x# 9;;done.‚#X;Œ#X;Game board DLI1–#X; # „GDLI5ª#Q>´# P…WSYNC¾# P†COLPF2È# Q>4…GDLI2Ò# P†VDSLSTÜ# Q>5…GDLI2æ#P†VDSLSTð#7ú#9$X;$X;Game board DLI2$X;"$ …GDLI25,$Q>6$ P…WSYNC@$ P†COLPF2J$ Q>4„GDLIT$ P†VDSLST^$ Q>5„GDLIh$P†VDSLSTr$7|$9†$>‹D:KING2.M65$àš$ …BEGIN¤$