home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_2000-10_2000_CSW_Side_B.d64 / emu-checker.src < prev    next >
Text File  |  2023-02-26  |  8KB  |  328 lines

  1.  
  2.  
  3.               include standard.c64
  4.  
  5.  
  6.  
  7. debuglines    = 4
  8.  
  9. debugpos      = $0400+(25-debuglines)*40
  10.  
  11. statusline    = 25-debuglines-2
  12.  
  13. choice        set $31
  14.  
  15.  
  16.  
  17.               org $0801
  18.  
  19.  
  20.  
  21. flag          = $fb
  22.  
  23. zp_tmp        = $fc
  24.  
  25.  
  26.  
  27.               adr $080b, 64
  28.  
  29.               byt $9e,"2061",0,0,0
  30.  
  31.  
  32.  
  33. jmp_in:
  34.  
  35.               lda #9
  36.  
  37.               sta $d020
  38.  
  39.               sta $d021
  40.  
  41.               lda #$1c
  42.  
  43.               sta $0288
  44.  
  45.               jsr $e544
  46.  
  47.               ldx #statusline+2
  48.  
  49.               ldy #0
  50.  
  51.               clc
  52.  
  53.               jsr $fff0
  54.  
  55.               lda #lo(scrn1c_txt)
  56.  
  57.               ldy #hi(scrn1c_txt)
  58.  
  59.               jsr print
  60.  
  61.               lda #4
  62.  
  63.               sta $0288
  64.  
  65.               lda #lo(screen)
  66.  
  67.               ldy #hi(screen)
  68.  
  69.               jsr print
  70.  
  71. getkey:
  72.  
  73.               ldx #debuglines*40
  74.  
  75. cl_dbpos:
  76.  
  77.               lda #$20
  78.  
  79.               sta debugpos-1,x
  80.  
  81.               lda #$0f
  82.  
  83.               sta debugpos&$3ff+$d800-1,x
  84.  
  85.               dex
  86.  
  87.               bne cl_dbpos
  88.  
  89.               ldx #statusline
  90.  
  91.               jsr $e9ff
  92.  
  93. gk_l1:
  94.  
  95.               jsr $ffe4
  96.  
  97.               beq gk_l1
  98.  
  99.               cmp #choice
  100.  
  101. choice       set choice+1
  102.  
  103.               bne no_d800
  104.  
  105. d800_check:
  106.  
  107.               ldy #0
  108.  
  109.               ldx #0
  110.  
  111. d800_l1:
  112.  
  113.               lda $d800
  114.  
  115.               sta debugpos,x
  116.  
  117.               eor $d800
  118.  
  119.               beq d800_l2
  120.  
  121.               iny
  122.  
  123. d800_l2:
  124.  
  125.               inx
  126.  
  127.               cpx #debuglines*40
  128.  
  129.               bne d800_l1
  130.  
  131.               sty flag
  132.  
  133.               lda #lo(d800_c64)
  134.  
  135.               ldy #hi(d800_c64)
  136.  
  137.               ldx flag
  138.  
  139.               bne d800_l3
  140.  
  141.               lda #lo(d800_emu)
  142.  
  143.               ldy #hi(d800_emu)
  144.  
  145. d800_l3:
  146.  
  147.               jsr write_stat
  148.  
  149.               jsr $ffe4
  150.  
  151.               cmp #' '
  152.  
  153.               bne d800_check
  154.  
  155.               jmp getkey
  156.  
  157. no_d800:
  158.  
  159.               cmp #choice
  160.  
  161. choice       set choice+1
  162.  
  163.               bne no_sid
  164.  
  165. check_sid:
  166.  
  167.               lda #$ff
  168.  
  169.               sta flag
  170.  
  171.               sta $d400
  172.  
  173.               lda $d400
  174.  
  175.               sta zp_tmp
  176.  
  177. sid_l5:
  178.  
  179.               lda $d012
  180.  
  181.               bpl *-3
  182.  
  183.               ldx #0
  184.  
  185.               ldy #0
  186.  
  187. sid_l1:
  188.  
  189.               lda $d400
  190.  
  191.               sta debugpos,x
  192.  
  193.               cmp zp_tmp
  194.  
  195.               beq sid_l2
  196.  
  197.               ldy #1
  198.  
  199. sid_l2:
  200.  
  201.               lda $d012
  202.  
  203.               cmp $d012
  204.  
  205.               beq *-3
  206.  
  207.               inx
  208.  
  209.               cpx #debuglines*40
  210.  
  211.               bne sid_l1
  212.  
  213.               cpy #1
  214.  
  215.               beq sid_l3
  216.  
  217.               dec flag
  218.  
  219.               bne sid_l5
  220.  
  221.               lda #lo(sid_emu)
  222.  
  223.               ldy #hi(sid_emu)
  224.  
  225.               bne sid_l4
  226.  
  227. sid_l3:
  228.  
  229.               lda #lo(sid_c64)
  230.  
  231.               ldy #hi(sid_c64)
  232.  
  233. sid_l4:
  234.  
  235.               jsr write_stat
  236.  
  237. sid_l6
  238.  
  239.               jsr $ffe4
  240.  
  241.               cmp #' '
  242.  
  243.               bne sid_l6
  244.  
  245.               jmp getkey
  246.  
  247. no_sid:
  248.  
  249.               cmp #choice
  250.  
  251. choice       set choice+1
  252.  
  253.               bne no_mkeys
  254.  
  255.               ldx #statusline+2
  256.  
  257.               ldy #0
  258.  
  259.               clc
  260.  
  261.               jsr $fff0
  262.  
  263.               lda #lo(keys_start)
  264.  
  265.               ldy #hi(keys_start)
  266.  
  267.               jsr print
  268.  
  269.               sei
  270.  
  271. mkeys_check:
  272.  
  273.               ldx #0
  274.  
  275.               ldy #$7f
  276.  
  277.               lda #$10
  278.  
  279.               jsr mkey_sub
  280.  
  281.               cpx #1
  282.  
  283.               bne mkey_l2
  284.  
  285.               cli
  286.  
  287.               jmp getkey
  288.  
  289. mkey_l2:
  290.  
  291.               ldy #$f7
  292.  
  293.               lda #$04
  294.  
  295.               jsr mkey_sub
  296.  
  297.               ldy #$ef
  298.  
  299.               lda #$40
  300.  
  301.               jsr mkey_sub
  302.  
  303.               ldy #$fb
  304.  
  305.               lda #$08
  306.  
  307.               jsr mkey_sub
  308.  
  309.               ldy #$fd
  310.  
  311.               lda #$08
  312.  
  313.               jsr mkey_sub
  314.  
  315.               cpx #4
  316.  
  317.               bne mkeys_check
  318.  
  319.               lda #lo(keys_c64)
  320.  
  321.               ldy #hi(keys_c64)
  322.  
  323.               jsr write_stat
  324.  
  325.               jmp mkeys_check
  326.  
  327. mkey_sub:
  328.  
  329.               sty $dc00
  330.  
  331.               and $dc01
  332.  
  333.               bne mkey_l1
  334.  
  335.               inx
  336.  
  337. mkey_l1:
  338.  
  339.               rts
  340.  
  341. no_mkeys:
  342.  
  343.               cmp #choice
  344.  
  345. choice       set choice+1
  346.  
  347.               bne no_scrn1c
  348.  
  349.               lda #lo(scrn1c_int)
  350.  
  351.               ldy #hi(scrn1c_int)
  352.  
  353.               jsr write_stat
  354.  
  355.               sei
  356.  
  357. scrn1c_l2:
  358.  
  359.               lda #$fb-debuglines*8-1
  360.  
  361.               cmp $d012
  362.  
  363.               bne *-3
  364.  
  365.               lda #$76
  366.  
  367.               sta $d018
  368.  
  369.               lda $d012
  370.  
  371.               bne *-3
  372.  
  373.               lda #$16
  374.  
  375.               sta $d018
  376.  
  377.               ldx #$ff
  378.  
  379.               ldy #$7f
  380.  
  381.               lda #$10
  382.  
  383.               jsr mkey_sub
  384.  
  385.               bne scrn1c_l2
  386.  
  387.               cli
  388.  
  389.               jmp getkey
  390.  
  391. no_scrn1c:
  392.  
  393.               cmp #choice
  394.  
  395. choice       set choice+1
  396.  
  397.               bne no_emuchk
  398.  
  399.               ldx #$55
  400.  
  401.               cpx $dfff
  402.  
  403.               beq emu_l1
  404.  
  405.               cpx $dfff
  406.  
  407.               bne emu_l2
  408.  
  409. emu_l1:
  410.  
  411.               ldy #$aa
  412.  
  413.               cpy $dfff
  414.  
  415.               bne emu_l2
  416.  
  417.               cpx $dfff
  418.  
  419.               bne emu_l2
  420.  
  421.               cpy $dfff
  422.  
  423.               bne emu_l2
  424.  
  425.               lda $dffe
  426.  
  427.               ora #$20
  428.  
  429.               sta emu_type
  430.  
  431.               lda #lo(emu_fnd)
  432.  
  433.               ldy #hi(emu_fnd)
  434.  
  435.               jsr write_stat
  436.  
  437.               lda $dffd
  438.  
  439.               ldx #0
  440.  
  441.               jsr hexout
  442.  
  443.               lda $dffc
  444.  
  445.               ldx #3
  446.  
  447.               jsr hexout
  448.  
  449.               lda #15
  450.  
  451.               sta $0286
  452.  
  453.               lda #$a0
  454.  
  455.               ldy #$df
  456.  
  457.               jsr print
  458.  
  459. emu_l3:
  460.  
  461.               jsr $ffe4
  462.  
  463.               cmp #' '
  464.  
  465.               bne emu_l3
  466.  
  467. no_quit:
  468.  
  469.               jmp getkey
  470.  
  471. emu_l2:
  472.  
  473.               lda #lo(emu_nfnd)
  474.  
  475.               ldy #hi(emu_nfnd)
  476.  
  477.               jsr write_stat
  478.  
  479.               jmp emu_l3
  480.  
  481.  
  482.  
  483. no_emuchk:
  484.  
  485.               cmp #'q'
  486.  
  487.               bne no_quit
  488.  
  489.               lda #lo(end_str)
  490.  
  491.               ldy #hi(end_str)
  492.  
  493.               jmp print
  494.  
  495.  
  496.  
  497. write_stat:
  498.  
  499.               sta ws_mod+1
  500.  
  501.               sty ws_mod+2
  502.  
  503.               clc
  504.  
  505.               ldx #statusline
  506.  
  507.               ldy #0
  508.  
  509.               jsr $fff0
  510.  
  511.               lda #7
  512.  
  513.               sta $0286
  514.  
  515.               bne ws_mod
  516.  
  517.  
  518.  
  519. print:
  520.  
  521.               sta ws_mod+1
  522.  
  523.               sty ws_mod+2
  524.  
  525.               ldy #0
  526.  
  527. ws_mod:       lda screen,y
  528.  
  529.               beq ws_l1
  530.  
  531.               jsr $ffd2
  532.  
  533.               iny
  534.  
  535.               bne ws_mod
  536.  
  537.               inc ws_mod+2
  538.  
  539.               bne ws_mod
  540.  
  541. ws_l1:
  542.  
  543.               rts
  544.  
  545.  
  546.  
  547. hexout:
  548.  
  549.               pha
  550.  
  551.               lsr
  552.  
  553.               lsr
  554.  
  555.               lsr
  556.  
  557.               lsr
  558.  
  559.               jsr hexout2
  560.  
  561.               pla
  562.  
  563.               and #$0f
  564.  
  565. hexout2:
  566.  
  567.               clc
  568.  
  569.               adc #$30
  570.  
  571.               cmp #$3a
  572.  
  573.               bcc hexout_l1
  574.  
  575.               sbc #$39
  576.  
  577. hexout_l1:
  578.  
  579.               sta debugpos-80+emu_vers-emu_fnd,x
  580.  
  581.               inx
  582.  
  583.               rts
  584.  
  585.  
  586.  
  587.  
  588.  
  589. screen:
  590.  
  591.               byt $0e
  592.  
  593.               binclude "help\emucheck.scr",2
  594.  
  595.  
  596.  
  597.              cascii
  598.  
  599.  
  600.  
  601. d800_c64:     byt "$d800 changes. it's c64 alike.",0
  602.  
  603. d800_emu:     byt "$d800 is constant. it's an emulator.",0
  604.  
  605.  
  606.  
  607. sid_c64:      byt "$d400 changes. it's c64 alike.",0
  608.  
  609. sid_emu:      byt "$d400 is constant. it's an emulator.",0
  610.  
  611.  
  612.  
  613. keys_start:   byt $9b,"please press the keys "
  614.  
  615.               byt "'",$05,"g",$9b,"'+"
  616.  
  617.               byt "'",$05,"o",$9b,"'+"
  618.  
  619.               byt "'",$05,"6",$9b,"'+"
  620.  
  621.               byt "'",$05,"4",$9b,"'",$0d
  622.  
  623.               byt "simultaneously. a message will appear",$0d
  624.  
  625.               byt "if succeeded.",0
  626.  
  627. keys_c64:     byt "keys pressed. it's c64 alike.",0
  628.  
  629.  
  630.  
  631. scrn1c_int:   byt "normally, you should see junk below.",0
  632.  
  633. scrn1c_txt:   byt "but if you can read this, then it's",$0d
  634.  
  635.               byt "an emulator (with a nasty bug).",0
  636.  
  637.  
  638.  
  639. emu_fnd:      byt "emulator found: type '"
  640.  
  641. emu_type      byt " ', version "
  642.  
  643. emu_vers      byt "00.00",$0d,$0d,0
  644.  
  645. emu_nfnd:     byt "recognition unsuccessful!",0
  646.  
  647.  
  648.  
  649. end_str:      byt $9e,$93,$8e,0
  650.  
  651.  
  652.  
  653.               end $0801
  654.  
  655.