home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / emulators / Atari / c64.lzh / C64 / SRC / C64.S < prev    next >
Text File  |  1986-02-06  |  40KB  |  1,739 lines

  1. ********************************************************************************
  2.  
  3. *                                                                              *
  4.  
  5. *                              c64-eMULATOR v3.0                               *
  6.  
  7. *                             {CBM-X} 1987 BY uWE sEIMET                             *
  8.  
  9. *                             bUCHENLOCHSTRAE 29                              *
  10.  
  11. *                             6750 kAISERSLAUTERN                              *
  12.  
  13. *                                                                              *
  14.  
  15. *                       lINKREIHENFOLGE: c64.o,vc.o,emulator.o                 *
  16.  
  17. *                                                                              *
  18.  
  19. ********************************************************************************
  20.  
  21.  
  22.  
  23.  
  24.  
  25. gemdos  =  1
  26.  
  27. xbios   = 14
  28.  
  29.  
  30.  
  31. auxin   = $03
  32.  
  33. auxout  = $04
  34.  
  35. prline  = $09
  36.  
  37. auxinst = $12
  38.  
  39. setdta  = $1a
  40.  
  41. open    = $3d
  42.  
  43. close   = $3e
  44.  
  45. read    = $3f
  46.  
  47. setblock= $4a
  48.  
  49.  
  50.  
  51. getrez  =  4
  52.  
  53. sscreen =  5
  54.  
  55. setpalet=  6
  56.  
  57. setcolor=  7
  58.  
  59. rsconf  = 15
  60.  
  61. ikbdws  = 25
  62.  
  63. xbtimer = 31
  64.  
  65. supexec = 38
  66.  
  67.  
  68.  
  69.  
  70.  
  71.         GLOBL PRINT
  72.  
  73.         GLOBL RET64
  74.  
  75.         GLOBL JMP64
  76.  
  77.         GLOBL ITSCR
  78.  
  79.         GLOBL GRAPH
  80.  
  81.         GLOBL GRBSS
  82.  
  83.         GLOBL OPAGE
  84.  
  85.         GLOBL ITS
  86.  
  87.  
  88.  
  89.  
  90.  
  91.         TEXT
  92.  
  93.  
  94.  
  95.         MOVE.L SP,A5
  96.  
  97.         LEA STACK,SP
  98.  
  99.         MOVE.L 4(A5),A5
  100.  
  101.         MOVE.L 12(A5),D0
  102.  
  103.         ADD.L 20(A5),D0
  104.  
  105.         ADD.L 28(A5),D0
  106.  
  107.         ADD.L #$100,D0
  108.  
  109.         MOVE.L D0,-(SP)
  110.  
  111.         MOVE.L A5,-(SP)
  112.  
  113.         CLR -(SP)
  114.  
  115.         MOVE #setblock,-(SP)
  116.  
  117.         TRAP #gemdos
  118.  
  119.         ADD.L #12,SP
  120.  
  121.         TST.L D0
  122.  
  123.         BNE ERROR
  124.  
  125.         PEA MSG(PC)
  126.  
  127.         MOVE #prline,-(SP)
  128.  
  129.         TRAP #gemdos
  130.  
  131.         ADDQ.L #6,SP
  132.  
  133.         MOVEQ #2,D2
  134.  
  135.         LEA FILEADR(PC),A2
  136.  
  137.         LEA LOADADR(PC),A3
  138.  
  139. LLOOP:  CLR -(SP)
  140.  
  141.         MOVE.L (A2)+,-(SP)
  142.  
  143.         MOVE #open,-(SP)
  144.  
  145.         TRAP #gemdos
  146.  
  147.         ADDQ.L #8,SP
  148.  
  149.         MOVE D0,D7
  150.  
  151.         BMI ERROR
  152.  
  153.         MOVE.L (A3)+,-(SP)
  154.  
  155.         PEA $2000
  156.  
  157.         MOVE D7,-(SP)
  158.  
  159.         MOVE #read,-(SP)
  160.  
  161.         TRAP #gemdos
  162.  
  163.         ADD.L #12,SP
  164.  
  165.         TST.L D0
  166.  
  167.         BMI ERROR
  168.  
  169.         MOVE D7,-(SP)
  170.  
  171.         MOVE #close,-(SP)
  172.  
  173.         TRAP #gemdos
  174.  
  175.         ADDQ.L #4,SP
  176.  
  177.         TST D0
  178.  
  179.         BMI ERROR
  180.  
  181.         DBF D2,LLOOP
  182.  
  183.         LEA OPS,A0
  184.  
  185.         MOVE.L A0,D0
  186.  
  187.         ADD.L #$8000,D0
  188.  
  189.         MOVE.L D0,OPAGE
  190.  
  191.         LEA OP,A1
  192.  
  193.         CLR D2
  194.  
  195.         MOVE #255,D0
  196.  
  197. INEMU2: MOVE (A1,D2),D1
  198.  
  199.         LEA (A1,D1),A2
  200.  
  201.         MOVEQ #16,D1
  202.  
  203. INEMU1: MOVE.L (A2)+,(A0)+
  204.  
  205.         DBF D1,INEMU1
  206.  
  207.         ADDQ #2,D2
  208.  
  209.         ADD.L #188,A0
  210.  
  211.         DBF D0,INEMU2
  212.  
  213.         MOVE #getrez,-(SP)
  214.  
  215.         TRAP #xbios
  216.  
  217.         ADDQ.L #2,SP
  218.  
  219.         MOVE D0,REZ
  220.  
  221.         LEA PRFONT,A0
  222.  
  223.         LEA SET,A1
  224.  
  225.         MOVE #511,D4
  226.  
  227.         CMP #2,D0
  228.  
  229.         BEQ CONV3
  230.  
  231.         MOVE #$4E71,COLCOD
  232.  
  233.         MOVE #$4E71,COLCO
  234.  
  235.         ST REZFLG
  236.  
  237. CONV3:  MOVEQ #7,D3
  238.  
  239. CONV2:  MOVEQ #7,D2
  240.  
  241.         MOVE.B (A0)+,D0
  242.  
  243.         MOVE.B D0,D1
  244.  
  245. CONV1:  TST.B REZFLG
  246.  
  247.         BNE CONV4
  248.  
  249.         ADD.B D1,D1
  250.  
  251.         ROXL (A1)
  252.  
  253. CONV4:  ADD.B D0,D0
  254.  
  255.         ROXL (A1)+
  256.  
  257.         DBF D2,CONV1
  258.  
  259.         SUB.L #16,A1
  260.  
  261.         DBF D3,CONV2
  262.  
  263.         ADD.L #16,A1
  264.  
  265.         DBF D4,CONV3
  266.  
  267.         TST.B REZFLG
  268.  
  269.         BEQ CONV5
  270.  
  271.         LEA SET,A0
  272.  
  273.         MOVE #4095,D0
  274.  
  275. CONV6:  MOVE.B 1(A0),(A0)
  276.  
  277.         ADDQ.L #2,A0
  278.  
  279.         DBF D0,CONV6
  280.  
  281. CONV5:  LEA SCTAB,A0
  282.  
  283.         CLR D1
  284.  
  285.         MOVEQ #24,D0
  286.  
  287. TABL:   MOVE D1,(A0)+
  288.  
  289.         ADD #1280,D1
  290.  
  291.         DBF D0,TABL
  292.  
  293.         LEA GRTAB+510,A0
  294.  
  295.         MOVE #255,D3
  296.  
  297. BIT1:   MOVEQ #7,D2
  298.  
  299.         MOVE.B D3,D0
  300.  
  301.         MOVE.B D3,D1
  302.  
  303. BIT0:   ADD.B D0,D0
  304.  
  305.         ROXL (A0)
  306.  
  307.         ADD.B D1,D1
  308.  
  309.         ROXL (A0)
  310.  
  311.         DBF D2,BIT0
  312.  
  313.         SUBQ.L #2,A0
  314.  
  315.         DBF D3,BIT1
  316.  
  317.         LEA OLDCOL+32,A3
  318.  
  319.         MOVEQ #15,D3
  320.  
  321. SAVCOL: MOVE #-1,-(SP)
  322.  
  323.         MOVE D3,-(SP)
  324.  
  325.         MOVE #setcolor,-(SP)
  326.  
  327.         TRAP #xbios
  328.  
  329.         ADDQ.L #6,SP
  330.  
  331.         MOVE D0,-(A3)
  332.  
  333.         DBF D3,SAVCOL
  334.  
  335.         PEA NEWCOL(PC)
  336.  
  337.         MOVE #setpalet,-(SP)
  338.  
  339.         TRAP #xbios
  340.  
  341.         ADDQ.L #6,SP
  342.  
  343.         MOVE.B #$06,C64+$D021
  344.  
  345.         PEA MOFF(PC)            *mAUS ABSCHALTEN
  346.  
  347.         CLR -(SP)
  348.  
  349.         MOVE #ikbdws,-(SP)
  350.  
  351.         TRAP #xbios
  352.  
  353.         ADDQ.L #8,SP
  354.  
  355.         PEA BASE(PC)
  356.  
  357.         MOVE #supexec,-(SP)
  358.  
  359.         TRAP #xbios
  360.  
  361.         ADDQ.L #6,SP
  362.  
  363.         CMP #1,REZ
  364.  
  365.         BNE REZOK
  366.  
  367.         CLR -(SP)
  368.  
  369.         PEA -1
  370.  
  371.         PEA -1
  372.  
  373.         MOVE #sscreen,-(SP)
  374.  
  375.         TRAP #xbios
  376.  
  377.         ADD.L #12,SP
  378.  
  379. REZOK:  PEA INT(PC)
  380.  
  381.         MOVE #$CC,-(SP)
  382.  
  383.         MOVE #7,-(SP)
  384.  
  385.         CLR -(SP)
  386.  
  387.         MOVE #xbtimer,-(SP)
  388.  
  389.         TRAP #xbios
  390.  
  391.         ADD.L #12,SP
  392.  
  393.         PEA DTA
  394.  
  395.         MOVE #setdta,-(SP)
  396.  
  397.         TRAP #gemdos
  398.  
  399.         ADDQ.L #6,SP
  400.  
  401.         LEA C64,A6
  402.  
  403.         MOVEM.L (A6),D2-D7              *rEGISTER LSCHEN
  404.  
  405.         BSET #31,D4
  406.  
  407.         MOVE.L #$55390D00,FILE          *fLOPPY-rESET
  408.  
  409.         BSR VC1541
  410.  
  411.         LEA AREA,A2
  412.  
  413.         MOVE.L OPAGE(PC),A3
  414.  
  415.         LEA C64+$FCE2,A5
  416.  
  417.         MOVEQ #$10,D1
  418.  
  419.         MOVE.B (A5)+,START+2
  420.  
  421. START:  JMP 0(A3)                       *ERSTEN bEFEHL AUSFHREN
  422.  
  423.  
  424.  
  425. JMP64:
  426.  
  427.         MOVE.L D2,D0
  428.  
  429.         SUB #$FF81,D0
  430.  
  431.         DIVU #3,D0
  432.  
  433.         ADD D0,D0
  434.  
  435.         ADD D0,D0
  436.  
  437.         LEA KADR(PC),A0
  438.  
  439.         MOVE.L (A0,D0),D0
  440.  
  441.         BEQ EMUL
  442.  
  443.         MOVE.L D0,A0
  444.  
  445.         JSR (A0)
  446.  
  447.         LEA AREA,A2
  448.  
  449.         MOVEQ #$10,D1
  450.  
  451.         JMP $6000(A3)                   *ZUM rts-oPCODE
  452.  
  453. EMUL:   LEA (A6,D2.L),A5
  454.  
  455.         MOVE.B (A5)+,EMU+2
  456.  
  457. EMU:    JMP 0(A3)
  458.  
  459.  
  460.  
  461. NEWCOL: DC $000,$777,$600,$067,$707,$040,$003,$770
  462.  
  463.         DC $740,$420,$721,$444,$333,$373,$457,$222
  464.  
  465.  
  466.  
  467. INT:
  468.  
  469.         MOVE.L D0,-(SP)
  470.  
  471.         MOVE.B C64+$D021,D0
  472.  
  473.         AND #$0F,D0
  474.  
  475.         ADD.B D0,D0
  476.  
  477.         MOVE NEWCOL(PC,D0),$FF8240
  478.  
  479.         MOVE.B C64+$0286,D0
  480.  
  481.         CMP.B C0286(PC),D0
  482.  
  483.         BEQ NOC0
  484.  
  485.         MOVEM.L A0/D1-D2,-(SP)
  486.  
  487.         BSR COLF1
  488.  
  489.         MOVEM.L (SP)+,A0/D1-D2
  490.  
  491. NOC0:   TST.L D4                        *iNTERRUPTS ERLAUBT?
  492.  
  493.         BMI INTE                        *NEIN-
  494.  
  495.         MOVEM.L D2/D7/A0-A1/A6,-(SP)
  496.  
  497.         LEA C64,A6
  498.  
  499.         BSR UDTIM
  500.  
  501.         TST.B $CC(A6)
  502.  
  503.         BNE INT0
  504.  
  505.         SUBQ.B #1,$CD(A6)
  506.  
  507.         BNE INT0
  508.  
  509.         MOVE.B #$14,$CD(A6)
  510.  
  511.         CLR D7
  512.  
  513.         MOVE.B $D3(A6),D7
  514.  
  515.         CLR.L D0
  516.  
  517.         MOVE.B $D2(A6),D0
  518.  
  519.         ASL #8,D0
  520.  
  521.         MOVE.B $D1(A6),D0
  522.  
  523.         ADD D7,D0
  524.  
  525.         MOVE.B (A6,D0),D7
  526.  
  527.         MOVE.B $CF(A6),D2
  528.  
  529.         CLR.B $CF(A6)
  530.  
  531.         TST.B D2
  532.  
  533.         BNE INT1
  534.  
  535.         ADDQ.B #1,$CF(A6)
  536.  
  537.         MOVE.B D7,$CE(A6)
  538.  
  539. INT1:   MOVE.B $0288(A6),D2
  540.  
  541.         ASL #8,D2
  542.  
  543.         SUB D2,D0
  544.  
  545.         DIVU #40,D0
  546.  
  547.         MOVE D0,D2
  548.  
  549.         ADD D2,D2
  550.  
  551.         SWAP D0
  552.  
  553.         EXT.L D0
  554.  
  555.         MOVE D0,D7
  556.  
  557. COLCO:  ADD D0,D0
  558.  
  559.         MOVE.L SCBASE(PC),A0
  560.  
  561.         LEA SCTAB,A1
  562.  
  563.         ADD (A1,D2),D0
  564.  
  565.         ADD.L D0,A0
  566.  
  567.         TST.B REZFLG
  568.  
  569.         BEQ CUR0
  570.  
  571.         AND #$FE,D7
  572.  
  573.         LEA COLTAB(PC),A1
  574.  
  575.         ADD (A1,D7),A0
  576.  
  577.         MOVEQ #7,D0
  578.  
  579. INTC:   MOVE.L PLANE(PC),D2
  580.  
  581.         MOVEP.L 0(A0),D7
  582.  
  583.         NOT.L D7
  584.  
  585.         MOVE.L D7,-(SP)
  586.  
  587.         EOR.L D2,D7
  588.  
  589.         AND.L (SP)+,D7
  590.  
  591.         MOVEP.L D7,0(A0)
  592.  
  593.         ADD.L #160,A0
  594.  
  595.         DBF D0,INTC
  596.  
  597.         BRA INT0
  598.  
  599. CUR0:   MOVEQ #15,D0
  600.  
  601. INT2:   NOT (A0)
  602.  
  603.         ADD.L #80,A0
  604.  
  605.         DBF D0,INT2
  606.  
  607. INT0:   BSR SCN
  608.  
  609.         MOVEM.L (SP)+,D2/D7/A0-A1/A6
  610.  
  611. INTE:   MOVE.L (SP)+,D0
  612.  
  613.         BCLR #5,$FFFA0F
  614.  
  615.         RTE
  616.  
  617.  
  618.  
  619. SCAN:
  620.  
  621.         TRAP #0
  622.  
  623.         RTS
  624.  
  625.  
  626.  
  627. SCN:
  628.  
  629.         CMP.B #$40,$CB(A6)
  630.  
  631.         BEQ SCRT
  632.  
  633.         MOVE.B $CB(A6),D0
  634.  
  635.         CMP.B $C5(A6),D0
  636.  
  637.         BEQ RP
  638.  
  639.         MOVE.B #$10,$028C(A6)
  640.  
  641.         BRA REP
  642.  
  643. RP:     TST.B $028A(A6)
  644.  
  645.         BMI RP1
  646.  
  647.         BTST #6,$028A(A6)
  648.  
  649.         BNE SCRT
  650.  
  651.         MOVE.B STCODE(PC),D0
  652.  
  653.         AND #$7F,D0
  654.  
  655.         CMP.B #$7F,D0
  656.  
  657.         BEQ REP
  658.  
  659.         CMP.B #$14,D0
  660.  
  661.         BEQ RP1
  662.  
  663.         CMP.B #" ",D0
  664.  
  665.         BEQ RP1
  666.  
  667.         CMP.B #$1D,D0
  668.  
  669.         BEQ RP1
  670.  
  671.         CMP.B #$11,D0
  672.  
  673.         BNE SCRT
  674.  
  675. RP1:    TST.B $028C(A6)
  676.  
  677.         BEQ RP0
  678.  
  679.         SUBQ.B #1,$028C(A6)
  680.  
  681.         BNE SRT
  682.  
  683. RP0:    SUBQ.B #1,$028B(A6)
  684.  
  685.         BNE SRT
  686.  
  687.         MOVE.B #$04,$028B(A6)
  688.  
  689.         CMP.B #$01,$C6(A6)
  690.  
  691.         BGT SRT
  692.  
  693. REP:    BTST #0,$484
  694.  
  695.         BEQ NOCL
  696.  
  697.         MOVE.L #CLICK,$E44
  698.  
  699.         CLR.B $E48
  700.  
  701. NOCL:   MOVE.B $C6(A6),D0
  702.  
  703.         CMP.B $0289(A6),D0
  704.  
  705.         BGE SCRT
  706.  
  707.         EXT D0
  708.  
  709.         LEA $0277(A6),A0
  710.  
  711.         MOVE.B STCODE(PC),(A0,D0)
  712.  
  713.         ADDQ.B #1,$C6(A6)
  714.  
  715. SCRT:   MOVE.B $CB(A6),$C5(A6)
  716.  
  717.         MOVE.B $028D(A6),$028E(A6)
  718.  
  719. SRT:    RTS
  720.  
  721.  
  722.  
  723. KEYSCN:
  724.  
  725.         TST.B $FFFC00
  726.  
  727.         BEQ NOINT
  728.  
  729.         MOVEM.L A0/A6/D0,-(SP)
  730.  
  731.         LEA C64,A6
  732.  
  733.         MOVE.B $FFFC02,D0
  734.  
  735.         BTST #13,12(SP)                 *aUFRUF AUS sUPERVISOR-mODUS?
  736.  
  737.         BNE NOF10                       *JA-        
  738.  
  739.         CMP.B #$61,D0                   *undo-tASTE?
  740.  
  741.         BNE UNDO                        *NEIN-
  742.  
  743.         CMP #$47FE,$0318(A6)
  744.  
  745.         BNE TNMI
  746.  
  747.         CMP.B #$7F,$91(A6)
  748.  
  749.         BNE SCON3
  750.  
  751.         MOVE.L #RS,14(SP)
  752.  
  753.         BRA SCON3
  754.  
  755. TNMI:   MOVE.L #NMI,14(SP)
  756.  
  757.         BRA SCON3        
  758.  
  759. UNDO:   CMP.B #$62,D0                   *help-tASTE?
  760.  
  761.         BNE HELP                        *NEIN-
  762.  
  763.         PEA MSG(PC)
  764.  
  765.         MOVE #prline,-(SP)
  766.  
  767.         TRAP #gemdos
  768.  
  769.         ADDQ.L #6,SP
  770.  
  771.         BRA SCON3
  772.  
  773. HELP:   CMP.B #$3F,D0                   *f5?
  774.  
  775.         BNE NOF5                        *NEIN-
  776.  
  777.         ADDQ.B #1,C64+$D021
  778.  
  779.         AND.B #$0F,C64+$D021
  780.  
  781.         BRA SCON3
  782.  
  783. NOF5:   CMP.B #$40,D0                   *f6?
  784.  
  785.         BNE NOF6                        *NEIN-
  786.  
  787.         ADDQ.B #1,C64+$0286
  788.  
  789.         AND.B #$0F,C64+$0286
  790.  
  791.         BRA SCON3
  792.  
  793. NOF6:   CMP.B #$41,D0                   *f7?
  794.  
  795.         BNE NOF7                        *NEIN-
  796.  
  797.         ADDQ #1,$4EE
  798.  
  799.         BRA SCON3
  800.  
  801. NOF7:   CMP.B #$42,D0                   *f8?
  802.  
  803.         BNE NOF8                        *NEIN-
  804.  
  805.         BSR SWHI
  806.  
  807.         CMP.B #"-",FF8
  808.  
  809.         BEQ SWI0
  810.  
  811.         MOVE.B #"-",FF8
  812.  
  813.         BRA SCON3
  814.  
  815. SWI0:   MOVE.B #"+",FF8
  816.  
  817.         BRA SCON3
  818.  
  819. NOF8:   CMP.B #$43,D0                   *f9?
  820.  
  821.         BNE NOF9                        *NEIN-
  822.  
  823.         BSR SWLO
  824.  
  825.         CMP.B #"-",FF9
  826.  
  827.         BEQ SWI
  828.  
  829.         MOVE.B #"-",FF9
  830.  
  831.         BRA SCON3
  832.  
  833. SWI:    MOVE.B #"+",FF9
  834.  
  835.         BRA SCON3
  836.  
  837. NOF9:   CMP.B #$44,D0                   *f10?
  838.  
  839.         BNE NOF10                       *NEIN-
  840.  
  841.         MOVE.L #EXIT,14(SP)
  842.  
  843.         BRA SCON3
  844.  
  845. NOF10:  MOVE.B #$40,$CB(A6)
  846.  
  847.         CMP.B #$2A,D0
  848.  
  849.         BEQ KEY1
  850.  
  851.         CMP.B #$36,D0
  852.  
  853.         BNE KEY2
  854.  
  855. KEY1:   BSET #0,$028D(A6)
  856.  
  857.         LEA C64+$EBC2,A0
  858.  
  859.         BRA SCON5
  860.  
  861. KEY2:   CMP.B #$AA,D0
  862.  
  863.         BEQ KEY3
  864.  
  865.         CMP.B #$B6,D0
  866.  
  867.         BNE KEY4
  868.  
  869. KEY3:   BCLR #0,$028D(A6)
  870.  
  871.         LEA C64+$EB81,A0
  872.  
  873.         BRA SCON5
  874.  
  875. KEY4:   CMP.B #$1D,D0
  876.  
  877.         BNE CTRL1
  878.  
  879.         BSET #2,$028D(A6)
  880.  
  881.         LEA C64+$EC78,A0
  882.  
  883.         BRA SCON5
  884.  
  885. CTRL1:  CMP.B #$9D,D0
  886.  
  887.         BNE CTRL2
  888.  
  889.         BCLR #2,$028D(A6)
  890.  
  891.         LEA C64+$EB81,A0
  892.  
  893.         BRA SCON5
  894.  
  895. CTRL2:  CMP.B #$38,D0
  896.  
  897.         BNE ALT1
  898.  
  899.         BSET #1,$028D(A6)
  900.  
  901.         LEA C64+$EC03,A0
  902.  
  903.         BRA SCON5
  904.  
  905. ALT1:   CMP.B #$B8,D0
  906.  
  907.         BNE ALT2
  908.  
  909.         BCLR #1,$028D(A6)
  910.  
  911.         LEA C64+$EB81,A0
  912.  
  913.         BRA SCON5
  914.  
  915. ALT2:   CMP.B #$4B,D0
  916.  
  917.         BNE NOL
  918.  
  919.         MOVE.B #$02,$CB(A6)
  920.  
  921.         MOVE.B #$9D,D0
  922.  
  923.         BRA SCON4
  924.  
  925. NOL:    CMP.B #$48,D0
  926.  
  927.         BNE NOU
  928.  
  929.         MOVE.B #$07,$CB(A6)
  930.  
  931.         MOVE.B #$91,D0
  932.  
  933.         BRA SCON4
  934.  
  935. NOU:    CMP.B #$52,D0
  936.  
  937.         BNE NOI
  938.  
  939.         CLR.B $CB(A6)
  940.  
  941.         MOVE.B #$94,D0
  942.  
  943.         BRA SCON4
  944.  
  945. NOI:    CMP.B #$63,D0
  946.  
  947.         BNE NOO
  948.  
  949.         MOVE.B #$1B,$CB(A6)
  950.  
  951.         MOVEQ #$28,D0
  952.  
  953.         BRA SCON4
  954.  
  955. NOO:    CMP.B #$64,D0
  956.  
  957.         BNE SCON
  958.  
  959.         MOVE.B #$20,$CB(A6)
  960.  
  961.         MOVEQ #$29,D0
  962.  
  963.         BRA SCON4
  964.  
  965. SCON5:  MOVE.L A0,TAB
  966.  
  967. SCON:   EXT D0
  968.  
  969.         BMI SCON2
  970.  
  971.         LEA KEY(PC),A0
  972.  
  973.         MOVE.B (A0,D0),D0
  974.  
  975.         MOVE.B D0,$CB(A6)
  976.  
  977.         MOVE.L TAB(PC),A0
  978.  
  979.         MOVE.B (A0,D0),D0
  980.  
  981.         CMP.B #$FF,D0
  982.  
  983.         BEQ SCON2
  984.  
  985. SCON4:  MOVE.B D0,STCODE
  986.  
  987. SCON2:  MOVE.B $028D(A6),D0
  988.  
  989.         CMP.B #$03,D0
  990.  
  991.         BNE SCON3
  992.  
  993.         CMP.B $028E(A6),D0
  994.  
  995.         BEQ SCON3
  996.  
  997.         TST.B $0291(A6)
  998.  
  999.         BMI SCON3
  1000.  
  1001.         EOR.B #$02,C64+$D018
  1002.  
  1003. SCON3:  MOVEM.L (SP)+,A0/A6/D0
  1004.  
  1005. NOINT:  BCLR #6,$FFFA11
  1006.  
  1007.         RTE
  1008.  
  1009.  
  1010.  
  1011. NMI:
  1012.  
  1013.         CLR.L D4
  1014.  
  1015.         BSET #31,D4
  1016.  
  1017.         LEA AREA,A2
  1018.  
  1019.         MOVE.L OPAGE(PC),A3
  1020.  
  1021.         LEA C64,A6
  1022.  
  1023.         CLR.L D2
  1024.  
  1025.         CLR.L D3
  1026.  
  1027.         CLR.L D5
  1028.  
  1029.         CLR.L D6
  1030.  
  1031.         CLR.L D7
  1032.  
  1033.         MOVEQ #$10,D1
  1034.  
  1035.         SUB.L A6,A5
  1036.  
  1037.         MOVE A5,-(A2)
  1038.  
  1039.         MOVE.B (A2)+,(A4)
  1040.  
  1041.         MOVE.B (A2)+,-(A4)
  1042.  
  1043.         MOVE.B D4,-(A4)
  1044.  
  1045.         TST.B -(A4)
  1046.  
  1047.         LEA C64+$FE44,A5
  1048.  
  1049.         BRA START
  1050.  
  1051.  
  1052.  
  1053. RS:
  1054.  
  1055.         CLR.L D4
  1056.  
  1057.         BSET #31,D4
  1058.  
  1059.         LEA AREA,A2
  1060.  
  1061.         MOVE.L OPAGE(PC),A3
  1062.  
  1063.         LEA C64,A6
  1064.  
  1065.         CLR.L D2
  1066.  
  1067.         CLR.L D3
  1068.  
  1069.         CLR.L D5
  1070.  
  1071.         CLR.L D6
  1072.  
  1073.         CLR.L D7
  1074.  
  1075.         MOVEQ #$10,D1
  1076.  
  1077.         SUB.L A6,A5
  1078.  
  1079.         MOVE A5,-(A2)
  1080.  
  1081.         MOVE.B (A2)+,(A4)
  1082.  
  1083.         MOVE.B (A2)+,-(A4)
  1084.  
  1085.         MOVE.B D4,-(A4)
  1086.  
  1087.         MOVE.B D5,-(A4)
  1088.  
  1089.         MOVE.B D6,-(A4)
  1090.  
  1091.         MOVE.B D7,-(A4)
  1092.  
  1093.         TST.B -(A4)
  1094.  
  1095.         LEA C64+$FE66,A5
  1096.  
  1097.         BRA START
  1098.  
  1099.  
  1100.  
  1101. INIT:
  1102.  
  1103.         MOVEQ #$0E,D0
  1104.  
  1105.         BSR COLF
  1106.  
  1107. CLS:
  1108.  
  1109.         MOVE.B $0288(A6),D7
  1110.  
  1111.         OR.B #$80,D7
  1112.  
  1113.         CLR.B D5
  1114.  
  1115.         CLR.B D6 
  1116.  
  1117.         LEA $D9(A6),A0
  1118.  
  1119. CLR0:   MOVE.B D7,(A0,D6)
  1120.  
  1121.         ADD.B #$28,D5
  1122.  
  1123.         BCC CLR1
  1124.  
  1125.         ADDQ.B #1,D7
  1126.  
  1127. CLR1:   ADDQ.B #1,D6
  1128.  
  1129.         CMP.B #$1A,D6
  1130.  
  1131.         BNE CLR0
  1132.  
  1133.         ST (A0,D6)
  1134.  
  1135.         MOVEQ #$18,D6
  1136.  
  1137. CLR2:   BSR CLRLINE
  1138.  
  1139.         SUBQ.B #1,D6
  1140.  
  1141.         BPL CLR2
  1142.  
  1143.         MOVE.L SCBASE(PC),A1
  1144.  
  1145.         MOVE #7999,D0
  1146.  
  1147. CCL:    CLR.L (A1)+
  1148.  
  1149.         DBF D0,CCL
  1150.  
  1151. HOME:
  1152.  
  1153.         CLR.B $D3(A6)
  1154.  
  1155.         CLR.B $D6(A6)
  1156.  
  1157. CURPOS:
  1158.  
  1159.         MOVE.B $D6(A6),D6
  1160.  
  1161. CURP1:  LEA $D9(A6),A0
  1162.  
  1163. CP1:    TST.B (A0,D6)
  1164.  
  1165.         BMI CP0
  1166.  
  1167.         ADD.B #$28,$D3(A6)
  1168.  
  1169.         SUBQ.B #1,D6
  1170.  
  1171.         BPL CP1
  1172.  
  1173. CP0:    MOVE.B (A0,D6),D5
  1174.  
  1175.         AND.B #$03,D5
  1176.  
  1177.         OR.B $0288(A6),D5
  1178.  
  1179.         MOVE.B D5,$D2(A6)
  1180.  
  1181.         LEA C64+$ECF0,A1
  1182.  
  1183.         MOVE.B (A1,D6),$D1(A6)
  1184.  
  1185.         MOVEQ #$27,D5
  1186.  
  1187.         ADDQ.B #1,D6
  1188.  
  1189. CP3:    TST.B (A0,D6)
  1190.  
  1191.         BMI CP2
  1192.  
  1193.         ADD.B #$28,D5
  1194.  
  1195.         ADDQ.B #1,D6
  1196.  
  1197.         BPL CP3
  1198.  
  1199. CP2:    MOVE.B D5,$D5(A6)
  1200.  
  1201.         RTS
  1202.  
  1203.  
  1204.  
  1205. GETCHAR:
  1206.  
  1207.         LEA $0277(A6),A0
  1208.  
  1209.         MOVE.B (A0),D5
  1210.  
  1211.         CLR D0
  1212.  
  1213. GC:     MOVE.B 1(A0),(A0)+
  1214.  
  1215.         ADDQ.B #1,D0
  1216.  
  1217.         CMP.B $C6(A6),D0
  1218.  
  1219.         BNE GC
  1220.  
  1221.         SUBQ.B #1,$C6(A6)
  1222.  
  1223.         BCLR #31,D4
  1224.  
  1225.         AND.B #$EE,D4
  1226.  
  1227.         RTS
  1228.  
  1229.  
  1230.  
  1231. WAIT:
  1232.  
  1233.         BSR BSSC
  1234.  
  1235. BSIN:   MOVE.B $C6(A6),D5
  1236.  
  1237.         MOVE.B D5,$CC(A6)
  1238.  
  1239.         MOVE.B D5,$0292(A6)
  1240.  
  1241.         BEQ BSIN
  1242.  
  1243.         BSET #31,D4
  1244.  
  1245.         TST.B $CF(A6)
  1246.  
  1247.         BEQ BS0
  1248.  
  1249.         CLR.B $CF(A6)
  1250.  
  1251.         MOVE.B $CE(A6),D5
  1252.  
  1253.         BSR OUTPUT
  1254.  
  1255. BS0:    BSR GETCHAR
  1256.  
  1257.         CMP.B #$83,D5
  1258.  
  1259.         BNE BS4
  1260.  
  1261.         MOVEQ #$09,D6
  1262.  
  1263.         BSET #31,D4
  1264.  
  1265.         MOVE.B D6,$C6(A6)
  1266.  
  1267.         LEA C64+$ECE6,A0
  1268.  
  1269.         LEA $0276(A6),A1
  1270.  
  1271. LDRN:   MOVE.B (A0,D6),(A1,D6)
  1272.  
  1273.         SUBQ.B #1,D6
  1274.  
  1275.         BNE LDRN
  1276.  
  1277.         BRA BSIN
  1278.  
  1279. BS4:    CMP.B #$0D,D5
  1280.  
  1281.         BNE WAIT
  1282.  
  1283.         MOVE.B $D5(A6),D7
  1284.  
  1285.         MOVE.B D7,$D0(A6)
  1286.  
  1287.         MOVE.B $D2(A6),D2
  1288.  
  1289.         ASL #8,D2
  1290.  
  1291.         MOVE.B $D1(A6),D2
  1292.  
  1293.         LEA (A6,D2.L),A0
  1294.  
  1295. BS2:    MOVE.B (A0,D7),D5
  1296.  
  1297.         CMP.B #" ",D5
  1298.  
  1299.         BNE BS1
  1300.  
  1301.         SUBQ.B #1,D7
  1302.  
  1303.         BNE BS2
  1304.  
  1305. BS1:    ADDQ.B #1,D7
  1306.  
  1307.         MOVE.B D7,$C8(A6)
  1308.  
  1309.         CLR.B $0292(A6)
  1310.  
  1311.         CLR.B $D3(A6)
  1312.  
  1313.         CLR.B $D4(A6)
  1314.  
  1315.         TST.B $C9(A6)
  1316.  
  1317.         BMI BS3
  1318.  
  1319.         MOVE.B $D6(A6),D6
  1320.  
  1321.         LEA $D9(A6),A0
  1322.  
  1323. BS7:    TST.B (A0,D6)
  1324.  
  1325.         BMI BS6
  1326.  
  1327.         SUBQ.B #1,D6
  1328.  
  1329.         BNE BS7
  1330.  
  1331. BS6:    BSR VRAM
  1332.  
  1333.         CMP.B $C9(A6),D6
  1334.  
  1335.         BNE BS3
  1336.  
  1337.         MOVE.B $CA(A6),D5
  1338.  
  1339.         MOVE.B D5,$D3(A6)
  1340.  
  1341.         CMP.B $C8(A6),D5
  1342.  
  1343.         BLT BS3
  1344.  
  1345.         BRA BS8
  1346.  
  1347.  
  1348.  
  1349. BASN:
  1350.  
  1351.         MOVEM D6-D7,-(SP)
  1352.  
  1353.         TST.B $D0(A6)
  1354.  
  1355.         BEQ BSIN
  1356.  
  1357. BS3:    MOVE.B $D3(A6),D7
  1358.  
  1359.         MOVE.B $D2(A6),D0
  1360.  
  1361.         ASL #8,D0
  1362.  
  1363.         MOVE.B $D1(A6),D0
  1364.  
  1365.         ADD D7,D0
  1366.  
  1367.         MOVE.B (A6,D0),D5
  1368.  
  1369.         MOVE.B D5,D0
  1370.  
  1371.         AND.B #$3F,D5
  1372.  
  1373.         BTST #6,D0
  1374.  
  1375.         BEQ BAS0
  1376.  
  1377.         OR.B #$80,D5
  1378.  
  1379. BAS0:   TST.B D0
  1380.  
  1381.         BPL BAS1
  1382.  
  1383.         TST.B $D4(A6)
  1384.  
  1385.         BNE BAS2
  1386.  
  1387. BAS1:   BTST #5,D0
  1388.  
  1389.         BNE BAS2
  1390.  
  1391.         OR.B #$40,D5
  1392.  
  1393. BAS2:   ADDQ.B #1,$D3(A6)
  1394.  
  1395.         CMP.B #$22,D5
  1396.  
  1397.         BNE BAS3
  1398.  
  1399.         EOR.B #$01,$D4(A6)
  1400.  
  1401. BAS3:   CMP.B $C8(A6),D7
  1402.  
  1403.         BNE BAS4
  1404.  
  1405. BS8:    CLR.B $D0(A6)
  1406.  
  1407.         MOVEQ #$0D,D5
  1408.  
  1409.         CMP.B #$03,$99(A6)
  1410.  
  1411.         BEQ BAS6
  1412.  
  1413.         CMP.B #$03,$9A(A6)
  1414.  
  1415.         BEQ BAS4
  1416.  
  1417. BAS6:   BSR BSSC
  1418.  
  1419. BAS4:   MOVE.B D5,$D7(A6)
  1420.  
  1421.         MOVEM (SP)+,D6-D7
  1422.  
  1423.         CMP.B #$DE,D5
  1424.  
  1425.         BNE BAS5
  1426.  
  1427.         ST D5
  1428.  
  1429. BAS5:   AND.B #$EE,D4
  1430.  
  1431.         RTS
  1432.  
  1433.  
  1434.  
  1435. CHROUT:
  1436.  
  1437.         OR.B #$40,D5
  1438.  
  1439. CHROUT1:
  1440.  
  1441.         TST.B $C7(A6)
  1442.  
  1443.         BEQ NORV
  1444.  
  1445. CHROUT2:
  1446.  
  1447.         OR.B #$80,D5
  1448.  
  1449. NORV:   TST.B $D8(A6)
  1450.  
  1451.         BEQ NOIN
  1452.  
  1453.         SUBQ.B #1,$D8(A6)
  1454.  
  1455. NOIN:   BSR OUTPUT
  1456.  
  1457.         BSR MSB
  1458.  
  1459. LIN:    MOVEM (SP)+,D5-D7
  1460.  
  1461.         TST.B $D8(A6)
  1462.  
  1463.         BEQ NON
  1464.  
  1465.         CLR.B $D4(A6)
  1466.  
  1467. NON:    BCLR #31,D4
  1468.  
  1469.         TST.B D5
  1470.  
  1471.         MOVE SR,D4
  1472.  
  1473.         RTS
  1474.  
  1475.  
  1476.  
  1477. MSB:    BSR MSB0
  1478.  
  1479.         ADDQ.B #1,$D3(A6)
  1480.  
  1481.         MOVE.B $D5(A6),D5
  1482.  
  1483.         CMP.B $D3(A6),D5
  1484.  
  1485.         BGE MSB9
  1486.  
  1487.         CMP.B #$4F,D5
  1488.  
  1489.         BEQ MSB4
  1490.  
  1491.         TST.B $0292(A6)
  1492.  
  1493.         BNE INSL
  1494.  
  1495.         MOVE.B $D6(A6),D6
  1496.  
  1497.         CMP.B #$19,D6
  1498.  
  1499.         BLT MSB5
  1500.  
  1501.         BSR SCROLL
  1502.  
  1503.         SUBQ.B #1,$D6(A6)
  1504.  
  1505.         MOVE.B $D6(A6),D6
  1506.  
  1507. MSB5:   LEA $D9(A6),A0
  1508.  
  1509.         AND.B #$7F,(A0,D6)
  1510.  
  1511.         OR.B #$80,1(A0,D6)
  1512.  
  1513.         ADD.B #$28,$D5(A6)
  1514.  
  1515. MB6:    TST.B (A0,D6)
  1516.  
  1517.         BMI VRAM
  1518.  
  1519.         SUBQ.B #1,D6
  1520.  
  1521.         BNE MB6
  1522.  
  1523.         BRA VRAM
  1524.  
  1525. MSB4:   SUBQ.B #1,$D6(A6)
  1526.  
  1527.         BSR MSB8
  1528.  
  1529.         CLR.B $D3(A6)
  1530.  
  1531. MSB9:   RTS
  1532.  
  1533.  
  1534.  
  1535. BACK:
  1536.  
  1537.         MOVE.B $D6(A6),D6
  1538.  
  1539.         BNE BCK0
  1540.  
  1541.         MOVE.B D6,$D3(A6)
  1542.  
  1543.         ADDQ.L #4,SP
  1544.  
  1545.         BRA LIN
  1546.  
  1547. BCK0:   SUBQ.B #1,D6
  1548.  
  1549.         MOVE.B D6,$D6(A6)
  1550.  
  1551.         BSR CURP1
  1552.  
  1553.         MOVE.B $D5(A6),$D3(A6)
  1554.  
  1555.         RTS
  1556.  
  1557.  
  1558.  
  1559. BSOUT:
  1560.  
  1561.         CMP.B #$03,$9A(A6)
  1562.  
  1563.         BEQ BSSC
  1564.  
  1565.         BGT IECOUT
  1566.  
  1567.         CMP.B #$02,$9A(A6)
  1568.  
  1569.         BEQ RSOUT
  1570.  
  1571.         AND.B #$EE,D4
  1572.  
  1573.         RTS
  1574.  
  1575. BSSC:   MOVEM D5-D7,-(SP)
  1576.  
  1577.         CLR.B $D0(A6)
  1578.  
  1579.         MOVE.B $D3(A6),D7
  1580.  
  1581.         MOVE.B D5,$D7(A6)
  1582.  
  1583.         BMI GRCODE
  1584.  
  1585.         CMP.B #$0D,D5
  1586.  
  1587.         BEQ CARRET
  1588.  
  1589.         CMP.B #" ",D5
  1590.  
  1591.         BLT CD
  1592.  
  1593.         CMP.B #$60,D5
  1594.  
  1595.         BLT GR1
  1596.  
  1597.         AND.B #$DF,D5
  1598.  
  1599.         BRA GR4
  1600.  
  1601. GR1:    AND.B #$3F,D5
  1602.  
  1603. GR4:    CMP.B #$22,D5
  1604.  
  1605.         BNE CHROUT1
  1606.  
  1607.         EOR.B #$01,$D4(A6)
  1608.  
  1609.         BRA CHROUT1
  1610.  
  1611. CD:     TST.B $D8(A6)
  1612.  
  1613.         BNE CHROUT2
  1614.  
  1615.         CMP.B #$14,D5
  1616.  
  1617.         BNE DELC
  1618.  
  1619.         TST.B D7
  1620.  
  1621.         BNE DEL0
  1622.  
  1623.         BSR BACK
  1624.  
  1625.         BRA DEL1
  1626.  
  1627. DEL0:   BSR MSB7
  1628.  
  1629.         SUBQ.B #1,D7
  1630.  
  1631.         MOVE.B D7,$D3(A6)
  1632.  
  1633.         MOVE.B $D2(A6),D2
  1634.  
  1635.         ASL #8,D2
  1636.  
  1637.         MOVE.B $D1(A6),D2
  1638.  
  1639.         LEA (A6,D2.L),A1
  1640.  
  1641. DEL2:   MOVE.B 1(A1,D7),D5
  1642.  
  1643.         BSR PRSCR
  1644.  
  1645.         ADDQ.B #1,D7
  1646.  
  1647.         CMP.B $D5(A6),D7
  1648.  
  1649.         BNE DEL2
  1650.  
  1651.         MOVEQ #$20,D5
  1652.  
  1653.         BSR PRSCR
  1654.  
  1655.         BRA LIN
  1656.  
  1657. DEL1:   MOVE.B #" ",(A0,D7)
  1658.  
  1659.         BRA LIN
  1660.  
  1661. DELC:   TST.B $D4(A6)
  1662.  
  1663.         BNE CHROUT2
  1664.  
  1665.         CMP.B #$12,D5
  1666.  
  1667.         BNE REVC
  1668.  
  1669.         MOVE.B D5,$C7(A6)
  1670.  
  1671. REVC:   CMP.B #$13,D5
  1672.  
  1673.         BNE HOMC
  1674.  
  1675.         BSR HOME
  1676.  
  1677. HOMC:   CMP.B #$1D,D5
  1678.  
  1679.         BNE RGTC
  1680.  
  1681.         ADDQ.B #1,D7
  1682.  
  1683.         BSR MSB0
  1684.  
  1685.         MOVE.B D7,$D3(A6)
  1686.  
  1687.         SUBQ.B #1,D7
  1688.  
  1689.         CMP.B $D5(A6),D7
  1690.  
  1691.         BLT LIN
  1692.  
  1693.         SUBQ.B #1,$D6(A6)
  1694.  
  1695.         BSR MSB8
  1696.  
  1697.         CLR.B $D3(A6)
  1698.  
  1699.         BRA LIN
  1700.  
  1701. RGTC:   CMP.B #$11,D5
  1702.  
  1703.         BNE DWNC
  1704.  
  1705.         MOVE.B D7,D5
  1706.  
  1707.         ADD.B #$28,D5
  1708.  
  1709.         MOVE.B D5,D7
  1710.  
  1711.         ADDQ.B #1,$D6(A6)
  1712.  
  1713.         CMP.B $D5(A6),D5
  1714.  
  1715.         BGT DW0
  1716.  
  1717.         MOVE.B D7,$D3(A6)
  1718.  
  1719.         BRA LIN
  1720.  
  1721. DW0:    SUBQ.B #1,$D6(A6)
  1722.  
  1723. DW2:    SUB.B #$28,D5
  1724.  
  1725.         BLT DW1
  1726.  
  1727.         MOVE.B D5,$D3(A6)
  1728.  
  1729.         BNE DW2
  1730.  
  1731. DW1:    BSR MSB8
  1732.  
  1733.         BRA LIN
  1734.  
  1735. DWNC:   BSR TSTCOL
  1736.  
  1737.         CMP.B #$0E,D5
  1738.  
  1739.         BNE NSML
  1740.  
  1741.         OR.B #$02,C64+$D018
  1742.  
  1743.         BRA LIN
  1744.  
  1745. NSML:   CMP.B #$08,D5
  1746.  
  1747.         BNE NLCK
  1748.  
  1749.         OR.B #$80,$0291(A6)
  1750.  
  1751.         BRA LIN
  1752.  
  1753. NLCK:   CMP.B #$09,D5
  1754.  
  1755.         BNE LIN
  1756.  
  1757.         AND.B #$7F,$0291(A6)
  1758.  
  1759.         BRA LIN
  1760.  
  1761.  
  1762.  
  1763. GRCODE:
  1764.  
  1765.         AND.B #$7F,D5
  1766.  
  1767.         CMP.B #$7F,D5
  1768.  
  1769.         BNE NOPI
  1770.  
  1771.         MOVEQ #$5E,D5
  1772.  
  1773. NOPI:   CMP.B #" ",D5
  1774.  
  1775.         BGE CHROUT
  1776.  
  1777.         CMP.B #$0D,D5
  1778.  
  1779.         BEQ CARRET
  1780.  
  1781.         TST.B $D4(A6)
  1782.  
  1783.         BEQ GRC1
  1784.  
  1785. CUP:    OR.B #$40,D5
  1786.  
  1787.         BRA CHROUT2
  1788.  
  1789. GRC1:   CMP.B #$14,D5
  1790.  
  1791.         BNE NOINS
  1792.  
  1793.         MOVE.B $D5(A6),D7
  1794.  
  1795.         MOVE.B $D2(A6),D2
  1796.  
  1797.         ASL #8,D2
  1798.  
  1799.         MOVE.B $D1(A6),D2
  1800.  
  1801.         LEA (A6,D2.L),A1
  1802.  
  1803.         CMP.B #" ",(A1,D7)
  1804.  
  1805.         BNE INS1
  1806.  
  1807.         CMP.B $D3(A6),D7
  1808.  
  1809.         BNE INS2
  1810.  
  1811. INS1:   CMP.B #$4F,D7
  1812.  
  1813.         BEQ LIN
  1814.  
  1815.         MOVE.L A1,-(SP)
  1816.  
  1817.         BSR INSLINE
  1818.  
  1819.         SUB #40,D2
  1820.  
  1821.         MOVE.L (SP)+,A1
  1822.  
  1823. INS2:   MOVE.B $D5(A6),D7
  1824.  
  1825. INS3:   MOVE.B -1(A1,D7),D5
  1826.  
  1827.         BSR PRSCR
  1828.  
  1829.         SUBQ.B #1,D7
  1830.  
  1831.         CMP.B $D3(A6),D7
  1832.  
  1833.         BNE INS3
  1834.  
  1835.         MOVEQ #$20,D5
  1836.  
  1837.         BSR PRSCR
  1838.  
  1839.         ADDQ.B #1,$D8(A6)
  1840.  
  1841.         BRA LIN
  1842.  
  1843. NOINS:  TST.B $D8(A6)
  1844.  
  1845.         BNE CUP
  1846.  
  1847.         CMP.B #$11,D5
  1848.  
  1849.         BNE UPC
  1850.  
  1851.         TST.B $D6(A6)
  1852.  
  1853.         BEQ LIN
  1854.  
  1855.         SUBQ.B #1,$D6(A6)
  1856.  
  1857.         MOVE.B $D3(A6),D5
  1858.  
  1859.         SUB.B #$28,D5
  1860.  
  1861.         BLT CP
  1862.  
  1863.         MOVE.B D5,$D3(A6)
  1864.  
  1865.         BPL LIN
  1866.  
  1867. CP:     BSR CURPOS
  1868.  
  1869.         BRA LIN
  1870.  
  1871. UPC:    CMP.B #$12,D5
  1872.  
  1873.         BNE RVCD
  1874.  
  1875.         CLR.B $C7(A6)
  1876.  
  1877. RVCD:   CMP.B #$1D,D5
  1878.  
  1879.         BNE LFTC
  1880.  
  1881.         TST.B D7
  1882.  
  1883.         BNE LFT0
  1884.  
  1885.         BSR BACK
  1886.  
  1887.         BRA LIN
  1888.  
  1889. LFT0:   BSR MSB7
  1890.  
  1891.         SUBQ.B #1,D7
  1892.  
  1893.         MOVE.B D7,$D3(A6)
  1894.  
  1895.         BRA LIN
  1896.  
  1897. LFTC:   CMP.B #$13,D5
  1898.  
  1899.         BNE CLCD
  1900.  
  1901.         BSR CLS
  1902.  
  1903.         BRA LIN
  1904.  
  1905. CLCD:   OR.B #$80,D5
  1906.  
  1907.         BSR TSTCOL
  1908.  
  1909.         CMP.B #$8E,D5
  1910.  
  1911.         BNE LIN
  1912.  
  1913.         BCLR #1,C64+$D018
  1914.  
  1915.         BRA LIN
  1916.  
  1917.  
  1918.  
  1919. TSTCOL:
  1920.  
  1921.         LEA C64+$E8DA,A0
  1922.  
  1923.         MOVEQ #15,D0
  1924.  
  1925. FCOL:   CMP.B (A0,D0),D5
  1926.  
  1927.         BEQ COLF
  1928.  
  1929.         DBF D0,FCOL
  1930.  
  1931.         RTS
  1932.  
  1933. COLF:   MOVE.B D0,$0286(A6)
  1934.  
  1935. COLF1:  ADD D0,D0
  1936.  
  1937.         ADD D0,D0
  1938.  
  1939.         MOVE.L PENCOL(PC,D0),PLANE
  1940.  
  1941.         RTS
  1942.  
  1943.  
  1944.  
  1945. PENCOL: DC.L $FFFF0000,$00FFFFFF,$FF00FFFF,$0000FFFF
  1946.  
  1947.         DC.L $FFFF00FF,$00FF00FF,$FF0000FF,$FFFFFFFF
  1948.  
  1949.         DC.L $FF00FFFF,$00FFFF00,$FF00FF00,$0000FF00
  1950.  
  1951.         DC.L $000000FF,$00FF0000,$FF000000,$00FF0000
  1952.  
  1953.  
  1954.  
  1955. PRSCR:
  1956.  
  1957.         MOVE.B D5,(A1,D7)
  1958.  
  1959.         MOVE.L A1,-(SP)
  1960.  
  1961.         MOVE.L D7,D0
  1962.  
  1963.         ADD D2,D0
  1964.  
  1965.         BSR TOSCR
  1966.  
  1967.         MOVE.L (SP)+,A1
  1968.  
  1969.         RTS
  1970.  
  1971.  
  1972.  
  1973. CARRET:
  1974.  
  1975.         CLR.B $D8(A6)
  1976.  
  1977.         CLR.B $C7(A6)
  1978.  
  1979.         CLR.B $D4(A6)
  1980.  
  1981.         CLR.B $D3(A6)
  1982.  
  1983.         BSR MSB8
  1984.  
  1985.         BRA LIN
  1986.  
  1987. MSB8:   CLR.B $C9(A6)
  1988.  
  1989.         MOVE.B $D6(A6),D6
  1990.  
  1991. N0D2:   ADDQ.B #1,D6
  1992.  
  1993.         CMP.B #$19,D6
  1994.  
  1995.         BNE N0D1
  1996.  
  1997.         BSR SCROLL
  1998.  
  1999. N0D1:   LEA $D9(A6),A0
  2000.  
  2001.         TST.B (A0,D6)
  2002.  
  2003.         BPL N0D2
  2004.  
  2005.         MOVE.B D6,$D6(A6)
  2006.  
  2007.         BRA CURPOS
  2008.  
  2009.  
  2010.  
  2011. MSB7:
  2012.  
  2013.         MOVEQ #$02,D6
  2014.  
  2015.         CLR.B D5
  2016.  
  2017. MS0:    CMP.B $D3(A6),D5
  2018.  
  2019.         BEQ MS1
  2020.  
  2021.         ADD.B #$28,D5
  2022.  
  2023.         SUBQ.B #1,D6
  2024.  
  2025.         BNE MS0
  2026.  
  2027.         RTS
  2028.  
  2029. MS1:    SUBQ.B #1,$D6(A6)
  2030.  
  2031.         RTS
  2032.  
  2033.  
  2034.  
  2035. MSB0:
  2036.  
  2037.         MOVEQ #$02,D6
  2038.  
  2039.         MOVEQ #$27,D5
  2040.  
  2041. MB8:    CMP.B $D3(A6),D5
  2042.  
  2043.         BEQ MB9
  2044.  
  2045.         ADD.B #$28,D5
  2046.  
  2047.         SUBQ.B #1,D6
  2048.  
  2049.         BNE MB8
  2050.  
  2051.         RTS
  2052.  
  2053. MB9:    MOVE.B $D6(A6),D6
  2054.  
  2055.         CMP.B #$19,D6
  2056.  
  2057.         BEQ MB7
  2058.  
  2059.         ADDQ.B #1,$D6(A6)
  2060.  
  2061. MB7:    RTS
  2062.  
  2063.  
  2064.  
  2065. SCROLL:
  2066.  
  2067.         MOVE.L $AC(A6),-(SP)
  2068.  
  2069. LL5:    ST D6
  2070.  
  2071.         SUBQ.B #1,$D6(A6)
  2072.  
  2073.         SUBQ.B #1,$C9(A6)
  2074.  
  2075.         SUBQ.B #1,$02A5(A6)
  2076.  
  2077. LL1:    ADDQ.B #1,D6
  2078.  
  2079.         BSR VRAM
  2080.  
  2081.         CMP.B #$18,D6
  2082.  
  2083.         BGE LL0
  2084.  
  2085.         LEA C64+$ECF1,A0
  2086.  
  2087.         MOVE.B (A0,D6),$AC(A6)
  2088.  
  2089.         LEA $DA(A6),A0
  2090.  
  2091.         MOVE.B (A0,D6),D5
  2092.  
  2093.         BSR MOVEUP
  2094.  
  2095.         BRA LL1
  2096.  
  2097. LL0:    BSR CLRLINE
  2098.  
  2099.         CLR.B D6
  2100.  
  2101.         LEA $D9(A6),A0
  2102.  
  2103. LL4:    MOVE.B (A0,D6),D5
  2104.  
  2105.         AND.B #$7F,D5
  2106.  
  2107.         MOVE.B 1(A0,D6),D7
  2108.  
  2109.         BPL LL3
  2110.  
  2111.         OR.B #$80,D5
  2112.  
  2113. LL3:    MOVE.B D5,(A0,D6)
  2114.  
  2115.         ADDQ.B #1,D6
  2116.  
  2117.         CMP.B #$18,D6
  2118.  
  2119.         BNE LL4
  2120.  
  2121.         OR.B #$80,$F1(A6)
  2122.  
  2123.         TST.B $D9(A6)
  2124.  
  2125.         BPL LL5
  2126.  
  2127.         ADDQ.B #1,$D6(A6)
  2128.  
  2129.         ADDQ.B #1,$02A5(A6)
  2130.  
  2131.         BTST #2,$028D(A6)
  2132.  
  2133.         BEQ LL7
  2134.  
  2135.         MOVEQ #-1,D0
  2136.  
  2137. LL8:    NOP
  2138.  
  2139.         DBF D0,LL8
  2140.  
  2141. LL7:    BTST #1,$028D(A6)
  2142.  
  2143.         BNE LL7
  2144.  
  2145.         MOVE.B $D6(A6),D6
  2146.  
  2147.         MOVE.L (SP)+,$AC(A6)
  2148.  
  2149.         RTS
  2150.  
  2151.  
  2152.  
  2153. INSLINE:
  2154.  
  2155.         MOVE.B $D6(A6),D6
  2156.  
  2157. INSL:   LEA $D9(A6),A0
  2158.  
  2159. IL0:    ADDQ.B #1,D6
  2160.  
  2161.         TST.B (A0,D6)
  2162.  
  2163.         BPL IL0
  2164.  
  2165.         MOVE.B D6,$02A5(A6)
  2166.  
  2167.         CMP.B #$18,D6
  2168.  
  2169.         BLE INSLIN
  2170.  
  2171.         BSR SCROLL
  2172.  
  2173.         MOVE.B $02A5(A6),D6
  2174.  
  2175.         SUBQ.B #1,D6
  2176.  
  2177.         SUBQ.B #1,$D6(A6)
  2178.  
  2179.         BRA MSB5
  2180.  
  2181.  
  2182.  
  2183. INSLIN:
  2184.  
  2185.         MOVE.L $AC(A6),-(SP)
  2186.  
  2187.         MOVEQ #$19,D6
  2188.  
  2189. INSL1:  SUBQ.B #1,D6
  2190.  
  2191.         BSR VRAM
  2192.  
  2193.         CMP.B $02A5(A6),D6
  2194.  
  2195.         BLE INL0
  2196.  
  2197.         LEA $D8(A6),A0
  2198.  
  2199.         LEA C64+$ECEF,A1
  2200.  
  2201.         MOVE.B (A1,D6),$AC(A6)
  2202.  
  2203.         MOVE.B (A0,D6),D5
  2204.  
  2205.         ST MFLG
  2206.  
  2207.         BSR MOVEUP
  2208.  
  2209.         BRA INSL1
  2210.  
  2211. INL0:   BSR CLRLINE
  2212.  
  2213.         MOVEQ #$17,D6
  2214.  
  2215. INS6:   CMP.B $02A5(A6),D6
  2216.  
  2217.         BLT INS8
  2218.  
  2219.         MOVE.B 2(A0,D6),D5
  2220.  
  2221.         AND.B #$7F,D5
  2222.  
  2223.         TST.B 1(A0,D6)
  2224.  
  2225.         BPL INS7
  2226.  
  2227.         OR.B #$80,D5
  2228.  
  2229. INS7:   MOVE.B D5,2(A0,D6)
  2230.  
  2231.         SUBQ.B #1,D6
  2232.  
  2233.         BNE INS6
  2234.  
  2235. INS8:   MOVE.B $02A5(A6),D6
  2236.  
  2237.         BSR MSB5
  2238.  
  2239.         MOVE.L (SP)+,$AC(A6)
  2240.  
  2241.         RTS
  2242.  
  2243.  
  2244.  
  2245. MOVEUP:
  2246.  
  2247.         AND.B #$03,D5
  2248.  
  2249.         OR.B $0288(A6),D5
  2250.  
  2251.         MOVE.B D5,$AD(A6)
  2252.  
  2253.         MOVEQ #$27,D7
  2254.  
  2255.         MOVE.B $AD(A6),D2
  2256.  
  2257.         ASL #8,D2
  2258.  
  2259.         MOVE.B $AC(A6),D2
  2260.  
  2261.         LEA (A6,D2.L),A0
  2262.  
  2263.         MOVE.B $D2(A6),D2
  2264.  
  2265.         ASL #8,D2
  2266.  
  2267.         MOVE.B $D1(A6),D2
  2268.  
  2269.         LEA (A6,D2.L),A1
  2270.  
  2271. MOVU:   MOVE.B (A0,D7),(A1,D7)
  2272.  
  2273.         SUBQ.B #1,D7
  2274.  
  2275.         BPL MOVU
  2276.  
  2277.         CLR.L D0
  2278.  
  2279.         MOVE.B D6,D0                    *nUMMER DER bILDSCHIRMZEILE
  2280.  
  2281.         MULU #1280,D0
  2282.  
  2283.         MOVE.L SCBASE(PC),A0
  2284.  
  2285.         ADD.L D0,A0
  2286.  
  2287.         MOVE.L A0,A1
  2288.  
  2289.         ADD.L #1280,A1
  2290.  
  2291.         MOVE #319,D0
  2292.  
  2293.         TST.B MFLG
  2294.  
  2295.         BEQ MOVU1
  2296.  
  2297.         CLR.B MFLG
  2298.  
  2299.         SUB.L #1280,A0
  2300.  
  2301.         SUB.L #1280,A1
  2302.  
  2303.         EXG.L A0,A1
  2304.  
  2305. MOVU1:  MOVE.L (A1)+,(A0)+
  2306.  
  2307.         DBF D0,MOVU1
  2308.  
  2309.         RTS
  2310.  
  2311.  
  2312.  
  2313. VRAM:
  2314.  
  2315.         LEA $D9(A6),A0
  2316.  
  2317.         LEA C64+$ECF0,A1
  2318.  
  2319.         MOVE.B (A1,D6),$D1(A6)
  2320.  
  2321.         MOVE.B (A0,D6),D5
  2322.  
  2323.         AND.B #$03,D5
  2324.  
  2325.         OR.B $0288(A6),D5
  2326.  
  2327.         MOVE.B D5,$D2(A6)
  2328.  
  2329.         RTS
  2330.  
  2331.  
  2332.  
  2333. CLRLINE:
  2334.  
  2335.         CLR.L D0
  2336.  
  2337.         MOVE.B D6,D0                    *nUMMER DER bILDSCHIRMZEILE
  2338.  
  2339.         MULU #1280,D0
  2340.  
  2341.         MOVE.L SCBASE(PC),A0
  2342.  
  2343.         ADD.L D0,A0
  2344.  
  2345.         MOVE #319,D0
  2346.  
  2347. CLL1:   CLR.L (A0)+
  2348.  
  2349.         DBF D0,CLL1
  2350.  
  2351.         MOVEQ #$27,D7
  2352.  
  2353.         BSR VRAM
  2354.  
  2355.         MOVE.B $D2(A6),D2
  2356.  
  2357.         ASL #8,D2
  2358.  
  2359.         MOVE.B $D1(A6),D2
  2360.  
  2361.         LEA (A6,D2.L),A0
  2362.  
  2363. CLLN:   MOVE.B #" ",(A0,D7)
  2364.  
  2365.         SUBQ.B #1,D7
  2366.  
  2367.         BPL CLLN
  2368.  
  2369.         RTS
  2370.  
  2371.  
  2372.  
  2373. RSIN:
  2374.  
  2375.         MOVE #auxin,-(SP)
  2376.  
  2377.         TRAP #gemdos
  2378.  
  2379.         ADDQ.L #2,SP
  2380.  
  2381.         MOVE.B D0,D5
  2382.  
  2383.         BRA RT
  2384.  
  2385.  
  2386.  
  2387. RSOUT:
  2388.  
  2389.         MOVE D5,-(SP)
  2390.  
  2391.         MOVE #auxout,-(SP)
  2392.  
  2393.         TRAP #gemdos
  2394.  
  2395.         ADDQ.L #4,SP
  2396.  
  2397.         BRA RT
  2398.  
  2399.  
  2400.  
  2401. TALK:
  2402.  
  2403.         BRA RT
  2404.  
  2405.  
  2406.  
  2407. LSTN:
  2408.  
  2409.         CMP.B #$04,D5                   *dRUCKER?
  2410.  
  2411.         BEQ RT                          *JA-
  2412.  
  2413.         MOVE.L #FILE,COMPNT
  2414.  
  2415. RT:     AND.B #$EE,D4
  2416.  
  2417.         RTS
  2418.  
  2419.  
  2420.  
  2421. SECLSTN:
  2422.  
  2423.         MOVE.B D5,$B9(A6)
  2424.  
  2425.         RTS
  2426.  
  2427.  
  2428.  
  2429. SECTALK:
  2430.  
  2431.         MOVE.B D5,$B9(A6)
  2432.  
  2433.         RTS
  2434.  
  2435.  
  2436.  
  2437. IECOUT:
  2438.  
  2439.         CMP.B #$04,$BA(A6)              *dRUCKER?
  2440.  
  2441.         BNE VCWRITE                     *NEIN-
  2442.  
  2443.         BSR PRINTER
  2444.  
  2445.         BRA RT
  2446.  
  2447.  
  2448.  
  2449. UNTALK:
  2450.  
  2451.         BRA RT
  2452.  
  2453.  
  2454.  
  2455. UNLSTN:
  2456.  
  2457.         CMP.B #$04,$BA(A6)              *dRUCKER?
  2458.  
  2459.         BEQ RT                          *JA-
  2460.  
  2461.         MOVE.L COMPNT,A0
  2462.  
  2463.         CLR.B (A0)
  2464.  
  2465.         BRA VC1541
  2466.  
  2467.  
  2468.  
  2469. IECIN:
  2470.  
  2471.         CMP.B #$04,$BA(A6)              *dRUCKER?
  2472.  
  2473.         BEQ RT                          *JA-
  2474.  
  2475.         BRA VCREAD
  2476.  
  2477.  
  2478.  
  2479. OPEN:
  2480.  
  2481.         MOVE #$F70A,D0                  *"not input file"
  2482.  
  2483.         MOVE.B $B8(A6),D6
  2484.  
  2485.         BEQ RET64
  2486.  
  2487.         MOVE #$F6FE,D0                  *"file open"
  2488.  
  2489.         BSR SLOG                        *LOGISCHE fILENUMMER SUCHEN
  2490.  
  2491.         BEQ RET64
  2492.  
  2493.         MOVE #$F6FB,D0                  *"too many files"
  2494.  
  2495.         MOVE.B $98(A6),D6
  2496.  
  2497.         CMP.B #10,D6
  2498.  
  2499.         BCC RET64
  2500.  
  2501.         ADDQ.B #1,$98(A6)
  2502.  
  2503.         LEA $0259(A6),A0
  2504.  
  2505.         MOVE.B $B8(A6),(A0,D6)          *LOGISCHE fILENUMMER
  2506.  
  2507.         OR.B #$60,$B9(A6)
  2508.  
  2509.         MOVE.B $B9(A6),20(A0,D6)        *sEKUNDRADRESSE
  2510.  
  2511.         MOVE.B $BA(A6),10(A0,D6)        *gERTEADRESSE
  2512.  
  2513.         BEQ OPSC                        *bILDSCHIRMFILE-
  2514.  
  2515.         CMP.B #$02,$BA(A6)              *rs232?
  2516.  
  2517.         BEQ RSOPEN                      *JA-
  2518.  
  2519.         MOVE.B $B9(A6),D0
  2520.  
  2521.         AND.B #$0F,D0
  2522.  
  2523.         CMP.B #$0F,D0                   *kOMMANDOKANAL?
  2524.  
  2525.         BEQ COMCAN                      *JA-
  2526.  
  2527.         MOVE.B $B8(A6),D0               *LOGISCHE fILENUMMER
  2528.  
  2529.         BSR VCOPEN
  2530.  
  2531. OPSC:   BRA RT
  2532.  
  2533. COMCAN: MOVE.B $B7(A6),D7
  2534.  
  2535.         BEQ RT                          *KEIN kOMMANDOSTRING-
  2536.  
  2537.         MOVE.B $BA(A6),D5
  2538.  
  2539.         BSR LSTN
  2540.  
  2541.         MOVE.B $BC(A6),D2
  2542.  
  2543.         ASL #8,D2
  2544.  
  2545.         MOVE.B $BB(A6),D2
  2546.  
  2547. COPCOM: MOVE.B (A6,D2.L),D5
  2548.  
  2549.         BSR IECOUT                      *sTRING AN fLOPPY SENDEN
  2550.  
  2551.         ADDQ #1,D2
  2552.  
  2553.         SUBQ.B #1,D7
  2554.  
  2555.         BNE COPCOM
  2556.  
  2557.         BRA UNLSTN
  2558.  
  2559.  
  2560.  
  2561. RSOPEN:
  2562.  
  2563.         CLR.B $0297(A6)                 *rs232 sTATUS LSCHEN
  2564.  
  2565.         TST.B $B7(A6)
  2566.  
  2567.         BEQ NORSN
  2568.  
  2569.         CLR.L D1
  2570.  
  2571.         MOVE.B $BC(A6),D1
  2572.  
  2573.         ASL #8,D1
  2574.  
  2575.         MOVE.B $BB(A6),D1
  2576.  
  2577.         ADD #3,D1
  2578.  
  2579.         LEA $0293(A6),A0
  2580.  
  2581.         MOVEQ #3,D0
  2582.  
  2583. COPRS:  MOVE.B (A6,D1.L),(A0,D0)
  2584.  
  2585.         SUBQ #1,D1
  2586.  
  2587.         DBF D0,COPRS
  2588.  
  2589. NORSN:  MOVE.B (A0),D5
  2590.  
  2591.         AND.B #$0F,D5                   *bITS FR bAUD-rATE
  2592.  
  2593.         MOVE D5,D0
  2594.  
  2595.         ADD D0,D0
  2596.  
  2597.         MOVEQ #-1,D1
  2598.  
  2599.         MOVE D1,-(SP)
  2600.  
  2601.         MOVE D1,-(SP)
  2602.  
  2603.         MOVE D1,-(SP)
  2604.  
  2605.         MOVE #%10001000,-(SP)
  2606.  
  2607.         CLR -(SP)
  2608.  
  2609.         MOVE BAUD(PC,D0),-(SP)              *bAUD-rATE
  2610.  
  2611.         MOVE #rsconf,-(SP)
  2612.  
  2613.         TRAP #xbios
  2614.  
  2615.         ADD.L #14,SP
  2616.  
  2617.         BRA RT
  2618.  
  2619.  
  2620.  
  2621. BAUD:   DC -1,15,14,13,12,11,9,8,7,6,4,3,2,-1,1,0
  2622.  
  2623.  
  2624.  
  2625. CLOSE:
  2626.  
  2627.         BSR SLOGA                       *LOGISCHE fILENUMMER SUCHEN
  2628.  
  2629.         BNE CLRTS                       *NICHT GEFUNDEN-
  2630.  
  2631.         BSR SFPAR                       *fILEPARAMETER SETZEN
  2632.  
  2633.         CMP.B #$03,$BA(A6)
  2634.  
  2635.         BCS CLOS                        *KEIN iec-fILE-
  2636.  
  2637.         MOVE.B $B9(A6),D0
  2638.  
  2639.         AND.B #$0F,D0
  2640.  
  2641.         CMP.B #$0F,D0                   *kOMMANDOKANAL?
  2642.  
  2643.         BEQ CLOS                        *JA-
  2644.  
  2645.         MOVE.B $B8(A6),D0               *LOGISCHE fILENUMMER
  2646.  
  2647.         BSR VCCLOSE
  2648.  
  2649. CLOS:   SUBQ.B #1,$98(A6)
  2650.  
  2651.         CMP.B $98(A6),D6
  2652.  
  2653.         BEQ CLRTS
  2654.  
  2655.         LEA $0259(A6),A0
  2656.  
  2657.         MOVE.B $98(A6),D7
  2658.  
  2659.         MOVE.B (A0,D7),(A0,D6)
  2660.  
  2661.         MOVE.B 10(A0,D7),10(A0,D6)
  2662.  
  2663.         MOVE.B 20(A0,D7),20(A0,D6)
  2664.  
  2665. CLRTS:  BRA RT
  2666.  
  2667.  
  2668.  
  2669. CHKIN:
  2670.  
  2671.         MOVE #$F701,D0                  *"file not open"
  2672.  
  2673.         BSR SLOG                        *LOGISCHE fILENUMMER SUCHEN
  2674.  
  2675.         BNE RET64
  2676.  
  2677.         BSR SFPAR                       *fILEPARAMETER SETZEN
  2678.  
  2679.         MOVE.B $BA(A6),D5
  2680.  
  2681.         CMP.B #$08,D5                   *fLOPPY?
  2682.  
  2683.         BLT CHKSCR                      *NEIN-
  2684.  
  2685.         MOVE.B $B8(A6),D0               *LOGISCHE fILENUMMER
  2686.  
  2687.         BSR VCCHKIN
  2688.  
  2689. CHKSCR: MOVE.B D5,$99(A6)
  2690.  
  2691.         BRA RT
  2692.  
  2693.  
  2694.  
  2695. CKOUT:
  2696.  
  2697.         MOVE #$F701,D0                  *"file not open"
  2698.  
  2699.         BSR SLOG                        *LOGISCHE fILENUMMER SUCHEN
  2700.  
  2701.         BNE RET64
  2702.  
  2703.         BSR SFPAR
  2704.  
  2705.         MOVE #$F70D,D0                  *"not output file"
  2706.  
  2707.         MOVE.B $BA(A6),D5
  2708.  
  2709.         BEQ RET64
  2710.  
  2711.         CMP.B #$08,D5                   *fLOPPY?
  2712.  
  2713.         BLT CKOUT2                      *NEIN-
  2714.  
  2715.         MOVE.B $B8(A6),D0
  2716.  
  2717.         BSR VCKOUT
  2718.  
  2719. CKOUT2: MOVE.B D5,$9A(A6)
  2720.  
  2721.         BRA RT
  2722.  
  2723.  
  2724.  
  2725. SFPAR:
  2726.  
  2727.         LEA $0259(A6),A0
  2728.  
  2729.         MOVE.B (A0,D6),$B8(A6)          *LOGISCHE fILENUMMER
  2730.  
  2731.         MOVE.B 10(A0,D6),$BA(A6)        *gERTEADRESSE
  2732.  
  2733.         MOVE.B 20(A0,D6),$B9(A6)        *sEKUNDRADRESSE
  2734.  
  2735.         RTS
  2736.  
  2737.  
  2738.  
  2739. SLOG:
  2740.  
  2741.         CLR.B $90(A6)
  2742.  
  2743.         MOVE.B D6,D5
  2744.  
  2745. SLOGA:  LEA $0259(A6),A0
  2746.  
  2747.         MOVE.B $98(A6),D6
  2748.  
  2749. SLOG0:  SUBQ.B #1,D6
  2750.  
  2751.         BMI SLOG1
  2752.  
  2753.         CMP.B (A0,D6),D5
  2754.  
  2755.         BNE SLOG0
  2756.  
  2757. SLOG1:  RTS
  2758.  
  2759.  
  2760.  
  2761. OUTPUT:
  2762.  
  2763.         CLR.L D0
  2764.  
  2765.         MOVE.B #$02,$CD(A6)
  2766.  
  2767.         MOVE.B $D2(A6),D0
  2768.  
  2769.         ASL #8,D0
  2770.  
  2771.         MOVE.B $D1(A6),D0
  2772.  
  2773.         MOVE.B $D3(A6),D7
  2774.  
  2775.         ADD D7,D0
  2776.  
  2777.         MOVE.B D5,(A6,D0)
  2778.  
  2779. TOSCR:  MOVE.B $0288(A6),D1
  2780.  
  2781.         ASL #8,D1
  2782.  
  2783.         SUB D1,D0
  2784.  
  2785. ITSCR:  DIVU #40,D0
  2786.  
  2787.         MOVE D0,D1
  2788.  
  2789.         ADD D1,D1
  2790.  
  2791.         SWAP D0
  2792.  
  2793.         EXT.L D0
  2794.  
  2795.         MOVE.B D0,D3
  2796.  
  2797. COLCOD: ADD D0,D0
  2798.  
  2799.         MOVE.L SCBASE(PC),A0
  2800.  
  2801.         LEA SCTAB,A1
  2802.  
  2803.         ADD (A1,D1),D0
  2804.  
  2805.         ADD.L D0,A0
  2806.  
  2807.         MOVE D5,D0
  2808.  
  2809.         ASL #4,D0
  2810.  
  2811.         BTST #1,C64+$D018
  2812.  
  2813.         BEQ BIG
  2814.  
  2815.         ADD.L #$1000,D0
  2816.  
  2817. BIG:    LEA SET,A1
  2818.  
  2819.         ADD.L D0,A1
  2820.  
  2821.         MOVEQ #7,D0
  2822.  
  2823.         TST.B REZFLG
  2824.  
  2825.         BNE CHR1
  2826.  
  2827. CHR:    MOVE (A1),(A0)
  2828.  
  2829.         MOVE (A1)+,80(A0)
  2830.  
  2831.         ADD.L #160,A0
  2832.  
  2833.         DBF D0,CHR
  2834.  
  2835.         RTS
  2836.  
  2837. CHR1:   AND #$FE,D3
  2838.  
  2839.         ADD COLTAB(PC,D3),A0
  2840.  
  2841. CHR2:   MOVE (A1),D1
  2842.  
  2843.         SWAP D1
  2844.  
  2845.         MOVE (A1)+,D1
  2846.  
  2847.         MOVE.L D1,-(SP)
  2848.  
  2849.         MOVE.L PLANE(PC),D3
  2850.  
  2851.         EOR.L D3,D1
  2852.  
  2853.         AND.L (SP)+,D1
  2854.  
  2855.         MOVEP.L D1,0(A0)
  2856.  
  2857.         ADD.L #160,A0
  2858.  
  2859.         DBF D0,CHR2
  2860.  
  2861.         CLR.L D3
  2862.  
  2863.         RTS
  2864.  
  2865.         
  2866.  
  2867. COLTAB: DC 0,6,12,18,24,30,36,42,48,54
  2868.  
  2869.         DC 60,66,72,78,84,90,96,102,108,114
  2870.  
  2871.  
  2872.  
  2873. ITS:    BSR ITSCR
  2874.  
  2875.         JMP ITRET
  2876.  
  2877.  
  2878.  
  2879. GRAPH:
  2880.  
  2881.         DIVU #320,D2            *bILDSCHIRMZEILE
  2882.  
  2883.         MOVE D2,D0
  2884.  
  2885.         TST.B REZFLG
  2886.  
  2887.         BNE COLGR
  2888.  
  2889.         ASL #4,D0               *GROBE pIXELZEILE
  2890.  
  2891.         CLR D2
  2892.  
  2893.         SWAP D2
  2894.  
  2895.         DIVU #8,D2
  2896.  
  2897.         MOVE D2,D1              *bILDSCHIRMSPALTE
  2898.  
  2899.         SWAP D2                 *FEINE pIXELZEILE
  2900.  
  2901.         ADD D2,D0               *Y-kOORDINATE
  2902.  
  2903.         ADD D2,D0
  2904.  
  2905.         ADD D1,D1               *GROBE pIXELSPALTE
  2906.  
  2907.         MULU #80,D0
  2908.  
  2909.         MOVE.L SCBASE(PC),A0
  2910.  
  2911.         ADD.L D0,A0
  2912.  
  2913.         ADD D1,A0
  2914.  
  2915.         LEA GRTAB,A1
  2916.  
  2917.         ADD D5,D5
  2918.  
  2919.         MOVE (A1,D5),(A0)
  2920.  
  2921.         MOVE (A1,D5),80(A0)
  2922.  
  2923.         CLR.L D2
  2924.  
  2925.         JMP ITRET
  2926.  
  2927. COLGR:  ASL #3,D0               *GROBE pIXELZEILE
  2928.  
  2929.         CLR D2
  2930.  
  2931.         SWAP D2
  2932.  
  2933.         DIVU #8,D2
  2934.  
  2935.         MOVE D2,D1              *bILDSCHIRMSPALTE
  2936.  
  2937.         SWAP D2                 *FEINE pIXELZEILE
  2938.  
  2939.         ADD D2,D0               *Y-kOORDINATE
  2940.  
  2941.         MULU #160,D0
  2942.  
  2943.         ADD D1,D0
  2944.  
  2945.         AND #$FE,D1
  2946.  
  2947.         LEA COLTAB(PC),A0
  2948.  
  2949.         ADD (A0,D1),D0
  2950.  
  2951.         MOVE.L SCBASE(PC),A0
  2952.  
  2953.         ADD.L D0,A0
  2954.  
  2955.         MOVE.B D5,D0
  2956.  
  2957.         ASL #8,D0
  2958.  
  2959.         MOVE.B D5,D0
  2960.  
  2961.         MOVE D0,D5
  2962.  
  2963.         SWAP D5
  2964.  
  2965.         MOVE D0,D5
  2966.  
  2967.         MOVEP.L D5,0(A0)
  2968.  
  2969.         CLR.L D5
  2970.  
  2971.         CLR.L D2
  2972.  
  2973.         JMP ITRET
  2974.  
  2975.  
  2976.  
  2977. GET:
  2978.  
  2979.         MOVE.B $99(A6),D5
  2980.  
  2981.         BNE GET9
  2982.  
  2983.         TST.B $C6(A6)
  2984.  
  2985.         BEQ GRT
  2986.  
  2987.         BSET #31,D4
  2988.  
  2989.         BRA GETCHAR
  2990.  
  2991. GET9:   CMP.B #$02,D5
  2992.  
  2993.         BNE GET0
  2994.  
  2995.         MOVE #auxinst,-(SP)
  2996.  
  2997.         TRAP #gemdos
  2998.  
  2999.         ADDQ.L #2,SP
  3000.  
  3001.         TST D0
  3002.  
  3003.         BEQ NOCHR
  3004.  
  3005.         AND.B #$F7,$0297(A6)
  3006.  
  3007.         MOVE #auxin,-(SP)
  3008.  
  3009.         TRAP #gemdos
  3010.  
  3011.         ADDQ.L #2,SP
  3012.  
  3013.         MOVE.B D0,D5
  3014.  
  3015.         RTS
  3016.  
  3017. NOCHR:  OR.B #$08,$0297(A6)
  3018.  
  3019.         CLR.B D5
  3020.  
  3021.         RTS
  3022.  
  3023. GRT:    MOVE SR,D4
  3024.  
  3025.         BRA RT
  3026.  
  3027.         
  3028.  
  3029. BASIN:
  3030.  
  3031.         MOVE.B $99(A6),D5
  3032.  
  3033.         BNE GET0
  3034.  
  3035.         MOVE.B $D3(A6),$CA(A6)
  3036.  
  3037.         MOVE.B $D6(A6),$C9(A6)
  3038.  
  3039.         BRA BASN
  3040.  
  3041. GET0:   CMP.B #$03,D5
  3042.  
  3043.         BNE GET1
  3044.  
  3045.         MOVE.B D5,$D0(A6)
  3046.  
  3047.         MOVE.B $D5(A6),$C8(A6)
  3048.  
  3049.         BRA BASN
  3050.  
  3051. GET1:   CMP.B #$02,D5
  3052.  
  3053.         BEQ RSIN
  3054.  
  3055.         TST.B $90(A6)
  3056.  
  3057.         BEQ IECIN
  3058.  
  3059.         MOVEQ #$0D,D5
  3060.  
  3061.         BRA RT
  3062.  
  3063.  
  3064.  
  3065. UDTIM:
  3066.  
  3067.         ADDQ.B #1,$A2(A6)
  3068.  
  3069.         BNE TI
  3070.  
  3071.         ADDQ.B #1,$A1(A6)
  3072.  
  3073.         BNE TI
  3074.  
  3075.         ADDQ.B #1,$A0(A6)
  3076.  
  3077. TI:     MOVE.B $A2(A6),D2
  3078.  
  3079.         SUBQ.B #1,D2
  3080.  
  3081.         MOVE.B $A1(A6),D2
  3082.  
  3083.         MOVEQ #$1A,D0
  3084.  
  3085.         SUBX.B D0,D2
  3086.  
  3087.         MOVE.B $A0(A6),D2
  3088.  
  3089.         MOVEQ #$4F,D0
  3090.  
  3091.         SUBX.B D0,D2
  3092.  
  3093.         BLT UD
  3094.  
  3095.         CLR $A0(A6)
  3096.  
  3097.         CLR.B $A2(A6)
  3098.  
  3099. UD:     CLR.B $91(A6)
  3100.  
  3101.         CMP.B #$3F,$CB(A6)
  3102.  
  3103.         BNE UDR
  3104.  
  3105.         BTST #0,$028D(A6)
  3106.  
  3107.         BNE UDR
  3108.  
  3109.         MOVE.B #$7F,$91(A6)
  3110.  
  3111. UDR:    RTS
  3112.  
  3113.  
  3114.  
  3115. PRINT:
  3116.  
  3117.         TST.B $9D(A6)
  3118.  
  3119.         BPL PRI
  3120.  
  3121.         MOVEM D5-D7,-(SP)
  3122.  
  3123. SYS:    MOVE.B (A2)+,D5
  3124.  
  3125.         BEQ PRG
  3126.  
  3127.         BMI EPR
  3128.  
  3129.         BSR BSOUT
  3130.  
  3131.         BRA SYS
  3132.  
  3133. EPR:    AND.B #$7F,D5
  3134.  
  3135.         BSR BSOUT
  3136.  
  3137. PRG:    MOVEM (SP)+,D5-D7
  3138.  
  3139. PRI:    RTS
  3140.  
  3141.  
  3142.  
  3143. BASE:
  3144.  
  3145.         SUB.L A0,A0
  3146.  
  3147.         MOVE.L $44E(A0),SCBASE
  3148.  
  3149.         MOVE.L #SCN,$80(A0)
  3150.  
  3151.         MOVE.L $118(A0),KEYSAV
  3152.  
  3153.         MOVE.L #KEYSCN,$118(A0)
  3154.  
  3155.         MOVE.L $400(A0),EVNTSAV
  3156.  
  3157.         MOVE.L $404(A0),CRITSAV
  3158.  
  3159.         MOVE.L #CRIT,$400(A0)
  3160.  
  3161.         MOVE.L #CRIT,$404(A0)
  3162.  
  3163.         CLR $454(A0)
  3164.  
  3165. CRIT:   RTS
  3166.  
  3167.  
  3168.  
  3169. CON:    SUB.L A0,A0
  3170.  
  3171.         MOVE.L KEYSAV,$118(A0)
  3172.  
  3173.         MOVE.L EVNTSAV,$400(A0)
  3174.  
  3175.         MOVE.L CRITSAV,$404(A0)
  3176.  
  3177.         MOVE #$08,$454(A0)
  3178.  
  3179.         RTS
  3180.  
  3181.  
  3182.  
  3183. RET64:
  3184.  
  3185.         SUBQ #1,D0
  3186.  
  3187.         MOVE.B D0,-1(A4)
  3188.  
  3189.         LSR #8,D0
  3190.  
  3191.         MOVE.B D0,(A4)
  3192.  
  3193.         SUBQ.L #2,A4
  3194.  
  3195.         RTS
  3196.  
  3197.  
  3198.  
  3199. EXIT:
  3200.  
  3201.         CLR.L -(SP)
  3202.  
  3203.         CLR -(SP)
  3204.  
  3205.         CLR -(SP)
  3206.  
  3207.         CLR -(SP)
  3208.  
  3209.         MOVE #xbtimer,-(SP)
  3210.  
  3211.         TRAP #xbios
  3212.  
  3213.         ADD.L #12,SP
  3214.  
  3215.         PEA CON(PC)
  3216.  
  3217.         MOVE #supexec,-(SP)
  3218.  
  3219.         TRAP #xbios
  3220.  
  3221.         ADDQ.L #6,SP
  3222.  
  3223.         PEA MON(PC)             *mAUS EINSCHALTEN
  3224.  
  3225.         MOVE #1,-(SP)
  3226.  
  3227.         MOVE #ikbdws,-(SP)
  3228.  
  3229.         TRAP #xbios
  3230.  
  3231.         ADDQ.L #8,SP
  3232.  
  3233.         MOVE REZ(PC),-(SP)
  3234.  
  3235.         PEA -1
  3236.  
  3237.         PEA -1
  3238.  
  3239.         MOVE #sscreen,-(SP)
  3240.  
  3241.         TRAP #xbios
  3242.  
  3243.         ADD.L #12,SP
  3244.  
  3245.         PEA OLDCOL
  3246.  
  3247.         MOVE #setpalet,-(SP)
  3248.  
  3249.         TRAP #xbios
  3250.  
  3251.         ADDQ.L #6,SP
  3252.  
  3253. ERROR:  CLR -(SP)
  3254.  
  3255.         TRAP #gemdos
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261. KADR:
  3262.  
  3263.         DS.L 6
  3264.  
  3265.         DC.L SECLSTN,SECTALK
  3266.  
  3267.         DS.L 2
  3268.  
  3269.         DC.L SCAN
  3270.  
  3271.         DS.L 1
  3272.  
  3273.         DC.L IECIN,IECOUT
  3274.  
  3275.         DC.L UNTALK,UNLSTN
  3276.  
  3277.         DC.L LSTN,TALK
  3278.  
  3279.         DS.L 3
  3280.  
  3281.         DC.L OPEN,CLOSE
  3282.  
  3283.         DC.L CHKIN,CKOUT
  3284.  
  3285.         DS.L 1
  3286.  
  3287.         DC.L BASIN,BSOUT
  3288.  
  3289.         DC.L FLOAD,FSAVE
  3290.  
  3291.         DS.L 3
  3292.  
  3293.         DC.L GET
  3294.  
  3295.         DS.L 1
  3296.  
  3297.         DC.L UDTIM
  3298.  
  3299.         DS.L 3
  3300.  
  3301.         DC.L INIT
  3302.  
  3303.  
  3304.  
  3305. KEY:
  3306.  
  3307.         DC.B $40,$39,$38,$3B,$08,$0B,$10,$13,$18,$1B,$20,$23,$28,$2B,$00,$3F
  3308.  
  3309.         DC.B $3E,$09,$0E,$11,$16,$0C,$1E,$21,$26,$29,$2E,$31,$01,$40,$0A,$0D
  3310.  
  3311.         DC.B $12,$15,$1A,$1D,$22,$25,$2A,$2D,$32,$36,$40,$40,$19,$17,$14,$1F
  3312.  
  3313.         DC.B $1C,$27,$24,$2F,$2C,$37,$40,$40,$40,$3C,$40,$04,$05,$06,$03,$40
  3314.  
  3315.         DC.B $40,$40,$40,$40,$40,$40,$40,$33,$40,$40,$2B,$40,$40,$02,$28,$40
  3316.  
  3317.         DC.B $07,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40
  3318.  
  3319.         DC.B $40,$40,$40,$40,$40,$37,$31,$18,$1B,$20,$0B,$10,$13,$38,$3B,$08
  3320.  
  3321.         DC.B $23,$2C,$01,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40,$40
  3322.  
  3323.  
  3324.  
  3325. BASIC:  DC.B "C64\_BASIC.C64",0
  3326.  
  3327.  
  3328.  
  3329. KERNAL: DC.B "C64\_KERNAL.C64",0
  3330.  
  3331.  
  3332.  
  3333. FONT:   DC.B "C64\_FONT.C64",0
  3334.  
  3335.  
  3336.  
  3337. FILEADR:DC.L BASIC,KERNAL,FONT
  3338.  
  3339.  
  3340.  
  3341. LOADADR:DC.L C64+$A000,C64+$E000,PRFONT
  3342.  
  3343.  
  3344.  
  3345. OPAGE:  DS.L 1
  3346.  
  3347.  
  3348.  
  3349. MOFF:   DC.B $12
  3350.  
  3351.  
  3352.  
  3353. MON:    DC.B $80,$01
  3354.  
  3355.  
  3356.  
  3357. SCBASE: DS.L 1
  3358.  
  3359.  
  3360.  
  3361. PLANE:  DS.B 4
  3362.  
  3363.  
  3364.  
  3365. CLICK:  DC.B 0,$3B,1,0,2,0,3,0,4,0,5,0,6,0,7,$FE,8,16,13,3,11,$80,12,1,$FF,0
  3366.  
  3367.  
  3368.  
  3369. STCODE: DC.B 0
  3370.  
  3371.  
  3372.  
  3373. C0286:  DS.B 1
  3374.  
  3375.  
  3376.  
  3377. TAB:    DC.L C64+$EB81          *dEFAULT-tASTATURTABELLE
  3378.  
  3379.  
  3380.  
  3381. REZ:    DS 1
  3382.  
  3383.  
  3384.  
  3385. MSG:    DC.B $1B,"e",$1B,"Fc64-eMULATOR v3.00",$0D,$0A,$0A
  3386.  
  3387.         DC.B " {CBM-X} 1987 BY",$0D,$0A
  3388.  
  3389.         DC.B " uWE sEIMET",$0D,$0A
  3390.  
  3391.         DC.B " bUCHENLOCHSTRAE 29",$0D,$0A
  3392.  
  3393.         DC.B " 6750 kAISERSLAUTERN",$0D,$0A
  3394.  
  3395.         DC.B " tELEFON: 0631/21237",$0D,$0A,$0A,$0A
  3396.  
  3397.         DC.B "    bELEGUNG DER sONDERTASTEN:",$0D,$0A,$0A
  3398.  
  3399.         DC.B "hELP: sYSTEM-iNFORMATIONEN",$0D,$0A
  3400.  
  3401.         DC.B "ctrl: sCROLLING VERLANGSAMEN",$0D,$0A
  3402.  
  3403.         DC.B " alt: sCROLLING ANHALTEN",$0D,$0A
  3404.  
  3405.         DC.B " tAB: run/stop",$0D,$0A
  3406.  
  3407.         DC.B "uNDO: rESTORE",$0D,$0A
  3408.  
  3409.         DC.B "  f5: bILDSCHIRMFARBE NDERN",$0D,$0A
  3410.  
  3411.         DC.B "  f6: zEICHENFARBE NDERN",$0D,$0A
  3412.  
  3413.         DC.B "  f7: hARDCOPY",$0D,$0A
  3414.  
  3415.         DC.B "  f8: bITMAP BERWACHEN: "
  3416.  
  3417. FF8:    DC.B "+",$0D,$0A
  3418.  
  3419.         DC.B "  f9: bILDSCHIRMSPEICHER BERWACHEN: "
  3420.  
  3421. FF9:    DC.B "+",$0D,$0A
  3422.  
  3423.         DC.B " f10: eMULATOR VERLASSEN",0
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.         BSS
  3430.  
  3431.  
  3432.  
  3433. OLDCOL: DS 16
  3434.  
  3435.  
  3436.  
  3437. SCTAB:  DS 25
  3438.  
  3439.  
  3440.  
  3441. GRTAB:  DS 256
  3442.  
  3443.  
  3444.  
  3445. KEYSAV: DS.L 1
  3446.  
  3447.  
  3448.  
  3449. EVNTSAV:DS.L 1
  3450.  
  3451.  
  3452.  
  3453. CRITSAV:DS.L 1
  3454.  
  3455.  
  3456.  
  3457. SET:    DS.B 8192
  3458.  
  3459.  
  3460.  
  3461. GRBSS:  DS.B 4096*3
  3462.  
  3463.  
  3464.  
  3465. REZFLG: DS.B 1
  3466.  
  3467.  
  3468.  
  3469. MFLG:   DS.B 1
  3470.  
  3471.  
  3472.  
  3473.         DS.L 100
  3474.  
  3475. STACK:  DS 1
  3476.  
  3477.