10 ;›20 ;›30 .OPT NO LIST›40 ;›50 ;SAVE#D:RELOC>DEMO2.M65›60 ;›70 ;..›80 ;LIST#D:RELOC>DEMO2.LST›90 ;›0100 ;›0110 ;›0120 ;ASM,,#D:RELOC>DEMO2.COM›0121 ;This demo will run a batch file in snap#4, wait 4 seconds, and poke›0122 ;764 with a RETURN.›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 in snapshot's vector table. The first byte is a flag.›0250 ;And we copy it.›0260 STA $00›0270 BCS COPY.SNAP.TABLE›0280 DEC $01›0290 COPY.SNAP.TABLE›0300 LDA $00›0310 LDX $01›0320 STA SNAP.TABLE›0330 STX SNAP.TABLE+1›0340 C.S.T.B1›0350 LDY #1›0360 LDA ($00),Y›0370 STA SNAP.TABLE+2›0380 INY ›0390 LDA ($00),Y›0400 STA SNAP.TABLE+3›0410 C.S.T.B2›0420 INY ›0430 LDA ($00),Y›0440 STA SNAP.TABLE+4›0450 INY ›0460 LDA ($00),Y›0470 STA SNAP.TABLE+5›0480 ;›0490 LDA SNAP.TABLE+2›0500 STA $00›0510 LDA SNAP.TABLE+3›0520 STA $01›0530 BNE COPY.P.BUFFER›0540 JMP MAJOR.ERROR›0550 ;›0560 ;Now to copy the correct addresses,›0570 ;and place them into our snapshot program buffer before copying it›0580 ;to snapshot's internal program buffer.›0590 ;›0600 ;Copy the internal address of the program & text buffer.›0610 ;›0611 COPY.P.BUFFER›0620 LDA SNAP.TABLE+4›0630 STA P.BUFFER+6›0640 LDA SNAP.TABLE+5›0650 STA P.BUFFER+7›0670 LDY #0›0671 C.P.B.B0›0680 LDA P.BUFFER,Y›0690 STA ($00),Y›0700 INY ›0710 CPY #P.BUFFER.LENGTH+1›0720 BNE C.P.B.B0›0730 ;›0740 LDA SNAP.TABLE+4›0750 STA $00›0760 LDA SNAP.TABLE+5›0770 STA $01›0780 LDY #0›0790 COPY.T.BUFFER›0800 LDA T.BUFFER,Y›0810 STA ($00),Y›0820 INY ›0830 CPY #T.BUFFER.LENGTH+1›0840 BNE COPY.T.BUFFER›0850 ;›0860 LDY #80›0870 LDX #0›0880 COPY.TEXT›0890 LDA TEXT,X›0900 CMP #$FF›0910 BEQ EXIT›0920 STA (88),Y ; SAVMSC›0930 INX ›0940 INY ›0950 BNE COPY.TEXT›0960 EXIT›0970 LDA CH›0980 CMP #255›0990 BEQ EXIT›1000 LDA #255›1010 STA CH›1020 LDY #0›1030 ;›1040 ;Now to set Snapshot's internal flag named PROGRAM to any non-zero value. This starts executing›1050 ;your snapshot program.›1060 ;›1070 LDA SNAP.TABLE›1080 STA $00›1090 LDA SNAP.TABLE+1›1100 STA $01›1110 LDA #1›1120 STA ($00),Y›1130 JMP ($0A) ;Goto DOS.›1140 TEXT›1150 .SBYTE "** Ðòåóó áîù ëåù ôï óôáòô äåíï® **",$FF›1160 SNAP.TABLE *= *+6›1170 ;›1180 ;These two buffers are an example of how to program Snapshot HD to execute a batch file.›1190 ;›1200 P.BUFFER›1210 .BYTE "S4" ;Snap to #4›1220 .BYTE "W",0,30 ;Wait 1/2 sec›1230 .BYTE "C" ;Send $ to CP›1240 MY.T.BUFFER›1250 .WORD T.BUFFER›1251 .BYTE "W",2,90 ;Wait 10 SEC›1252 .BYTE "P", <764, >764,$9B ;Poke a RETURN.›1260 .BYTE "E"›1270 P.BUFFER.LENGTH = *-P.BUFFER›1280 T.BUFFER›1290 .BYTE "-D1:>DEMOBAT.BAT",$9B,-1›1300 ;›1310 T.BUFFER.LENGTH = *-T.BUFFER›1320 HERE›1330 .INCLUDE #D:>SNAPSHOT>MACROS.M65›1340 MAJOR.ERROR›1350 JSR PRINTSI›1360 .BYTE "}",EOL,EOL›1370 .BYTE "ýÅÒÒÏÒ­ The Snapshot HD Professional",EOL›1380 .BYTE "Programming Utility MUST be loaded in",EOL›1390 .BYTE "first!",EOL,$FF›1400 JMP ($0A)›1410 *= $02E2›1420 .WORD G.START›