# Upload Mode

HaloCode has two programming modes: Live mode, and Upload Mode.

**Live Mode**

The default programming mode with HaloCode is Live Mode. Once HaloCode is connected to mBlock 5, Live Mode is toggled on, as shown below:

![](/files/-Lpg2oxPg0qZ97lCM8tl)

Under "Live" mode, programming has the following features:

1. Programmes don't need to be uploaded to run.

![](/files/-Lpg2oxQ_g9pVoeF5Qtr)

Simply click the script to run and see how it works. Edit it and click it to run again. It is convenient for you to test and try your programmes.

**Note:**\
Click to run the block/script.

1. Programmes can not run offline. HaloCode needs to remain connected to mBlock 5.<br>
2. Scratch stage programming is ready to work with HaloCode. The three Events blocks are available, namely when green flag clicked, when () key pressed, and broadcast () and wait.

Under this circumstance, one Event block is now unavailable: when HaloCode starts up.

![](/files/-Lpg2oxRmiOziCj2aSSC)

**Notes:**\
Messages generated by the Events blocks work within one single project, and can be used in three circumstances:\
1\) HaloCode sending messages to itself;\
2\) between HaloCode and the Stage;\
3\) within the Stage.

**Upload Mode**

![](/files/-Lpg2oxSZW6TZlxmRuQH)

Under "Upload mode", programming has following features:

1. All programmes need to be uploaded to HaloCode to run. When you finish programming, click "Upload" to upload the program.\
   ![](/files/-Lpg2oxTjKM-zszCMzLA)
2. The uploaded programme can run offline (disconnected from mBlock 5), as long as HaloCode has external power source.<br>
3. When powered off and on again, HaloCode will still run the program that is uploaded last time before it is powered off.<br>
4. Under "Upload mode", you are not able to combine Scratch stage programming with HaloCode. (Toggle off "Upload mode" if you want to use Scratch stage programming.)

Hence, several blocks from the Events category are unavailable. These specific blocks are: when green flag clicked, when () key pressed, and broadcast () and wait.

![](/files/-Lpg2oxUPsAswim2eMXt)

**Note:**\
Messages generated by the Events block work within one single project.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.pakronics.com.au/halocode-1/upload-mode.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
