The Microwave Challenge
JavaScript (ES6), 345 342 bytes
Saved 2 bytes thanks to @StephenLeppik
n=>[...'lmnopqsuvwxyz{}~'].reduce((s,c)=>(x=s.split(c)).join(x.pop()),` p{{yyvu{ xvs${(n&&n<60?n+'':(k=n||new Date/6e4|0,k/60%(n?k:12)|0||(n?0:12))+':'+('0'+k%60).slice(-2)).padEnd(9)}xoup__uuxx{~zzn1s2s3wn4s5s6wn7s8s9wuuq 0sStartmy_~ { oxp__zxllx{|x
|p{_|{y_|qox}}}uzs}uuuuu {yyy__z|u y___s|wm|y~zzv
|}}}}xu sx q~|p{{{ox
znzq m qy|ylx}|xv`)
Test cases
let f =
n=>[...'lmnopqsuvwxyz{}~'].reduce((s,c)=>(x=s.split(c)).join(x.pop()),` p{{yyvu{ xvs${(n&&n<60?n+'':(k=n||new Date/6e4|0,k/60%(n?k:12)|0||(n?0:12))+':'+('0'+k%60).slice(-2)).padEnd(9)}xoup__uuxx{~zzn1s2s3wn4s5s6wn7s8s9wuuq 0sStartmy_~ { oxp__zxllx{|x
|p{_|{y_|qox}}}uzs}uuuuu {yyy__z|u y___s|wm|y~zzv
|}}}}xu sx q~|p{{{ox
znzq m qy|ylx}|xv`)
O.innerText = [100, 59, 60, 120, 59999999, 1, 0].map(f).join('\n');
<pre id=O></pre>
SOGL V0.12, 151 150 bytes
╔*:@ΚG┐∙+;┐Κ+Γ╬5□
‽uS9w'+*;5wι+}:'+÷;'+%lH⁵!+‽ 0Κ}⁴‽ι}⁰ :∑ā;'!3ž"∑⅓/«juΒ v←>k─z“M»─4n{_□}4Δ№{' ;3*I:A26□'$a22□}'(7«■ _čž'&'¹"<Ξ‘⁾žL∫L%F3‰4*'℮+f3÷⁽3*ž
Try it Here!
Explanation:
□ a function which draws a rectangle
uses of the stack [xPos, yPos, height-1, (width+1)/2]
the width everywhere luckily is an odd number
╔* repeat "_" width times
: create a duplicate of that
@Κ prepend a space to it
G get the height on top of the stack
┐∙ repeat "|" vertically that many times
+ add that below the " ___..."
; get the other copy of the underscores
┐Κ prepend "|" to it
+ and add that below the rest
Γ palindromize horizontally with 1 overlap
╬5 place that at the coords [xPos; yPos], without overwriting spaces
system time
‽ } if the input isn't 0
uS push date & time stuff — [year, month, day, hour, minute, second, milliscond, weekday, hours in 12-hour time, am(= 0)/pm(= 1)]
9w get the 9th element — hours in 12-hour time
'+* multiply by 60
; get the array on top again
5w get the 5th item — minutes
ι pop the array
+ add the minutes to hours*60
time formatting
: duplicate the time (result of above or input)
'+÷ divide by 60
; get the other time copy
'+% mod by 60
l get the length of the minutes
H decrease it — truthy if the minutes are a single digit
⁵! negate the hours — truthy if the hours aren't 0
+ add those — acts like OR — truthy if minutes are a single digit or hours aren't 0
‽ } if not that
0Κ prepend 0 to the minutes
⁴ get a copy of the hours
‽ } if equal to 0
ι pop the hours
⁰ wrap the stack in an array
:∑ join with ":"
ā; push an empty array below the time — the main canvas
'! push 51
3 push 3
ž at [51; 3] in the canvas insert the time
main microwave body
"...“ push 196046633463872206014875356167606
M»─ base 50 decode — [1,1,19,31,6,4,13,18,1,1,19,23,49,2,1,6,49,17,2,6]
4n group 4 items — [1,1,19,31],[6,4,13,18],[1,1,19,23],[49,2,1,6],[49,17,2,6]
{ } for each group
_ put the arrays contents on the stack
□ execute the rectangle making function
boxes for the numbers
4Δ push [1,2,3,4]
№ reverse — [4,3,2,1]
{ } for each
' ; push 49 below the current number — X pos
3* multiply the current number by 3
I and increment it — Y pos
:A save a copy of that on variable A (for the next rectangle)
26□ create a rectangle at [49; cnum*3+1] with width 11 and height 3
'$ push 53 — X pos
a push A — Y pos
22□ create a rectangle at [53; cnum*3+1] with width 3 and height 3
'(7«■ _ push 57, 14 and " _"
č chop the string into chars (aka make it vertical)
ž insert that at [57; 14] in the canvas
'&'¹"..‘ push 55, 15, "start"
⁾ uppercase the first letter of "start"
ž insert that at [55; 15] in the canvas
number inserting
L∫ for each in 1..10, pushing counter
L% push counter % 10 — the drawn digit
F3‰ push (counter-1)%3 + 1
4* multiply that by 4
'℮+ and add 47 — X position
f3÷ floor divide the 0-based counter by 3
⁽ increment by 2
3* multiply by 3
ž insert it in the main canvas