{"id":17245158,"url":"https://github.com/axtens/tickle","last_synced_at":"2026-02-12T01:12:09.524Z","repository":{"id":116210566,"uuid":"200359066","full_name":"axtens/tickle","owner":"axtens","description":"A scripting language written in Turbo Pascal 5.5","archived":false,"fork":false,"pushed_at":"2019-08-03T10:49:11.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-31T06:41:52.035Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Tcl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axtens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-03T09:51:00.000Z","updated_at":"2019-08-03T10:49:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"bdf8dead-f81d-4839-a6a9-e39d34a808c1","html_url":"https://github.com/axtens/tickle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axtens%2Ftickle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axtens%2Ftickle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axtens%2Ftickle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axtens%2Ftickle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axtens","download_url":"https://codeload.github.com/axtens/tickle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245591618,"owners_count":20640692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T06:28:45.045Z","updated_at":"2026-02-12T01:12:04.502Z","avatar_url":"https://github.com/axtens.png","language":"Tcl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tickle\nA scripting language written in Turbo Pascal 5.5 \n\nThe year was 1989. I had moved over from NE NSW to Perth in Western Australia to get married (here we are 30 years later and still married to the same woman.)\n\nI got a job at Curtin University in their PC Support Group. They were importing PC and PC XT parts and assembling them for sale. One of my jobs was to help set up the computers with DOS and some in-house and third-party tools.\n\nTickle came out of that process. Tickle was a \"Transfer Control Language\" for transferring DOS and other software to the PCs we were building. This was before I heard about John Ousterhout's [Tool Command Language](https://en.wikipedia.org/wiki/Tcl), also known as Tcl (which predates my TCL by at least a year.)\n\nTickle scripts looked like this\n\n```\n     REM ZipLoad V2.0\n     VAR ver 2\n     VAR upd 0\n     NOTIFY \"ZipLoad Version \u0026'VAR ver',\u0026'VAR upd'\"\n\n     REM to increase/decrease the number of disks in a diskset then\n     REM change DISKTOTAL to a higher or lower value\n\n     VAR DISKTOTAL 8\n\n     REM ZipLoad assumes that the archived files for a ZipSet reside in\n     REM subdirectories below C:\\ZIPSET named FILE1 through FILEn where n\n     REM is the number of disks in the set. That is, the 2nd disk in the set\n     REM will have it's file on C:\\ZIPSET\\FILE2.\n\n     REM All floppy disks used in a ZipSet are assumed to be pre-formatted.\n\n     CLS\n     NOTIFY \"THIS PROGRAM UPDATES/CREATES A SOFTWARE INSTALLATION ZIPSET\"\n     NOTIFY\n     NOTIFY \"HAVE READY \u0026'VAR DISKTOTAL' FORMATTED DISKS NUMBERED 1 TO \u0026'VAR DISKTOTAL'\"\n     NOTIFY\n     PAUSE\n\n     VAR DISKLIMIT VAR DISKTOTAL\n     INCVAR DISKLIMIT\n\n     VAR CNT 1\n\nLABEL LOOP\n     CLS\n     YESNO \"DISK \u0026'VAR CNT' IN DRIVE A: (Y/N)? \"\n     IF SYS YESNO EQ 1\n              SHELL \"ECHO. | RECOVER A: \u003eNUL\"\n              SHELL \"DEL A:FILE*.* \u003eNUL\"\n              SHELL \"COPY C:\\ZIPSET\\FILE\u0026'VAR CNT' A:\"\n              SHELL \"LABEL A:ZIPSET\u0026'VAR CNT'\"\n     ENDIF\n     INCVAR CNT\n     IF VAR CNT NE VAR DISKLIMIT\n              GOTO LOOP\n     ENDIF\n\n     CLS\n     NOTIFY \"ZIPSET UPDATE/CREATE COMPLETE\"\n     PAUSE\n     HALT\n​```\n```\n\nThe design of the language was simplistic and without much planning, each day adding another component or supporting another workflow. No [yacc](https://www.javatpoint.com/yacc) or [bison](https://en.wikipedia.org/wiki/GNU_Bison). No [ANTLR](https://www.antlr.org/) -- it hadn't been invented yet. All written in Turbo Pascal 3, then 4, then 5, then 5.5. Eventually my contract at Curtin wound up and I had to find work elsewhere. Tickle stopped tickling floppy disks at that point.\n\nI did keep fiddling with Tickle, eventually starting to convert it to Modula-2 and renaming it [TRICKLE](https://github.com/axtens/trickle.git) so as to get away from the naming issue with Tcl.\n\nIf you want to build Tickle, you'll have to find a suitable Pascal compiler. Quite a few are listed at [The Free Country](https://www.thefreecountry.com/compilers/pascal.shtml). \n\nThe \"units\" folder contains a number of pascal source files for units used in the compilation of Tickle.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxtens%2Ftickle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxtens%2Ftickle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxtens%2Ftickle/lists"}