home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / emulators / Atari / c64.lzh / C64 / SRC / VC.S < prev   
Text File  |  1986-02-06  |  27KB  |  1,095 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.  
  28.  
  29. prout   = $05
  30.  
  31. setdrv  = $0e
  32.  
  33. dfree   = $36
  34.  
  35. create  = $3c
  36.  
  37. open    = $3d
  38.  
  39. close   = $3e
  40.  
  41. read    = $3f
  42.  
  43. write   = $40
  44.  
  45. unlink  = $41
  46.  
  47. chmode  = $43
  48.  
  49. malloc  = $48
  50.  
  51. mfree   = $49
  52.  
  53. sfirst  = $4e
  54.  
  55. snext   = $4f
  56.  
  57. rename  = $56
  58.  
  59.  
  60.  
  61.  
  62.  
  63.         GLOBL VC1541
  64.  
  65.         GLOBL VCOPEN
  66.  
  67.         GLOBL VCCLOSE
  68.  
  69.         GLOBL VCREAD
  70.  
  71.         GLOBL VCWRITE
  72.  
  73.         GLOBL VCCHKIN
  74.  
  75.         GLOBL VCKOUT
  76.  
  77.         GLOBL COMPNT
  78.  
  79.         GLOBL DTA
  80.  
  81.         GLOBL FSAVE
  82.  
  83.         GLOBL FLOAD
  84.  
  85.         GLOBL FILE
  86.  
  87.         GLOBL PRINTER
  88.  
  89.         GLOBL PRFONT
  90.  
  91.         
  92.  
  93.  
  94.  
  95.         TEXT
  96.  
  97.  
  98.  
  99. FLOAD:
  100.  
  101.         MOVE.B D6,$C3(A6)
  102.  
  103.         MOVE.B D7,$C4(A6)
  104.  
  105.         MOVE.B D5,$93(A6)
  106.  
  107.         CLR.B $90(A6)
  108.  
  109.         BSR IOPAR
  110.  
  111.         LEA C64+$F0C9,A2                *"searching"
  112.  
  113.         BSR PRINT
  114.  
  115.         LEA C64+$F0D4,A2                *"for"
  116.  
  117.         BSR PRINT
  118.  
  119.         LEA FILE,A2
  120.  
  121.         BSR PRINT
  122.  
  123.         CMP.B #"$",FILE
  124.  
  125.         BEQ CAT
  126.  
  127.         CLR -(SP)
  128.  
  129.         PEA FILE
  130.  
  131.         MOVE #sfirst,-(SP)
  132.  
  133.         TRAP #gemdos
  134.  
  135.         ADDQ.L #8,SP
  136.  
  137.         TST D0
  138.  
  139.         BEQ LD0
  140.  
  141.         MOVE #$F704,D0
  142.  
  143.         BRA RET64
  144.  
  145. LD0:    TST.B $93(A6)
  146.  
  147.         BNE VER
  148.  
  149.         LEA C64+$F106,A2                *"loading"
  150.  
  151.         BSR PRINT
  152.  
  153.         CLR -(SP)
  154.  
  155.         PEA FILE
  156.  
  157.         MOVE #open,-(SP)
  158.  
  159.         TRAP #gemdos
  160.  
  161.         ADDQ.L #8,SP
  162.  
  163.         MOVE D0,D2
  164.  
  165.         BMI LOADERR
  166.  
  167.         PEA $AE(A6)
  168.  
  169.         PEA 2
  170.  
  171.         MOVE D2,-(SP)
  172.  
  173.         MOVE #read,-(SP)
  174.  
  175.         TRAP #gemdos
  176.  
  177.         ADD.L #12,SP
  178.  
  179.         TST.L D0
  180.  
  181.         BMI LOADERR
  182.  
  183.         TST.B $B9(A6)
  184.  
  185.         BNE SADR
  186.  
  187.         MOVE.B D6,$AE(A6)
  188.  
  189.         MOVE.B D7,$AF(A6)
  190.  
  191. SADR:   CLR.L D0
  192.  
  193.         MOVE.B $AF(A6),D0
  194.  
  195.         ASL #8,D0
  196.  
  197.         MOVE.B $AE(A6),D0
  198.  
  199.         PEA (A6,D0.L)
  200.  
  201.         MOVE.L DTA+26,-(SP)
  202.  
  203.         MOVE D2,-(SP)
  204.  
  205.         MOVE #read,-(SP)
  206.  
  207.         TRAP #gemdos
  208.  
  209.         ADD.L #12,SP
  210.  
  211.         TST.L D0
  212.  
  213.         BMI LOADERR
  214.  
  215.         MOVE D2,-(SP)
  216.  
  217.         MOVE #close,-(SP)
  218.  
  219.         TRAP #gemdos
  220.  
  221.         ADDQ.L #4,SP
  222.  
  223.         TST D0
  224.  
  225.         BMI LOADERR
  226.  
  227.         MOVE.B DTA+28,D0
  228.  
  229.         ADD.B DTA+29,D6
  230.  
  231.         ADDX.B D0,D7
  232.  
  233.         SUBQ.B #2,D6
  234.  
  235.         BCC LD9
  236.  
  237.         SUBQ.B #1,D7
  238.  
  239. LD9:    MOVE.B D6,$AE(A6)
  240.  
  241.         MOVE.B D7,$AF(A6)
  242.  
  243.         BRA OK
  244.  
  245. VER:    LEA C64+$F116,A2                *"verifying"
  246.  
  247.         BSR PRINT
  248.  
  249.         BRA OK
  250.  
  251.  
  252.  
  253. LOADERR:
  254.  
  255.         OR.B #$BF,$90(A6)
  256.  
  257.         OR.B #$11,D4
  258.  
  259.         MOVEQ #$1D,D5
  260.  
  261.         RTS
  262.  
  263.  
  264.  
  265. CAT:    LEA C64+$F106,A2
  266.  
  267.         BSR PRINT
  268.  
  269.         TST.B $B9(A6)
  270.  
  271.         BEQ SCAT
  272.  
  273.         MOVE.B #$01,$C3(A6)
  274.  
  275.         MOVE.B #$04,$C4(A6)
  276.  
  277. SCAT:   CLR.L D0
  278.  
  279.         MOVE.B $C4(A6),D0
  280.  
  281.         ASL #8,D0
  282.  
  283.         MOVE.B $C3(A6),D0
  284.  
  285.         LEA (A6,D0.L),A2
  286.  
  287.         BSR ODIR
  288.  
  289.         MOVE.L A2,D0
  290.  
  291.         SUB.L A6,D0
  292.  
  293.         MOVE.B D0,D6
  294.  
  295.         LSR #8,D0
  296.  
  297.         MOVE.B D0,D7
  298.  
  299.         BRA LD9
  300.  
  301.  
  302.  
  303. FSAVE:
  304.  
  305.         MOVE.B D6,$AE(A6)
  306.  
  307.         MOVE.B D7,$AF(A6)
  308.  
  309.         LEA (A6,D5),A0
  310.  
  311.         MOVE.B (A0),$C1(A6)
  312.  
  313.         MOVE.B 1(A0),$C2(A6)
  314.  
  315.         BSR IOPAR
  316.  
  317.         LEA C64+$F10E,A2
  318.  
  319.         BSR PRINT
  320.  
  321.         LEA FILE,A2
  322.  
  323.         BSR PRINT
  324.  
  325.         CLR -(SP)
  326.  
  327.         PEA FILE
  328.  
  329.         MOVE #create,-(SP)
  330.  
  331.         TRAP #gemdos
  332.  
  333.         ADDQ.L #8,SP
  334.  
  335.         MOVE D0,D2
  336.  
  337.         BMI SAVEERR
  338.  
  339.         PEA $C1(A6)
  340.  
  341.         PEA 2
  342.  
  343.         MOVE D2,-(SP)
  344.  
  345.         MOVE #write,-(SP)
  346.  
  347.         TRAP #gemdos
  348.  
  349.         ADD.L #12,SP
  350.  
  351.         TST.L D0
  352.  
  353.         BMI SAVEERR
  354.  
  355.         MOVE.B $C2(A6),D0
  356.  
  357.         ASL #8,D0
  358.  
  359.         MOVE.B $C1(A6),D0
  360.  
  361.         MOVE.L D7,D1
  362.  
  363.         ASL #8,D1
  364.  
  365.         MOVE.B D6,D1
  366.  
  367.         SUB D0,D1
  368.  
  369.         BCS SAVEERR
  370.  
  371.         PEA (A6,D0)
  372.  
  373.         MOVE.L D1,-(SP)
  374.  
  375.         MOVE D2,-(SP)
  376.  
  377.         MOVE #write,-(SP)
  378.  
  379.         TRAP #gemdos
  380.  
  381.         ADD.L #12,SP
  382.  
  383.         TST.L D0
  384.  
  385.         BMI SAVEERR
  386.  
  387.         MOVE D2,-(SP)
  388.  
  389.         MOVE #close,-(SP)
  390.  
  391.         TRAP #gemdos
  392.  
  393.         ADDQ.L #4,SP
  394.  
  395.         TST D0
  396.  
  397.         BPL OK
  398.  
  399. SAVEERR:MOVE #$F70D,D0                  *"not output file"
  400.  
  401.         BRA RET64
  402.  
  403.  
  404.  
  405. IOPAR:
  406.  
  407.         MOVE #$F713,D0                  *"illegal device number"
  408.  
  409.         MOVE.B $BA(A6),D3
  410.  
  411.         CMP.B #1,D3
  412.  
  413.         BGT IO0
  414.  
  415.         MOVE.B DRV(PC),D3
  416.  
  417. IO0:    CMP.B #8,D3
  418.  
  419.         BLT IRET64
  420.  
  421.         CMP.B #17,D3
  422.  
  423.         BGT IRET64
  424.  
  425.         MOVE #$F710,D0                  *"missing filename"
  426.  
  427.         TST.B $B7(A6)
  428.  
  429.         BEQ IRET64
  430.  
  431. IO4:    MOVE.B D3,DRV
  432.  
  433.         SUBQ.B #8,D3
  434.  
  435.         MOVE D3,-(SP)
  436.  
  437.         MOVE #setdrv,-(SP)
  438.  
  439.         TRAP #gemdos
  440.  
  441.         ADDQ.L #4,SP
  442.  
  443.         MOVE.B $B7(A6),D3
  444.  
  445.         CLR.L D0
  446.  
  447.         LEA $BB(A6),A1
  448.  
  449.         MOVE.B 1(A1),D0
  450.  
  451.         ASL #8,D0
  452.  
  453.         MOVE.B (A1),D0
  454.  
  455.         LEA (A6,D0.L),A1
  456.  
  457.         LEA FILE,A0
  458.  
  459.         CLR.B (A0,D3)
  460.  
  461.         SUBQ.B #1,D3
  462.  
  463. IO1:    MOVE.B (A1,D3),(A0,D3)
  464.  
  465.         DBF D3,IO1
  466.  
  467.         CLR D3
  468.  
  469.         RTS
  470.  
  471. IRET64: ADDQ.L #4,SP
  472.  
  473.         BRA RET64
  474.  
  475.         
  476.  
  477. VC1541:
  478.  
  479.         CLR.B TRACK                     *sPUR UND sEKTOR
  480.  
  481.         CLR.B SECTOR
  482.  
  483.         LEA FILE,A0
  484.  
  485.         MOVE.L COMPNT(PC),D0
  486.  
  487.         SUB.L A0,D0
  488.  
  489.         TST.B D0                        *lNGE DER kOMMANDOZEILE
  490.  
  491.         BEQ OK                          *KEIN kOMMANDO-
  492.  
  493.         CMP.B #$0D,(A0)
  494.  
  495.         BEQ OK                          *KEIN kOMMANDO-
  496.  
  497.         MOVE.B (A0),D1
  498.  
  499.         MOVEQ #$0B,D0                   *aNZAHL DER bEFEHLE
  500.  
  501.         LEA COM(PC),A1
  502.  
  503. FLP0:   CMP.B (A1,D0),D1
  504.  
  505.         BEQ FLP
  506.  
  507.         DBF D0,FLP0
  508.  
  509.         BRA ERR2
  510.  
  511. FLP:    ASL #2,D0
  512.  
  513.         LEA ADR(PC),A1
  514.  
  515.         MOVE.L (A1,D0),A1
  516.  
  517.         MOVEQ #$3A,D0                   *":"
  518.  
  519.         BSR FIND
  520.  
  521.         JSR (A1)
  522.  
  523.         RTS
  524.  
  525.  
  526.  
  527. *fILE FFNEN, LOGISCHE fILENUMMER IN d0
  528.  
  529. VCOPEN:
  530.  
  531.         CLR.B TEOF
  532.  
  533.         MOVE.B D0,TMP                   *LOGISCHE fILENUMMER
  534.  
  535.         MOVE.B $BA(A6),D3               *gERTEADRESSE
  536.  
  537.         BSR IO4                         *fILENAME NACH a0
  538.  
  539.         MOVEQ #$2C,D0                   *","
  540.  
  541.         BSR FIND                        *SUCHEN
  542.  
  543.         BNE READF                       *NICHT GEFUNDEN-fILE LESEN
  544.  
  545.         CLR.B (A0,D0)                   *eNDE DES fILENAMENS MARKIEREN
  546.  
  547.         CMP.B #"s",1(A0,D0)             *seq?
  548.  
  549.         BEQ SEQ                         *JA-
  550.  
  551.         CMP.B #"p",1(A0,D0)             *prg?
  552.  
  553.         BNE ERR4                        *NEIN-
  554.  
  555. SEQ:    CMP.B #",",2(A0,D0)             *kOMMA?
  556.  
  557.         BNE ERR4                        *NEIN-
  558.  
  559.         CMP.B #"r",3(A0,D0)             *fILE LESEN?
  560.  
  561.         BEQ READF                       *JA-
  562.  
  563.         CMP.B #"w",3(A0,D0)             *fILE SCHREIBEN
  564.  
  565.         BNE ERR4                        *NEIN-
  566.  
  567.         ST RWFLG                        *fLAG FR sCHREIBEN
  568.  
  569.         CLR -(SP)
  570.  
  571.         PEA FILE
  572.  
  573.         MOVE #create,-(SP)
  574.  
  575.         BRA READF1
  576.  
  577. READF:  CLR.B RWFLG
  578.  
  579.         MOVEQ #-1,D0                    *dUMMY-hANDLE
  580.  
  581.         CMP.B #"$",FILE                 *dIRECTORY?
  582.  
  583.         BEQ ODI                         *JA-
  584.  
  585.         CLR -(SP)
  586.  
  587.         PEA FILE
  588.  
  589.         MOVE #open,-(SP)
  590.  
  591. READF1: TRAP #gemdos
  592.  
  593.         ADDQ.L #8,SP
  594.  
  595.         TST D0
  596.  
  597.         BMI ERR4
  598.  
  599. ODI:    CLR D1
  600.  
  601.         MOVE.B $98(A6),D1               *pOSITION DES fILEEINTRAGS
  602.  
  603.         SUBQ.B #1,D1                    *pOSITION IN lISTE
  604.  
  605.         LEA FILENR,A0
  606.  
  607.         MOVE.B TMP,(A0,D1)              *LOGISCHE fILENUMMER
  608.  
  609.         LEA EOFS,A0
  610.  
  611.         CLR.B (A0,D1)                   *eof-fLAG LSCHEN
  612.  
  613.         LEA RWFLGS,A0
  614.  
  615.         MOVE.B RWFLG,(A0,D1)            *fLAG FR lESEN/sCHREIBEN
  616.  
  617.         ADD D1,D1
  618.  
  619.         LEA FHANDLE,A0
  620.  
  621.         MOVE D0,(A0,D1)                 *hANDLE MERKEN
  622.  
  623.         LEA FILLEN,A0
  624.  
  625.         CLR (A0,D1)                     *KEINE GLTIGEN bYTES
  626.  
  627.         ADD D1,D1
  628.  
  629.         MOVE D1,D0
  630.  
  631.         LEA BUFPNT,A0
  632.  
  633.         MULU #$0400,D0                  *bUFFERADRESSE BERECHNEN
  634.  
  635.         ADD.L #FILBUF,D0
  636.  
  637.         MOVE.L D0,(A0,D1)               *aDRESSE FR sCHREIBEN/lESEN
  638.  
  639.         RTS
  640.  
  641.  
  642.  
  643. VCREAD:
  644.  
  645.         MOVE.B $B9(A6),D0
  646.  
  647.         AND.B #$0F,D0
  648.  
  649.         CMP.B #$0F,D0                   *kOMMANDOKANAL?
  650.  
  651.         BEQ READC                       *JA-
  652.  
  653.         TST TLEN
  654.  
  655.         BNE FIL1
  656.  
  657.         ST D5                           *bYTE AN dATEIENDE
  658.  
  659.         TST.B TEOF                      *dATEIENDE?
  660.  
  661.         BNE EOF                         *JA-
  662.  
  663.         BSR VCR1                        *NCHSTEN bLOCK LESEN
  664.  
  665. FIL1:   MOVE.L TPNT(PC),A0
  666.  
  667.         MOVE.B (A0)+,D5
  668.  
  669.         MOVE.L A0,TPNT
  670.  
  671.         SUBQ #1,TLEN
  672.  
  673.         BNE EOF
  674.  
  675.         TST.B TEOF
  676.  
  677.         BEQ EOF
  678.  
  679. CEOF:   OR.B #$40,$90(A6)               *eof
  680.  
  681. EOF:    AND.B #$EE,D4
  682.  
  683.         RTS
  684.  
  685. VCR1:   TST THAND                       *dIRECTORY-fILE?
  686.  
  687.         BMI GETDIR                      *JA-
  688.  
  689.         MOVE.L BUFADR(PC),-(SP)         *bUFFERADRESSE
  690.  
  691.         PEA $1000
  692.  
  693.         MOVE THAND,-(SP)
  694.  
  695.         MOVE #read,-(SP)
  696.  
  697.         TRAP #gemdos
  698.  
  699.         ADD.L #12,SP
  700.  
  701.         MOVE D0,TLEN
  702.  
  703.         BMI ERR4
  704.  
  705.         CMP #$1000,D0
  706.  
  707.         BEQ NOEOF
  708.  
  709. GDIR:   ST TEOF
  710.  
  711. NOEOF:  MOVE.L BUFADR(PC),TPNT
  712.  
  713.         RTS
  714.  
  715. GETDIR: MOVE.L BUFADR(PC),A2
  716.  
  717.         BSR OPDIR
  718.  
  719.         SUB.L BUFADR(PC),A2
  720.  
  721.         MOVE A2,TLEN
  722.  
  723.         BSR OK
  724.  
  725.         BRA GDIR
  726.  
  727. READC:  MOVE.L COMPNT(PC),A0
  728.  
  729.         MOVE.B (A0)+,D5
  730.  
  731.         MOVE.L A0,COMPNT
  732.  
  733.         TST.B (A0)
  734.  
  735.         BNE EOF
  736.  
  737.         BSR OK
  738.  
  739.         BRA CEOF
  740.  
  741.  
  742.  
  743. VCWRITE:
  744.  
  745.         MOVE.B $B9(A6),D0
  746.  
  747.         AND.B #$0F,D0
  748.  
  749.         CMP.B #$0F,D0                   *kOMMANDOKANAL?
  750.  
  751.         BEQ WCOM                        *JA-
  752.  
  753.         MOVE.L TPNT(PC),A0
  754.  
  755.         MOVE.B D5,(A0)+
  756.  
  757.         MOVE.L A0,TPNT
  758.  
  759.         ADDQ #1,TLEN
  760.  
  761.         CMP #$1000,TLEN
  762.  
  763.         BNE NOWR
  764.  
  765.         MOVE.L BUFADR(PC),-(SP)         *bUFFERADRESSE
  766.  
  767.         PEA $1000
  768.  
  769.         MOVE THAND,-(SP)
  770.  
  771.         MOVE #write,-(SP)
  772.  
  773.         TRAP #gemdos
  774.  
  775.         ADD.L #12,SP
  776.  
  777.         TST.L D0
  778.  
  779.         BMI ERR4
  780.  
  781.         CLR TLEN
  782.  
  783.         MOVE.L BUFADR(PC),TPNT
  784.  
  785.         BRA NOWR
  786.  
  787. WCOM:   MOVE.L COMPNT(PC),A0
  788.  
  789.         MOVE.B D5,(A0)+
  790.  
  791.         MOVE.L A0,COMPNT
  792.  
  793. NOWR:   AND.B #$EE,D4
  794.  
  795.         RTS
  796.  
  797.  
  798.  
  799. *fILE SCHLIEEN, LOGISCHE fILENUMMER IN d0
  800.  
  801. VCCLOSE:
  802.  
  803.         BSR GETFIL                      *nUMMER IN tABELLE HOLEN
  804.  
  805.         LEA RWFLGS,A0
  806.  
  807.         TST.B (A0,D1)                   *lESEN?
  808.  
  809.         BEQ CLS1                        *JA-
  810.  
  811.         MOVE D1,D0
  812.  
  813.         LEA BUFPNT,A0
  814.  
  815.         MULU #$1000,D0                  *bUFFERADRESSE BERECHNEN
  816.  
  817.         ADD.L #FILBUF,D0
  818.  
  819.         MOVE.L D0,-(SP)                 *aDRESSE FR sCHREIBEN/lESEN
  820.  
  821.         ADD D1,D1
  822.  
  823.         LEA FILLEN,A0
  824.  
  825.         CLR.L D0
  826.  
  827.         MOVE (A0,D1),D0
  828.  
  829.         MOVE.L D0,-(SP)                 *bLOCKLNGE
  830.  
  831.         LEA FHANDLE,A0
  832.  
  833.         MOVE (A0,D1),-(SP)              *fILE-hANDLE
  834.  
  835.         MOVE #write,-(SP)
  836.  
  837.         TRAP #gemdos
  838.  
  839.         ADD.L #12,SP
  840.  
  841.         TST.L D0
  842.  
  843.         BMI ERR4
  844.  
  845.         BRA CLS2
  846.  
  847. CLS1:   ADD D1,D1
  848.  
  849. CLS2:   LEA FHANDLE,A0
  850.  
  851.         TST (A0,D1)                     *dIRECTORY-fILE?
  852.  
  853.         BMI CLCOM                       *JA-
  854.  
  855.         MOVE (A0,D1),-(SP)
  856.  
  857.         MOVE #close,-(SP)
  858.  
  859.         TRAP #gemdos
  860.  
  861.         ADDQ.L #4,SP
  862.  
  863. CLCOM:  RTS
  864.  
  865.  
  866.  
  867. *eIN-/aUSGABE AUF iec-bUS, LOGISCHE fILENUMMER IN d0
  868.  
  869. VCCHKIN:
  870.  
  871. VCKOUT:
  872.  
  873.         TST ONR
  874.  
  875.         BEQ FCHK
  876.  
  877.         MOVE ONR,D1
  878.  
  879.         SUBQ #1,D1
  880.  
  881.         LEA EOFS,A0
  882.  
  883.         MOVE.B TEOF,(A0,D1)             *eof-fLAG
  884.  
  885.         ADD D1,D1
  886.  
  887.         LEA FILLEN,A0
  888.  
  889.         MOVE TLEN,(A0,D1)               *bLOCKLNGE
  890.  
  891.         ADD D1,D1
  892.  
  893.         LEA BUFPNT,A0
  894.  
  895.         MOVE.L TPNT(PC),(A0,D1)         *bUFFERPOINTER
  896.  
  897. FCHK:   BSR GETFIL                      *pARAMETER HOLEN
  898.  
  899.         MOVE D1,ONR
  900.  
  901.         ADDQ #1,ONR                     *ALS GLTIG MARKIEREN
  902.  
  903.         MOVE D1,D0
  904.  
  905.         LEA EOFS,A0
  906.  
  907.         MOVE.B (A0,D1),TEOF             *eof-fLAG
  908.  
  909.         ADD D1,D1
  910.  
  911.         LEA FILLEN,A0
  912.  
  913.         MOVE (A0,D1),TLEN               *bLOCKLNGE
  914.  
  915.         LEA FHANDLE,A0
  916.  
  917.         MOVE (A0,D1),THAND              *fILE-hANDLE
  918.  
  919.         ADD D1,D1
  920.  
  921.         LEA BUFPNT,A0
  922.  
  923.         MOVE.L (A0,D1),TPNT             *bUFFERPOINTER
  924.  
  925.         MULU #$1000,D0                  *bUFFERADRESSE BERECHNEN
  926.  
  927.         LEA FILBUF,A0
  928.  
  929.         ADD.L D0,A0
  930.  
  931.         MOVE.L A0,BUFADR                *aDRESSE FR sCHREIBEN/lESEN
  932.  
  933.         RTS
  934.  
  935.  
  936.  
  937. GETFIL:
  938.  
  939.         LEA FILENR,A0
  940.  
  941. GF:     CMP.B (A0)+,D0
  942.  
  943.         BNE GF
  944.  
  945.         SUB.L #FILENR+1,A0
  946.  
  947.         MOVE A0,D1
  948.  
  949.         RTS
  950.  
  951.  
  952.  
  953. OPDIR:
  954.  
  955.         MOVE #$0401,(A2)+       *pROGRAMMSTART BEI $0400
  956.  
  957. ODIR:   ST (A2)+                *dUMMY FR zEILENNUMMER
  958.  
  959.         ST (A2)+
  960.  
  961.         MOVE.B $BA(A6),(A2)     *dRIVENUMMER
  962.  
  963.         SUBQ.B #8,(A2)+
  964.  
  965.         CLR.B (A2)+
  966.  
  967.         MOVE.B #$12,(A2)+       *rvs on
  968.  
  969.         MOVE.B #$22,(A2)+
  970.  
  971.         LEA DTA,A1
  972.  
  973.         MOVE #$08,-(SP)         *dISKNAME SUCHEN
  974.  
  975.         PEA JOKER(PC)           *"*.*"
  976.  
  977.         MOVE #sfirst,-(SP)
  978.  
  979.         TRAP #gemdos
  980.  
  981.         ADDQ.L #8,SP
  982.  
  983.         TST D0
  984.  
  985.         BNE VOL1
  986.  
  987. VOL0:   TST.B 30(A1,D0)
  988.  
  989.         BEQ VOL2
  990.  
  991.         MOVE.B 30(A1,D0),(A2)+  *dISKNAME BERTRAGEN
  992.  
  993.         ADDQ.B #1,D0
  994.  
  995.         BRA VOL0
  996.  
  997. VOL1:   CLR D0        
  998.  
  999. VOL2:   CMP.B #16,D0
  1000.  
  1001.         BEQ VOL3
  1002.  
  1003.         MOVE.B #" ",(A2)+
  1004.  
  1005.         ADDQ.B #1,D0
  1006.  
  1007.         BRA VOL2
  1008.  
  1009. VOL3:   LEA FORMAT(PC),A0       *"st 2a"
  1010.  
  1011. VOL4:   MOVE.B (A0)+,(A2)+
  1012.  
  1013.         BNE VOL4
  1014.  
  1015.         MOVE #$01,-(SP)
  1016.  
  1017.         PEA JOKER(PC)           *"*.*"
  1018.  
  1019.         MOVE #sfirst,-(SP)
  1020.  
  1021.         TRAP #gemdos
  1022.  
  1023.         ADDQ.L #8,SP
  1024.  
  1025.         TST D0
  1026.  
  1027.         BNE DIR0                *NICHT GEFUNDEN-
  1028.  
  1029. DIR9:   BSR DIR                 *dIRECTORYEINTRAG ERZEUGEN
  1030.  
  1031.         MOVE #snext,-(SP)
  1032.  
  1033.         TRAP #gemdos
  1034.  
  1035.         ADDQ.L #2,SP
  1036.  
  1037.         TST D0
  1038.  
  1039.         BEQ DIR9                *NCHSTE dATEI-
  1040.  
  1041. DIR0:   CLR -(SP)
  1042.  
  1043.         LEA BUFFER,A1
  1044.  
  1045.         MOVE.L A1,-(SP)
  1046.  
  1047.         MOVE #dfree,-(SP)
  1048.  
  1049.         TRAP #gemdos
  1050.  
  1051.         ADDQ.L #8,SP
  1052.  
  1053.         MOVE.L (A1),D0
  1054.  
  1055.         MULU 14(A1),D0          *dISK-sPEICHERPLATZ BERECHNEN
  1056.  
  1057.         MULU 10(A1),D0
  1058.  
  1059.         DIVU #256,D0
  1060.  
  1061.         ST (A2)+                *dUMMY-zEILENNUMMER
  1062.  
  1063.         ST (A2)+
  1064.  
  1065.         MOVE.B D0,(A2)+         *pLATZ AUF dISK
  1066.  
  1067.         LSR #8,D0
  1068.  
  1069.         MOVE.B D0,(A2)+
  1070.  
  1071.         LEA FREE(PC),A0         *"blocks free."
  1072.  
  1073. DIRA:   MOVE.B (A0)+,(A2)+
  1074.  
  1075.         BNE DIRA
  1076.  
  1077.         CLR.B (A2)+             *pROGRAMMENDE
  1078.  
  1079.         CLR.B (A2)+
  1080.  
  1081.         RTS
  1082.  
  1083.  
  1084.  
  1085. DIR:
  1086.  
  1087.         ST (A2)+                *dUMMY-zEILENNUMMER
  1088.  
  1089.         ST (A2)+
  1090.  
  1091.         MOVE.L 26(A1),D0        *dATEILNGE
  1092.  
  1093.         ADD.L #258,D0           *bLOCKZAHL BERECHNEN
  1094.  
  1095.         DIVU #254,D0
  1096.  
  1097.         MOVE.B D0,(A2)+
  1098.  
  1099.         ROR #8,D0
  1100.  
  1101.         MOVE.B D0,(A2)+
  1102.  
  1103.         ROR #8,D0
  1104.  
  1105.         CMP #10,D0
  1106.  
  1107.         BGE DIR3
  1108.  
  1109.         MOVE.B #" ",(A2)+
  1110.  
  1111. DIR3:   CMP #100,D0
  1112.  
  1113.         BGE DIR4
  1114.  
  1115.         MOVE.B #" ",(A2)+
  1116.  
  1117. DIR4:   MOVE.B #" ",(A2)+
  1118.  
  1119.         MOVE.B #$22,(A2)+       *bEGINN DES fILENAMENS
  1120.  
  1121.         CLR D0
  1122.  
  1123. DIR1:   MOVE.B 30(A1,D0),D1
  1124.  
  1125.         BEQ DIR6                *eNDE DES fILENAMENS-
  1126.  
  1127.         CMP.B #".",D1
  1128.  
  1129.         BEQ DIR6
  1130.  
  1131.         MOVE.B D1,(A2)+
  1132.  
  1133.         ADDQ.B #1,D0
  1134.  
  1135.         BRA DIR1
  1136.  
  1137. DIR6:   MOVE.B #$22,(A2)+       *eNDE DES fILENAMENS
  1138.  
  1139.         MOVE.B D0,D3
  1140.  
  1141. DIR2:   CMP.B #17,D0
  1142.  
  1143.         BEQ DIR5
  1144.  
  1145.         MOVE.B #" ",(A2)+       *mIT sPACES FLLEN
  1146.  
  1147.         ADDQ.B #1,D0
  1148.  
  1149.         BRA DIR2
  1150.  
  1151. DIR5:   TST.B 30(A1,D3)         *eXTENSION?
  1152.  
  1153.         BEQ DIR7                *NEIN-
  1154.  
  1155.         TST.B 31(A1,D3)
  1156.  
  1157.         BNE DI0                 *eXTENSION UNTERSUCHEN
  1158.  
  1159. DIR7:   MOVE.B #" ",(A2)+
  1160.  
  1161.         MOVE.B #" ",(A2)+
  1162.  
  1163.         MOVE.B #" ",(A2)+
  1164.  
  1165.         BRA DI3                 *kEINE eXTENSION
  1166.  
  1167. DI0:    MOVE.B 31(A1,D3),(A2)+
  1168.  
  1169.         TST.B 32(A1,D3)
  1170.  
  1171.         BNE DI1
  1172.  
  1173.         MOVE.B #" ",(A2)+
  1174.  
  1175.         MOVE.B #" ",(A2)+
  1176.  
  1177.         BRA DI3
  1178.  
  1179. DI1:    MOVE.B 32(A1,D3),(A2)+
  1180.  
  1181.         TST.B 33(A1,D3)
  1182.  
  1183.         BNE DI2
  1184.  
  1185.         MOVE.B #" ",(A2)+
  1186.  
  1187.         BRA DI3
  1188.  
  1189. DI2:    MOVE.B 33(A1,D3),(A2)+
  1190.  
  1191. DI3:    BTST #0,21(A1)
  1192.  
  1193.         BEQ DIRB                *UNGESCHTZTES fILE-
  1194.  
  1195.         MOVE.B #"<",(A2)+       *GESCHTZTES fILE KENNZEICHNEN
  1196.  
  1197. DIRB:   CLR.B (A2)+             *zEILENENDE
  1198.  
  1199.         RTS
  1200.  
  1201.  
  1202.  
  1203. OK:     LEA MSG0(PC),A0
  1204.  
  1205.         AND.B #$EE,D4
  1206.  
  1207.         BRA ERR
  1208.  
  1209. ERR1:   LEA MSG1(PC),A0
  1210.  
  1211.         BRA ERR
  1212.  
  1213. ERR2:   LEA MSG2(PC),A0
  1214.  
  1215.         BRA ERR
  1216.  
  1217. ERR3:   LEA MSG3(PC),A0
  1218.  
  1219.         BRA ERR
  1220.  
  1221. ERR4:   LEA MSG4(PC),A0
  1222.  
  1223.         BRA ERR
  1224.  
  1225. ERR5:   LEA MSG5(PC),A0
  1226.  
  1227. ERR:    LEA FILE,A1
  1228.  
  1229.         MOVE.L A1,COMPNT
  1230.  
  1231. CERR:   MOVE.B (A0)+,(A1)+
  1232.  
  1233.         BNE CERR
  1234.  
  1235.         MOVE.B #",",-1(A1)
  1236.  
  1237.         MOVE.B TRACK,D0
  1238.  
  1239.         BSR ASC
  1240.  
  1241.         MOVE.B #",",(A1)+
  1242.  
  1243.         MOVE.B SECTOR,D0
  1244.  
  1245. ASC:    MOVE.B #"0"-1,D1
  1246.  
  1247. ASC0:   ADDQ.B #1,D1
  1248.  
  1249.         SUB.B #10,D0
  1250.  
  1251.         BCC ASC0
  1252.  
  1253.         ADD.B #10,D0
  1254.  
  1255.         MOVE.B D1,(A1)+
  1256.  
  1257.         ADD.B #"0",D0
  1258.  
  1259.         MOVE.B D0,(A1)+
  1260.  
  1261.         CLR.B (A1)
  1262.  
  1263.         RTS
  1264.  
  1265.  
  1266.  
  1267. VALIDATE:
  1268.  
  1269.         BRA OK
  1270.  
  1271.  
  1272.  
  1273. INIT:
  1274.  
  1275.         BRA OK
  1276.  
  1277.  
  1278.  
  1279. MEMORY:
  1280.  
  1281.         BRA OK
  1282.  
  1283.  
  1284.  
  1285. BLOCK:
  1286.  
  1287.         BRA OK
  1288.  
  1289.  
  1290.  
  1291. USER:
  1292.  
  1293.         CMP.B #"9",1(A0)
  1294.  
  1295.         BEQ ERR3                *"vc 1541 emulator"
  1296.  
  1297.         BRA OK
  1298.  
  1299.  
  1300.  
  1301. RECORD:
  1302.  
  1303.         BRA OK
  1304.  
  1305.  
  1306.  
  1307. LBL:
  1308.  
  1309.         BRA OK
  1310.  
  1311.  
  1312.  
  1313. COPY:
  1314.  
  1315.         BNE ERR2                *KEIN dOPPELPUNKT-
  1316.  
  1317.         LEA 1(A0,D0),A2
  1318.  
  1319.         MOVE.L A2,A0
  1320.  
  1321.         MOVEQ #$3D,D0           *"="
  1322.  
  1323.         BSR FIND                *SUCHEN
  1324.  
  1325.         BNE ERR2
  1326.  
  1327.         TST.B 1(A0,D0)
  1328.  
  1329.         BEQ ERR2                *KEIN fILENAME-
  1330.  
  1331.         MOVE.B D0,D3
  1332.  
  1333.         CLR.B (A0,D0)           *eNDE DES fILENAMENS MARKIEREN
  1334.  
  1335.         CLR -(SP)
  1336.  
  1337.         MOVE.L A2,-(SP)         *NEUER fILENAME
  1338.  
  1339.         MOVE #sfirst,-(SP)
  1340.  
  1341.         TRAP #gemdos
  1342.  
  1343.         ADDQ.L #8,SP
  1344.  
  1345.         TST D0
  1346.  
  1347.         BEQ ERR5                *"file exists"
  1348.  
  1349.         MOVE.L DTA+26,-(SP)
  1350.  
  1351.         MOVE #malloc,-(SP)
  1352.  
  1353.         TRAP #gemdos
  1354.  
  1355.         ADDQ.L #6,SP
  1356.  
  1357.         TST.L D0
  1358.  
  1359.         BMI OK
  1360.  
  1361.         MOVE.L D0,D2
  1362.  
  1363.         CLR -(SP)
  1364.  
  1365.         PEA 1(A2,D3)
  1366.  
  1367.         MOVE #open,-(SP)
  1368.  
  1369.         TRAP #gemdos
  1370.  
  1371.         ADDQ.L #8,SP
  1372.  
  1373.         TST.L D0
  1374.  
  1375.         BMI COK
  1376.  
  1377.         MOVE D0,D3
  1378.  
  1379.         MOVE.L D2,-(SP)
  1380.  
  1381.         MOVE.L DTA+26,-(SP)
  1382.  
  1383.         MOVE D3,-(SP)
  1384.  
  1385.         MOVE #read,-(SP)
  1386.  
  1387.         TRAP #gemdos
  1388.  
  1389.         ADD.L #12,SP
  1390.  
  1391.         TST.L D0
  1392.  
  1393.         BMI COK
  1394.  
  1395.         MOVE D3,-(SP)
  1396.  
  1397.         MOVE #close,-(SP)
  1398.  
  1399.         TRAP #gemdos
  1400.  
  1401.         ADDQ.L #4,SP
  1402.  
  1403.         TST D0
  1404.  
  1405.         BMI COK
  1406.  
  1407.         CLR -(SP)
  1408.  
  1409.         MOVE.L A2,-(SP)
  1410.  
  1411.         MOVE #create,-(SP)
  1412.  
  1413.         TRAP #gemdos
  1414.  
  1415.         ADDQ.L #8,SP
  1416.  
  1417.         TST.L D0
  1418.  
  1419.         BMI COK
  1420.  
  1421.         MOVE D0,D3
  1422.  
  1423.         MOVE.L D2,-(SP)
  1424.  
  1425.         MOVE.L DTA+26,-(SP)
  1426.  
  1427.         MOVE D3,-(SP)
  1428.  
  1429.         MOVE #write,-(SP)
  1430.  
  1431.         TRAP #gemdos
  1432.  
  1433.         ADD.L #12,SP
  1434.  
  1435.         TST.L D0
  1436.  
  1437.         BMI COK
  1438.  
  1439.         MOVE D3,-(SP)
  1440.  
  1441.         MOVE #close,-(SP)
  1442.  
  1443.         TRAP #gemdos
  1444.  
  1445.         ADDQ.L #4,SP
  1446.  
  1447. COK:    MOVE.L D2,-(SP)
  1448.  
  1449.         MOVE #mfree,-(SP)
  1450.  
  1451.         TRAP #gemdos
  1452.  
  1453.         ADDQ.L #6,SP
  1454.  
  1455.         CLR.L D2
  1456.  
  1457.         BRA OK
  1458.  
  1459.  
  1460.  
  1461. RENAME:
  1462.  
  1463.         BNE ERR2                *KEIN dOPPELPUNKT-
  1464.  
  1465.         LEA 1(A0,D0),A2
  1466.  
  1467.         MOVE.L A2,A0
  1468.  
  1469.         MOVEQ #$3D,D0           *"="
  1470.  
  1471.         BSR FIND                *SUCHEN
  1472.  
  1473.         BNE ERR2
  1474.  
  1475.         MOVE.B D0,D3
  1476.  
  1477.         CLR.B (A0,D0)           *eNDE DES fILENAMENS MARKIEREN
  1478.  
  1479.         CLR -(SP)
  1480.  
  1481.         MOVE.L A2,-(SP)         *NEUER fILENAME
  1482.  
  1483.         MOVE #sfirst,-(SP)
  1484.  
  1485.         TRAP #gemdos
  1486.  
  1487.         ADDQ.L #8,SP
  1488.  
  1489.         TST D0
  1490.  
  1491.         BEQ ERR5                *"file exists"
  1492.  
  1493.         MOVE.L A2,-(SP)
  1494.  
  1495.         PEA 1(A2,D3)
  1496.  
  1497.         CLR -(SP)
  1498.  
  1499.         MOVE #rename,-(SP)
  1500.  
  1501.         TRAP #gemdos
  1502.  
  1503.         ADD.L #12,SP
  1504.  
  1505.         TST D0
  1506.  
  1507.         BEQ OK
  1508.  
  1509.         BRA ERR4                *"file not found"
  1510.  
  1511.  
  1512.  
  1513. SCRATCH:
  1514.  
  1515.         BNE ERR2                *KEIN dOPPELPUNKT-
  1516.  
  1517. S2:     LEA 1(A0,D0),A2
  1518.  
  1519.         TST.B (A2)
  1520.  
  1521.         BEQ ERR1                *KEIN fILENAME-
  1522.  
  1523.         MOVE.L A2,A0
  1524.  
  1525.         MOVEQ #$2C,D0           *kOMMA
  1526.  
  1527.         BSR FIND                *SUCHEN
  1528.  
  1529.         CLR.B (A0,D0)
  1530.  
  1531. S4:     MOVE.L A2,-(SP)
  1532.  
  1533.         MOVE #unlink,-(SP)
  1534.  
  1535.         TRAP #gemdos
  1536.  
  1537.         ADDQ.L #6,SP
  1538.  
  1539.         TST D0
  1540.  
  1541.         BMI S3
  1542.  
  1543.         ADDQ.B #1,TRACK         *ZHLT GELSCHTE fILES
  1544.  
  1545.         BRA S4                  *NCHSTES fILE
  1546.  
  1547. S3:     MOVE.L A2,A0
  1548.  
  1549.         CLR D0
  1550.  
  1551.         BSR FIND
  1552.  
  1553.         BRA S2                  *NCHSTES fILE-
  1554.  
  1555.  
  1556.  
  1557. NEW:
  1558.  
  1559.         BRA OK
  1560.  
  1561.  
  1562.  
  1563. TOGGLE:
  1564.  
  1565.         BNE ERR2                *KEIN dOPPELPUNKT-
  1566.  
  1567. T2:     LEA 1(A0,D0),A2
  1568.  
  1569.         TST.B (A2)
  1570.  
  1571.         BEQ OK                  *KEIN fILENAME-
  1572.  
  1573.         MOVE.L A2,A0
  1574.  
  1575.         MOVEQ #$2C,D0           *kOMMA
  1576.  
  1577.         BSR FIND                *SUCHEN
  1578.  
  1579.         CLR.B (A0,D0)
  1580.  
  1581. T4:     CLR.L -(SP)
  1582.  
  1583.         MOVE.L A2,-(SP)
  1584.  
  1585.         MOVE #chmode,-(SP)
  1586.  
  1587.         TRAP #gemdos
  1588.  
  1589.         ADD.L #10,SP
  1590.  
  1591.         TST D0
  1592.  
  1593.         BMI T3
  1594.  
  1595.         BCHG #0,D0
  1596.  
  1597.         MOVE D0,-(SP)
  1598.  
  1599.         MOVE #$01,-(SP)
  1600.  
  1601.         MOVE.L A2,-(SP)
  1602.  
  1603.         MOVE #chmode,-(SP)
  1604.  
  1605.         TRAP #gemdos
  1606.  
  1607.         ADD.L #10,SP
  1608.  
  1609. T3:     MOVE.L A2,A0
  1610.  
  1611.         CLR D0
  1612.  
  1613.         BSR FIND
  1614.  
  1615.         BRA T2                  *NCHSTES fILE-
  1616.  
  1617.  
  1618.  
  1619. *zEICHEN IN d0 SUCHEN, pOINTER AUF sTRING IN a0, pOSITION IN d0
  1620.  
  1621. FIND:
  1622.  
  1623.         MOVE.B D0,D1
  1624.  
  1625.         CLR D0
  1626.  
  1627. FIND1:  MOVE.B (A0,D0),D2
  1628.  
  1629.         BEQ NFOUND
  1630.  
  1631.         CMP.B D2,D1
  1632.  
  1633.         BEQ FOUND
  1634.  
  1635.         ADDQ #1,D0
  1636.  
  1637.         BRA FIND1
  1638.  
  1639. NFOUND: AND #$FB,CCR
  1640.  
  1641. FOUND:  RTS
  1642.  
  1643.  
  1644.  
  1645. *dRUCKEREMULATION
  1646.  
  1647. PRINTER:
  1648.  
  1649.         MOVE.B $B9(A6),D3
  1650.  
  1651.         BMI SA0
  1652.  
  1653.         AND.B #$0F,D3
  1654.  
  1655.         ASL.B #2,D3
  1656.  
  1657.         MOVE.L SAADR(PC,D3),A0
  1658.  
  1659.         JMP (A0)
  1660.  
  1661.  
  1662.  
  1663. SAADR:  DC.L SA0,SA1,SA2,SA3,SA4,SA5,SA6,SA7,SA8,SA9,SA10
  1664.  
  1665.  
  1666.  
  1667. OUT:    CMP.B #$0A,D5
  1668.  
  1669.         BEQ PRRT
  1670.  
  1671.         MOVE D5,D0
  1672.  
  1673.         BSR PROUT
  1674.  
  1675.         CMP.B #$0D,D5
  1676.  
  1677.         BNE PRRT
  1678.  
  1679.         MOVEQ #$0A,D0
  1680.  
  1681.         BSR PROUT
  1682.  
  1683.         CLR.B REVFLG
  1684.  
  1685.         CLR.B QFLG
  1686.  
  1687.         CLR CHRPNT
  1688.  
  1689. PRRT:   RTS
  1690.  
  1691.  
  1692.  
  1693. SPC:
  1694.  
  1695.         MOVEQ #$20,D0
  1696.  
  1697.         BRA PROUT
  1698.  
  1699. CR:
  1700.  
  1701.         CLR CHRPNT
  1702.  
  1703.         CLR.B REVFLG
  1704.  
  1705.         CLR.B QFLG
  1706.  
  1707.         MOVEQ #$0D,D0
  1708.  
  1709.         BRA PROUT
  1710.  
  1711.  
  1712.  
  1713. SA0:    CLR.B CASEFLG
  1714.  
  1715. SA1:
  1716.  
  1717.         CMP.B #$0D,D5
  1718.  
  1719.         BEQ CROUT
  1720.  
  1721.         CMP.B #$22,D5
  1722.  
  1723.         BNE QUOTE
  1724.  
  1725.         NOT.B QFLG
  1726.  
  1727.         BRA QOUT
  1728.  
  1729. QUOTE:  TST.B QFLG
  1730.  
  1731.         BNE QOUT
  1732.  
  1733.         CMP.B #$12,D5
  1734.  
  1735.         BNE REV
  1736.  
  1737.         ST REVFLG
  1738.  
  1739.         RTS
  1740.  
  1741. REV:    CMP.B #$92,D5
  1742.  
  1743.         BNE NOREV
  1744.  
  1745.         CLR.B REVFLG
  1746.  
  1747.         RTS
  1748.  
  1749. NOREV:  CMP.B #$11,D5
  1750.  
  1751.         BNE NOLO
  1752.  
  1753.         ST CASEFLG
  1754.  
  1755.         RTS
  1756.  
  1757. NOLO:   CMP.B #$91,D5
  1758.  
  1759.         BNE NOUP
  1760.  
  1761.         CLR.B CASEFLG
  1762.  
  1763.         RTS
  1764.  
  1765. NOUP:   CMP.B #$01,D5
  1766.  
  1767.         BNE ENH
  1768.  
  1769.         ST EXPFLG
  1770.  
  1771.         RTS
  1772.  
  1773. ENH:    CMP.B #$81,D5
  1774.  
  1775.         BNE NOENH
  1776.  
  1777.         CLR.B EXPFLG
  1778.  
  1779.         RTS
  1780.  
  1781. NOENH:  CMP.B #$1D,D5
  1782.  
  1783.         BEQ SPC
  1784.  
  1785.         CMP.B #$8D,D5
  1786.  
  1787.         BEQ CR
  1788.  
  1789.         CMP.B #$20,D5
  1790.  
  1791.         BCS OUT
  1792.  
  1793. QOUT:   CMP.B #$FE,D5
  1794.  
  1795.         BEQ DEFCHR
  1796.  
  1797.         MOVE.L D5,D0
  1798.  
  1799.         TST.B D0
  1800.  
  1801.         BMI GRPRNT
  1802.  
  1803.         CMP.B #$20,D0
  1804.  
  1805.         BLT QCODE
  1806.  
  1807.         CMP.B #$60,D0
  1808.  
  1809.         BLT CODE1
  1810.  
  1811.         AND.B #$DF,D0
  1812.  
  1813.         BRA NORMAL
  1814.  
  1815. CODE1:  AND.B #$3F,D0
  1816.  
  1817.         BRA NORMAL
  1818.  
  1819. GRPRNT: AND.B #$7F,D0
  1820.  
  1821.         CMP.B #$20,D0
  1822.  
  1823.         BLT QCODE1
  1824.  
  1825.         CMP.B #$7F,D0
  1826.  
  1827.         BNE NOPI
  1828.  
  1829.         MOVEQ #$5E,D0
  1830.  
  1831.         BRA NORMAL
  1832.  
  1833. QCODE1: OR.B #$40,D0
  1834.  
  1835. QCODE:  OR.B #$80,D0
  1836.  
  1837.         BRA NORMAL
  1838.  
  1839. NOPI:   OR.B #$40,D0
  1840.  
  1841. NORMAL: ASL #3,D0
  1842.  
  1843.         TST.B CASEFLG
  1844.  
  1845.         BEQ NOSML
  1846.  
  1847.         ADD.L #2048,D0
  1848.  
  1849. NOSML:  LEA PRFONT,A1
  1850.  
  1851.         ADD.L D0,A1
  1852.  
  1853.         BRA NODEF
  1854.  
  1855. DEFCHR: LEA CHAR,A1
  1856.  
  1857. NODEF:  MOVEQ #7,D2
  1858.  
  1859.         MOVE.L PBUFPNT(PC),A0
  1860.  
  1861. SETOUT: MOVE.B (A1)+,D3
  1862.  
  1863.         TST.B REVFLG
  1864.  
  1865.         BEQ NOREV2
  1866.  
  1867.         NOT.B D3
  1868.  
  1869. NOREV2: MOVE.B D3,(A0)+
  1870.  
  1871.         TST.B EXPFLG
  1872.  
  1873.         BEQ NOEXP2
  1874.  
  1875.         MOVE.B D3,(A0)+
  1876.  
  1877. NOEXP2: DBF D2,SETOUT
  1878.  
  1879.         MOVE.L A0,PBUFPNT
  1880.  
  1881.         RTS
  1882.  
  1883.  
  1884.  
  1885. CROUT:
  1886.  
  1887.         CMP.L #PRBUF,PBUFPNT
  1888.  
  1889.         BEQ OUT
  1890.  
  1891.         LEA GRPRT(PC),A1
  1892.  
  1893. GROUT:  MOVE.B (A1)+,D0
  1894.  
  1895.         BMI GREND
  1896.  
  1897.         BSR PROUTA
  1898.  
  1899.         BRA GROUT
  1900.  
  1901. GREND:  MOVE.L PBUFPNT(PC),A1
  1902.  
  1903.         SUB.L #PRBUF,A1
  1904.  
  1905.         MOVE A1,D0
  1906.  
  1907.         BSR PROUTA
  1908.  
  1909.         MOVE A1,D0
  1910.  
  1911.         LSR #8,D0
  1912.  
  1913.         BSR PROUT
  1914.  
  1915.         MOVE A1,D2
  1916.  
  1917.         SUBQ #1,D2
  1918.  
  1919.         LEA PRBUF,A1
  1920.  
  1921.         MOVE.L A1,PBUFPNT
  1922.  
  1923. EPLOP:  MOVE.B (A1)+,D0
  1924.  
  1925.         BSR PROUTA
  1926.  
  1927.         DBF D2,EPLOP
  1928.  
  1929.         BRA OUT
  1930.  
  1931.  
  1932.  
  1933. SA3:
  1934.  
  1935.         MOVEQ #$43,D2
  1936.  
  1937.         BRA SA6_1
  1938.  
  1939.  
  1940.  
  1941. SA5:
  1942.  
  1943.         CMP #$08,CHRPNT
  1944.  
  1945.         BEQ SA4
  1946.  
  1947.         MOVE CHRPNT,D0
  1948.  
  1949.         LEA CHAR,A0
  1950.  
  1951.         MOVE.B D5,(A0,D0)
  1952.  
  1953.         ADDQ #1,CHRPNT
  1954.  
  1955. SA4:    RTS
  1956.  
  1957.  
  1958.  
  1959. SA6:
  1960.  
  1961.         MOVEQ #$41,D2
  1962.  
  1963. SA6_1:  BSR ESC
  1964.  
  1965.         MOVE D5,D0
  1966.  
  1967.         BRA PROUT
  1968.  
  1969.  
  1970.  
  1971. SA7:
  1972.  
  1973.         ST CASEFLG
  1974.  
  1975. SA2:    RTS
  1976.  
  1977.  
  1978.  
  1979. SA8:
  1980.  
  1981.         CLR.B CASEFLG
  1982.  
  1983. SA9:    RTS
  1984.  
  1985.  
  1986.  
  1987. SA10:
  1988.  
  1989.         MOVEQ #$40,D2
  1990.  
  1991.  
  1992.  
  1993. ESC:
  1994.  
  1995.         MOVEQ #$1B,D0
  1996.  
  1997.         BSR PROUT
  1998.  
  1999.         MOVE D2,D0
  2000.  
  2001. PROUTA: AND #$FF,D0        
  2002.  
  2003. PROUT:  MOVE D0,-(SP)
  2004.  
  2005.         MOVE #prout,-(SP)
  2006.  
  2007.         TRAP #gemdos
  2008.  
  2009.         ADDQ.L #4,SP
  2010.  
  2011.         RTS
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017. COM:    DC.B "vidmup&crsnt"
  2018.  
  2019.  
  2020.  
  2021. ADR:    DC.L VALIDATE,INIT,MEMORY
  2022.  
  2023.         DC.L BLOCK,USER,RECORD,LBL
  2024.  
  2025.         DC.L COPY,RENAME,SCRATCH,NEW
  2026.  
  2027.         DC.L TOGGLE
  2028.  
  2029.  
  2030.  
  2031. DRV:    DC.B 8                          *LETZTER dRIVE
  2032.  
  2033.  
  2034.  
  2035. JOKER:  DC.B "*.*",0
  2036.  
  2037.  
  2038.  
  2039. FORMAT: DC.B $22," st 2a",0
  2040.  
  2041.  
  2042.  
  2043. FREE:   DC.B "blocks free.",0
  2044.  
  2045.  
  2046.  
  2047. COMPNT: DC.L FILE+3                     *dEFAULT FR fLOPPY-rESET
  2048.  
  2049.  
  2050.  
  2051. MSG0:   DC.B "00, ok",0
  2052.  
  2053. MSG1:   DC.B "01, files scratched",0
  2054.  
  2055. MSG2:   DC.B "30,syntax error",0
  2056.  
  2057. MSG3:   DC.B "73,vc 1541 emulator",0
  2058.  
  2059. MSG4:   DC.B "63,file not found",0
  2060.  
  2061. MSG5:   DC.B "62,file exists",0
  2062.  
  2063.  
  2064.  
  2065. PBUFPNT:DC.L PRBUF
  2066.  
  2067.  
  2068.  
  2069. GRPRT:  DC.B $1B,$2A,$04,$FF
  2070.  
  2071.  
  2072.  
  2073. BUFADR: DS.L 1                  *AKTUELLE bUFFERADRESSE
  2074.  
  2075.  
  2076.  
  2077. TPNT:   DS.L 1                  *AKTUELLER bUFFERPOINTER
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.         BSS
  2084.  
  2085.  
  2086.  
  2087. TRACK:  DS.B 1
  2088.  
  2089.  
  2090.  
  2091. SECTOR: DS.B 1
  2092.  
  2093.  
  2094.  
  2095. FILBUF: DS.B $1000*10           *fILE-bUFFER
  2096.  
  2097.  
  2098.  
  2099. BUFPNT: DS.L 10                 *bUFFERPOINTER
  2100.  
  2101.  
  2102.  
  2103. FHANDLE:DS 10                   *fILE-hANDLES
  2104.  
  2105.  
  2106.  
  2107. FILLEN: DS 10                   *bLOCKLNGEN
  2108.  
  2109.  
  2110.  
  2111. FILENR: DS.B 10                 *LOGISCHE fILENUMMERN
  2112.  
  2113.  
  2114.  
  2115. EOFS:   DS.B 10                 *eof-fLAGS
  2116.  
  2117.  
  2118.  
  2119. RWFLGS: DS.B 10                 *fLAGS FR lESEN/sCHREIBEN
  2120.  
  2121.  
  2122.  
  2123. TLEN:   DS 1                    *AKTUELLE bLOCKLNGE
  2124.  
  2125.  
  2126.  
  2127. THAND:  DS 1                    *AKTUELLES fILE-hANDLE
  2128.  
  2129.  
  2130.  
  2131. TEOF:   DS.B 1                  *AKTUELLES eof-fLAG
  2132.  
  2133.  
  2134.  
  2135. RWFLG:  DS.B 1                  *fLAG FR lESEN/sCHREIBEN
  2136.  
  2137.  
  2138.  
  2139. ONR:    DS 1                    *AKTUELLE nUMMER IN lISTE
  2140.  
  2141.  
  2142.  
  2143. DTA:    DS.B 44
  2144.  
  2145.  
  2146.  
  2147. BUFFER: DS.L 4                  *FR bERECHNUNG DER FREIEN bLCKE
  2148.  
  2149.  
  2150.  
  2151. FILE:   DS.B 81                 *FR pARAMETERBERGABE
  2152.  
  2153.  
  2154.  
  2155. TMP:    DS.B 1
  2156.  
  2157.  
  2158.  
  2159. CHRPNT: DS 1
  2160.  
  2161.  
  2162.  
  2163. PRFONT: DS.B 4096
  2164.  
  2165.  
  2166.  
  2167. PRBUF:  DS.B 8*160
  2168.  
  2169.  
  2170.  
  2171. CHAR:   DS.B 8
  2172.  
  2173.  
  2174.  
  2175. REVFLG: DS.B 1
  2176.  
  2177.  
  2178.  
  2179. CASEFLG:DS.B 1
  2180.  
  2181.  
  2182.  
  2183. EXPFLG: DS.B 1
  2184.  
  2185.  
  2186.  
  2187. QFLG:   DS.B 1
  2188.  
  2189.