home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 601-625 / apd602 / file_editor.amos / file_editor.amosSourceCode < prev    next >
AMOS Source Code  |  1993-02-25  |  14KB  |  503 lines

  1. '
  2. '  Filename: FileEd.AMOS 
  3. '
  4. '  Date: 23/05/92   Version: 1.32
  5. '
  6. '  By:  Tony Swanwick
  7. '
  8. '*************************************************************************** 
  9. '
  10. '              This program is AMOS Public Domain.   
  11. '
  12. '*************************************************************************** 
  13. '
  14. '
  15. Set Buffer 100 : Dim PK(1,1000)
  16.    Global A,SX,SY,K$,BE,BF,BL,BP,BS,CB,CF,OCF,CX,CY,DEBUG,PK,LINE$,F$
  17.    Global NB,PB,PF,PK(),X0,Y0,X1,Y1,MSB
  18.    Global PIC$,VERSION$,FILEBANK,SCRNBANK,SHAPEBANK
  19.    Global EDSCRN,TEMPSCRN,PNTER,CROSS,CLOCK,BLACK,WHITE,BLUE,RED
  20. '
  21. VERSION$="1.32"
  22. Goto L_COLD_START
  23. '
  24. L_LOOP:
  25.    P_SCREEN_XY
  26.    If Mouse Key=1 Then Goto L_KEY
  27.    If K$="" Then K$=Inkey$
  28.    If K$<>"" Then Goto L_KEYS
  29. If BF<1 Then Goto L_LOOP
  30. '
  31.    If Mouse Key=0 and CF=0 Then P_BOB_XY
  32.    P_CURSOR_FLASH
  33. Goto L_LOOP
  34. '
  35. L_KEY:
  36.    If SX<19 and SY>0 and SY<11 Then SY=100 : P_EXIT
  37.    If SX>617 and SY>0 and SY<11 Then SY=100 : P_WORKBENCH
  38. If BF<1 Then Goto L_LOOP
  39.    If SX>77 and SY>27 and SX<599 and SY<170 Then P_CURS_XY
  40.    If SX>607 and SY>25 and SX<633 and SY<172 Then SX=-1 : P_BAR_POSITION
  41.    If SX>613 and SY>15 and SX<625 and SY<23 Then SX=-1 : P_BLOCK_PREVIOUS
  42.    If SX>613 and SY>173 and SX<625 and SY<181 Then SX=-1 : P_BLOCK_NEXT
  43.    If SX>265 and SY>177 and SX<315 and SY<191 Then SY=100 : P_FIRST
  44.    If SX>317 and SY>177 and SX<363 and SY<191 Then SY=100 : P_UNDO
  45.    If SX>365 and SY>177 and SX<409 and SY<191 Then SY=100 : P_LAST
  46.    If SY<26 Then P_LINE_PREVIOUS
  47.    If SY>171 Then P_LINE_NEXT
  48.    MSB=1
  49. Goto L_LOOP
  50. '
  51. L_KEYS:
  52.    S=Scancode : Clear Key : If DEBUG=1 Then Text 26,10,Str$(S)+" "
  53.    If S=69 Then P_EXIT
  54. If BF<1 Then K$="" : Goto L_LOOP
  55.    If S<68 Then Goto L_TEXT_LEFT
  56.    If S=76 Then P_CURS_UP
  57.    If S=77 Then P_CURS_DOWN
  58.    If S=78 Then P_CURS_RIGHT
  59.    If S=79 Then P_CURS_LEFT
  60.    MSB=1 : P_QUICK_STATUS
  61.    Wait 1 : K$=Inkey$ : If K$<>"" Then Goto L_KEYS
  62. Goto L_LOOP
  63. '
  64. L_TEXT_LEFT:
  65.    If OCF=2 Then Goto L_TEXT_RIGHT
  66.    A=Asc(Upper$(K$)) : If(A<65 or A>70) and(A<48 or A>57) Then Goto L_NULL
  67.    If A>64 Then A=A-55 Else A=A-48
  68.    PK=Peek(BS+CB)
  69.    If MSB=1
  70.       A=A*16 : PK=(PK and $F)+A : MSB=0
  71.    Else 
  72.       PK=(PK and $F0)+A : MSB=1
  73.    End If : A=PK : PK=BS+CB : P_POKE
  74.    PK=BS+BP+(CY*16) : P_PEEK_LINE
  75.    Bob Off : Wait Vbl : Ink WHITE,BLACK : Text 5,34+(CY*9),LINE$ : K$=""
  76.    If MSB=1 Then P_CURS_RIGHT
  77.    P_BOB_XY
  78.    K$="" : P_QUICK_STATUS
  79. Goto L_LOOP
  80. '
  81. L_NULL:
  82.    K$="" : MSB=1 : P_CURS_RIGHT
  83.    P_QUICK_STATUS
  84. Goto L_LOOP
  85. '
  86. L_TEXT_RIGHT:
  87.    A=Asc(K$) : PK=BS+CB : P_POKE
  88.    PK=BS+BP+(CY*16) : P_PEEK_LINE
  89.    Bob Off : Wait Vbl : Ink WHITE,BLACK : Text 5,34+(CY*9),LINE$ : K$=""
  90.    OCX=CX : Inc CX : A=BL-BP-CX-(CY*16) : If A<1 Then CX=OCX
  91.    If CX>15 Then CX=0 : OCY=CY : Inc CY
  92.    A=BL-BP-CX-(CY*16) : If A<1 Then CY=OCY
  93.    If CY>15 Then CY=15 : P_LINE_NEXT
  94.    P_BOB_XY
  95.    K$="" : P_QUICK_STATUS
  96. Goto L_LOOP
  97. '
  98. ' ***** Fast Procedures *****  
  99. '
  100. Procedure P_BOB_XY
  101.    CF=OCF : Wait Vbl : Bob 1,73+(CX*24),26+(CY*9),1 : Bob 2,467+(CX*8),26+(CY*9),2
  102. End Proc
  103. Procedure P_CLEAR_LIST
  104.    Screen EDSCRN : Bob Off : CF=0 : Wait Vbl : Ink BLACK : Bar 4,26 To 598,171
  105. End Proc
  106. Procedure P_COPY_LOAD
  107.    If CF>0 Then Bob Off : Wait Vbl : CF=0
  108.    Screen Copy TEMPSCRN,0,0,594,145 To EDSCRN,5,26
  109. End Proc
  110. Procedure P_COPY_SAVE
  111.    If CF>0 Then Bob Off : Wait Vbl : CF=0
  112.    Screen Copy EDSCRN,5,26,599,171 To TEMPSCRN,0,0
  113. End Proc
  114. Procedure P_CURSOR_FLASH
  115.    Timer=0 : A$="" : T=6 : If OCF=1
  116.       Bob Off 1
  117.       While Timer<T and Mouse Key=0 and(A$="") : A$=Inkey$ : Wend 
  118.       Timer=0 : Bob 1,73+(CX*24),26+(CY*9),1
  119.       While Timer<T and Mouse Key=0 and(A$="") : A$=Inkey$ : Wend 
  120.    Else 
  121.       Bob Off 2
  122.       While Timer<T and Mouse Key=0 and(A$="") : A$=Inkey$ : Wend 
  123.       Timer=0 : Bob 2,467+(CX*8),26+(CY*9),2
  124.       While Timer<T and Mouse Key=0 and(A$="") : A$=Inkey$ : Wend 
  125.    End If : If A$<>"" Then K$=A$
  126. End Proc
  127. Procedure P_CURS_XY
  128.    If BF=0 Then Pop Proc
  129.    OCX=CX : OCY=CY
  130.    If SX<462
  131.       CX=(SX-74)/24 : CY=(SY-28)/9 : CF=1
  132.    Else 
  133.       CX=(SX-470)/8 : CY=(SY-28)/9 : CF=2
  134.    End If 
  135.    If CX<0 Then CX=0
  136.    If CX>15 Then CX=15
  137.    If CY<0 Then CY=0
  138.    If CY>15 Then CY=15
  139.    A=BL-BP-CX-(CY*16) : If A<1 Then CX=OCX : CY=OCY
  140.    OCF=CF : P_BOB_XY
  141.    P_QUICK_STATUS
  142. End Proc
  143. Procedure P_PEEK_LINE
  144.    T$=" " : LINE$=Right$(("00000000"+(Hex$(PK-BS)-"$")),7)+"  "
  145.    For B=PK To PK+15
  146.       A=Peek(B) : H$=Right$(("0"+(Hex$(A)-"$")),2) : If A<32 or A>127 Then A=32
  147.       If B>BE Then H$="--" : A=127
  148.       LINE$=LINE$+H$+" " : T$=T$+Chr$(A)
  149.    Next B : LINE$=LINE$+T$
  150. End Proc
  151. Procedure P_POKE
  152.    Inc PF : If PF>1000 Then PF=0
  153.    PK(0,PF)=PK : PK(1,PF)=Peek(PK) : Poke PK,A
  154. End Proc
  155. Procedure P_SCREEN_XY
  156.    SX=X Screen(EDSCRN,X Mouse) : SY=Y Screen(EDSCRN,Y Mouse) : If DEBUG=0 Then Pop Proc
  157.    Ink WHITE,BLACK : X=462 : Y=182 : A$=" SX="+Str$(SX)+" " : Text X,Y,A$
  158.    A$=" SY="+Str$(SY)+" " : Text X,Y+9,A$
  159. End Proc
  160. Procedure P_SCROLL_BAR
  161.    If BF<1 Then Pop Proc
  162.    X0=608 : Y0=26 : X1=632 : Y1=171 : YL=Y1-Y0+1
  163.    Ink BLACK : Bar X0,Y0 To X1,Y1 : B=256*(1+((BL-1)/256))
  164.    A=Y0 : Y0=A+((YL*BP)/B) : Y1=A+((YL*(BP+255))/B)
  165.    Ink WHITE : If Y0<>Y1
  166.        Bar X0,Y0 To X1,Y1
  167.    Else 
  168.       Draw X0,Y0 To X1,Y1
  169.    End If 
  170. End Proc
  171. Procedure P_QUICK_STATUS
  172.    Ink WHITE,BLUE : Text 90,192,Space$(9) : Text 550,19,Space$(7)
  173.    If BF>0
  174.       CB=BP+CX+(CY*16)
  175.       Ink WHITE,BLACK : Text 90,192,Str$(PB)+" " : Text 550,19,Str$(CB)-" "
  176.    End If 
  177. End Proc
  178. Procedure P_WRITE_LINES
  179.    Screen TEMPSCRN : Cls 0 : Ink WHITE,BLACK : X=0 : Y=8 : IY=9 : IL=16
  180.    For L=BS+BP To(BS+BP+(15*IL)) Step IL
  181.       PK=L : P_PEEK_LINE
  182.       Text X,Y,LINE$ : Y=Y+IY
  183.    Next L : Screen EDSCRN : P_COPY_LOAD
  184. End Proc
  185. '
  186. ' ***** Key Procedures *****   
  187. '
  188. '
  189. Procedure P_CURS_DOWN
  190.    OCY=CY : Inc CY : A=BL-BP-CX-(CY*16) : If A<1 Then CY=OCY
  191.    If CY>15 Then CY=15 : P_LINE_NEXT
  192.    P_BOB_XY
  193. End Proc
  194. Procedure P_CURS_LEFT
  195.    S=(Key Shift and 3) : If S>0 Then CF=1 : OCF=1 : Pop Proc
  196.    If CB=0 Then Pop Proc
  197.    Dec CX : If CX<0 Then CX=15 : Dec CY
  198.    If CY<0 Then CY=0 : P_LINE_PREVIOUS
  199.    P_BOB_XY
  200. End Proc
  201. Procedure P_CURS_RIGHT
  202.    S=(Key Shift and 3) : If S>0 Then CF=2 : OCF=2 : Pop Proc
  203.    OCX=CX : Inc CX : A=BL-BP-CX-(CY*16) : If A<1 Then CX=OCX
  204.    If CX>15 Then CX=0 : OCY=CY : Inc CY
  205.    A=BL-BP-CX-(CY*16) : If A<1 Then CY=OCY
  206.    If CY>15 Then CY=15 : P_LINE_NEXT
  207.    P_BOB_XY
  208. End Proc
  209. Procedure P_CURS_UP
  210.    If CB=0 Then Pop Proc
  211.    Dec CY : If CY<0 Then CY=0 : P_LINE_PREVIOUS
  212.    P_BOB_XY
  213. End Proc
  214. '
  215. ' ***** Menu Procedures *****  
  216. '
  217. Procedure P_DISK
  218.    C=Choice(2) : A=Free
  219.    If C=4 Then P_EXIT
  220.    On C Proc P_DISK_LOAD,P_DISK_SAVE,P_DISK_SAVE_AS,P_NULL
  221.    On Menu On : P_MOUSE_UP
  222. End Proc
  223. Procedure P_DISK_LOAD
  224.    F$=Fsel$("","","Load Disk File","")
  225.    If F$="" Then Pop Proc
  226.    If Exist(F$)=0 Then Bell : Pop Proc
  227. '
  228.    Bob Off : Change Mouse CLOCK : P_CLEAR_LIST
  229.    Ink WHITE,BLACK : Locate 0,13 : Centre "Loading <"+F$+">  "
  230.    Open In 1,F$ : BL=Lof(1) : Close 1
  231.    B=FILEBANK : Erase B : Reserve As Data B,BL
  232.    BF=1 : PB=1 : NB=1+((BL-1)/256)
  233.    P_STATUS
  234.    Bload F$,B : BS=Start(B) : BE=BS+BL-1
  235. '  
  236.    BP=0 : CB=0 : CF=0 : CX=0 : CY=0 : P_WRITE_LINES
  237.    P_SCROLL_BAR
  238.    Change Mouse PNTER
  239. End Proc
  240. Procedure P_DISK_SAVE
  241.    If BF<1 Then Bell : Pop Proc
  242.    Change Mouse CLOCK : P_CLEAR_LIST
  243.    Ink WHITE,BLACK : Locate 0,13 : Centre "Saving <"+F$+">  "
  244.    Bsave F$,BS To BS+BL : P_WRITE_LINES
  245.    Change Mouse PNTER
  246. End Proc
  247. Procedure P_DISK_SAVE_AS
  248.    If BF<1 Then Bell : Pop Proc
  249.    N$=Fsel$("","","Save File As...","")
  250.    If N$="" Then Pop Proc
  251.    F$=N$ : Change Mouse CLOCK : P_CLEAR_LIST
  252.    Ink WHITE,BLACK : Locate 0,13 : Centre "Saving <"+F$+">  "
  253.    Bsave F$,BS To BS+BL : P_WRITE_LINES
  254.    Change Mouse PNTER
  255. End Proc
  256. Procedure P_SEARCH
  257.    C=Choice(2) : A=Free
  258.    On C Proc P_TEXT,P_NULL
  259.    On Menu On 
  260. End Proc
  261. Procedure P_TEXT
  262.    If BF<1 Then Pop Proc
  263.    P_COPY_SAVE
  264.    P_CLEAR_LIST
  265.    X Mouse=294 : Y Mouse=168
  266.    Locate 10,12 : Input "Enter text string for search ? ";A$
  267.    Change Mouse CLOCK : F=Hunt(BS To BS+BL-1,A$)
  268.    If F=0
  269.       Curs Off : Bell : P_COPY_LOAD
  270.    Else 
  271.       PB=F-BS : BP=(PB/16)*16 : P_WRITE_LINES
  272.       CY=(PB-BP)/16 : CX=PB-BP-(CY*16)
  273.       P_SCROLL_BAR
  274.    End If 
  275.    Change Mouse PNTER : P_BOB_XY
  276. End Proc
  277. Procedure P_SETUP
  278.    C=Choice(2) : A=Free
  279.    On C Proc P_DEBUG,P_RESET
  280.    On Menu On 
  281. End Proc
  282. Procedure P_DEBUG
  283.    DEBUG=1
  284. End Proc
  285. Procedure P_OPEN_MENU
  286.    Pen WHITE : Paper BLACK : Menu Del 
  287. '
  288.    M=1 : I=1
  289.    Menu$(M)="   "
  290. '
  291.    M=2 : I=1
  292.    Menu$(M)="  Disk  "
  293.    Menu$(M,I)=" Load File    " : Inc I
  294.    Menu$(M,I)=" Save This    " : Inc I
  295.    Menu$(M,I)=" Save File As " : Inc I
  296.    Menu$(M,I)=" Quit         " : Inc I
  297. '
  298.    M=3 : I=1
  299.    Menu$(M)="  Search  "
  300.    Menu$(M,I)=" Text String  " : Inc I
  301. '
  302.    M=4 : I=1
  303.    Menu$(M)="  SetUp  "
  304.    Menu$(M,I)=" Debug ON   " : Inc I
  305.    Menu$(M,I)=" Reset All  " : Inc I
  306. '
  307.    Menu On 
  308. End Proc
  309. '
  310. ' ***** Procedures ***** 
  311. '
  312. Procedure P_BAR_POSITION
  313.    If BF<1 Then Bell : Wait 20 : Pop Proc
  314.    Y0=26 : Y1=171 : YL=Y1-Y0+1 : Y=SY-Y0+1
  315.    BP=256*(((Y*BL)/YL)/256)
  316.    PB=1+(BP/256) : P_STATUS
  317.    P_SCROLL_BAR
  318.    P_WRITE_LINES
  319. End Proc
  320. Procedure P_BLOCK_NEXT
  321.    If BF<1 Then Bell : Wait 20 : Pop Proc
  322.    If BP>=BL-256 Then Bell : Wait 20 : Pop Proc
  323.    A=BP+256 : If A<BE Then BP=A Else Pop Proc
  324.    PB=1+(BP/256) : P_STATUS
  325.    P_SCROLL_BAR
  326.    P_WRITE_LINES
  327. End Proc
  328. Procedure P_BLOCK_PREVIOUS
  329.    If BF<1 Then Bell : Wait 20 : Pop Proc
  330.    If BP<1 Then Bell : Wait 20 : Pop Proc
  331.    BP=BP-256 : If BP<0 Then BP=0
  332.    PB=1+(BP/256) : P_STATUS
  333.    P_SCROLL_BAR
  334.    P_WRITE_LINES
  335. End Proc
  336. Procedure P_CLOSE_SCREENS
  337.    While Screen>-1
  338.       Screen Close Screen
  339.    Wend 
  340.    Bob Off : Close Editor : Hide On : Wait Vbl 
  341. End Proc
  342. Procedure P_FIRST
  343.    If BF<1 Then Bell : Wait 20 : Pop Proc
  344.    Change Mouse CLOCK : PB=1 : BP=0 : P_SCROLL_BAR
  345.    P_WRITE_LINES
  346.    CX=0 : CY=0 : CF=0 : P_STATUS
  347.    Change Mouse PNTER
  348. End Proc
  349. Procedure P_LAST
  350.    If BF<1 Then Bell : Wait 20 : Pop Proc
  351.    Change Mouse CLOCK
  352.    A=(BL-1)/256 : BP=A*256
  353.    PB=1+A : P_SCROLL_BAR
  354.    P_WRITE_LINES
  355.    CY=(BL-BP)/16 : CX=BL-BP-(CY*16)-1 : CF=0
  356.    If CX<0 Then CX=15 : CY=CY-1
  357.    P_STATUS
  358.    Change Mouse PNTER
  359. End Proc
  360. Procedure P_LINE_NEXT
  361.    If BF<1 Then Bell : Wait 20 : Pop Proc
  362.    If BP>=BL-256 Then Bell : Wait 20 : Pop Proc
  363.    A=BP+16 : If A<BE Then BP=A Else Pop Proc
  364.    PB=1+(BP/256) : P_QUICK_STATUS
  365.    P_SCROLL_BAR
  366.    P_COPY_SAVE
  367.    Screen Copy TEMPSCRN,0,9,594,145 To EDSCRN,5,26
  368. '
  369.    PK=BS+BP+240 : P_PEEK_LINE
  370.    Ink WHITE,BLACK : Text 5,169,LINE$
  371. End Proc
  372. Procedure P_LINE_PREVIOUS
  373.    If BF<1 Then Bell : Wait 20 : Pop Proc
  374.    If BP<1 Then Bell : Wait 20 : Pop Proc
  375.    BP=BP-16 : If BP<0 Then BP=0
  376.    PB=1+(BP/256) : P_QUICK_STATUS
  377.    P_SCROLL_BAR
  378.    P_COPY_SAVE
  379.    Screen Copy TEMPSCRN,0,0,594,136 To EDSCRN,5,35
  380. '
  381.    PK=BS+BP : P_PEEK_LINE
  382.    Ink WHITE,BLACK : Text 5,34,LINE$
  383. End Proc
  384. Procedure P_MOUSE_UP
  385.    While Mouse Key<>0 : Wend 
  386.    If BF>0 Then P_WRITE_LINES
  387. End Proc
  388. Procedure P_NULL
  389. End Proc
  390. Procedure P_OPEN_SCREENS
  391.    PIC$="df0:FileEd.IFF" : If Exist(PIC$)=0 Then PIC$="df1:FileEd.IFF"
  392.    If Length(SCRNBANK)>0
  393.       Unpack SCRNBANK To EDSCRN
  394.    Else 
  395.       Load Iff PIC$,EDSCRN : Flash Off : Curs Off 
  396.       Spack EDSCRN To SCRNBANK
  397.    End If 
  398.    BLACK=0 : WHITE=1 : BLUE=2 : RED=3
  399.    Ink WHITE,BLUE : Text 284,10,"FileEd V"+VERSION$
  400.    Screen Open TEMPSCRN,640,256,2,Hires : Flash Off : Curs Off : Screen Hide TEMPSCRN
  401.    Screen EDSCRN : P_CLEAR_LIST
  402.    SHAPE$="df0:FileEd.abk" : If Exist(SHAPE$)=0 Then SHAPE$="df1:FileEd.abk"
  403.    If Length(SHAPEBANK)=0
  404.       Load SHAPE$,SHAPEBANK
  405.    End If 
  406.    A$="Start by loading a file using the MENU."
  407.    Locate 0,12 : Pen WHITE : Paper BLACK : Centre A$
  408.    Set Bob 1,0,%111111,%11001010 : Set Bob 2,0,%111111,%11001010 : Make Mask 
  409. End Proc
  410. Procedure P_RESET
  411.    BF=0 : BL=0 : CB=0 : CF=0 : OCF=2 : EDSCRN=0 : TEMPSCRN=1 : F$=""
  412.    MSB=1 : DEBUG=0 : PF=-1
  413.    SHAPEBANK=1 : FILEBANK=2 : SCRNBANK=3
  414.    P_CLOSE_SCREENS
  415.    P_OPEN_SCREENS
  416.    P_OPEN_MENU
  417.    P_STATUS
  418.    Limit Mouse 128,50 To 444,235
  419.    On Menu Proc P_NULL,P_DISK,P_SEARCH,P_SETUP
  420.    On Menu On : Change Mouse PNTER
  421.    X Mouse=288 : Y Mouse=160 : Show On 
  422. End Proc
  423. Procedure P_STATUS
  424.    Screen EDSCRN : Ink WHITE,BLUE : Text 80,21,Space$(50)
  425.    If F$<>"" Then Ink WHITE,BLACK : Text 80,21," "+F$+" "
  426. '
  427.    Ink WHITE,BLUE : Text 550,10,Space$(7) : Text 550,19,Space$(7)
  428.    Text 90,181,Space$(9) : Text 90,192,Space$(9)
  429.    If BF>0
  430.       CB=BP+CX+(CY*16)
  431.       Ink WHITE,BLACK : Text 550,10,Str$(BL)-" " : Text 550,19,Str$(CB)-" "
  432.       Text 90,181,Str$(NB)+" "
  433.       Text 90,192,Str$(PB)+" "
  434.    End If 
  435. End Proc
  436. Procedure P_UNDO
  437.    If PF=-1 Then Pop Proc
  438.    PK=PK(0,PF) : A=PK(1,PF) : If PK=0 Then Pop Proc
  439.    PK(0,PF)=0 : PK(1,PF)=0
  440.    Poke PK,A : Dec PF : If PF<0 Then PF=-1 : If PK(0,1000)>0 Then PF=1000
  441. '
  442.    Change Mouse CLOCK : PB=PK-BS
  443.    CY=(PB-BP)/16 : CX=PB-BP-(CY*16) : OCF=2
  444.    If PB<BP or PB>BP+255
  445.       BP=(PB/16)*16 : P_WRITE_LINES
  446.       CY=(PB-BP)/16 : CX=PB-BP-(CY*16)
  447.       P_SCROLL_BAR
  448.    Else 
  449.       PK=BS+BP+(CY*16) : P_PEEK_LINE
  450.       Bob Off : Wait Vbl : Ink WHITE,BLACK : Text 5,34+(CY*9),LINE$ : K$=""
  451.    End If 
  452.    If CX<0 Then CX=15 : CY=CY-1
  453.    P_BOB_XY
  454.    P_QUICK_STATUS
  455.    Change Mouse PNTER
  456. End Proc
  457. Procedure P_WORKBENCH
  458.    Amos To Back 
  459.    While Amos Here=0
  460.       Multi Wait 
  461.    Wend 
  462. End Proc
  463. '
  464. '  
  465. '
  466. L_COLD_START:
  467.    PNTER=1 : CROSS=2 : CLOCK=3
  468.    P_RESET
  469. Goto L_LOOP
  470. '   Break Off  
  471. '
  472. Goto L_LOOP
  473. '
  474. Procedure P_EXIT
  475.    Erase FILEBANK
  476.    Default : Edit 
  477. End Proc
  478. '  
  479. '  Variable: 
  480. '
  481. ' A                Any 
  482. ' BE               Bank end address  
  483. ' BF               Bank Flag, BF=0 Empty 
  484. ' BL               Bank length 
  485. ' BP               Block Bite pointer
  486. ' BS               Bank start address
  487. ' CB               Current bite
  488. ' CF               Cursor flag 
  489. ' CX,CY            Cursor x,y
  490. ' FILEBANK         Mem bank used for temp file 
  491. ' F$               Filespec string 
  492. ' LINE$            Peeked line string
  493. ' MSB              Edit MSB flag 
  494. ' NB               No. 256 Bite Blocks 
  495. ' OCF              Old cursor flag 
  496. ' PB               Present Bite block pointer  
  497. ' PF               Poke array pointer  
  498. ' PK               Peek address pointer
  499. ' PK()             Poked to array
  500. ' SCRNBANK         Mem bank used for packed screen 
  501. ' SHAPEBANK        Mem bank used for bobs  
  502. ' SX,SY            Mouse x,y 
  503. '