--- title: "Boot Up Reminder" type: "article" slug: "boot-up-reminder" url: "http://localhost/article/boot-up-reminder/" markdown_url: "http://localhost/article/boot-up-reminder.md" published_at: "2025-12-18T20:09:18+00:00" modified_at: "2026-06-21T23:23:01+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "Productivity tools for the QL are far and few between. On the PC, there is a dearth of these tools; Meeting Maker, Lotus Organizer, Maximizer, etc. One feature of most productivity tools is the ability to remind you of special days, such as birthdays, anniversaries, appointments, and so on. Without doing much development work, a…" category: - name: "QL Hacker's Journal" slug: "ql-hackers-journal" taxonomy: "category" url: "http://localhost/category/periodicals/ql-hackers-journal/" post_tag: - name: "Full Text" slug: "fulltext" taxonomy: "post_tag" url: "http://localhost/tag/fulltext/" - name: "QL" slug: "ql" taxonomy: "post_tag" url: "http://localhost/tag/ql/" - name: "Superbasic (programming language)" slug: "superbasic-programming-language" taxonomy: "post_tag" url: "http://localhost/tag/superbasic-programming-language/" model: - name: "Sinclair QL" slug: "sinclair-ql" taxonomy: "model" url: "http://localhost/model/sinclair-ql/" indiv: - name: "Tim Swenson" slug: "tim-swenson" taxonomy: "indiv" url: "http://localhost/indiv/tim-swenson/" publication_r: id: 33686 title: "QL Hacker’s Journal" type: "periodical" url: "http://localhost/periodical/ql-hackers-journal/" authors_r: - name: "Tim Swenson" slug: "tim-swenson" taxonomy: "indiv" url: "http://localhost/indiv/tim-swenson/" issue: "25" issues_articles: - id: 61561 title: "QL Hacker’s Journal 25" type: "issue" url: "http://localhost/issue/ql-hackers-journal-25/" pubdate: "July 1996" archive_link: true --- # Boot Up Reminder Productivity tools for the QL are far and few between. On the PC, there is a dearth of these tools; Meeting Maker, Lotus Organizer, Maximizer, etc. One feature of most productivity tools is the ability to remind you of special days, such as birthdays, anniversaries, appointments, and so on. Without doing much development work, a simple day reminder can be written for the QL. A good way to setup a reminder program is to have it check for special days when the QL boots up. During boot up, the program reads in the reminder data file and outputs any special days that are set for today. These special days can be set up to appear yearly (a birthday), weekly (trash day), or monthly (bills, bills, and more bills). Of course, this program will only work well if you boot up your QL at least once a day. If you boot it up less than that, you will need to set your reminders to appear days before the special day. The format of the reminder file ( reminder_dat ) is as follows: ``` T:XXXXXX:..................... Where T is the type of reminder W for weekly, M for monthly, and Y for yearly XXXXXX is the date of the reminder ...... is the text of the reminder Colons separate each field. ``` The program is case insensitive. There are three types of reminders, weekly, monthly, and yearly. A weekly reminder is based on the day of the week. If you must take out the trash every Wednesday night, then you could set a reminder for Wed to say “Take out Trash.” The first field has a W and the second field has a three letter abbreviation for the day of the week. Mon for Monday, Tue for Tuesday, etc. This is all based on the format returned from DAY$. A Monthly reminder is based only on the day of the month. If you have to pay a bill on the 1st of each month, you could set a monthly reminder to “Pay Bill” for the 1st. The first field has an M and the second field is the day of the month in a two number format. The 6th of the month would be listed as 06. A yearly reminder is based on the month and day. This is for reminding you of things like birthdays. The first field has a Y and the second field has a three letter abbreviation for the month (Jun), a space, and the day of the month listed as two digits (06 for the 6th). The 4th of Jul would be listed as “Jul 04”. The text of the reminder is the last field. It goes from the second colon to the end of the line. You can put anything in this text, as it is copied from the reminder file and printed to the screen. This program can easily be included into a Boot program or it can be called from the Boot program. It simply prints out the reminders, but you can liven it up with flashing letters or beeping noises, what ever will get your attention. ``` 100 OPEN #3,scr_350x75a75x50 110 PAPER #3,0: INK #3,2: BORDER #3,3,4 120 CLS #3 130 month$ = DATE$ 140 month$=upper$(month$(6 TO 11)) 150 daym$ = DATE$ 160 daym$=upper$(daym$(10 TO 11)) 170 dayw$=upper$(DAY$) 180 OPEN_IN #4,flp1_reminder_dat 190 REPeat loop 200 IF EOF(#4) THEN EXIT loop 210 INPUT #4,in$ 220 IF LEN(in$) < 3 THEN END REPeat loop 230 colon = ":" INSTR in$ 240 type$ = upper$(in$(1 TO colon-1)) 250 in$ = in$(colon+1 TO ) 260 colon = ":" INSTR in$ 270 remind$ = upper$(in$(1 TO colon-1)) 280 reminder$ = in$(colon+1 TO ) 290 IF type$ = "W" THEN 300 IF remind$ = dayw$ THEN 310 BEEP 1000,10 320 PRINT #3,dayw$;" ";reminder$ 330 END IF 340 END IF 350 IF type$ = "M" THEN 360 IF remind$ = daym$ THEN 370 BEEP 1000,10 380 PRINT #3,daym$;" ";reminder$ 390 END IF 400 END IF 410 IF type$ = "Y" THEN 420 IF remind$ = month$ THEN 430 BEEP 1000,10 440 PRINT #3,month$;" ";reminder$ 450 END IF 460 END IF 470 END REPeat loop 480 CLOSE #4 490 CLOSE #3 500 DEFine FuNction upper$(up$) 510 LOCal x, temp 520 FOR x = 1 TO LEN(up$) 530 temp = CODE(up$(x)) 540 IF temp > 96 AND temp < 123 THEN up$(x)=CHR$(temp-32) 550 NEXT x 560 RETurn up$ 570 END DEFine upper$ ``` Example Reminder File: ``` w:tue:This is a Tuesday Reminder w:wed:This is a Wednesday Reminder m:04:This is a 4th day of the month Reminder m:13:This is a 13th day of the month reminder y:jun 04:This is a June 4th reminder y:jul 19:This is a July 19th reminder ```