10 ;›20 ;›30       .OPT NO LIST›40 ;›50 ;SAVE#D:RELOC>DEMO.M65›60 ;›70 ;..›80 ;LIST#D:RELOC>DEMO.LST›90 ;›0100 ;›0110 ;›0120 ;ASM,,#D:RELOC>DEMO.COM›0130 JOHN =  $06FE›0140 ;›0150     *=  $3000›0160     .INCLUDE #D:SNAPSHOT>SYSLIB.M65›0170 G.START›0180     LDA #$60›0190     STA G.START›0200     LDA JOHN+1›0210     STA $01›0220     LDA JOHN›0230     SEC ›0240     SBC #$09    ;POINT TO 1ST BYTE OF SNAPSHOT'S VECTOR TABLE. THE FIRST BYTE IS A FLAG.›0250     STA $00›0260     BCS COPY.SNAP.TABLE›0270     DEC $01›0280 COPY.SNAP.TABLE›0290     LDA $00›0300     LDX $01›0310     STA SNAP.TABLE›0320     STX SNAP.TABLE+1›0330 C.S.T.B1›0340     LDY #1›0350     LDA ($00),Y›0360     STA SNAP.TABLE+2›0370     INY ›0380     LDA ($00),Y›0390     STA SNAP.TABLE+3›0400 C.S.T.B2›0410     INY ›0420     LDA ($00),Y›0430     STA SNAP.TABLE+4›0440     INY ›0450     LDA ($00),Y›0460     STA SNAP.TABLE+5›0470 ;›0480     LDA #0›0490     TAY ›0500     TAX ›0510     LDA SNAP.TABLE+2›0520     STA $00›0530     LDA SNAP.TABLE+3›0540     STA $01›0550     BNE COPY.P.BUFFER›0560     JMP MAJOR.ERROR›0570 ;Now to calculate the correct addresses,›0580 ;and place them into our snapshot program buffer before copying it›0590 ;to snapshot's internal program buffer.›0600     LDA SNAP.TABLE+3›0610     STA P.BUFFER+7›0620     STA $01     ;HIGH BYTE FIRST›0630     LDA SNAP.TABLE+2›0640     STA P.BUFFER+6›0650     .LOCAL ›0660     CLC ›0670     ADC #TB2-T.BUFFER›0680     STA $00›0690     BCC CALC.B0›0700     INC $01›0710 CALC.B0›0720     LDA $00›0730     STA MY.TB2›0740     LDA $01›0750     STA MY.TB2+1›0760     CLC ›0770     LDA $00›0780     ADC #TB3-TB2›0790     STA $00›0800     BCC CALC.B1›0810     INC $01›0820 CALC.B1 LDA $00›0830     STA MY.TB3›0840     LDA $01›0850     STA MY.TB3+1›0860 @›0870 COPY.P.BUFFER›0880     LDA P.BUFFER,Y›0890     STA ($00),Y›0900     INY ›0910     CPY #P.BUFFER.LENGTH+1›0920     BNE COPY.P.BUFFER›0930 ;›0940     LDA SNAP.TABLE+4›0950     STA $00›0960     LDA SNAP.TABLE+5›0970     STA $01›0980     LDY #0›0990 COPY.T.BUFFER›1000     LDA T.BUFFER,Y›1010     STA ($00),Y›1020     INY ›1030     CPY #T.BUFFER.LENGTH+1›1040     BNE COPY.T.BUFFER›1050 ;›1060     LDY #80›1070     LDX #0›1080 COPY.TEXT›1090     LDA TEXT,X›1100     CMP #$FF›1110     BEQ EXIT›1120     STA (88),Y  ; SAVMSC›1130     INX ›1140     INY ›1150     BNE COPY.TEXT›1160 EXIT›1170     LDA CH›1180     CMP #255›1190     BEQ EXIT›1200     LDA #255›1210     STA CH›1220     LDY #0›1230     LDA SNAP.TABLE›1240     STA $00›1250     LDA SNAP.TABLE+1›1260     STA $01›1270     LDA #1›1280     STA ($00),Y›1290     JMP ($0A)   ;    RTS›1300 TEXT›1310     .SBYTE "** Ðòåóó áîù ëåù ôï óôáòô äåíï® **",$FF›1320 SNAP.TABLE *= *+6›1330 P.BUFFER›1340     .BYTE "S4"›1350     .BYTE "W",0,30›1360     .BYTE "A"›1370 MY.T.BUFFER›1380     .WORD T.BUFFER›1390     .BYTE "W",0,120›1400     .BYTE "S3"›1410     .BYTE "W",0,30›1420     .BYTE "A"›1430 MY.TB2›1440     .WORD TB2›1450     .BYTE "W",0,120›1460     .BYTE "A"›1470 MY.TB3›1480     .WORD TB3›1490     .BYTE "W",0,30›1500     .BYTE "S1"›1510     .BYTE "E"›1520 P.BUFFER.LENGTH = *-P.BUFFER›1530 T.BUFFER›1540     .BYTE ";WELCOME TO THE SNAPSHOT HD",EOL,";PROFESSIONAL PROGRAMMING UTILITY.",EOL›1550     .BYTE ";LET'S SNAP OVER TO SNAPSHOT #3.",EOL,$FF›1560 TB2›1570     .BYTE ";HERE WE ARE IN SNAPSHOT #3.",EOL,$FF›1580 TB3›1590     .BYTE ";ENOUGH OF THIS DEMO,LET'S GO BACK!",EOL,$FF›1600 ;›1610 T.BUFFER.LENGTH = *-T.BUFFER›1620 HERE›1630     .INCLUDE #D:>SNAPSHOT>MACROS.M65›1640 MAJOR.ERROR›1650     JSR PRINTSI›1660     .BYTE "}",EOL,EOL›1670     .BYTE "ýÅÒÒÏÒ­ The Snapshot HD Professional",EOL›1680     .BYTE "Programming Utility MUST be loaded in",EOL›1690     .BYTE "first!",EOL,$FF›1700     JMP ($0A)›1710     *=  $02E2›1720     .WORD G.START›